{
 "schema": 1,
 "platform": "c64",
 "game": "time-tunnel",
 "build": "U.S. Gold disk, 1985 (C64 Preservation Project G64, time_tunnel[us_gold_1985](!), SHA-256 6bfb0bb1...2d2fc9); the program T1, $0900-$C5FD, is the same bytes on the collection's alternate dump",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    63488,
    64511,
    "screen RAM"
   ],
   [
    0,
    2220,
    "the game's variables: zero page and $0200-$08AC, cleared by the start-up and written in play"
   ],
   [
    2221,
    2303,
    "the end of the fast loader FL, loaded at $0845-$0CBC and partly overwritten by T1; left in memory, and nothing in the game reads it"
   ],
   [
    57344,
    63487,
    "built at run time: the start-up's copy of the character ROM ($E000-$EFFF, with the sprite buffers at $EC00-$EDFF) and the era's character set unpacked at $F000"
   ],
   [
    64512,
    65535,
    "free RAM above the screen, and the hardware vectors the start-up writes at $FFFA-$FFFF"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2303,
   "type": "Undefined"
  },
  {
   "start": 2304,
   "end": 2677,
   "type": "Byte"
  },
  {
   "start": 2678,
   "end": 2683,
   "type": "Address"
  },
  {
   "start": 2684,
   "end": 2687,
   "type": "Byte"
  },
  {
   "start": 2688,
   "end": 2703,
   "type": "Address"
  },
  {
   "start": 2704,
   "end": 2707,
   "type": "Byte"
  },
  {
   "start": 2708,
   "end": 2731,
   "type": "Address"
  },
  {
   "start": 2732,
   "end": 2735,
   "type": "Byte"
  },
  {
   "start": 2736,
   "end": 2745,
   "type": "Address"
  },
  {
   "start": 2746,
   "end": 2749,
   "type": "Byte"
  },
  {
   "start": 2750,
   "end": 2771,
   "type": "Address"
  },
  {
   "start": 2772,
   "end": 2775,
   "type": "Byte"
  },
  {
   "start": 2776,
   "end": 2797,
   "type": "Address"
  },
  {
   "start": 2798,
   "end": 2801,
   "type": "Byte"
  },
  {
   "start": 2802,
   "end": 2817,
   "type": "Address"
  },
  {
   "start": 2818,
   "end": 2821,
   "type": "Byte"
  },
  {
   "start": 2822,
   "end": 2843,
   "type": "Address"
  },
  {
   "start": 2844,
   "end": 2847,
   "type": "Byte"
  },
  {
   "start": 2848,
   "end": 2867,
   "type": "Address"
  },
  {
   "start": 2868,
   "end": 2871,
   "type": "Byte"
  },
  {
   "start": 2872,
   "end": 2873,
   "type": "Address"
  },
  {
   "start": 2874,
   "end": 2993,
   "type": "Byte"
  },
  {
   "start": 2994,
   "end": 3009,
   "type": "Address"
  },
  {
   "start": 3010,
   "end": 3249,
   "type": "Screencode Text"
  },
  {
   "start": 3250,
   "end": 4008,
   "type": "Code"
  },
  {
   "start": 4009,
   "end": 4189,
   "type": "Byte"
  },
  {
   "start": 4190,
   "end": 4196,
   "type": "Code"
  },
  {
   "start": 4197,
   "end": 4206,
   "type": "Address"
  },
  {
   "start": 4207,
   "end": 4447,
   "type": "Code"
  },
  {
   "start": 4448,
   "end": 4457,
   "type": "Address"
  },
  {
   "start": 4458,
   "end": 4941,
   "type": "Code"
  },
  {
   "start": 4942,
   "end": 4966,
   "type": "Byte"
  },
  {
   "start": 4967,
   "end": 4990,
   "type": "Code"
  },
  {
   "start": 4991,
   "end": 5004,
   "type": "Word"
  },
  {
   "start": 5005,
   "end": 5087,
   "type": "Code"
  },
  {
   "start": 5088,
   "end": 5103,
   "type": "Address"
  },
  {
   "start": 5104,
   "end": 5245,
   "type": "Code"
  },
  {
   "start": 5246,
   "end": 5253,
   "type": "Byte"
  },
  {
   "start": 5254,
   "end": 5269,
   "type": "Word"
  },
  {
   "start": 5270,
   "end": 5702,
   "type": "Code"
  },
  {
   "start": 5703,
   "end": 5709,
   "type": "Byte"
  },
  {
   "start": 5710,
   "end": 6144,
   "type": "Code"
  },
  {
   "start": 6145,
   "end": 6171,
   "type": "Byte"
  },
  {
   "start": 6172,
   "end": 6575,
   "type": "Code"
  },
  {
   "start": 6576,
   "end": 6591,
   "type": "Address"
  },
  {
   "start": 6592,
   "end": 8015,
   "type": "Code"
  },
  {
   "start": 8016,
   "end": 8088,
   "type": "Byte"
  },
  {
   "start": 8089,
   "end": 8173,
   "type": "Code"
  },
  {
   "start": 8174,
   "end": 8202,
   "type": "Byte"
  },
  {
   "start": 8203,
   "end": 8218,
   "type": "Word"
  },
  {
   "start": 8219,
   "end": 8404,
   "type": "Byte"
  },
  {
   "start": 8405,
   "end": 8932,
   "type": "Code"
  },
  {
   "start": 8933,
   "end": 8940,
   "type": "Byte"
  },
  {
   "start": 8941,
   "end": 9073,
   "type": "Code"
  },
  {
   "start": 9074,
   "end": 9083,
   "type": "Address"
  },
  {
   "start": 9084,
   "end": 10083,
   "type": "Code"
  },
  {
   "start": 10084,
   "end": 10199,
   "type": "Byte"
  },
  {
   "start": 10200,
   "end": 10238,
   "type": "Code"
  },
  {
   "start": 10239,
   "end": 10254,
   "type": "Address"
  },
  {
   "start": 10255,
   "end": 10325,
   "type": "Code"
  },
  {
   "start": 10326,
   "end": 10341,
   "type": "Address"
  },
  {
   "start": 10342,
   "end": 11285,
   "type": "Code"
  },
  {
   "start": 11286,
   "end": 11385,
   "type": "Byte"
  },
  {
   "start": 11386,
   "end": 11388,
   "type": "Code"
  },
  {
   "start": 11389,
   "end": 11402,
   "type": "Address"
  },
  {
   "start": 11403,
   "end": 11621,
   "type": "Code"
  },
  {
   "start": 11622,
   "end": 11635,
   "type": "Address"
  },
  {
   "start": 11636,
   "end": 12467,
   "type": "Code"
  },
  {
   "start": 12468,
   "end": 12485,
   "type": "Word"
  },
  {
   "start": 12486,
   "end": 12489,
   "type": "Byte"
  },
  {
   "start": 12490,
   "end": 12934,
   "type": "Code"
  },
  {
   "start": 12935,
   "end": 12942,
   "type": "Word"
  },
  {
   "start": 12943,
   "end": 14386,
   "type": "Code"
  },
  {
   "start": 14387,
   "end": 14394,
   "type": "Byte"
  },
  {
   "start": 14395,
   "end": 14904,
   "type": "Code"
  },
  {
   "start": 14905,
   "end": 14918,
   "type": "Byte"
  },
  {
   "start": 14919,
   "end": 15581,
   "type": "Code"
  },
  {
   "start": 15582,
   "end": 15665,
   "type": "Byte"
  },
  {
   "start": 15666,
   "end": 15993,
   "type": "Code"
  },
  {
   "start": 15994,
   "end": 41175,
   "type": "Byte"
  },
  {
   "start": 41176,
   "end": 41503,
   "type": "Code"
  },
  {
   "start": 41504,
   "end": 47888,
   "type": "Byte"
  },
  {
   "start": 47889,
   "end": 48186,
   "type": "Code"
  },
  {
   "start": 48187,
   "end": 48210,
   "type": "Word"
  },
  {
   "start": 48211,
   "end": 48277,
   "type": "Byte"
  },
  {
   "start": 48278,
   "end": 48333,
   "type": "Code"
  },
  {
   "start": 48334,
   "end": 48365,
   "type": "Byte"
  },
  {
   "start": 48366,
   "end": 48491,
   "type": "Code"
  },
  {
   "start": 48492,
   "end": 50685,
   "type": "Byte"
  },
  {
   "start": 50686,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpp_02",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "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": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpa_13",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "p_0017",
   "type": "Pointer",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26,
   "name": "zpf_1A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpa_23",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpf_2B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "zpa_3B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpf_42",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpf_43",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpf_4B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpa_53",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "zpa_5B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpf_63",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpf_6B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 115,
   "name": "zpa_73",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpa_74",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpa_79",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpf_7A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "f_007C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 126,
   "name": "f_007E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpf_82",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "f_0084",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpf_86",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpf_88",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpf_8A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 140,
   "name": "zpa_8C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 143,
   "name": "zpa_8F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 144,
   "name": "zpa_90",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 145,
   "name": "zpa_91",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 146,
   "name": "zpa_92",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "zpa_93",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 148,
   "name": "zpa_94",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 149,
   "name": "zpa_95",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 150,
   "name": "zpa_96",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 151,
   "name": "zpa_97",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 152,
   "name": "zpf_98",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 154,
   "name": "zpf_9A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 156,
   "name": "f_009C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 158,
   "name": "zpf_9E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 160,
   "name": "zpa_A0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "zpa_A2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 163,
   "name": "zpa_A3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpa_A6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpa_A7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpa_A8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 169,
   "name": "zpa_A9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "zpa_AA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 171,
   "name": "zpa_AB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 172,
   "name": "zpa_AC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 173,
   "name": "zpa_AD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 175,
   "name": "zpa_AF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 176,
   "name": "zpa_B0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 177,
   "name": "zpa_B1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 178,
   "name": "zpa_B2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 179,
   "name": "zpa_B3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 180,
   "name": "zpa_B4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 181,
   "name": "zpa_B5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 182,
   "name": "zpa_B6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 187,
   "name": "zpa_BB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 188,
   "name": "zpa_BC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 189,
   "name": "zpa_BD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 190,
   "name": "zpa_BE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpa_C0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpa_C1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 194,
   "name": "zpa_C2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpa_C3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 196,
   "name": "zpa_C4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 197,
   "name": "zpa_C5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpa_C7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpa_C8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 201,
   "name": "zpa_C9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 260,
   "name": "f_0104",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 788,
   "name": "a_0314",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 792,
   "name": "a_0318",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 793,
   "name": "a_0319",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1399,
   "name": "f_0577",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1400,
   "name": "f_0578",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1401,
   "name": "f_0579",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1653,
   "name": "f_0675",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1654,
   "name": "f_0676",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1692,
   "name": "f_069C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1695,
   "name": "f_069F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1706,
   "name": "a_06AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1713,
   "name": "a_06B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1721,
   "name": "a_06B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1722,
   "name": "a_06BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1728,
   "name": "a_06C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1733,
   "name": "a_06C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1734,
   "name": "a_06C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1735,
   "name": "a_06C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1736,
   "name": "a_06C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1737,
   "name": "a_06C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1744,
   "name": "a_06D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1749,
   "name": "a_06D5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1753,
   "name": "a_06D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1754,
   "name": "a_06DA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1755,
   "name": "a_06DB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1761,
   "name": "a_06E1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1780,
   "name": "a_06F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1797,
   "name": "f_0705",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1800,
   "name": "f_0708",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1803,
   "name": "a_070B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1805,
   "name": "a_070D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1811,
   "name": "a_0713",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1812,
   "name": "a_0714",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1818,
   "name": "a_071A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1822,
   "name": "a_071E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1826,
   "name": "a_0722",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1827,
   "name": "a_0723",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1831,
   "name": "a_0727",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1833,
   "name": "a_0729",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1835,
   "name": "a_072B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1836,
   "name": "a_072C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1837,
   "name": "a_072D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1838,
   "name": "a_072E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1839,
   "name": "a_072F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1840,
   "name": "a_0730",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1841,
   "name": "a_0731",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1842,
   "name": "a_0732",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1846,
   "name": "a_0736",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1847,
   "name": "a_0737",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1848,
   "name": "a_0738",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1849,
   "name": "a_0739",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1852,
   "name": "a_073C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1853,
   "name": "a_073D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1854,
   "name": "a_073E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1855,
   "name": "a_073F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1856,
   "name": "a_0740",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1857,
   "name": "a_0741",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1858,
   "name": "a_0742",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1859,
   "name": "a_0743",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1860,
   "name": "a_0744",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1864,
   "name": "a_0748",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1865,
   "name": "a_0749",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1866,
   "name": "a_074A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1869,
   "name": "a_074D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1870,
   "name": "a_074E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1871,
   "name": "a_074F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1872,
   "name": "a_0750",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1873,
   "name": "a_0751",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1874,
   "name": "a_0752",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1876,
   "name": "a_0754",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1882,
   "name": "a_075A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1883,
   "name": "a_075B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1884,
   "name": "a_075C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1885,
   "name": "a_075D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1892,
   "name": "a_0764",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1893,
   "name": "a_0765",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1894,
   "name": "a_0766",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1895,
   "name": "a_0767",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1897,
   "name": "a_0769",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1898,
   "name": "a_076A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1901,
   "name": "a_076D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1902,
   "name": "f_076E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1903,
   "name": "a_076F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1904,
   "name": "a_0770",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1905,
   "name": "f_0771",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1906,
   "name": "f_0772",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1908,
   "name": "a_0774",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1913,
   "name": "a_0779",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1914,
   "name": "a_077A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1916,
   "name": "a_077C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1921,
   "name": "a_0781",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1923,
   "name": "a_0783",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1931,
   "name": "a_078B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1954,
   "name": "a_07A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1959,
   "name": "a_07A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1963,
   "name": "a_07AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1966,
   "name": "a_07AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1968,
   "name": "a_07B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1971,
   "name": "a_07B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1981,
   "name": "a_07BD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2007,
   "name": "f_07D7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2010,
   "name": "f_07DA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2011,
   "name": "f_07DB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2013,
   "name": "a_07DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2018,
   "name": "a_07E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2019,
   "name": "a_07E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2021,
   "name": "a_07E5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2026,
   "name": "a_07EA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2028,
   "name": "a_07EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2036,
   "name": "a_07F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2059,
   "name": "a_080B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2064,
   "name": "a_0810",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2068,
   "name": "a_0814",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2071,
   "name": "a_0817",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2076,
   "name": "a_081C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2086,
   "name": "a_0826",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2112,
   "name": "f_0840",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2115,
   "name": "f_0843",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2118,
   "name": "a_0846",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2120,
   "name": "a_0848",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2123,
   "name": "a_084B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2124,
   "name": "a_084C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2125,
   "name": "a_084D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2127,
   "name": "a_084F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2128,
   "name": "a_0850",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2129,
   "name": "a_0851",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2130,
   "name": "a_0852",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2131,
   "name": "a_0853",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2139,
   "name": "a_085B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2140,
   "name": "a_085C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2141,
   "name": "a_085D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2142,
   "name": "a_085E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2147,
   "name": "a_0863",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2148,
   "name": "a_0864",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2149,
   "name": "a_0865",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2150,
   "name": "a_0866",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2151,
   "name": "a_0867",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2152,
   "name": "a_0868",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2153,
   "name": "a_0869",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2154,
   "name": "a_086A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2155,
   "name": "a_086B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2156,
   "name": "a_086C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2157,
   "name": "a_086D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2158,
   "name": "a_086E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2160,
   "name": "a_0870",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2161,
   "name": "a_0871",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2162,
   "name": "a_0872",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2163,
   "name": "a_0873",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2164,
   "name": "a_0874",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2165,
   "name": "a_0875",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2166,
   "name": "a_0876",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2167,
   "name": "a_0877",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2168,
   "name": "a_0878",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2170,
   "name": "a_087A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2171,
   "name": "a_087B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2172,
   "name": "a_087C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2173,
   "name": "a_087D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2174,
   "name": "a_087E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2176,
   "name": "a_0880",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2178,
   "name": "a_0882",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2179,
   "name": "a_0883",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2180,
   "name": "a_0884",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2181,
   "name": "a_0885",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2184,
   "name": "a_0888",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2185,
   "name": "a_0889",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2186,
   "name": "a_088A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2187,
   "name": "a_088B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2189,
   "name": "a_088D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2190,
   "name": "a_088E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2191,
   "name": "a_088F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2192,
   "name": "a_0890",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2193,
   "name": "a_0891",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2194,
   "name": "a_0892",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2195,
   "name": "a_0893",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2196,
   "name": "a_0894",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2197,
   "name": "a_0895",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2198,
   "name": "a_0896",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2199,
   "name": "a_0897",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2200,
   "name": "a_0898",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2207,
   "name": "a_089F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2208,
   "name": "a_08A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2209,
   "name": "a_08A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2210,
   "name": "a_08A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2212,
   "name": "a_08A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2214,
   "name": "a_08A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2215,
   "name": "a_08A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2216,
   "name": "a_08A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2217,
   "name": "a_08A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2220,
   "name": "a_08AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2304,
   "name": "cartridge_header",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2313,
   "name": "obj_start_table",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2628,
   "name": "portal_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2629,
   "name": "f_0A45",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2630,
   "name": "f_0A46",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2631,
   "name": "f_0A47",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2632,
   "name": "f_0A48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2678,
   "name": "era1_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2698,
   "name": "era2_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2726,
   "name": "era3_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2740,
   "name": "era4_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2766,
   "name": "era5_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2792,
   "name": "era6_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2812,
   "name": "era7_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2838,
   "name": "era8_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2862,
   "name": "era9_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2874,
   "name": "box_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2875,
   "name": "f_0B3B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2876,
   "name": "f_0B3C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2877,
   "name": "f_0B3D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2902,
   "name": "f_0B56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2914,
   "name": "f_0B62",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2981,
   "name": "f_0BA5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2982,
   "name": "mansion_door_index",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2984,
   "name": "era_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2992,
   "name": "era_name_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2993,
   "name": "f_0BB1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3010,
   "name": "era1_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3040,
   "name": "era2_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3070,
   "name": "era3_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3100,
   "name": "era4_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3130,
   "name": "era5_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3160,
   "name": "era6_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3190,
   "name": "era7_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3220,
   "name": "era8_name",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3250,
   "name": "sprite_set_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3265,
   "name": "b_0CC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3270,
   "name": "b_0CC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3281,
   "name": "sprite_set_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3288,
   "name": "reset_vector",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3290,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3332,
   "name": "b_0D04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3364,
   "name": "b_0D24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3440,
   "name": "b_0D70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3473,
   "name": "b_0D91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3503,
   "name": "b_0DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3526,
   "name": "b_0DC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3554,
   "name": "credits_screen_clear",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3587,
   "name": "b_0E03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3610,
   "name": "credits_print",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3627,
   "name": "b_0E2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3637,
   "name": "b_0E35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3642,
   "name": "b_0E3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3651,
   "name": "b_0E43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3671,
   "name": "b_0E57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3674,
   "name": "b_0E5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3690,
   "name": "b_0E6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3696,
   "name": "b_0E70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3698,
   "name": "b_0E72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3703,
   "name": "b_0E77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3795,
   "name": "sprites_build",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3838,
   "name": "b_0EFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3840,
   "name": "b_0F00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3883,
   "name": "b_0F2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3894,
   "name": "b_0F36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3900,
   "name": "b_0F3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3933,
   "name": "mirror_bits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3937,
   "name": "b_0F61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3944,
   "name": "mirror_pairs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3948,
   "name": "b_0F6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3960,
   "name": "irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3978,
   "name": "b_0F8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4002,
   "name": "b_0FA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4009,
   "name": "credits_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4096,
   "name": "credits_text_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4190,
   "name": "mansion_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4207,
   "name": "living_room_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4216,
   "name": "mansion_entry_none",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4217,
   "name": "machine_room_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4228,
   "name": "r_1084",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4229,
   "name": "controls_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4259,
   "name": "mansion_pass_far",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4262,
   "name": "mansion_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4284,
   "name": "b_10BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4303,
   "name": "gnome_scramble",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4305,
   "name": "b_10D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4324,
   "name": "machine_countdown_over",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4343,
   "name": "b_10F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4351,
   "name": "drop_and_go_home",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4354,
   "name": "go_home",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4356,
   "name": "time_travel",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4387,
   "name": "r_1123",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4388,
   "name": "mansion_door_opening",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4401,
   "name": "mansion_pass_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4439,
   "name": "b_1157",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4445,
   "name": "b_115D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4458,
   "name": "closet_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4473,
   "name": "b_1179",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4499,
   "name": "b_1193",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4515,
   "name": "closet_leave",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4545,
   "name": "controls_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4571,
   "name": "b_11DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4578,
   "name": "b_11E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4594,
   "name": "r_11F2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4595,
   "name": "living_room_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4619,
   "name": "b_120B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4689,
   "name": "b_1251",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4694,
   "name": "hall_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4738,
   "name": "b_1282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4740,
   "name": "b_1284",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4743,
   "name": "machine_room_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4761,
   "name": "b_1299",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4794,
   "name": "b_12BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4797,
   "name": "b_12BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4822,
   "name": "b_12D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4826,
   "name": "b_12DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4830,
   "name": "door_use",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4880,
   "name": "r_1310",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4881,
   "name": "machine_button",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4906,
   "name": "b_132A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4924,
   "name": "b_133C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4937,
   "name": "b_1349",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4942,
   "name": "door_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4943,
   "name": "door_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4944,
   "name": "door_room",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4945,
   "name": "door_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4946,
   "name": "door_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4967,
   "name": "year_colour",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4985,
   "name": "b_1379",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4991,
   "name": "year_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4992,
   "name": "year_cells_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5005,
   "name": "gold_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5032,
   "name": "b_13A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5037,
   "name": "b_13AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5043,
   "name": "b_13B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5085,
   "name": "b_13DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5104,
   "name": "gold_entry_return",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 5105,
   "name": "gold_street_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5141,
   "name": "b_1415",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5156,
   "name": "gold_lift_house_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5174,
   "name": "b_1436",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5192,
   "name": "gold_dark_house_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5207,
   "name": "b_1457",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5215,
   "name": "b_145F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5218,
   "name": "gold_entry_none",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5219,
   "name": "gold_lift_foot_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5236,
   "name": "lift_under_gnome",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5238,
   "name": "b_1476",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5245,
   "name": "gold_room_flags_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5246,
   "name": "gold_room_flags",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5254,
   "name": "gold_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5255,
   "name": "gold_handlers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5270,
   "name": "gold_tank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5316,
   "name": "b_14C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5354,
   "name": "r_14EA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5355,
   "name": "gold_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5364,
   "name": "b_14F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5369,
   "name": "b_14F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5393,
   "name": "b_1511",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5399,
   "name": "b_1517",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5435,
   "name": "b_153B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5453,
   "name": "b_154D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5469,
   "name": "b_155D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5477,
   "name": "b_1565",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5481,
   "name": "b_1569",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5492,
   "name": "gold_doors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5532,
   "name": "b_159C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5555,
   "name": "b_15B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5557,
   "name": "r_15B5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5558,
   "name": "gold_lift",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5597,
   "name": "b_15DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5621,
   "name": "b_15F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5631,
   "name": "b_15FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5635,
   "name": "b_1603",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5651,
   "name": "b_1613",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5667,
   "name": "gold_change_room",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 5697,
   "name": "lift_stop_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5703,
   "name": "lift_stop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5706,
   "name": "gold_charsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5708,
   "name": "gold_charsets_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5710,
   "name": "gold_wheels",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5722,
   "name": "b_165A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5731,
   "name": "b_1663",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5746,
   "name": "b_1672",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5761,
   "name": "b_1681",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5777,
   "name": "r_1691",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5778,
   "name": "gold_scorpion",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5798,
   "name": "b_16A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5853,
   "name": "b_16DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5894,
   "name": "b_1706",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5896,
   "name": "b_1708",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5898,
   "name": "b_170A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5902,
   "name": "r_170E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5903,
   "name": "b_170F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5906,
   "name": "gold_stalactites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5931,
   "name": "b_172B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5957,
   "name": "r_1745",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5958,
   "name": "gold_horse",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6014,
   "name": "b_177E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6016,
   "name": "b_1780",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6025,
   "name": "b_1789",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6045,
   "name": "b_179D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6059,
   "name": "b_17AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6101,
   "name": "b_17D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6108,
   "name": "horse_hold",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 6117,
   "name": "b_17E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6144,
   "name": "r_1800",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6145,
   "name": "hole_walls",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6151,
   "name": "hole_pieces",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6158,
   "name": "hole_piece_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6165,
   "name": "hole_piece_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6172,
   "name": "hole_room_entry",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 6214,
   "name": "b_1846",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6216,
   "name": "b_1848",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6218,
   "name": "r_184A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6219,
   "name": "hole_exit_home",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 6222,
   "name": "hole_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6230,
   "name": "b_1856",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6261,
   "name": "b_1875",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6285,
   "name": "b_188D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6306,
   "name": "b_18A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6310,
   "name": "b_18A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6312,
   "name": "b_18A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6327,
   "name": "b_18B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6331,
   "name": "b_18BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6333,
   "name": "b_18BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6335,
   "name": "b_18BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6342,
   "name": "b_18C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6363,
   "name": "b_18DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6365,
   "name": "b_18DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6369,
   "name": "b_18E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6382,
   "name": "b_18EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6384,
   "name": "b_18F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6388,
   "name": "b_18F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6409,
   "name": "b_1909",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6413,
   "name": "r_190D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6414,
   "name": "hole_message_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6439,
   "name": "persia_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6458,
   "name": "b_193A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6470,
   "name": "b_1946",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6480,
   "name": "b_1950",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6505,
   "name": "b_1969",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6524,
   "name": "b_197C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6563,
   "name": "b_19A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6566,
   "name": "r_19A6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6567,
   "name": "persia_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6592,
   "name": "persia_carpet",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6635,
   "name": "b_19EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6688,
   "name": "b_1A20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6765,
   "name": "b_1A6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6779,
   "name": "b_1A7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6781,
   "name": "b_1A7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6809,
   "name": "b_1A99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6819,
   "name": "b_1AA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6835,
   "name": "b_1AB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6853,
   "name": "b_1AC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6868,
   "name": "b_1AD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6882,
   "name": "b_1AE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6886,
   "name": "b_1AE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6913,
   "name": "b_1B01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6945,
   "name": "r_1B21",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6946,
   "name": "persia_basket",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6961,
   "name": "b_1B31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6998,
   "name": "b_1B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7031,
   "name": "b_1B77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7100,
   "name": "b_1BBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7120,
   "name": "b_1BD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7131,
   "name": "b_1BDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7142,
   "name": "snake_shown",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 7152,
   "name": "b_1BF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7184,
   "name": "b_1C10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7227,
   "name": "b_1C3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7276,
   "name": "b_1C6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7286,
   "name": "snake_waiting",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7310,
   "name": "b_1C8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7328,
   "name": "r_1CA0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7329,
   "name": "persia_lid",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7393,
   "name": "r_1CE1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7394,
   "name": "snake_due",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 7411,
   "name": "snake_to_staff",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7444,
   "name": "r_1D14",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7445,
   "name": "b_1D15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7454,
   "name": "b_1D1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7494,
   "name": "b_1D46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7497,
   "name": "risen_snake_hold",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7518,
   "name": "r_1D5E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7519,
   "name": "persia_boulder",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7543,
   "name": "b_1D77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7550,
   "name": "b_1D7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7567,
   "name": "b_1D8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7570,
   "name": "b_1D92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7573,
   "name": "b_1D95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7576,
   "name": "b_1D98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7590,
   "name": "b_1DA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7596,
   "name": "boulder_explosion",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7627,
   "name": "b_1DCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7659,
   "name": "b_1DEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7667,
   "name": "b_1DF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7678,
   "name": "b_1DFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7724,
   "name": "dynamite_light",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7793,
   "name": "boulder_walls",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7827,
   "name": "b_1E93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7830,
   "name": "b_1E96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7837,
   "name": "r_1E9D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7838,
   "name": "persia_cave",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7864,
   "name": "b_1EB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7881,
   "name": "b_1EC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7888,
   "name": "b_1ED0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7896,
   "name": "b_1ED8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7915,
   "name": "b_1EEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7921,
   "name": "persia_cave_none",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 7922,
   "name": "persia_ways",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7944,
   "name": "b_1F08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7954,
   "name": "r_1F12",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7955,
   "name": "b_1F13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7964,
   "name": "b_1F1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7987,
   "name": "b_1F33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8001,
   "name": "b_1F41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8004,
   "name": "persia_room1_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8005,
   "name": "persia_piece_riding",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8015,
   "name": "r_1F4F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8016,
   "name": "persia_walls_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8032,
   "name": "persia_walls_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8053,
   "name": "persia_walls_cave",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8089,
   "name": "throne_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8112,
   "name": "b_1FB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8123,
   "name": "throne_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8124,
   "name": "persia_dynamite_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8146,
   "name": "b_1FD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8168,
   "name": "stone_cave_exit_x_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8171,
   "name": "stone_cave_exit_y_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8174,
   "name": "stone_cave_exit_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8177,
   "name": "stone_cave_exit_y",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8180,
   "name": "stone_cave_exit_room",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8183,
   "name": "stone_rocks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8184,
   "name": "f_1FF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8185,
   "name": "stone_blockers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8192,
   "name": "f_2000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8193,
   "name": "stone_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8197,
   "name": "f_2005",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8198,
   "name": "stone_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8201,
   "name": "f_2009",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8202,
   "name": "f_200A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8203,
   "name": "stone_walls",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8219,
   "name": "stone_walls_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8260,
   "name": "stone_walls_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8301,
   "name": "stone_walls_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8332,
   "name": "stone_walls_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8368,
   "name": "stone_walls_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8399,
   "name": "stone_walls_cave",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8405,
   "name": "stone_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8420,
   "name": "b_20E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8439,
   "name": "b_20F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8442,
   "name": "r_20FA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8443,
   "name": "stone_clifftop_home",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8446,
   "name": "stone_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8480,
   "name": "b_2120",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8491,
   "name": "b_212B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8534,
   "name": "b_2156",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8557,
   "name": "b_216D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8572,
   "name": "b_217C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8610,
   "name": "b_21A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8612,
   "name": "b_21A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8614,
   "name": "b_21A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8619,
   "name": "j_21AB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8643,
   "name": "b_21C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8660,
   "name": "b_21D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8662,
   "name": "stone_walls_check",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8693,
   "name": "b_21F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8723,
   "name": "b_2213",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8738,
   "name": "b_2222",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8749,
   "name": "b_222D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8756,
   "name": "stone_lever_far",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8759,
   "name": "stone_lever",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8817,
   "name": "b_2271",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8912,
   "name": "j_22D0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8932,
   "name": "r_22E4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8933,
   "name": "medusa_ball",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8941,
   "name": "greece_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8982,
   "name": "b_2316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8996,
   "name": "b_2324",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9029,
   "name": "b_2345",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9043,
   "name": "b_2353",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9054,
   "name": "b_235E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9070,
   "name": "r_236E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9071,
   "name": "greece_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9084,
   "name": "greece_outside",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9117,
   "name": "b_239D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9123,
   "name": "b_23A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9128,
   "name": "b_23A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9133,
   "name": "b_23AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9138,
   "name": "b_23B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9144,
   "name": "b_23B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9154,
   "name": "r_23C2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9155,
   "name": "greece_hall",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9187,
   "name": "b_23E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9208,
   "name": "b_23F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9251,
   "name": "r_2423",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9252,
   "name": "b_2424",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9263,
   "name": "greece_block",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9286,
   "name": "b_2446",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9307,
   "name": "b_245B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9327,
   "name": "b_246F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9334,
   "name": "b_2476",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9377,
   "name": "r_24A1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9378,
   "name": "pedestals_far1",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 9381,
   "name": "pedestal_left_other",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 9398,
   "name": "greece_pedestals",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9439,
   "name": "j_24DF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9469,
   "name": "j_24FD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9496,
   "name": "j_2518",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9526,
   "name": "b_2536",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9532,
   "name": "b_253C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9537,
   "name": "b_2541",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9554,
   "name": "b_2552",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9571,
   "name": "b_2563",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9586,
   "name": "pedestals_far2",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 9589,
   "name": "b_2575",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9599,
   "name": "b_257F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9675,
   "name": "b_25CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9744,
   "name": "j_2610",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9774,
   "name": "b_262E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9805,
   "name": "b_264D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9824,
   "name": "r_2660",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9825,
   "name": "greece_medusa",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9878,
   "name": "b_2696",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9886,
   "name": "b_269E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9903,
   "name": "b_26AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9905,
   "name": "b_26B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9916,
   "name": "b_26BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9918,
   "name": "b_26BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9932,
   "name": "b_26CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9934,
   "name": "b_26CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9939,
   "name": "b_26D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9960,
   "name": "b_26E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9980,
   "name": "b_26FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9985,
   "name": "b_2701",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10002,
   "name": "b_2712",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10012,
   "name": "b_271C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10043,
   "name": "b_273B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10063,
   "name": "j_274F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10083,
   "name": "r_2763",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10084,
   "name": "medusa_sway",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10100,
   "name": "greece_walls_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10131,
   "name": "greece_walls_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10157,
   "name": "greece_walls_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10168,
   "name": "greece_walls_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10189,
   "name": "greece_walls_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10200,
   "name": "ship_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10236,
   "name": "b_27FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10255,
   "name": "ship_entry_none",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10256,
   "name": "ship_bridge_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10270,
   "name": "b_281E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10284,
   "name": "b_282C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10300,
   "name": "b_283C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10316,
   "name": "r_284C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10317,
   "name": "ship_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10342,
   "name": "ship_bridge_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10365,
   "name": "b_287D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10392,
   "name": "b_2898",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10408,
   "name": "r_28A8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10409,
   "name": "ship_corridor_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10430,
   "name": "r_28BE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10431,
   "name": "ship_levers_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10452,
   "name": "b_28D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10465,
   "name": "b_28E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10478,
   "name": "b_28EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10497,
   "name": "b_2901",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10507,
   "name": "j_290B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10520,
   "name": "b_2918",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10533,
   "name": "b_2925",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10551,
   "name": "b_2937",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10561,
   "name": "r_2941",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10562,
   "name": "ship_room4_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10583,
   "name": "r_2957",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10584,
   "name": "ship_door_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10620,
   "name": "r_297C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10621,
   "name": "b_297D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10624,
   "name": "b_2980",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10639,
   "name": "ship_safe_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10655,
   "name": "b_299F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10678,
   "name": "b_29B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10732,
   "name": "b_29EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10783,
   "name": "b_2A1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10801,
   "name": "b_2A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10828,
   "name": "r_2A4C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10829,
   "name": "ship_pads_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10837,
   "name": "b_2A55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10866,
   "name": "b_2A72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10890,
   "name": "b_2A8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10922,
   "name": "b_2AAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10972,
   "name": "b_2ADC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11008,
   "name": "r_2B00",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11009,
   "name": "b_2B01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11024,
   "name": "b_2B10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11035,
   "name": "moon_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11051,
   "name": "r_2B2B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11052,
   "name": "ship_common",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11070,
   "name": "b_2B3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11092,
   "name": "b_2B54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11102,
   "name": "b_2B5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11112,
   "name": "b_2B68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11115,
   "name": "b_2B6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11138,
   "name": "b_2B82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11149,
   "name": "r_2B8D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11150,
   "name": "b_2B8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11164,
   "name": "ship_back_from_moon",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11171,
   "name": "ship_room_up",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11178,
   "name": "b_2BAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11210,
   "name": "b_2BCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11222,
   "name": "b_2BD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11225,
   "name": "r_2BD9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11226,
   "name": "ship_corridor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11250,
   "name": "b_2BF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11261,
   "name": "b_2BFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11266,
   "name": "b_2C02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11268,
   "name": "teleport_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11283,
   "name": "b_2C13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11286,
   "name": "ship_walls_corridor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11307,
   "name": "ship_walls_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11328,
   "name": "ship_walls_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11354,
   "name": "ship_pads",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11374,
   "name": "f_2C6E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 11375,
   "name": "ship_lights",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11378,
   "name": "ship_lights_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11382,
   "name": "ship_lights_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11386,
   "name": "salem_room_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11403,
   "name": "salem_land",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11428,
   "name": "r_2CA4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11429,
   "name": "salem_broom_park",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11479,
   "name": "b_2CD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11494,
   "name": "b_2CE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11534,
   "name": "salem_entry_none",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11535,
   "name": "salem_house_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11563,
   "name": "r_2D2B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11564,
   "name": "salem_hill_entry",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11572,
   "name": "b_2D34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11580,
   "name": "b_2D3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11588,
   "name": "b_2D44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11618,
   "name": "r_2D62",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11619,
   "name": "salem_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11636,
   "name": "salem_every_room",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11671,
   "name": "salem_dead_tests",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11683,
   "name": "b_2DA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11700,
   "name": "b_2DB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11704,
   "name": "b_2DB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11720,
   "name": "b_2DC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11724,
   "name": "b_2DCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11726,
   "name": "b_2DCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11742,
   "name": "salem_street_band",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11758,
   "name": "b_2DEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11766,
   "name": "b_2DF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11770,
   "name": "salem_side_exits",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11778,
   "name": "b_2E02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11780,
   "name": "b_2E04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11790,
   "name": "b_2E0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11792,
   "name": "b_2E10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11797,
   "name": "salem_doors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11827,
   "name": "b_2E33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11830,
   "name": "b_2E36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11859,
   "name": "b_2E53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11884,
   "name": "r_2E6C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11885,
   "name": "salem_change_room",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11921,
   "name": "salem_bat_in_cauldron",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11965,
   "name": "r_2EBD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11966,
   "name": "salem_dead_bat",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11990,
   "name": "r_2ED6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11991,
   "name": "salem_brew",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12049,
   "name": "b_2F11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12098,
   "name": "brew_second_potion",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12148,
   "name": "b_2F74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12156,
   "name": "b_2F7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12159,
   "name": "brew_broom_made",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12271,
   "name": "salem_smoke",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12282,
   "name": "smoke_remove",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12293,
   "name": "r_3005",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12294,
   "name": "salem_fireplace",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12326,
   "name": "b_3026",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12347,
   "name": "b_303B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12354,
   "name": "salem_hole",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12404,
   "name": "b_3074",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12407,
   "name": "r_3077",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12408,
   "name": "salem_rock_lift",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12421,
   "name": "b_3085",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12438,
   "name": "r_3096",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12439,
   "name": "broom_pair",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12452,
   "name": "b_30A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12467,
   "name": "r_30B3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12486,
   "name": "salem_charsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12488,
   "name": "f_30C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12490,
   "name": "broom_wander",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12505,
   "name": "b_30D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12512,
   "name": "broom_gone",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12523,
   "name": "b_30EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12536,
   "name": "j_30F8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12552,
   "name": "b_3108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12561,
   "name": "salem_broom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12611,
   "name": "b_3143",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12626,
   "name": "b_3152",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12633,
   "name": "b_3159",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12636,
   "name": "b_315C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12652,
   "name": "broom_steer",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12684,
   "name": "b_318C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12700,
   "name": "j_319C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12702,
   "name": "b_319E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12709,
   "name": "b_31A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12742,
   "name": "b_31C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12769,
   "name": "b_31E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12775,
   "name": "b_31E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12787,
   "name": "broom_rider",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12814,
   "name": "r_320E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12815,
   "name": "broom_height",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12837,
   "name": "b_3225",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12842,
   "name": "b_322A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12851,
   "name": "b_3233",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12899,
   "name": "b_3263",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12926,
   "name": "b_327E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12930,
   "name": "b_3282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12934,
   "name": "r_3286",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12935,
   "name": "broom_pull",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12936,
   "name": "f_3288",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12943,
   "name": "bats",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13008,
   "name": "b_32D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13030,
   "name": "b_32E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13049,
   "name": "b_32F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13053,
   "name": "b_32FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13065,
   "name": "b_3309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13087,
   "name": "b_331F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13121,
   "name": "b_3341",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13123,
   "name": "b_3343",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13125,
   "name": "b_3345",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13137,
   "name": "b_3351",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13159,
   "name": "b_3367",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13165,
   "name": "b_336D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13175,
   "name": "r_3377",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13176,
   "name": "gnome_hurt",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13183,
   "name": "travel_state",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13190,
   "name": "b_3386",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13236,
   "name": "b_33B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13246,
   "name": "b_33BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13281,
   "name": "b_33E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13300,
   "name": "b_33F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13325,
   "name": "b_340D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13341,
   "name": "r_341D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13342,
   "name": "room_exits",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13366,
   "name": "b_3436",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13372,
   "name": "b_343C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13383,
   "name": "b_3447",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13387,
   "name": "r_344B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13388,
   "name": "b_344C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13391,
   "name": "b_344F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13398,
   "name": "era_load_charset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13441,
   "name": "b_3481",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13469,
   "name": "b_349D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13477,
   "name": "unpack_to_f000",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13488,
   "name": "play_state",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13516,
   "name": "b_34CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13530,
   "name": "b_34DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13591,
   "name": "b_3517",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13630,
   "name": "b_353E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13647,
   "name": "b_354F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13697,
   "name": "play_torch",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 13724,
   "name": "b_359C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13728,
   "name": "b_35A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13738,
   "name": "b_35AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13740,
   "name": "b_35AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13776,
   "name": "b_35D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13804,
   "name": "b_35EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13809,
   "name": "b_35F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13812,
   "name": "b_35F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13831,
   "name": "b_3607",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13837,
   "name": "b_360D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13853,
   "name": "play_button",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 13877,
   "name": "b_3635",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13880,
   "name": "b_3638",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13908,
   "name": "b_3654",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13918,
   "name": "b_365E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13928,
   "name": "b_3668",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13936,
   "name": "b_3670",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13939,
   "name": "b_3673",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13942,
   "name": "b_3676",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13944,
   "name": "b_3678",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14013,
   "name": "j_36BD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14016,
   "name": "play_bolt",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14052,
   "name": "b_36E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14055,
   "name": "b_36E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14092,
   "name": "b_370C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14103,
   "name": "b_3717",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14106,
   "name": "b_371A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14151,
   "name": "b_3747",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14164,
   "name": "b_3754",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14189,
   "name": "b_376D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14208,
   "name": "b_3780",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14213,
   "name": "j_3785",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14237,
   "name": "play_joystick",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 14253,
   "name": "b_37AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14280,
   "name": "b_37C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14292,
   "name": "b_37D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14309,
   "name": "b_37E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14315,
   "name": "b_37EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14340,
   "name": "b_3804",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14345,
   "name": "b_3809",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14358,
   "name": "b_3816",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14361,
   "name": "b_3819",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14363,
   "name": "b_381B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14375,
   "name": "b_3827",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14381,
   "name": "call_17",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14384,
   "name": "call_0F",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14387,
   "name": "hand_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14391,
   "name": "bolt_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14395,
   "name": "carried_follow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14433,
   "name": "b_3861",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14460,
   "name": "r_387C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14461,
   "name": "switch_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14480,
   "name": "b_3890",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14496,
   "name": "era_start_room1",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14500,
   "name": "era_enter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14514,
   "name": "era_music_and_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14528,
   "name": "era_room_from_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14561,
   "name": "wait_raster",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14567,
   "name": "main_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14591,
   "name": "keys_read",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 14617,
   "name": "b_3919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14627,
   "name": "b_3923",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14635,
   "name": "b_392B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14637,
   "name": "b_392D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14652,
   "name": "b_393C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14700,
   "name": "b_396C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14704,
   "name": "b_3970",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14714,
   "name": "b_397A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14728,
   "name": "b_3988",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14730,
   "name": "b_398A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14741,
   "name": "b_3995",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14750,
   "name": "jump_state",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14753,
   "name": "room_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14770,
   "name": "b_39B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14781,
   "name": "b_39BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14796,
   "name": "b_39CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14804,
   "name": "b_39D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14817,
   "name": "room_record_offset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14830,
   "name": "screen_row_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14837,
   "name": "j_39F5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14846,
   "name": "ptr_add_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14858,
   "name": "r_3A0A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14859,
   "name": "door_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14868,
   "name": "b_3A14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14885,
   "name": "b_3A25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14905,
   "name": "door_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14919,
   "name": "room_enter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14942,
   "name": "b_3A5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14975,
   "name": "b_3A7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14996,
   "name": "b_3A94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15021,
   "name": "b_3AAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15028,
   "name": "b_3AB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15045,
   "name": "b_3AC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15068,
   "name": "door_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15090,
   "name": "b_3AF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15103,
   "name": "b_3AFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15113,
   "name": "b_3B09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15126,
   "name": "b_3B16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15146,
   "name": "b_3B2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15148,
   "name": "unpack",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15170,
   "name": "b_3B42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15179,
   "name": "b_3B4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15190,
   "name": "b_3B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15197,
   "name": "b_3B5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15207,
   "name": "b_3B67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15210,
   "name": "b_3B6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15217,
   "name": "b_3B71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15226,
   "name": "src_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15232,
   "name": "r_3B80",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15233,
   "name": "cell_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15245,
   "name": "b_3B8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15250,
   "name": "era_record_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15267,
   "name": "record_word",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15277,
   "name": "screen_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15291,
   "name": "b_3BBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15298,
   "name": "b_3BC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15304,
   "name": "object_pick_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15321,
   "name": "object_here",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15340,
   "name": "b_3BEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15341,
   "name": "r_3BED",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15342,
   "name": "object_drop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15389,
   "name": "b_3C1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15402,
   "name": "b_3C2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15466,
   "name": "r_3C6A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15467,
   "name": "sprites_touch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15491,
   "name": "b_3C83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15502,
   "name": "b_3C8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15534,
   "name": "trapezoid_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15562,
   "name": "b_3CCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15573,
   "name": "b_3CD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15576,
   "name": "b_3CD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15577,
   "name": "b_3CD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15582,
   "name": "trapezoid_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15583,
   "name": "f_3CDF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15584,
   "name": "f_3CE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15585,
   "name": "f_3CE1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 15666,
   "name": "gnome_next_pos",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15681,
   "name": "portal_show",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15684,
   "name": "b_3D44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15727,
   "name": "b_3D6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15734,
   "name": "b_3D76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15736,
   "name": "rnd",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15757,
   "name": "box_test_n",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15777,
   "name": "box_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15801,
   "name": "b_3DB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15802,
   "name": "r_3DBA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15803,
   "name": "box_list_test",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15819,
   "name": "r_3DCB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15820,
   "name": "sprite_ptrs_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15824,
   "name": "b_3DD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15833,
   "name": "gnome_keep_inside",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15856,
   "name": "b_3DF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15862,
   "name": "r_3DF6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15863,
   "name": "walls_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15881,
   "name": "b_3E09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15896,
   "name": "b_3E18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15901,
   "name": "r_3E1D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15902,
   "name": "b_3E1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15908,
   "name": "b_3E24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15927,
   "name": "b_3E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15946,
   "name": "b_3E4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15947,
   "name": "b_3E4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15948,
   "name": "b_3E4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15949,
   "name": "b_3E4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15950,
   "name": "b_3E4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15953,
   "name": "screen_black",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15966,
   "name": "b_3E5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15983,
   "name": "b_3E6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15990,
   "name": "b_3E76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15994,
   "name": "sword_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16002,
   "name": "mansion_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16554,
   "name": "controls_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16805,
   "name": "empty_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16806,
   "name": "living_room_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17171,
   "name": "hall_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17542,
   "name": "machine_room_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17866,
   "name": "gold_street_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18579,
   "name": "gold_caves_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19195,
   "name": "gold_saloon_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19615,
   "name": "gold_smithy_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19964,
   "name": "gold_treadle_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20410,
   "name": "wheel_flips",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20411,
   "name": "f_4FBB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20412,
   "name": "f_4FBC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20413,
   "name": "f_4FBD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20464,
   "name": "wheel_flips_room8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20494,
   "name": "gold_lift_house_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20855,
   "name": "gold_dark_house_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21405,
   "name": "closet_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21585,
   "name": "gold_cave4_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22086,
   "name": "gold_cave5_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22547,
   "name": "gold_cave6_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23029,
   "name": "hole_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23528,
   "name": "hole_message_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23885,
   "name": "persia_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24521,
   "name": "persia_sunset_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24818,
   "name": "persia_carpet_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25105,
   "name": "persia_basket_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25413,
   "name": "persia_boulder_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25756,
   "name": "persia_cave_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26063,
   "name": "stone_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26742,
   "name": "stone_right_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27237,
   "name": "stone_left_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27725,
   "name": "stone_cliffs1_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28232,
   "name": "stone_cliffs2_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28722,
   "name": "stone_cliffs3_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29279,
   "name": "stone_cave_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29693,
   "name": "greece_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30360,
   "name": "greece_temples_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30937,
   "name": "greece_block_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31561,
   "name": "greece_hall_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32211,
   "name": "greece_pedestals_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32881,
   "name": "greece_medusa_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33391,
   "name": "ship_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34076,
   "name": "ship_bridge_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34489,
   "name": "ship_corridor_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34790,
   "name": "ship_door_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35052,
   "name": "ship_safe_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35390,
   "name": "ship_pads_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35676,
   "name": "moon_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36051,
   "name": "salem_street_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36823,
   "name": "salem_church_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37322,
   "name": "salem_shop_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37727,
   "name": "salem_lake_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38030,
   "name": "salem_hill_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38418,
   "name": "salem_houses_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39091,
   "name": "chemist_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39467,
   "name": "shop_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39879,
   "name": "log_house_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40223,
   "name": "throne_charset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40876,
   "name": "throne_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41176,
   "name": "sprites_free",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41180,
   "name": "b_A0DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41189,
   "name": "sprite_free",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41200,
   "name": "b_A0F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41214,
   "name": "sprite_alloc",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41216,
   "name": "b_A100",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41224,
   "name": "b_A108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41242,
   "name": "sprite_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41287,
   "name": "b_A147",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41310,
   "name": "sprite_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41320,
   "name": "b_A168",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41323,
   "name": "b_A16B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41345,
   "name": "b_A181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41349,
   "name": "sprite_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41360,
   "name": "b_A190",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41374,
   "name": "b_A19E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41413,
   "name": "b_A1C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41415,
   "name": "b_A1C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41447,
   "name": "b_A1E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41453,
   "name": "j_A1ED",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41480,
   "name": "sprite_buffer_ptr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41494,
   "name": "spr_bit_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41500,
   "name": "b_A21C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41503,
   "name": "bit_mask_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41504,
   "name": "bit_mask",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41512,
   "name": "bit_mask_inv",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41520,
   "name": "obj_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41629,
   "name": "obj_anim",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41738,
   "name": "obj_size",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41847,
   "name": "obj_height",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41956,
   "name": "obj_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42065,
   "name": "obj_gfx_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42174,
   "name": "obj_gfx_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42283,
   "name": "gfx_bat",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42379,
   "name": "gfx_portal",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42403,
   "name": "gfx_gnome_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42655,
   "name": "gfx_gnome_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42844,
   "name": "gfx_gnome_side",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43219,
   "name": "f_A8D3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43220,
   "name": "f_A8D4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43221,
   "name": "f_A8D5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43222,
   "name": "gfx_horse_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43474,
   "name": "gfx_bolt",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43488,
   "name": "gfx_stalactite",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43528,
   "name": "gfx_piece_gold",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43564,
   "name": "gfx_piece_hole",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43600,
   "name": "gfx_piece_persia",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43624,
   "name": "gfx_piece_stone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43663,
   "name": "gfx_piece_greece",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43689,
   "name": "gfx_piece_moon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43713,
   "name": "gfx_piece_salem",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43739,
   "name": "gfx_log",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43749,
   "name": "gfx_machine_part",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43764,
   "name": "gfx_plant",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43826,
   "name": "f_AB32",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43827,
   "name": "light_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43869,
   "name": "gfx_fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43949,
   "name": "gfx_torch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44101,
   "name": "gfx_ladder",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44122,
   "name": "gfx_balloon_flat",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44149,
   "name": "gfx_balloon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44191,
   "name": "gfx_cage",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44225,
   "name": "gfx_tank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44263,
   "name": "gfx_scorpion",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44335,
   "name": "gfx_valve",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44353,
   "name": "gfx_lift",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44395,
   "name": "gfx_horse_food",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44408,
   "name": "gfx_wheel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44456,
   "name": "gfx_key",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44466,
   "name": "gfx_flask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44517,
   "name": "gfx_glass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44526,
   "name": "gfx_lamp",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44547,
   "name": "gfx_snake",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44625,
   "name": "gfx_snake_risen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44703,
   "name": "gfx_lid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44712,
   "name": "gfx_basket",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44736,
   "name": "gfx_woman",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44838,
   "name": "gfx_carpet_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44862,
   "name": "gfx_carpet_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44886,
   "name": "gfx_flute",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44892,
   "name": "gfx_flute_played",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45081,
   "name": "gfx_cave_mouth",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45144,
   "name": "gfx_cave_mouth_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45183,
   "name": "gfx_dynamite_lit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45393,
   "name": "gfx_stone_log",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45441,
   "name": "gfx_stone_log_tipped",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45489,
   "name": "gfx_small_rock",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45516,
   "name": "gfx_small_rock2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45552,
   "name": "gfx_boulder",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45615,
   "name": "gfx_candelabra",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45741,
   "name": "gfx_sword",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45804,
   "name": "gfx_shield",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45849,
   "name": "gfx_dark_hole",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45883,
   "name": "gfx_medusa",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46135,
   "name": "gfx_medusa_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46387,
   "name": "gfx_round_light",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46399,
   "name": "gfx_light_hole",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46411,
   "name": "gfx_pyramid_key",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46421,
   "name": "gfx_lock",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46431,
   "name": "gfx_safe",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46441,
   "name": "gfx_sliver1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46456,
   "name": "gfx_sliver2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46477,
   "name": "gfx_lever1_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46511,
   "name": "gfx_lever1_on",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46545,
   "name": "gfx_lever2_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46579,
   "name": "gfx_lever2_on",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46613,
   "name": "gfx_doorway1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46655,
   "name": "gfx_doorway2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46697,
   "name": "gfx_doorway3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46739,
   "name": "gfx_doorway4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46781,
   "name": "gfx_smoke",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47075,
   "name": "gfx_potion",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47243,
   "name": "gfx_broom_handle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47285,
   "name": "gfx_broom_head",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47327,
   "name": "gfx_flying_broom_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47357,
   "name": "gfx_flying_broom_middle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47387,
   "name": "gfx_flying_broom_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47417,
   "name": "gfx_rock_hollow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47459,
   "name": "gfx_rock_piece",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47489,
   "name": "gfx_cauldron",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47517,
   "name": "gfx_staff",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47553,
   "name": "gfx_king1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47595,
   "name": "gfx_king2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47637,
   "name": "gfx_king3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47700,
   "name": "gfx_king4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47763,
   "name": "gfx_king5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47826,
   "name": "gfx_king6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47889,
   "name": "sfx_stop_all",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47891,
   "name": "b_BB13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47908,
   "name": "sfx_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47921,
   "name": "r_BB31",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47922,
   "name": "sfx_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47924,
   "name": "b_BB34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47933,
   "name": "b_BB3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47953,
   "name": "sfx_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47955,
   "name": "b_BB53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47963,
   "name": "b_BB5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47966,
   "name": "sfx_command",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 47992,
   "name": "sfx_cmd_again",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47998,
   "name": "sfx_cmd_warble_80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48002,
   "name": "sfx_cmd_warble",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48004,
   "name": "b_BB84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48019,
   "name": "b_BB93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48052,
   "name": "sfx_cmd_loop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48059,
   "name": "sfx_cmd_slide_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48064,
   "name": "sfx_cmd_slide_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48066,
   "name": "j_BBC2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48072,
   "name": "b_BBC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48078,
   "name": "sfx_cmd_wait",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48080,
   "name": "b_BBD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48085,
   "name": "sfx_cmd_fade",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48091,
   "name": "sfx_cmd_wave",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48121,
   "name": "sfx_cmd_pitch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48132,
   "name": "sfx_next",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 48136,
   "name": "b_BC08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48139,
   "name": "sfx_cmd_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48149,
   "name": "sfx_write",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48155,
   "name": "j_BC1B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48180,
   "name": "j_BC34",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48186,
   "name": "r_BC3A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48187,
   "name": "sfx_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48188,
   "name": "f_BC3C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48211,
   "name": "sfx_waves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48219,
   "name": "sfx_pitch_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48225,
   "name": "sfx_pitch_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48231,
   "name": "sfx_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48238,
   "name": "sfx_script",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48276,
   "name": "sfx_voice",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48278,
   "name": "music_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48282,
   "name": "sid_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48286,
   "name": "b_BC9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48298,
   "name": "tune_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48309,
   "name": "b_BCB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48321,
   "name": "b_BCC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48334,
   "name": "tune_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48366,
   "name": "music_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48384,
   "name": "b_BD00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48388,
   "name": "b_BD04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48414,
   "name": "music_next_note",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 48430,
   "name": "b_BD2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48441,
   "name": "b_BD39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48486,
   "name": "music_voice3",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 48491,
   "name": "r_BD6B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48492,
   "name": "note_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48552,
   "name": "note_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48612,
   "name": "tune0_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48733,
   "name": "tune0_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48854,
   "name": "tune1_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48979,
   "name": "tune1_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49050,
   "name": "tune2_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49149,
   "name": "tune2_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49222,
   "name": "tune3_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49431,
   "name": "tune3_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49598,
   "name": "tune4_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49755,
   "name": "tune4_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49928,
   "name": "tune5_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50109,
   "name": "tune5_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50210,
   "name": "tune6_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50307,
   "name": "tune6_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50356,
   "name": "tune7_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50503,
   "name": "tune7_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50600,
   "name": "source_fragment",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55495,
   "name": "f_D8C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55552,
   "name": "f_D900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55655,
   "name": "f_D967",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55808,
   "name": "f_DA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55855,
   "name": "f_DA2F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56064,
   "name": "f_DB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60416,
   "name": "f_EC00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63488,
   "name": "f_F800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63744,
   "name": "f_F900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63780,
   "name": "f_F924",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63781,
   "name": "f_F925",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63824,
   "name": "f_F950",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 63929,
   "name": "f_F9B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64000,
   "name": "f_FA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64248,
   "name": "f_FAF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64504,
   "name": "f_FBF8",
   "type": "Field",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 2304,
   "type": "line",
   "text": "The file's first nine bytes are a cartridge's start-up header: the cold-start and warm-start addresses, both $0CDA (start), and the signature $C3 $C2 $CD $38 $30, \"CBM80\" with the letters shifted. The KERNAL looks for it at $8004, not here, and nothing in the game reads it."
  },
  {
   "address": 2313,
   "type": "line",
   "text": "Where each world object starts, three bytes each for objects 4-$6C: era (high nibble) and room (low nibble, 15 for nowhere yet), x, y. The start-up unpacks it into the object arrays ($0D87)."
  },
  {
   "address": 2628,
   "type": "line",
   "text": "The time portals (object $1B), five bytes each: the era and room where one opens, its x and y, and the era it leads to. era 2 room 3 to era 5; era 3 room 1 to era 1; era 4 room 1 to era 7; era 5 room 1 to era 2; era 6 room 3 to era 4; era 7 room 1 to era 8; era 8 room 1 to era 7; era 8 room 3 to era 3; era 9 room 1 to era 1. A 0 ends the list (portal_show)."
  },
  {
   "address": 2629,
   "type": "line",
   "text": "The portals' rooms, read by portal_show as portal_table + 1 + X."
  },
  {
   "address": 2630,
   "type": "line",
   "text": "The portals' x, read as portal_table + 2 + Y."
  },
  {
   "address": 2631,
   "type": "line",
   "text": "The portals' y, read as portal_table + 3 + Y."
  },
  {
   "address": 2632,
   "type": "line",
   "text": "The era each portal leads to, read by play_state as portal_table + 4 + X when the gnome touches the portal."
  },
  {
   "address": 2674,
   "type": "line",
   "text": "Four bytes between the portal list and the era records that nothing reads."
  },
  {
   "address": 2678,
   "type": "line",
   "text": "Era 1's record, Gnome Mansion, today: per-pass routine $10A6, room-entry routine $105E, character set $3E82, tune 3 (byte 6, the tune times 4), tempo mask $07, the gnome's start at x $80, y $43, then the packed screens of rooms 1-5."
  },
  {
   "address": 2684,
   "type": "line",
   "text": "Era 1's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2688,
   "type": "line",
   "text": "Era 1's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2698,
   "type": "line",
   "text": "Era 2's record, the California gold rush, 1849: per-pass routine $14EB, room-entry routine $138D, character set $45CA, tune 1 (byte 6, the tune times 4), tempo mask $01, the gnome's start at x $3F, y $8E, then the packed screens of rooms 1-9. The gold rush uses this character set in rooms 1-3 and the one at $4893 from room 4 on (era_load_charset)."
  },
  {
   "address": 2704,
   "type": "line",
   "text": "Era 2's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2708,
   "type": "line",
   "text": "Era 2's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2726,
   "type": "line",
   "text": "Era 3's record, the black hole, 9999: per-pass routine $184E, room-entry routine $181C, character set $59F5, tune 3 (byte 6, the tune times 4), tempo mask $07, the gnome's start at x $50, y $5A, then the packed screens of rooms 1-2."
  },
  {
   "address": 2732,
   "type": "line",
   "text": "Era 3's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2736,
   "type": "line",
   "text": "Era 3's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2740,
   "type": "line",
   "text": "Era 4's record, magical Persia, 893 BC: per-pass routine $19A7, room-entry routine $1927, character set $5D4D, tune 2 (byte 6, the tune times 4), tempo mask $01, the gnome's start at x $50, y $96, then the packed screens of rooms 1-8."
  },
  {
   "address": 2746,
   "type": "line",
   "text": "Era 4's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2750,
   "type": "line",
   "text": "Era 4's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2766,
   "type": "line",
   "text": "Era 5's record, the stone age, 9600 BC: per-pass routine $20FE, room-entry routine $20D5, character set $65CF, tune 5 (byte 6, the tune times 4), tempo mask $01, the gnome's start at x $50, y $8F, then the packed screens of rooms 1-8."
  },
  {
   "address": 2772,
   "type": "line",
   "text": "Era 5's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2776,
   "type": "line",
   "text": "Era 5's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2792,
   "type": "line",
   "text": "Era 6's record, mythological Greece, 86 BC: per-pass routine $236F, room-entry routine $22ED, character set $73FD, tune 7 (byte 6, the tune times 4), tempo mask $01, the gnome's start at x $50, y $96, then the packed screens of rooms 1-5."
  },
  {
   "address": 2798,
   "type": "line",
   "text": "Era 6's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2802,
   "type": "line",
   "text": "Era 6's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2812,
   "type": "line",
   "text": "Era 7's record, the intergalactic spaceship, 3456: per-pass routine $284D, room-entry routine $27D8, character set $826F, tune 4 (byte 6, the tune times 4), tempo mask $FF, the gnome's start at x $50, y $96, then the packed screens of rooms 1-8."
  },
  {
   "address": 2818,
   "type": "line",
   "text": "Era 7's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2822,
   "type": "line",
   "text": "Era 7's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2838,
   "type": "line",
   "text": "Era 8's record, colonial Salem, 1692: per-pass routine $2D63, room-entry routine $2C7A, character set $8CD3, tune 0 (byte 6, the tune times 4), tempo mask $03, the gnome's start at x $14, y $90, then the packed screens of rooms 1-7. Salem uses this character set in rooms 1-4 and the one at $9612 in the houses, rooms 5-7."
  },
  {
   "address": 2844,
   "type": "line",
   "text": "Era 8's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2848,
   "type": "line",
   "text": "Era 8's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2862,
   "type": "line",
   "text": "Era 9's record, the throne room, the end of the game: per-pass routine $1FBB, room-entry routine $1F99, character set $9D1F, tune 3 (byte 6, the tune times 4), tempo mask $07, the gnome's start at x $91, y $87, then the packed screen of its one room."
  },
  {
   "address": 2868,
   "type": "line",
   "text": "Era 9's tune, tempo mask and the gnome's starting x and y (era_enter)."
  },
  {
   "address": 2872,
   "type": "line",
   "text": "Era 9's packed room screens, one address for each room from room 1 (room_draw)."
  },
  {
   "address": 2874,
   "type": "line",
   "text": "Rectangles that the code tests the gnome or an object against (box_test_n), four bytes each: x, y, width and height. The callers pick one by its offset: $00 living room door, left; $04 living room door, right; $08 hall door, left; $0C hall door, right; $10 the time machine room's door; $14 the time machine; $18 the living room fireplace; $1C the treadle in the gold rush street; $20 gold rush door, room 1; $24 gold rush door, room 2; $28 gold rush door, room 3; $2C Salem, the chemist's door; $30 Salem, the shop's door; $34 Salem, the log house's door; $38 Salem, the way home in room 2; $3C Salem, the fireplace; $40 Salem, the hollow under the rock; $44 named by no caller; $48 the oxygen tank's pad; $4C the foot of the ladder; $50 where the gnome stands to put the ladder back; $54 the foot of the boulder; $58 by the cave mouth; $5C Greece, the marked block in room 2; $60 Greece, the marked block in room 3; $64 Greece, the left pedestal; $68 Greece, the right pedestal."
  },
  {
   "address": 2875,
   "type": "line",
   "text": "The boxes' y, read by box_test_n as box_list + 1 + Y."
  },
  {
   "address": 2876,
   "type": "line",
   "text": "The boxes' widths, read as box_list + 2 + Y."
  },
  {
   "address": 2877,
   "type": "line",
   "text": "The boxes' heights, read as box_list + 3 + Y."
  },
  {
   "address": 2902,
   "type": "line",
   "text": "box_list + $1C: gold_doors reads here, indexed by the room less 6 times 4, the left x of the doorway (box $20 or $24) that a house in room 7 or 8 opens onto."
  },
  {
   "address": 2914,
   "type": "line",
   "text": "box_list + $28: salem_doors reads here, indexed by the room less 4 times 4, the left x of the doorway (box $2C, $30 or $34) of the house the gnome walks out of."
  },
  {
   "address": 2978,
   "type": "line",
   "text": "Box $68, Greece's right pedestal."
  },
  {
   "address": 2981,
   "type": "line",
   "text": "door_check reads the mansion's door lists here, as $0BA5 + room for rooms 1-3, so at $0BA6, $0BA7 (mansion_door_index) and $0BA8, era_offsets' first byte."
  },
  {
   "address": 2982,
   "type": "line",
   "text": "The offset in box_list of each mansion room's two door boxes: room 1 at 0, room 2 at 8, and room 3's, $10, is era_offsets' first byte."
  },
  {
   "address": 2984,
   "type": "line",
   "text": "Each era's record as an offset from $0A76 (era_record_ptr), for eras 0-9. Era 0's, $10, which no era uses, is also room 3's entry in mansion_door_index; eras 8 and 9's are also era 0's entry in era_name_ptrs."
  },
  {
   "address": 2992,
   "type": "line",
   "text": "The address of each era's name, two bytes an era from era 0, read by travel_state for the screen of the trip. Era 0's pair is era_offsets' last two bytes ($B8A0, nothing), and eras 1-8 point at the names that follow; era 9 is entered without a trip, so its pair, the first two bytes of era 1's name, is never read."
  },
  {
   "address": 2993,
   "type": "line",
   "text": "The high bytes of the era names' addresses, read by travel_state as era_name_ptrs + 1 + Y."
  },
  {
   "address": 2994,
   "type": "line",
   "text": "The addresses of eras 1-8's names."
  },
  {
   "address": 3010,
   "type": "line",
   "text": "Era 1's name for the trip's screen, 30 screen codes: \"TODAY GNOME MANSION\"."
  },
  {
   "address": 3040,
   "type": "line",
   "text": "Era 2's name for the trip's screen, 30 screen codes: \"1849 CALIFORNIA GOLD RUSH\"."
  },
  {
   "address": 3070,
   "type": "line",
   "text": "Era 3's name for the trip's screen, 30 screen codes: \"9999 THE BLACK HOLE\"."
  },
  {
   "address": 3100,
   "type": "line",
   "text": "Era 4's name for the trip's screen, 30 screen codes: \"893 BC MAGICAL PERSIA\"."
  },
  {
   "address": 3130,
   "type": "line",
   "text": "Era 5's name for the trip's screen, 30 screen codes: \"9600 BC STONE AGE\"."
  },
  {
   "address": 3160,
   "type": "line",
   "text": "Era 6's name for the trip's screen, 30 screen codes: \"86 BC MYTHOLOGICAL GREECE\"."
  },
  {
   "address": 3190,
   "type": "line",
   "text": "Era 7's name for the trip's screen, 30 screen codes: \"3456 INTERGALACTIC SPACESHIP\"."
  },
  {
   "address": 3220,
   "type": "line",
   "text": "Era 8's name for the trip's screen, 30 screen codes: \"1692 COLONIAL SALEM, MA\"."
  },
  {
   "address": 3250,
   "type": "line",
   "text": "Writes a sprite's horizontal position. A is the game's x coordinate, which counts in steps of two pixels; X is the hardware sprite (0-7). It adds 12, doubles the sum into the sprite's X register ($D000 + 2X) and puts the carry, the ninth bit, into that sprite's bit of $D010 (the mask from spr_bit_set). Two callers: sprite_update and object_drop."
  },
  {
   "address": 3281,
   "type": "line",
   "text": "Writes a sprite's vertical position: A plus $42 (66) into $D001 + Y, where Y is twice the sprite number, left there by sprite_set_x. Its one caller, sprite_update, calls sprite_set_x just before."
  },
  {
   "address": 3288,
   "type": "line",
   "text": "The RESET vector at $FFFC points here (cli, rti), but a reset of the C64 banks the KERNAL ROM in and so never reads the RAM vector."
  },
  {
   "address": 3290,
   "type": "line",
   "text": "The game's entry, where the loader jumps once T1 is in memory, and also the NMI vector, so RESTORE starts the game again. It masks the CIA interrupts, copies the character ROM to $E000-$EFFF (read at $D000 with the I/O banked out), clears $EC00-$FEFF (so the copy that stays is $E000-$EBFF), selects video bank 3 ($C000-$FFFF), points the hardware NMI, RESET and IRQ vectors at start, reset_vector and irq, blanks the screen and banks the ROMs out ($01 = $35). Then it clears $0002-$07FF and sets up the objects from obj_start_table, before the credits and the first room."
  },
  {
   "address": 3463,
   "type": "line",
   "text": "Unpacks obj_start_table for objects 4-$6C (X = $69 down to 1, three bytes each, read backwards from $0A41): byte 0's low nibble is the object's room (15 becomes $FF, nowhere yet), its high nibble its era, byte 1 its x and byte 2 its y; the object's sprite slot starts at 0 (not on screen). Then sprites_build, the sprite pointers, multicolour off and the SID silenced."
  },
  {
   "address": 3554,
   "type": "line",
   "text": "Clears colour RAM to white and the screen ($F800-$FBF7) to spaces, then colours screen rows 5, 9 and 14 yellow, orange and grey for the credits."
  },
  {
   "address": 3610,
   "type": "line",
   "text": "Prints credits_text five characters a frame from the top left of the screen, with a ball (screen code $51) as the cursor; it waits for each frame by watching bit 7 of $D011 go low and high again. A $FF byte is followed by a count of cells to leave blank; a 0 ends the text, and the finished screen is held for 256 frames."
  },
  {
   "address": 3712,
   "type": "line",
   "text": "Starts play: sprite 0 on, era 1, room 1 (the mansion's living room), the frame counter at 3, the pause flag set to running (dec $AF from 0 to $FF), era_enter, the fire state released, the KERNAL-style IRQ vector $0314 pointed into irq, SID volume 15, character set $F000, and the raster interrupt on line $6E. After a wait for line $FA the screen is switched on ($D011 = $17), interrupts are enabled and it jumps into main_loop."
  },
  {
   "address": 3795,
   "type": "line",
   "text": "Sets the SID's voice 3 to noise at the highest frequency, with its gate off, sets the sprites' two shared multicolours (orange and white), and builds the mirrored sprite frames: it copies six 63-byte multicolour sprites, $A75C-$A8D5, to $0400-$0579 with each row's three bytes put in the opposite order and each byte's bit pairs mirrored by mirror_pairs; then 252 bytes, $A8D6-$A9D1, to $057A-$0675 with each row reversed the same way and each byte's bits reversed by mirror_bits, which mirrors a hi-res sprite."
  },
  {
   "address": 3933,
   "type": "line",
   "text": "Returns A with its eight bits in reverse order (bit 7 becomes bit 0). Uses $06. Called three times by sprites_build."
  },
  {
   "address": 3944,
   "type": "line",
   "text": "Returns A with its four bit pairs in reverse order, which mirrors a multicolour sprite byte and keeps its colours. Uses $06. Called three times by sprites_build."
  },
  {
   "address": 3960,
   "type": "line",
   "text": "The raster interrupt, through the RAM vector at $FFFE. It saves the registers, and if the B flag on the stack says a BRK caused it, returns at once with interrupts enabled. Otherwise it runs music_play, waits for the raster to leave line $6E, acknowledges the video chip and CIA 1, and returns. The game's own work is all in main_loop."
  },
  {
   "address": 4009,
   "type": "line",
   "text": "The credits screen in screen codes, printed by credits_print from $F800: \"U.S. GOLD, LTD.\", \"PRESENTS\", the title \"T I M E  T U N N E L\" in reverse video, \"BY\", \"APPLIED SYSTEMS ENGINEERING, INC.\", \"(WITH HELP FROM ON-TIME SOFTWARE)\", \"SAN JOSE, CA\", \"COPYRIGHT 1985\". $FF n leaves n cells blank and 0 ends it."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The end of credits_text, which starts at $0FA9: \"NGINEERING, INC.\" (the end of the developer's name), \"(WITH HELP FROM ON-TIME SOFTWARE)\", \"SAN JOSE, CA\" and \"COPYRIGHT 1985\", with $FF n gaps between them, and the 0 that ends the text."
  },
  {
   "address": 4190,
   "type": "line",
   "text": "The mansion's room-entry routine (era 1, record bytes 2-3), run by room_enter after the room is drawn. It clears the door and travel counter $30, then picks the room's own entry (switch_room): the living room (1) shows the fire, object $1E, once it has been lit ($A6); the room with the time machine (3) doubles the height of the ladder, object $25, when it is there; the time machine's controls (4) are a text screen."
  },
  {
   "address": 4197,
   "type": "line",
   "text": "Entry table for switch_room, one address per mansion room 1-5: $106F (living room), $1078 (nothing to do, rooms 2 and 5), $1079 (the room with the time machine), $1085 (the controls)."
  },
  {
   "address": 4207,
   "type": "line",
   "text": "Mansion room 1 on entry: once the fire is lit ($A6 not 0) gives object $1E, the fire, a sprite in the fireplace."
  },
  {
   "address": 4216,
   "type": "line",
   "text": "Mansion rooms 2 and 5 on entry: nothing to do."
  },
  {
   "address": 4217,
   "type": "line",
   "text": "Mansion room 3 on entry: when the ladder (object $25) has a sprite, sets that sprite's bit in $D017 so it shows at double height."
  },
  {
   "address": 4229,
   "type": "line",
   "text": "Mansion room 4 on entry, the controls of the time machine: switches multicolour off ($D016 = 8) and sets $B4, which stops the button picking things up or firing; puts the gnome at x $60, y $41; points the video chip at the character ROM's copy at $E000 ($D018 = $E8) for the text; switches every sprite off; and lights the year chosen in $8C in white (year_colour)."
  },
  {
   "address": 4259,
   "type": "line",
   "text": "Part of mansion_pass: the jump to its normal per-pass code at $1131, for a branch that cannot reach it."
  },
  {
   "address": 4262,
   "type": "line",
   "text": "The mansion's per-pass routine (era 1, record bytes 0-1), called every pass of play_state. $30 says what is under way. 0: normal play ($1131). 1-$1D: a door is opening; the count goes up by one a pass and at $1E the gnome enters the next room facing left (room_enter). Negative: the time machine is running. Each pass it counts $30 down from $FF, flashes the background ($D021 up by one), holds the gnome's animation, fills the machine's light sprites (objects $17 and $18, whose frames are built at $0676-$069F) with random bits under a mask taken from $AB33, and clears random bits in ten random bytes of the gnome's sprite buffer at $EC00, so that he dissolves. When $30 reaches $7F the trip starts ($10E4)."
  },
  {
   "address": 4303,
   "type": "line",
   "text": "Clears random bits in ten random bytes of the first 64 of the gnome's sprite buffer ($EC00-$EC3F), so that he breaks up. Part of mansion_pass's time machine effect, and called on its own twice by the spaceship."
  },
  {
   "address": 4324,
   "type": "line",
   "text": "The time machine's countdown is over: stops the sound effects, starts effect 5, and if the machine was not mended ($31 = 0) puts the gnome back in the living room (era 1, room 1, era_start_room1). Otherwise the era is the year chosen on the controls plus 2 ($8C + 2) and it falls into time_travel."
  },
  {
   "address": 4351,
   "type": "line",
   "text": "Drops what the gnome carries (object_drop) and sends him to era 1, the mansion, through time_travel. Seven callers in the eras, the ways home from them."
  },
  {
   "address": 4354,
   "type": "line",
   "text": "Sends the gnome home to the mansion: era 1 into time_travel, which follows. It is the last two bytes of the instruction at $10FF, entered on its own; ten jumps lead here, the ways home that leave what he carries in his hands, one of them ($1EEE) itself never reached."
  },
  {
   "address": 4356,
   "type": "line",
   "text": "Starts a trip to the era in A: sets the era ($2A), blanks the screen and frees sprites 1-7 (screen_off), stops the sound effects and the music, starts effect 3, switches every sprite off, zeroes the trip's pass counter $73 and makes travel_state the main loop's state ($04-$05). Reached from the control room's chosen year ($10FC), from play_state when the gnome touches a portal ($35CD), and from go_home, which runs into it."
  },
  {
   "address": 4388,
   "type": "line",
   "text": "Part of mansion_pass: a door is opening. Counts $30 up by one a pass; at $1E sets the gnome's facing to 2 (left) and enters the room the door leads to, which door_use has already put in $19."
  },
  {
   "address": 4401,
   "type": "line",
   "text": "Part of mansion_pass, normal play. Keeps the gnome's vertical move in $79, then in rooms 1-3 tests where he is about to step (gnome_next_pos) against three trapezoids of the room, twelve bytes from trapezoid_table + (room - 1) x 12: he may step only onto the floor (the first) and off the furniture (the second and third), or his move is stopped. Then runs the room's own code (switch_room)."
  },
  {
   "address": 4448,
   "type": "line",
   "text": "Entry table for switch_room, the mansion's per-pass code for rooms 1-5: $11F3 (living room), $1256 (hall), $1287 (the room with the time machine), $11C1 (the controls), $116A (room 5, the same code as the closet)."
  },
  {
   "address": 4458,
   "type": "line",
   "text": "The closet's per-pass code, shared by mansion room 5 and room 9 of the gold rush, the closet itself. It keeps the gnome on the screen (gnome_keep_inside) and does nothing more until the button has been held 60 passes ($AA). Then it counts the objects on this screen other than the one he carries (object_here, objects 4-$6C), one each; an object whose obj_anim bit 6 is set (the seven pieces of the scripture) puts the count at five instead. With five or more he stays, and sound effect 0 plays. Otherwise he leaves ($11A3)."
  },
  {
   "address": 4515,
   "type": "line",
   "text": "Takes the gnome back out of the closet to where he held the button: era, room, x and y from $B0-$B3, where play_state saved them. Loads that era's character set (era_load_charset), starts its tune and enters the room (era_music_and_room), then runs the era's room-entry routine (record bytes 2-3, call_0F)."
  },
  {
   "address": 4545,
   "type": "line",
   "text": "Mansion room 4, the controls of the time machine, each pass. The gnome does not move. Each press of the button moves the lit year on by one, from $8C = 6 back to 0 (year_colour: the old year in light blue, the new one in white). The joystick pulled down leaves for room 2 (sprite_ptrs_set, room_enter)."
  },
  {
   "address": 4595,
   "type": "line",
   "text": "Mansion room 1, the living room, each pass. While the fire burns (object $1E has a sprite), the torch (object $24) carried into it lights ($AB = 1) and stays lit. The log (object $13) dropped inside the fireplace (box $18 of box_list) is set at x $48, y $47, on the grate; a bolt (object $11) that hits it lights the fire: the bolt goes, the fire appears, $A6 is set, sound effect 1 plays, and the missing part of the time machine (object $15) appears on the table, its era and room set to 1. Then the doors ($12DE), unless the game is frozen."
  },
  {
   "address": 4694,
   "type": "line",
   "text": "Mansion room 2, the hall, each pass. In the left half (x below $50) a step that would take the gnome to a y of $5A-$6D outside trapezoid $24 (the table at the left) is stopped, and he is nudged one step right and towards y $64, round the table. Then the doors ($12DE)."
  },
  {
   "address": 4743,
   "type": "line",
   "text": "Mansion room 3, the time machine's room, each pass. The gnome standing in box $50 puts the ladder (object $25) back at x $7E, y $4B. The missing part (object $15) dropped on the machine is held at y $4B, and when it is left of the gnome it is set at x $6F, in its place. Then the climb: below y $62 the gnome is off the floor, and a vertical move that the floor test stopped is given back while he is at y $40-$5B, or at $5C-$61 inside box $4C, the foot of the ladder; above $40 he can only go down. Then the doors ($12DE)."
  },
  {
   "address": 4830,
   "type": "line",
   "text": "The mansion's doors and the time machine, when the button is pressed at one (door_check gives the door's box in Y). Box $14 is the machine itself ($1311). For a door it freezes the game, starts the door count $30, and reads the door's five bytes in door_table (box offset x 5/4): the gnome's x and y in the next room, that room, and the column and row where door_draw draws the open door."
  },
  {
   "address": 4881,
   "type": "line",
   "text": "The button pressed at the time machine. The machine is mended ($31 = 1) when the missing part (object $15) is here at exactly x $6F, y $4B. Either way it stops the music and the sound effects, plays effect 4, takes the carried object's sprite away, sets $30 to $FF to start mansion_pass's countdown, freezes the game, and shows the machine's lights: object $18, and object $17 as well when it is mended."
  },
  {
   "address": 4942,
   "type": "line",
   "text": "Five bytes for each door of the mansion, in the order of their boxes in box_list: the gnome's x and y on arrival, the room the door leads to, and the screen column and row of the door (door_draw). Living room: to rooms 3 and 2. Hall: to rooms 3 and 4 (the controls). Room 3: to room 1."
  },
  {
   "address": 4943,
   "type": "line",
   "text": "door_table + 1, the gnome's y on arrival, read here with Y the door's offset."
  },
  {
   "address": 4944,
   "type": "line",
   "text": "door_table + 2, the room the door leads to."
  },
  {
   "address": 4945,
   "type": "line",
   "text": "door_table + 3, the screen column where the open door is drawn."
  },
  {
   "address": 4946,
   "type": "line",
   "text": "door_table + 4, the screen row of the open door."
  },
  {
   "address": 4967,
   "type": "line",
   "text": "Colours the year $8C on the time machine's controls: writes A to the seven colour-RAM cells of that year, from year_cells. Callers: the controls' room entry ($1085, white) and each pass ($11C1, light blue for the old year, white for the new)."
  },
  {
   "address": 4991,
   "type": "line",
   "text": "The colour-RAM address of each of the seven years on the controls, in the order of $8C: 1849 (the gold rush), 9999 (the black hole), 893 BC (Persia), 9600 BC (the stone age), 86 BC (Greece), 3456 (the spaceship) and 1692 (Salem). The era chosen is $8C + 2."
  },
  {
   "address": 4992,
   "type": "line",
   "text": "year_cells + 1, the high byte of each address, read here."
  },
  {
   "address": 5005,
   "type": "line",
   "text": "The gold rush's room-entry routine (era 2, record bytes 2-3). Every room: the scorpion (object $0B) is set on the ground (y $9C), the oxygen tank's catch $A9 is cleared, and a falling cage stops falling ($A7 bit 6). On arrival in the era ($29 set) the gnome is off the lift ($76 = 0) and the horse stops following ($A8 bit 6 cleared); $A8, the horse's object, is set to $19 only when it is still 0, on the first arrival, and otherwise keeps $19 or $22 and its bit 7. Nothing more on arrival. Otherwise a cage that has not trapped the scorpion is reset ($A7 = 0); when the balloon (object $0F) is not carried and the flat balloon (object $0E) is gone, the flat one is put back in room 6 at x $78, y $A0 (and shown, when that is this room); then the room's own entry (switch_room). Room 9, the closet, has no entry of its own: the gnome only arrives there while $29 is set."
  },
  {
   "address": 5088,
   "type": "line",
   "text": "Entry table for switch_room, the gold rush's rooms 1-8 on entry: $13F1 for the street (rooms 1-3), nothing for the caves 4 and 5 ($1462), the lift's foot in cave 6 ($1463), the dark house (7, $1448) and the house with the lift (8, $1424)."
  },
  {
   "address": 5104,
   "type": "line",
   "text": "The return that $13F1's tests branch back to, just after gold_room_entry's switch table."
  },
  {
   "address": 5105,
   "type": "line",
   "text": "Gold rush rooms 1-3 on entry, the street: when the horse was following ($A8 bit 6) and the gnome carries the horse food (object $23), both horse objects ($19 and $22) are taken off their rooms and the one in $A8 comes on at the edge he entered by (x 1, or $9F when he is in the right half), in this room."
  },
  {
   "address": 5156,
   "type": "line",
   "text": "Gold rush room 8 on entry, the house with the lift: the horse stops following. When the gnome is riding the lift ($76), the lift (object $0D) is put under his feet ($1474). The wheel at the top of the lift's chain (object $1F) is shown at x $64, y $2B."
  },
  {
   "address": 5192,
   "type": "line",
   "text": "Gold rush room 7 on entry, the dark house: the horse stops following. Unless the torch (object $24) is here and lit ($AB), the room stays dark: the horse food (object $23) is hidden and the screen and its colours go black (screen_black)."
  },
  {
   "address": 5218,
   "type": "line",
   "text": "Gold rush rooms 4 and 5 on entry: nothing to do (also the shared return of the routines around it)."
  },
  {
   "address": 5219,
   "type": "line",
   "text": "Gold rush room 6 on entry, the cave at the foot of the lift: shows the lift (object $0D) at x $90, its y $97, or 2 below the gnome's when he rides it ($76)."
  },
  {
   "address": 5236,
   "type": "line",
   "text": "Part of $1463, and called by $1424 when the gnome rides the lift: puts the lift (slot X) two lines below the gnome and updates its sprite."
  },
  {
   "address": 5245,
   "type": "line",
   "text": "gold_room_flags is read as $147D + room, so this byte, the last of $1463's code, is never read as a flag: there is no room 0."
  },
  {
   "address": 5246,
   "type": "line",
   "text": "One byte for each gold rush room 1-8: each set bit, from bit 7, runs one handler of gold_handlers every pass (gold_pass). Rooms 1 and 2 run the horse and the house doors; room 3 those and the turning wheels; 4 the stalactites and the bats; 5 the scorpion and the bats; 6 the lift and the bats; 7 the doors; 8 the wheels, the lift, the doors and the oxygen tank."
  },
  {
   "address": 5254,
   "type": "line",
   "text": "The eight per-pass handlers that gold_room_flags selects, one for each bit from bit 7: the horse ($1746), the wheels ($164E), the lift ($15B6), the scorpion ($1692), the stalactites ($1712), the bats ($328F), the house doors ($1574) and the oxygen tank ($1496)."
  },
  {
   "address": 5255,
   "type": "line",
   "text": "gold_handlers + 1, the high byte of each handler's address, read here."
  },
  {
   "address": 5270,
   "type": "line",
   "text": "Gold rush room 8, each pass: the oxygen tank (object $10) left on its pad (box $48) gets its valve, object $1A, ten steps to its left, sound effect 2 plays, and $A9 goes negative, after which the tank cannot be picked up (play_state). With the valve there, the flat balloon (object $0E) carried against the tank is filled: it goes (room $FF) and the gnome holds the full balloon, object $0F (object_pick_up)."
  },
  {
   "address": 5355,
   "type": "line",
   "text": "The gold rush's per-pass routine (era 2, record bytes 0-1). Room 9 is the closet (closet_pass). In the other rooms it pushes the room's gold_room_flags byte and runs the handlers whose bits are set, from bit 7 down, each from gold_handlers with X the room (call_0F), with the flags and the handler's index pushed while it runs. In room 7 the lit torch makes the background flicker every eight passes through colours 8-11 ($AC, which starts at 0, so the first is black). In the houses (7 and 8) the gnome may only step onto the floor (trapezoid $28). In the street (1-3) a step up is cancelled when he is already above y $8A and a step down when he is at $99 or below, so he keeps to y $89-$99. Then the left and right edges (room_exits): left out of rooms 2, 3, 5 and 6, right out of 1, 2, 4 and 5."
  },
  {
   "address": 5492,
   "type": "line",
   "text": "The gold rush's house doors, each pass. In the street (rooms 1-3), the gnome walking up into a doorway (box $20, $24 or $28) enters the house: room 1's door leads to room 7, room 2's to room 8, and room 3's takes him home to the mansion ($1102). In the houses he leaves by walking down past y $96 and comes out in front of the house's door in the street ($1623). Both ways pull four bytes off the stack first: the return into gold_pass and the two bytes gold_pass pushed, so that gold_pass ends there."
  },
  {
   "address": 5558,
   "type": "line",
   "text": "The gold rush's lift (object $0D), each pass in rooms 6 and 8, once the horse works it ($A8 bit 7). The gnome touching it from above rides it ($76 = 1). At rest (lift_stop) he can step off sideways; otherwise sideways steps are stopped. The joystick moves the lift and him with it, two lines above it. In room 8, going down past y $63 takes him to room 6 at x $90, y $1B; in room 6, going up to y $19 takes him to room 8 at x $60, y $62 (both through $1623). It stops at y $60 in room 8 and $97 in room 6."
  },
  {
   "address": 5667,
   "type": "line",
   "text": "Part of gold_doors and gold_lift: the change of room, with the room in A, the gnome's y in Y and his x in X. Pulls four bytes off the stack, the handler's return into gold_pass ($150E) and the flags and index gold_pass pushed, so that room_enter's return ends gold_pass; blanks the screen (screen_off), unpacks the character set of the new room (rooms below 4 the town's, from 4 on the caves'; gold_charsets) and enters the room (room_enter)."
  },
  {
   "address": 5697,
   "type": "line",
   "text": "The jsr to unpack_to_f000 here is also the base that lift_stop is indexed from: the table is read as $1641 + room, and only rooms 6-8 are ever used, which reach past this code into lift_stop at $1647."
  },
  {
   "address": 5703,
   "type": "line",
   "text": "The lift's y at rest in rooms 6, 7 and 8, read as $1641 + room: $97 at the foot of the shaft, 0 (room 7 has no lift) and $60 at the top. The gnome on the lift cannot step sideways unless it is there."
  },
  {
   "address": 5706,
   "type": "line",
   "text": "The two character sets of the gold rush: low bytes, then high bytes, of $45CA (the town, rooms below 4) and $4893 (the caves, rooms 4 on)."
  },
  {
   "address": 5708,
   "type": "line",
   "text": "gold_charsets + 2, the high bytes, $45 and $48, read here."
  },
  {
   "address": 5710,
   "type": "line",
   "text": "The gold rush's turning wheels, each pass, once the horse is stuck on the treadle ($A8 bit 7). Every eight passes the wheels (objects $1F-$21) step a frame, and the character set is changed in place: a list of runs at wheel_flips (room 3's from $4FBA, room 8's from $4FF0), each a character-set address, a count less one and a value, has its bytes exclusive-ORed with the value, so the lift's chain and the wheels' spokes seem to move."
  },
  {
   "address": 5778,
   "type": "line",
   "text": "Gold rush room 5, each pass. The gnome carrying the cage (object $0C) cannot walk left of x $5A. Once the scorpion is trapped ($A7 bit 7) nothing more. A falling cage ($A7 bit 6) that lands on the scorpion (object $0B) traps it: $A7 goes negative, the cage's animation stops, and the cage is set over the scorpion, six lines higher, both positions kept in their objects. Otherwise the scorpion that touches the gnome sends him home (gnome_hurt); on even passes it walks, and every eighth of those picks a direction: right at x below $0A, left at $41 or more, and at random between."
  },
  {
   "address": 5906,
   "type": "line",
   "text": "Gold rush room 4, each pass. A falling stalactite (object $12) that touches the gnome sends him home (gnome_hurt); it falls three lines a pass and goes at y $94. With none falling, one in 128 passes a new one starts at y $14 and a random x from $10 to $8F."
  },
  {
   "address": 5958,
   "type": "line",
   "text": "The gold rush's horse, each pass in the street. The horse is two objects, $19 and $22, one for each way it faces; $A8 holds which, with bit 6 set while it follows and bit 7 once it is stuck. Its position is kept in its object. Every fourth pass, when the horse food (object $23) is on the screen, the horse follows it: a step up or down towards the food's y, and a step sideways while the food is 16 or more steps away. Turning round swaps the object in the same sprite slot ($19 faces left and $22 right; the other is the object exclusive-OR $3B, put in place, nine steps over when it turns to face left). Food 30 or more steps away the way it faces stops it following into the next room. In room 3, the horse ($19), with the food one step to its right, standing on the treadle (box $1C) is stuck: $A8 bit 7 is set, which works the lift."
  },
  {
   "address": 6108,
   "type": "line",
   "text": "Part of gold_horse, on the passes it takes no step sideways: unless it is moving up or down, the horse's picture is held (delay 2)."
  },
  {
   "address": 6145,
   "type": "line",
   "text": "The black hole's one rectangle for walls_test: x $0A, width $8C, y $0A, height $8C, flag 3 (both ways allowed), then the $FF that ends the list."
  },
  {
   "address": 6151,
   "type": "line",
   "text": "The seven pieces of the scripture, objects $04, $05, $07, $06, $08, $09 and $0A, in the order hole_pass moves them."
  },
  {
   "address": 6158,
   "type": "line",
   "text": "The x each piece is drawn to when all seven are in the black hole: $3F, $44, $4E on the top row, $3F, $44, $4A, $50 below."
  },
  {
   "address": 6165,
   "type": "line",
   "text": "The y each piece is drawn to: $4E for the top row, $58 (and $59 for object $09) below."
  },
  {
   "address": 6172,
   "type": "line",
   "text": "The black hole's room-entry routine (era 3, record bytes 2-3). hole_pass also jumps here on seven passes in eight, in room 1, where it returns at once. Only room 2, the message, does anything: it hides the gnome (sprite 0 off), freezes the game, stops the music, plays sound effect 6, zeroes the count $BD and sets how many counts of $BD the message stays, $C8: 6 the first time, then one more each time, up to 15."
  },
  {
   "address": 6219,
   "type": "line",
   "text": "Part of hole_pass: walking down out of the black hole (y $91 or more) takes the gnome home, through the time machine (time_travel to era 1, at $1102)."
  },
  {
   "address": 6222,
   "type": "line",
   "text": "The black hole's per-pass routine (era 3, record bytes 0-1). Room 1 is the hole, a black screen of character 0 ($41A5's empty room, room_draw). The gnome walks down out of it to go home ($184B) and is otherwise kept inside by hole_walls (walls_test). Every eighth pass it looks for the seven pieces (hole_pieces, object_here). While any is missing, each piece that is here drifts: a random step across and up or down, turned back at x 0 and $91 and at y 0 and $A0. When all seven are here, each moves a step at a time to its place (hole_piece_x, hole_piece_y); once all are in place for three counts of $BD the gnome is taken to room 2 (room_enter), where the scripture's message is drawn. On the other passes it runs hole_room_entry's test instead."
  },
  {
   "address": 6414,
   "type": "line",
   "text": "Part of hole_pass, room 2, the message: once $BD reaches the number of counts in $C8 (hole_room_entry), the gnome is sent back to the time machine's controls (era 1, room 4, at x $60, y $41, era_enter)."
  },
  {
   "address": 6439,
   "type": "line",
   "text": "Persia's room-entry routine (era 4, record bytes 2-3). In room 4, the lit dynamite (object $34) carried in or lying there has its fuse run out at once ($BE = $BD) and the smoke (object $26) is cleared. Once the black hole's message has been shown ($C8) the snake can become the staff ($C0 bit 1). In room 4 the torch (object $24) and the staff ($58), when left in the cave (rooms 5-8), are moved to room 5, its first room. No explosion is under way ($C0 bit 2 cleared). The cave's rooms (5 on) start the gnome at x $50, y $96, and stay dark unless the staff is here or the torch is here and lit (screen_black)."
  },
  {
   "address": 6567,
   "type": "line",
   "text": "Persia's per-pass routine (era 4, record bytes 0-1): keeps the gnome on the screen (gnome_keep_inside), takes him north or south between rooms (persia_ways), then runs the room's code (switch_room)."
  },
  {
   "address": 6576,
   "type": "line",
   "text": "Entry table for switch_room, Persia's rooms 1-8 each pass: $1F44 (room 1, nothing), $19C0 (the flying carpet), $1B22 (the snake basket), $1D5F (the boulder), $1E9E (the cave, rooms 5-8)."
  },
  {
   "address": 6592,
   "type": "line",
   "text": "Persia room 2, each pass: the woman on the flying carpet (object $3A, the carpet objects $3B and $3C). The carpet crosses the screen left to right, a step every fourth pass. With the glass (object $32) on the ground and the wine flask ($31) inside a box 40 by 10 around it ($C0 bit 6), the carpet stops when it is over the flask (the x of $3C equal to the flask's) and comes down a line every fourth pass, the game frozen ($C0 bit 7). When the woman touches the flask she takes it and the glass (both go, room $FF) and leaves the key (object $39) where the flask was ($C0 bit 5); the carpet rises again, and at y $38 the game goes on and the carpet flies off ($C0 bit 4) and is gone past x $A0 (all three objects, room $FF)."
  },
  {
   "address": 6946,
   "type": "line",
   "text": "Persia room 3, each pass: the snake basket. With the black hole's message seen, carrying the risen snake (object $38) turns it into the staff ($1CF3). A bolt that hits the lamp (object $33) starts its smoke ($C0 bit 3): the smoke (object $26) rises from it, and at its frame 6 the lamp and the smoke go and the flute (object $3D) lies in their place. The gnome may only step where walls_test's list at $1F50 gives bit 2 (the lower half of the screen and a stretch in the middle). The lid (object $35) put back on the basket (object $36) closes it (persia_lid). The snake (object $37) that touches the gnome sends him home."
  },
  {
   "address": 7141,
   "type": "line",
   "text": "An rts that nothing reaches: the jump before it leaves and the branch before that skips it."
  },
  {
   "address": 7142,
   "type": "line",
   "text": "Part of persia_basket, the snake on the screen: its picture is held (delay 2) except on one pass in sixteen, when it steps a frame, and a piece of the scripture (object $06) that rides it (shown while its room is still $FF, persia_piece_riding) is held at its head, 4 lines higher and 2 steps right for each frame. At its frame 3 the snake is fully up. If the black hole's message has been seen and the gnome is playing the flute (carrying object $4C), it stays up as the risen snake, object $38. Otherwise, at the pass $23 = $1E it sinks back into the basket (it goes, room $FF) and a riding piece is left by the basket at y $6B, in room 3. Either way $B7 bit 3 is set and bit 2 cleared, and then the code at $1C8E sets bit 2 again unless $BD is 0."
  },
  {
   "address": 7286,
   "type": "line",
   "text": "Part of persia_basket, with no snake on the screen: once the snake is due ($B7 bit 2) it comes up ($1CE2). It becomes due when the gnome holds the lid (object $35) and $BD is not a multiple of 4, or after it has sunk once ($B7 bit 3) when $BD is not a multiple of 64."
  },
  {
   "address": 7329,
   "type": "line",
   "text": "The lid (object $35) lying against the basket (object $36): sets it on the basket at x $1E, y $6B, stops the snake ($B7 bits 2 and 3 cleared), and takes the snake away (object $37, room $FF). The x and y are stored at $0772 and $07DB indexed by the lid's sprite slot rather than at the lid's own entries ($07A3 and $080C), so they land on the stored position of object 4 + slot: the scorpion ($0B) when the lid has slot 7, as at the start of a game, or Salem's piece of the scripture ($0A) when a lower object such as the lamp is in the room and the lid has slot 6. Tried in the emulator: both changed to $1E, $6B."
  },
  {
   "address": 7394,
   "type": "line",
   "text": "Part of persia_basket: the snake is due. A snake on the screen that touches the gnome sends him home ($10FF). With none, on a pass where $BD is a multiple of 4 and $23 is $1E, and unless the risen snake is here or the staff has been taken ($C0 bit 0), the snake (object $37) comes up; if the gnome is playing the flute (carrying object $4C) and the piece of the scripture (object $06) is still nowhere (room negative), the piece comes up with it."
  },
  {
   "address": 7411,
   "type": "line",
   "text": "Carrying the risen snake (object $38) turns it into the staff: the snake is dropped and goes (room $FF), the gnome picks up the staff (object $58), and $C0 bit 0 records that it has been taken."
  },
  {
   "address": 7497,
   "type": "line",
   "text": "The risen snake (object $38), when here, has its picture held (delay 2) except on the pass $23 = $1E, when it steps a frame."
  },
  {
   "address": 7519,
   "type": "line",
   "text": "Persia room 4, each pass: the boulder in front of the cave. The dynamite (object $45) touched by the lit torch (object $24, $AB) is lit: it becomes object $34 in the same place, and its fuse runs for 5 counts of $BD ($BE = $BD + 5). When the fuse has run out, the dynamite inside box $54 (at the foot of the boulder) or still in the gnome's hands explodes ($C0 bit 2, sound effect 5); anywhere else it goes out (persia_dynamite_out). Once the boulder has gone (object $3E here), walking into the cave's mouth takes the gnome into room 5 ($1E71)."
  },
  {
   "address": 7596,
   "type": "line",
   "text": "Part of persia_boulder, the explosion: the smoke (object $26) rises from the dynamite and at its frame 6 the explosion is over ($C0 bit 2 cleared). If the gnome was holding the dynamite, it goes out and is left here unlit (persia_dynamite_out) and he is sent home ($10FF). Otherwise the dynamite is used up (objects $34 and $45, room $FF), the cave's mouth (objects $3E and $3F) opens in the boulder's place, and a gnome standing near it (box $58) is sent home."
  },
  {
   "address": 7724,
   "type": "line",
   "text": "Part of persia_boulder: lighting the dynamite (object $45) with the torch."
  },
  {
   "address": 7793,
   "type": "line",
   "text": "Part of persia_boulder: the room's walls (walls_test, the list at $1F60). A step into the cave's mouth (flag bit 2) enters room 5 at x $50, y $96 once the cave is open (object $3E here); before that, and on the rocks (bit 3), the step is cancelled."
  },
  {
   "address": 7838,
   "type": "line",
   "text": "Persia rooms 5-8, the cave, each pass. The gnome may only step onto the floor (trapezoids $38 and $3C), and walls_test's list at $1F75 does the rest: the pit in the middle of the floor (flag bit 2) drops what he carries and sends him home ($10FF), and each of the five doors (flag bits 3-5, a number 1-5) leads to another of the four rooms: the number, less 4 when it is 4 or more, is added to the room and the sum taken round from 9 to 5. Going into room 8 carrying the staff (object $58) is the end of the game: era 9, the throne (era_start_room1)."
  },
  {
   "address": 7918,
   "type": "line",
   "text": "A jump to go_home ($1102) that nothing calls."
  },
  {
   "address": 7921,
   "type": "line",
   "text": "The return that persia_cave's door test branches to when the gnome is at no door."
  },
  {
   "address": 7922,
   "type": "line",
   "text": "Persia's ways between rooms, every pass. Walking up above y $46 goes north, room + 1, arriving at y $96; room 4, the boulder, has no way north and pushes the gnome (and what he carries) a line back. Walking down to y $9A goes south, room - 1, arriving at x and y $50; south of room 1 is home (time_travel at $1102), and south of room 5, out of the cave, is room 4 at x $78, y $7D in front of the cave. Both drop the per-pass return address before room_enter. The cave's floor keeps rooms 5-8 from going north; the code would make that room 0."
  },
  {
   "address": 8004,
   "type": "line",
   "text": "Persia room 1 each pass: nothing to do (also the return of persia_ways)."
  },
  {
   "address": 8005,
   "type": "line",
   "text": "Carry set when the piece of the scripture (object $06) has a sprite while its room is negative, that is, when it is riding the snake."
  },
  {
   "address": 8016,
   "type": "line",
   "text": "walls_test's list for Persia room 3: the whole screen (flag 3), the lower part from y $5F and a stretch x $3C-$6D, y $3C-$5E in the middle (flag 7, bit 2 marking where the gnome may step). Ended by $FF."
  },
  {
   "address": 8032,
   "type": "line",
   "text": "walls_test's list for Persia room 4: the whole screen (flag 3), the cave's mouth at x $6E-$7C, y $5A-$70 (flag 7) and two stretches of rock (flag $0B). Ended by $FF."
  },
  {
   "address": 8053,
   "type": "line",
   "text": "walls_test's list for Persia rooms 5-8: the whole screen (flag 3), the pit at x $3C-$60, y $7F-$8F (flag 7), the door in the left wall (1), the three doors in the back wall (2, 3, 4) and the door in the right wall (5), each number in bits 3-5 of the flag. Ended by $FF."
  },
  {
   "address": 8089,
   "type": "line",
   "text": "The room-entry routine of era 9, the end of the game: the gnome lets go of the staff, his sprite goes off, the game is frozen for good, and the staff (object $58) is shown at x $3C, y $2A, in the hand of the king on the throne (objects $59-$5E). The screen reads \"GRATULARI!!!!!\"."
  },
  {
   "address": 8123,
   "type": "line",
   "text": "Era 9's per-pass routine: nothing. The game stays on the throne."
  },
  {
   "address": 8124,
   "type": "line",
   "text": "The lit dynamite in slot X goes out: object $34 goes (room $FF), and object $45, the unlit dynamite, takes its place, its position, room and era recorded."
  },
  {
   "address": 8168,
   "type": "line",
   "text": "The first bytes of throne_pass and persia_dynamite_out's code here are also the base that stone_cave_exit_x is read from ($1FE8 + room, rooms 6-8 only)."
  },
  {
   "address": 8171,
   "type": "line",
   "text": "The same, for stone_cave_exit_y ($1FEB + room)."
  },
  {
   "address": 8174,
   "type": "line",
   "text": "The stone age's three caves (rooms 6, 7 and 8): the x where the gnome comes out of each, read as $1FE8 + room: $12, $1C, $27."
  },
  {
   "address": 8177,
   "type": "line",
   "text": "The y where he comes out of caves 6-8: $8C, $14, $54, the ledge each cave is on."
  },
  {
   "address": 8180,
   "type": "line",
   "text": "The room he comes out into from caves 6-8: rooms 4, 3 and 5."
  },
  {
   "address": 8183,
   "type": "line",
   "text": "The two small rocks on the clifftops that a bolt brings down, objects $42 and $41, in the order stone_pass handles them (from the second)."
  },
  {
   "address": 8184,
   "type": "line",
   "text": "stone_rocks' second byte, also the base that stone_blockers is read from ($1FF8 + room)."
  },
  {
   "address": 8185,
   "type": "line",
   "text": "One byte for each stone age room 1-8, read as $1FF8 + room: the boulder in the way there, $43 in room 2 and $63 in room 4, 0 elsewhere. The gnome cannot walk through it."
  },
  {
   "address": 8192,
   "type": "line",
   "text": "stone_blockers' last byte (room 8, none), also the base that stone_left is read from ($2000 + room)."
  },
  {
   "address": 8193,
   "type": "line",
   "text": "The room through the left edge for each of rooms 1-5, read as $2000 + room: 3, 4, 2, none (0) and 1."
  },
  {
   "address": 8197,
   "type": "line",
   "text": "stone_left's last byte (room 5, no way left), also the base that stone_right is read from ($2005 + room)."
  },
  {
   "address": 8198,
   "type": "line",
   "text": "The room through the right edge for each of rooms 1-5, read as $2005 + room: 5, 3, 1, 2 and none (0). From left to right the clifftop rooms run 4, 2, 3, 1, 5."
  },
  {
   "address": 8201,
   "type": "line",
   "text": "stone_right's last two bytes are also the start of stone_walls, which is read as $2009 + room x 2, so its first entry (room 0) is never read as an address."
  },
  {
   "address": 8202,
   "type": "line",
   "text": "stone_right's last byte (room 5, no way right), also the second byte of the address base of stone_walls."
  },
  {
   "address": 8203,
   "type": "line",
   "text": "walls_test's list for each stone age room 1-8: $20B0, $206D, $2044, $201B, $208C, and $20CF for all three caves."
  },
  {
   "address": 8219,
   "type": "line",
   "text": "walls_test's list for stone age room 4, the left end of the cliffs: the three ledges (y $8F, $57 and $17, three lines each, flag 3), the ladders between them (x $5B and $2B), a ladder from the top ledge to the clifftop at y 0 (x $8B), and the mouth of cave 6 on the bottom ledge (x $0D-$16, y $8A, flag 7: cave number 1 in bits 2-3). Ended by $FF."
  },
  {
   "address": 8260,
   "type": "line",
   "text": "walls_test's list for stone age room 3: the three ledges, two ladders (x $37 and $76), a ladder from the top ledge to the clifftop at y 0 (x $03), and the mouth of cave 7 on the top ledge (x $17-$20, y $12, flag $0B: cave number 2). Ended by $FF."
  },
  {
   "address": 8301,
   "type": "line",
   "text": "walls_test's list for stone age room 2, where the boulder blocks the way: the three ledges (the middle one from x 5) and three ladders (x $68, $78 and $14). Ended by $FF."
  },
  {
   "address": 8332,
   "type": "line",
   "text": "walls_test's list for stone age room 5, the right end: the three ledges, two ladders (x $38 and $88) and the mouth of cave 8 on the middle ledge (x $22-$2B, y $52, flag $0F: cave number 3). Ended by $FF."
  },
  {
   "address": 8368,
   "type": "line",
   "text": "walls_test's list for stone age room 1: the three ledges and three ladders (x $38, $04 and $78). Ended by $FF."
  },
  {
   "address": 8399,
   "type": "line",
   "text": "walls_test's list for the three caves: one rectangle, x $1E-$81, y $67-$AB, both ways allowed. Ended by $FF."
  },
  {
   "address": 8405,
   "type": "line",
   "text": "The stone age's room-entry routine (era 5, record bytes 2-3). The tipped log (object $4F), when here, is shown afresh; the lever's throw $C5 is cleared; and the caves (rooms 6-8) stay dark unless the torch is here and lit (screen_black)."
  },
  {
   "address": 8443,
   "type": "line",
   "text": "Part of stone_pass: the gnome at y 0, the top of a ladder up the cliff, goes home through time ($1102)."
  },
  {
   "address": 8446,
   "type": "line",
   "text": "The stone age's per-pass routine (era 5, record bytes 0-1). The gnome who picks up the tipped log (object $4F) holds the log (object $40) instead. Outside room 4: a bolt that hits one of the small rocks on the clifftops (stone_rocks, $C3 and $C4 record which have been hit) brings it down, and a rock that has come down or been dropped falls two lines a pass to the ground at y $9B (in room 2 only right of x $4B). The rock $42 that lands within 18 steps right of the boulder (object $43) is set exactly 14 steps right of it. The room's boulder (stone_blockers) pushes the gnome back a step when he touches it, and goes when it reaches x 2. Then the walls ($21D6) and the lever ($2237)."
  },
  {
   "address": 8662,
   "type": "line",
   "text": "Part of stone_pass: the walls of the room (stone_walls, walls_test). A cave's mouth takes the gnome into cave 6, 7 or 8 (the cave number in the flag, plus 5) at x $50, y $8F. In a cave, reaching y $9A on the way down takes him out to where stone_cave_exit_x, _y and _room say. At x 2 and $94 he goes through the left or right edge to the room in stone_left or stone_right, arriving at x $93 or 3; where that is 0 there is no way."
  },
  {
   "address": 8756,
   "type": "line",
   "text": "A jump to $22D0 for stone_pass's lever test, for branches that cannot reach it."
  },
  {
   "address": 8759,
   "type": "line",
   "text": "Part of stone_pass, the lever. The log (object $40) touching the rock $42 is laid across it, its x 7 less and its y 8 above the rock's. The small rock $41 that falls onto the log's far end (above it and more than 12 steps right of its x) while the log rests on rock $42 tips the log: it becomes the tipped log (object $4F) where it lay, and if rock $42 is exactly 14 steps right of the boulder (object $43), the boulder is thrown ($C5 set, its room $FF). A thrown boulder rolls left a step a pass and goes at x 0."
  },
  {
   "address": 8933,
   "type": "line",
   "text": "Eight bytes, $3C $7E $FF $FF $FF $7E $3C $00: a round ball, one byte a row, that greece_medusa masks the random bits of Medusa's shot with, so it sparkles inside a round outline."
  },
  {
   "address": 8941,
   "type": "line",
   "text": "Greece's room-entry routine (era 6, record bytes 2-3). Rooms 1-3: each candelabra that is not carried and is here (object $4D, and $68) is shown again after the dark hole it was found in (objects $55 and $69), so that it takes the lower sprite and is drawn in front. Room 4: nothing. Room 5: when Medusa is here (object $56, its slot kept in $C9), her shot (object $6C, whose eight-byte picture at $0676 is cleared first) appears and sound effect 1 plays."
  },
  {
   "address": 9071,
   "type": "line",
   "text": "Greece's per-pass routine (era 6, record bytes 0-1): the room's own code (switch_room)."
  },
  {
   "address": 9074,
   "type": "line",
   "text": "Entry table for switch_room, Greece's rooms 1-5 each pass: $237C (the temples outside), $23C3 (the hall of columns), $242F (the wall with the marked block), $24B6 (the pedestals), $2661 (Medusa)."
  },
  {
   "address": 9084,
   "type": "line",
   "text": "Greece room 1, the temples, each pass, through walls_test's list at $2774: the temple door (flag bit 2) leads into room 2 at x $0A, y $96; the left edge (bits 3 and 7) is the way home ($1102); bits 4-6 mark where the gnome may walk ($B5 counts them), and a step anywhere else is cancelled."
  },
  {
   "address": 9155,
   "type": "line",
   "text": "Greece room 2, the hall, each pass, through walls_test's list at $2793: the four archways in the back wall (flag bits 2-5) all lead north into room 3, arriving at y $9A; bit 6 is the floor, and a step off it is cancelled. The left edge (x below 2) leads out to room 1 at x $6E, y $73. The gnome holding the sword (object $4E) at the marked block in the east wall (box $5C) opens it: the dark hole (object $69) and the candelabra in it (object $68) appear, both put in this room."
  },
  {
   "address": 9263,
   "type": "line",
   "text": "Greece room 3, each pass, through walls_test's list at $27AD (flag bits 2 and 3 are where he may step). Walking down to y $9D leads south to room 2 at x $54, y $73; the left edge leads west to room 4 at x $8C, no higher than y $80. The gnome holding the sword (object $4E) at the marked block in the wall (box $60) opens it: the dark hole (object $55) and a candelabra (object $4D) appear in this room."
  },
  {
   "address": 9378,
   "type": "line",
   "text": "A jump to $24FD for greece_pedestals' branches that cannot reach it."
  },
  {
   "address": 9381,
   "type": "line",
   "text": "Part of greece_pedestals: the left pedestal takes the other candelabra (object $68) when it is in box $64."
  },
  {
   "address": 9398,
   "type": "line",
   "text": "Greece room 4, each pass, through walls_test's list at $27B8: the gnome may stand by the left pedestal (flag bit 2), by the right one (bit 3), under the arch (bit 4) or on the floor (bit 5). Standing by the left pedestal, a candelabra (object $4D, or $68) inside box $64 is set on it at x $2F, y $60 ($C2 bit 0); by the right pedestal, one inside box $68 is set at x $64, y $60 ($C2 bit 1). While the left pedestal holds a candelabra (bit 0), a bolt that hits object $4D lights it as $6A ($C2 bit 2); while the right one holds one (bit 1), a bolt that hits $68 lights it as $6B (bit 3). Neither test asks whether the candelabra hit is the one on the pedestal. With both lit, Greece's piece of the scripture (object $08) appears and drops a line a pass (not on every sixteenth) to y $6F ($C2 bit 4 while it falls). The left edge leads to room 5 at x $8C, the right edge to room 3 at x $0A."
  },
  {
   "address": 9586,
   "type": "line",
   "text": "A jump to $2610 for greece_pedestals' branches that cannot reach it."
  },
  {
   "address": 9825,
   "type": "line",
   "text": "Greece room 5, each pass: Medusa (objects $56 and $57) and her shot (object $6C). While $C9 is positive the shot flies at the gnome, a step each way a pass: hitting him sends him home ($10FF), but the shield (object $54) that it touches sends it back ($C9 negative), and then it flies at Medusa, whom it destroys (both her objects and the shot go, rooms $FF, sound effect 0, $C9 = 0). The shot's picture is redrawn every pass with random bits inside medusa_ball. The room's walls are walls_test's list at $27CD (bits 2 and 3 where he may step); the right edge leads to room 4 at x $0F. Medusa sways from side to side: her x follows medusa_sway, one step for each count of $BD, and her picture steps every sixteen passes."
  },
  {
   "address": 10084,
   "type": "line",
   "text": "Medusa's x for each count of $BD, sixteen of them: $4E up to $55 and back down to $4A, then $4C, $4D."
  },
  {
   "address": 10100,
   "type": "line",
   "text": "walls_test's list for Greece room 1: the temple door (x $69-$72, flag 7), two strips at the left edge at y $57-$58 (flags $0B and $83), both the way home, and three areas to walk on (flags $13, $23, $43). Ended by $FF."
  },
  {
   "address": 10131,
   "type": "line",
   "text": "walls_test's list for Greece room 2: the four archways (y $70, flags 7, $0B, $13, $23) and the floor (x 0-$95, y $71-$A0, flag $43). Ended by $FF."
  },
  {
   "address": 10157,
   "type": "line",
   "text": "walls_test's list for Greece room 3: a strip by the marked block (x $05-$27, y $68-$6D, flag 7) and the floor (from y $6E, flag $0B). Ended by $FF."
  },
  {
   "address": 10168,
   "type": "line",
   "text": "walls_test's list for Greece room 4: the places by the left pedestal (x $23-$25, flag 7) and the right one (x $70-$72, flag $0B), under the arch (x $41-$51, flag $13), all at y $78-$7E, and the floor (from y $7F, flag $23). Ended by $FF."
  },
  {
   "address": 10189,
   "type": "line",
   "text": "walls_test's list for Greece room 5: a strip in front of Medusa (x $49-$4E, y $78-$7E, flag 7) and the floor (from y $7F, flag $0B). Ended by $FF."
  },
  {
   "address": 10200,
   "type": "line",
   "text": "The spaceship's room-entry routine (era 7, record bytes 2-3). Room 8, the moon: the gnome starts at x $0A, y $9A, the teleport count $C7 and the clock $BD are zeroed, the air-gone flag ($B7 bit 5) is cleared and sound effect 5 plays. Then the room's own entry (switch_room): only room 1 has one."
  },
  {
   "address": 10239,
   "type": "line",
   "text": "Entry table for switch_room, the spaceship's rooms 1-8 on entry: $2810 for the control room, the return at $280F for the rest."
  },
  {
   "address": 10255,
   "type": "line",
   "text": "Spaceship rooms 2-8 on entry: nothing to do."
  },
  {
   "address": 10256,
   "type": "line",
   "text": "Spaceship room 1 on entry, the control room: takes both doorways away (objects $50-$53) and shows each again whose lever is on: the doorway to room 5 (objects $50 and $51) with lever 1 ($C1 bit 0), the doorway to room 6 (objects $52 and $53) with lever 2 ($C1 bit 1)."
  },
  {
   "address": 10317,
   "type": "line",
   "text": "The spaceship's per-pass routine (era 7, record bytes 0-1): keeps the gnome on the screen (gnome_keep_inside), runs what every room shares (ship_common), then the room's own code (switch_room)."
  },
  {
   "address": 10326,
   "type": "line",
   "text": "Entry table for switch_room, the spaceship's rooms 1-8 each pass: $2866 (the control room), $28A9 and $2942 (corridors), $28BF (the levers), $2958 (the numbered door), $298F (the safe), $2A4D (the teleport pads), $2B1B (the moon)."
  },
  {
   "address": 10342,
   "type": "line",
   "text": "Spaceship room 1 each pass, the control room: walking into the open doorway to room 6 (object $52) arrives there at x $1E; into the one to room 5 (object $50), at x $87, y $96. Otherwise the gnome keeps to the floor (trapezoid $40)."
  },
  {
   "address": 10409,
   "type": "line",
   "text": "Spaceship rooms 2 and 4 each pass: the gnome keeps to the floor (trapezoid $44) or the corridor's strip (ship_corridor)."
  },
  {
   "address": 10431,
   "type": "line",
   "text": "Spaceship room 3 each pass, the levers: the floor as in rooms 2 and 4, then each lever is shown as its state says: lever 1 as object $48 (off) or $49 (on), lever 2 as $4A or $4B, the other object of each pair taken off. The button at a lever flips its bit of $C1 (door_check)."
  },
  {
   "address": 10562,
   "type": "line",
   "text": "Spaceship room 4 each pass, a corridor: the same test as room 2's, the floor (trapezoid $44) or the corridor's strip (ship_corridor)."
  },
  {
   "address": 10584,
   "type": "line",
   "text": "Spaceship room 5 each pass, the numbered door: off the floor (trapezoid $48), walls_test's list at $2C2B decides: the numbered door (flag bit 2) is the way home ($1102), the doorway on the right (bit 3) leads to room 1 at x $14, y $78, and bit 4 is more floor; any other step is cancelled."
  },
  {
   "address": 10639,
   "type": "line",
   "text": "Spaceship room 6 each pass, the safe. The gnome keeps to the floor (trapezoid $40); the doorway on the left (object $66) leads back to room 1 at x $78. The key (object $39) carried against the safe (object $44) opens it: the key and the safe go (rooms $FF) and the dynamite (object $45) and the pyramid key ($61) are left there. The round light from the control panel (object $5F) set against its hole (object $60) fills it: both go and the closed door (objects $66 and $67) gives way to the open one ($64 and $65), through which (object $64) the gnome reaches room 7 at x $20, y $32."
  },
  {
   "address": 10829,
   "type": "line",
   "text": "Spaceship room 7 each pass, the teleport pads. Every 32 passes three of the lights on the wall change to one of four pictures at random (ship_lights). While $C7 counts down the gnome cannot move and breaks up (gnome_scramble); at 0 he is on the moon, room 8. The pyramid key (object $61) set against its lock under the left pad (object $62) opens it: both go (rooms $FF). Once the lock has gone, the button pressed on a pad (walls_test's list at $2C5A) starts the trip ($2C04, $C7 = 180 passes) and sets in $C6 how long he will have on the moon, from the pad: 5 counts of $BD for the left, 10 for the middle, 30 for the right. Off the pads the room's walls are walls_test's list at $2C40 (with trapezoid $4C): the strip on the left leads to room 6 at x $78, y $73, the one on the right to room 4 at x $50."
  },
  {
   "address": 11035,
   "type": "line",
   "text": "Spaceship room 8 each pass, the moon: the gnome keeps to the ground (trapezoid $50)."
  },
  {
   "address": 11052,
   "type": "line",
   "text": "What every spaceship room does each pass. On the moon (room 8) the gnome moves only one pass in eight. Every other pass a random colour goes to the background (rooms 1-4), to the pyramid key and the round light (objects $61 and $5F) when they show, or on the moon to the third multicolour ($D023), so that they twinkle. On the moon the air runs out when $BD reaches the time in $C6, which the teleport pad set (ship_pads): the gnome stops (teleport_start, once, $B7 bit 5) and breaks up (gnome_scramble), and two counts later he is back in room 4 at x $50. Elsewhere, walking up past y $28 goes to room + 1, arriving at y $96, and in rooms 1-4 walking down to y $9A goes to room - 1 at x $50, y $5A (y $8C into room 1), and from room 1 down to room 2."
  },
  {
   "address": 11164,
   "type": "line",
   "text": "Part of ship_common: a jump to $2B10, room 4 at x $50, for the gnome back from the moon."
  },
  {
   "address": 11171,
   "type": "line",
   "text": "Part of ship_common: the gnome arrives in the next room up at y $96 (room_enter). $2B9F, just before, also sets x $50, but no branch enters there."
  },
  {
   "address": 11226,
   "type": "line",
   "text": "The corridors' side walls (rooms 2-4), through walls_test's list at $2C16: the strip at the left wall (flag bit 2) leads to room 4 at x $78 and the one at the right wall (bit 3) to room 4 at x $19, dropping the per-pass return address; carry set when the gnome is on the corridor's floor (bit 4)."
  },
  {
   "address": 11268,
   "type": "line",
   "text": "Stops the sound effects and plays effect 4, takes the sprite of what the gnome carries away (he keeps it), and freezes the game ($32 counted down to $FF). Callers: the teleport pads and the moon's air running out."
  },
  {
   "address": 11286,
   "type": "line",
   "text": "walls_test's list for the corridors: the whole screen (flag 3), the strip at the left wall (x $0D-$0E, y $2D-$7C, flag 7), the one at the right wall (x $85-$86, flag $0B), and the floor between (x $0F-$96, flag $13). Ended by $FF."
  },
  {
   "address": 11307,
   "type": "line",
   "text": "walls_test's list for spaceship room 5: the whole screen (flag 3), the numbered door (x $2C-$37, y $28-$3C, flag 7), the doorway on the right (x $91-$92, y $87-$9F, flag $0B) and the floor in front of it (flag $13). Ended by $FF."
  },
  {
   "address": 11328,
   "type": "line",
   "text": "walls_test's list for spaceship room 7: the whole screen (flag 3), two strips at the walls, x $1B-$20 and $72-$7B, y $28-$4F (flag 7, where he may step), and the doorways beside them, x $1A-$1B (flag $0B) and $7B-$7C (flag $13). Ended by $FF."
  },
  {
   "address": 11354,
   "type": "line",
   "text": "walls_test's list for the three teleport pads: the whole screen (flag 3) and the pads at x $2B, $47 and $63, y $82-$89; each flag, shifted down twice, is the time on the moon in counts of $BD: 5, 10 and 30. Ended by $FF."
  },
  {
   "address": 11374,
   "type": "line",
   "text": "The byte before ship_lights, the base it is read from ($2C6E + 1-3); it is the $FF that ends ship_pads."
  },
  {
   "address": 11375,
   "type": "line",
   "text": "The wall lights of room 7: three screen offsets from $F924, 0, 7 and 14 (read as $2C6E + 1-3), at which ship room 7 writes a pair of characters from ship_lights_left and ship_lights_right."
  },
  {
   "address": 11378,
   "type": "line",
   "text": "The four characters ship_lights' changes can put at the left of a light: $42, $3A, $36, $39."
  },
  {
   "address": 11382,
   "type": "line",
   "text": "The four characters for the right of a light: $42, $42, $22, $22."
  },
  {
   "address": 11386,
   "type": "line",
   "text": "Colonial Salem's room-entry routine (era 8, record bytes 2-3), by room (switch_room). Rooms 1-3 are the street, room 4 the hillside past the lake, and rooms 5-7 the insides of the chemist's (from room 1), the shop (from room 2) and the log house (from room 3)."
  },
  {
   "address": 11389,
   "type": "line",
   "text": "Entry table for switch_room, Salem's rooms 1-7 on arrival: $2C8B (rooms 1 and 2, salem_land), $2CA5 (room 3), $2D2C (room 4, the hillside), $2D0E (nothing, rooms 5 and 6) and $2D0F (room 7, the log house)."
  },
  {
   "address": 11403,
   "type": "line",
   "text": "Rooms 1 and 2 on arrival, and room 3 when the gnome neither rides the broom nor has parked it (salem_broom_park's beq at $2CAB): the game is unfrozen ($32 = 0), and a gnome still riding the broom ($B6 bit 7) is off it, with the broom parked ($B6 bit 4) in room 3 (objects $2B-$2D)."
  },
  {
   "address": 11429,
   "type": "line",
   "text": "Room 3 on arrival. Riding the broom, its three objects ($2B-$2D) get sprites; with the broom parked ($B6 bit 4) they are put in era 8, room 3; with neither, as salem_land. Then the three are lined up from the left one: the same y, and x 12 apart."
  },
  {
   "address": 11534,
   "type": "line",
   "text": "Rooms 5 and 6 have nothing to do on arrival."
  },
  {
   "address": 11535,
   "type": "line",
   "text": "Room 7, the log house, on arrival: the broom's height starts at $61 ($B8, $B9), and the fire (object $1E), when it is lit, sits 6 lines above the cauldron (object $30)."
  },
  {
   "address": 11564,
   "type": "line",
   "text": "Room 4, the hillside, on arrival: the broom (objects $2B-$2D) goes, all three to room $FF. A gnome who flew in on it ($B6 bit 7) is off it, at y $8C, and bit 4 of $B6 is set."
  },
  {
   "address": 11619,
   "type": "line",
   "text": "Salem's per-pass routine (era 8, record bytes 0-1). Every room runs the same code at $2D74."
  },
  {
   "address": 11622,
   "type": "line",
   "text": "Entry table for switch_room, Salem's rooms 1-7 each pass: all seven are $2D74, so every room runs the same code."
  },
  {
   "address": 11636,
   "type": "line",
   "text": "Part of salem_pass. In order: the house doors (salem_doors), the broom's handle kept with its head (broom_pair), the way out of the hillside (salem_hole), the rock that hides the scripture (salem_rock_lift), the smoke, the cauldron in the fireplace, the brew (salem_brew), the broom's flight (salem_broom), and in the street the bats. Then the gnome's step is tested against the room's floor."
  },
  {
   "address": 11671,
   "type": "line",
   "text": "Two tests of $B6 (bits 5 and 6) whose branches both lead to the next instruction, so they do nothing; salem_dead_bat runs either way."
  },
  {
   "address": 11686,
   "type": "line",
   "text": "The floor for the gnome's next step (gnome_next_pos, trapezoid_test): riding the broom in room 3 or 7, trapezoid $34; room 4, $30; room 7, $28; rooms 5 and 6, $2C. A step off it is cancelled. The street, rooms 1-3, has no trapezoid."
  },
  {
   "address": 11742,
   "type": "line",
   "text": "The street: a step up is cancelled when the gnome is already above y $90, and a step down when he is at $94 or below, so he walks between y $8F and $94, six lines."
  },
  {
   "address": 11770,
   "type": "line",
   "text": "The ways out at the screen's sides (room_exits): walking, left from rooms 2 and 3 and right from rooms 1 and 2; riding the broom, right from rooms 1-3 and never left."
  },
  {
   "address": 11797,
   "type": "line",
   "text": "The doors, each pass (X = room). In the street, walking up into a house's doorway (box $2C, $30 or $34) enters room + 4, the house behind it, at y $8C; in room 2 the doorway at box $38 is the way home (go_home), and the broom (object $2A) is put down first if he carries it, so it stays in Salem. Inside a house (rooms 5-7), walking down to y $96 or more takes him out to the street (room - 4), at y $90, 4 to the right of the doorway's left edge. The test covers room 4 as well, but its floor (trapezoid $30) ends above y $8C."
  },
  {
   "address": 11885,
   "type": "line",
   "text": "Moves the gnome to room A at x X, y Y: pulls two return addresses off the stack, the one into salem_pass's room code and the one into play_state, so that room_enter's return goes straight back to the main loop; blanks the screen, unpacks the street's character set (rooms 1-4) or the houses' (rooms 5-7) from salem_charsets, and enters the room (room_enter)."
  },
  {
   "address": 11921,
   "type": "line",
   "text": "Room 7, once the dead bat has been carried in: when it lies (not carried) touching the cauldron (object $30), it goes in: the dead bat (object $1D) goes, room $FF, and bit 0 of $B7 is set. Once only."
  },
  {
   "address": 11966,
   "type": "line",
   "text": "Room 7 each pass: carrying the dead bat (object $1D) sets bit 6 of $B6; from then on salem_bat_in_cauldron runs instead."
  },
  {
   "address": 11991,
   "type": "line",
   "text": "Room 7 each pass, the brew. It needs the cauldron in the fireplace ($B6 bit 0) and the broom's head (object $2A) somewhere in the room. A bolt that hits the first potion (object $27) while the potion touches the cauldron lights the fire: the bolt goes, smoke rises (object $26, sound effect 1), the fire (object $1E) burns 6 lines above the cauldron in era 8, room 7, and the potion goes (room $FF)."
  },
  {
   "address": 12098,
   "type": "line",
   "text": "Part of salem_brew. Once the first potion is gone and the dead bat is in the cauldron ($B7 bit 0), a bolt that hits the second potion (object $28) while it touches the cauldron makes the flying broom: the bolt goes and smoke rises."
  },
  {
   "address": 12159,
   "type": "line",
   "text": "Part of salem_brew, the flying broom made: the broom (objects $29 and $2A) and the second potion go (rooms $FF), with sound effect 1, and the flying broom, objects $2B-$2D in era 8, room 7, takes the head's place: its middle ($2C) where the head was, the ends 12 to its left and right."
  },
  {
   "address": 12271,
   "type": "line",
   "text": "The smoke (object $26) goes when its picture reaches frame 6."
  },
  {
   "address": 12282,
   "type": "line",
   "text": "Takes the smoke away: frees its sprite and sets its room to $FF. Called by salem_brew before new smoke starts."
  },
  {
   "address": 12294,
   "type": "line",
   "text": "Room 7 each pass: the cauldron (object $30) set down inside the fireplace (box $3C) is fixed there at x $4B, y $60 and bit 0 of $B6 is set, which keeps it from being picked up (play_state). Elsewhere, or while it is carried, the bit is cleared."
  },
  {
   "address": 12354,
   "type": "line",
   "text": "Room 4 each pass, the way out. With the rock (object $2E) on the screen, not carried and not touching the gnome, his walking into the hollow it covered (box $40) takes him home (go_home). Leaving without the scripture's piece (object $0A) sets bit 7 of $B6, so on the way back (salem_land) the broom waits in room 3 to fly him again."
  },
  {
   "address": 12408,
   "type": "line",
   "text": "Room 4: the gnome picking up the other rock (object $2F) uncovers Salem's piece of the scripture (object $0A), which is shown once ($B7 bit 1)."
  },
  {
   "address": 12439,
   "type": "line",
   "text": "The broom is two objects, a head ($2A) that the gnome carries and a handle ($29) that goes with it: while the head is on the screen or carried, the handle takes its era and room."
  },
  {
   "address": 12468,
   "type": "line",
   "text": "Nine copies of the address $2E15, salem_doors, which nothing reads."
  },
  {
   "address": 12486,
   "type": "line",
   "text": "Salem's two character sets, low bytes then high bytes: $8CD3 for the street and the hillside (rooms 1-4) and $9612 for the houses (rooms 5-7). Read by salem_change_room."
  },
  {
   "address": 12488,
   "type": "line",
   "text": "salem_charsets' high bytes: $8C for the street, $96 for the houses."
  },
  {
   "address": 12490,
   "type": "line",
   "text": "The flying broom with no one steering it: it flies up and left until x is below $14, then down and right until x reaches $64, and the up and down are swapped for a pass at y $1E or $82. The direction goes in $BC, as a joystick would give it, and is flown at broom_steer."
  },
  {
   "address": 12512,
   "type": "line",
   "text": "The broom not on the screen: the game is unfrozen and nobody rides it ($B6 bit 7 cleared)."
  },
  {
   "address": 12561,
   "type": "line",
   "text": "The flying broom, each pass. The gnome picking up its middle (object $2C) mounts it: he lets go ($B6 bit 7 set) and the three pieces line up 12 apart. While he rides, the game is frozen ($32 = 1) so the joystick no longer walks him, and his own step is zeroed. With the stick at rest the broom wanders (broom_wander); otherwise the stick steers it on three passes in four."
  },
  {
   "address": 12652,
   "type": "line",
   "text": "The broom's height. At the resting height ($B9 = $61), up starts a hop (speed $0100 upward, $B6 bit 1 cleared) and down a dip (speed $0100 downward, bit 1 set); away from it the flight goes on (broom_height). On odd passes left and right move the three pieces a step, down to x $0A on the left and up to $8C on the right, or $9F in room 3, where the gnome can fly off the screen into room 4."
  },
  {
   "address": 12787,
   "type": "line",
   "text": "While he rides, the gnome sits on the broom: x 12 right of its left piece, drawn as object 3, frame 4 (sprite_draw)."
  },
  {
   "address": 12815,
   "type": "line",
   "text": "One step of the broom's hop or dip. The speed ($BA, $BB) loses broom_pull's amount each step and the height ($B8, $B9) loses the speed, so a hop rises, slows and comes back down, and a dip falls and comes back up. Pushing the other way (down in a hop, up in a dip) sets bit 2 of $B6, which takes the stronger pull. All three pieces take the new height, and the gnome rides 8 lines above it. Back at $61 the broom stops there."
  },
  {
   "address": 12935,
   "type": "line",
   "text": "The pull on the broom's speed, four 16-bit numbers taken by $B6 bits 1 and 2: 2 in a hop, -2 in a dip, then 5 and -4 for the stronger pull."
  },
  {
   "address": 12936,
   "type": "line",
   "text": "The high bytes of broom_pull's numbers. broom_height reads them here, the second byte of each; a positive one (a hop) stops the broom when it comes back down to $61, a negative one (a dip) when it comes back up."
  },
  {
   "address": 12943,
   "type": "line",
   "text": "The bats, each pass, in the gold rush's caves (rooms 4-6) and in Salem ($2D94). A bolt that hits a bat (object $1C) kills it: the bat goes and the dead bat (object $1D) takes its place, its x, room and era recorded. With no bat and no dead bat on the screen, a bat starts one pass in 256 at random (only every fourth pass, except in room 4), at the edge away from the gnome (x 5 heading right when he is in the right half, else $9E heading left) at his height. A bat that touches the gnome sends him home (gnome_hurt). On even passes it flies on, and every 32 passes picks up or down: down above y $0A, up from $A0, at random between. It goes past x $A0. A dead bat falls three lines a pass, its y kept in its object; from y $A0 it lies on the ground and sets bit 5 of $B6. In the gold rush the gnome cannot move up or down while this runs."
  },
  {
   "address": 13176,
   "type": "line",
   "text": "The gnome is caught (a scorpion, a stalactite, a bat): pulls four bytes off the stack and sends him home, dropping what he carries ($10FF). From the gold rush's handlers those are the return into gold_pass and the two bytes it pushed; from Salem's bats, the returns into salem_pass's room code and into play_state. Reached from the scorpion and the stalactites, through the jump at $170F, and from the bats."
  },
  {
   "address": 13183,
   "type": "line",
   "text": "The main loop's state during a trip in time, for 256 passes counted in $73. On the first it clears the screen and colour RAM, writes the era's year (seven characters, row 8) and name (23, row 11) from the era's entry in era_names, puts the gnome in the middle and shows the text in the character ROM's copy ($D018 = $E8, single colour). Every pass it waits for the raster to pass line 256; every fourth it sets a random background colour and shows the gnome turned the next way (objects 0-3 in turn on slot 0, sprite_object), so that he spins. From $E2 the screen and sprites go dark. When $73 wraps to 0 the gnome arrives in room 1 of the era facing down (era_start_room1) and sound effect 5 plays."
  },
  {
   "address": 13342,
   "type": "line",
   "text": "Takes the gnome through the left or right edge of the screen. The caller gives two masks of the era's rooms, one bit for each room from bit 0 for room 1: $06 for the rooms with a way out on the left, $07 on the right. At x below 2 he enters the room to the left (room - 1, at x $93) and at $94 or more the room to the right (room + 1, at x 3, room_enter) when the room's bit is set; when it is not, a step further out is stopped ($53 = 0). Callers: the per-pass routines of the gold rush ($1569) and Salem."
  },
  {
   "address": 13398,
   "type": "line",
   "text": "Starts an era's pictures: blanks the screen (screen_off, which also clears the sprites of slots 1-7), stops the music, finds the era's record (era_record_ptr) and unpacks its character set, the record's bytes 4-5, into $F000 with unpack_to_f000. Era 2 (the gold rush) takes the set at $45CA instead in rooms below 4 and $4893 from room 4 on, and era 8 (Salem) takes $8CD3 below room 5 and $9612 from room 5 on, so those eras have two sets each. Then it clears the freeze flag $32. Callers: era_enter, closet_leave and the closet entry in play_state."
  },
  {
   "address": 13477,
   "type": "line",
   "text": "Unpacks the packed block at ($0F) into the character set at $F000 (unpack). Three callers."
  },
  {
   "address": 13488,
   "type": "line",
   "text": "The main loop's state in play, called every pass. In order: the sword (object $4E) changes colour on three passes in four, from sword_colours; the staff (object $58) shows at double height and changes colour every pass. The flute is two objects: $4C, which animates, and $3D, which does not. $4C lying in the room becomes $3D 20 lines lower, its own room set to $FF, and tune 2 plays (tune_start with X = 8); the gnome carrying $3D gets $4C in his hands in its place, with tune 6 (X = $18). The button held down for 128 passes (bit 7 of $AA), when nothing ($76) prevents it, takes the gnome to the closet, era 2 room 9, at x and y $5A, keeping where he was in $B0-$B3 and restarting the count, with sound effect 0; he lets go of the broom (object $2A) on the way. Era 0, which no code sets in play, is left out. Then the torch, the portal, the button, the bolt, the balloon and the cage, and the joystick ($3581 on)."
  },
  {
   "address": 13697,
   "type": "line",
   "text": "Part of play_state. Every fourth pass, when the torch (object $24) is lit ($AB) and showing, steps it to its next picture, frames 1-3, the flame; frame 0 is the torch unlit. Then lets each slot that no longer touches anything forget its collision with the gnome ($1A,x), and in eras 2 and above runs the portal ($35B5)."
  },
  {
   "address": 13749,
   "type": "line",
   "text": "Part of play_state, the portal (object $1B). Touching it sends the gnome to the era in byte 4 of its portal_table entry (time_travel). While it shows its colour changes every pass, and every 64 passes it grows a frame, up to frame 2, while it is open, or shrinks one as it closes. Every 64 passes $91 counts: from 0 the room's portal opens (portal_show) and $91 goes to $F0; counting up from there it stays open 16 counts, and at 0 it closes and $91 is set to 60 counts down until the next."
  },
  {
   "address": 13853,
   "type": "line",
   "text": "Part of play_state, the button. A press ($26) does nothing on the time machine's controls ($B4). At a door (door_check) it is left to the era. When the gnome carries something he drops it (object_drop). Otherwise he picks up the first object in the slots he touches (from the collisions in $15) that can be carried (obj_anim bit 7) and that sprites_touch confirms, with four refusals: the oxygen tank (object $10) once $A9 is negative, the log ($13) while it burns ($A6), the cauldron ($30) while bit 0 of $B6 is set, and the cage ($0C) while $A7 is negative. With nothing to pick up and no bolt in flight, facing left or right, he fires one: object $11 starts at his hand (hand_x + 4, his y) with the facing's frame and speed, and the gnome's sprite shows frame 5 of his picture, one past his walking frames, for two passes."
  },
  {
   "address": 14016,
   "type": "line",
   "text": "Part of play_state, the bolt and the balloon. The bolt (object $11) moves its speed $77 sideways and three lines up on every other pass and goes when it leaves x 5-$9B or y below 5. Every fourth pass the rest: a bolt that hits the balloon (object $0F) bursts it (both go, the balloon's room becomes $FF) and drops the cage if it hung from it ($A7 $20 becomes $40). A cage (object $0C) that touches the balloon and the gnome together hangs from it ($A7 = $20, 21 lines below). The balloon drifts one step left, and one up while it is below y $5F, carrying the hanging cage with it, and is lost off the left edge (x below 4), its room set to $FF. A falling cage ($A7 bit 6) drops three lines a pass and is gone at y $BE."
  },
  {
   "address": 14237,
   "type": "line",
   "text": "Part of play_state, the joystick. On even passes only, and not while the game is frozen ($32) or on the controls ($B4), nor with the stick at rest, it turns the stick into a step and a facing ($28): up 0, down 1, left 2, right 3. Then the era's per-pass routine tests the step and may cancel it (call_17), and unless that froze the game the gnome takes the new facing (sprite_object redraws him when it has changed or he cannot move), moves (sprite_update) and takes what he carries along (carried_follow). A test for room 4 when the pass count is 1 can never pass, because the count is even here. On the other passes the era's routine runs without a step. Last, every object with a sprite moves and animates (sprite_update, objects 4-$6C)."
  },
  {
   "address": 14381,
   "type": "line",
   "text": "Jumps to the era's per-pass routine at ($17), set from bytes 0-1 of the era's record by era_room_from_record."
  },
  {
   "address": 14384,
   "type": "line",
   "text": "Jumps to the address in $0F-$10: the era's room-entry routine (room_enter, closet_leave) or a handler from a table (the gold rush's per-pass routine)."
  },
  {
   "address": 14387,
   "type": "line",
   "text": "One byte for each facing (up, down, left, right): how far right of the gnome what he holds is drawn (carried_follow), and, plus 4, where a bolt starts (play_state)."
  },
  {
   "address": 14391,
   "type": "line",
   "text": "One byte for each facing: the bolt's horizontal speed, doubled into $77 when it is fired: 0 up and down, -2 left, +2 right, so -4 and +4. Bolts are fired only facing left or right."
  },
  {
   "address": 14395,
   "type": "line",
   "text": "Moves what the gnome carries (slot X) into his hands: y about the gnome's y less the object's height (obj_height) plus 11, x about the gnome's x less half its width (obj_width) plus 7 and the facing's hand_x. An object that animates steps a frame every pass while it is carried. When it is the broom (object $2A), the broom's handle (object $29) goes 21 lines above it. Callers: play_state each pass the gnome moves, and object_pick_up."
  },
  {
   "address": 14461,
   "type": "line",
   "text": "The game's room switch. Called with jsr and followed in memory by a table of two-byte addresses, one for each room from room 1, it pulls its own return address, takes the entry for the room in $19 and jumps to it with A = 0. The table is never returned past: each entry is the code for its room, which returns to the caller's caller. Nine call sites, each with its table."
  },
  {
   "address": 14496,
   "type": "line",
   "text": "Sets the room to 1 and falls into era_enter. Three callers: the time machine's arrival, and two era exits."
  },
  {
   "address": 14500,
   "type": "line",
   "text": "Enters an era at the room in $19: loads its character set (era_load_charset); takes the gnome's starting x and y from the era record's bytes 8 and 9; starts the era's tune (record byte 6, a tune number times 4) and sets the music's tempo mask from byte 7; faces the gnome down; takes the era's per-pass routine from bytes 0-1 into $17; draws the room (room_enter); and sets the main loop's state to play_state."
  },
  {
   "address": 14514,
   "type": "line",
   "text": "The second half of era_enter, from the tune on, entered here by closet_leave, which has loaded the character set itself."
  },
  {
   "address": 14528,
   "type": "line",
   "text": "The part of era_enter from facing the gnome down on, entered here by the closet entry in play_state, which has already started its own tune."
  },
  {
   "address": 14561,
   "type": "line",
   "text": "Waits until the raster line ($D012) equals A. Two callers: the start-up (line $FA) and main_loop (line $F9 each pass)."
  },
  {
   "address": 14567,
   "type": "line",
   "text": "The game's loop; nothing but irq runs outside it. Each pass it counts $23 from 0 to 63 and, when that wraps, $BD from 0 to 59; scans the keyboard for F7, the pause key (keys_read); waits for raster line $F9; and while the game is not paused, runs the sound effects (sfx_play), reads both joysticks into $25 (the two ports ANDed, so either stick works), counts the passes the button has been held in $AA and sets $26 to $10 on the pass it goes down, reads the sprite-sprite collisions ($D01E) into $16 and, less the slots told to ignore them ($1A,x) and the carried object, into $15, and calls the state routine at ($04)."
  },
  {
   "address": 14591,
   "type": "line",
   "text": "Reads the keyboard with CIA 1. With rows 1-7 selected ($DC00 = $01) it checks that no key is down there, then selects rows 0 and 2-7 ($02) and reads the columns: rows 2-7 were just found empty, so what it reads is row 0, where F7 is bit 3. A value must stay the same for three passes before it counts, and counts once ($AD, $AE). F7 toggles $AF, the pause flag ($FF running, 0 paused), and pausing silences the SID (sid_clear)."
  },
  {
   "address": 14750,
   "type": "line",
   "text": "jmp ($04): the main loop's current state, play_state in play, travel_state during a trip in time (set by time_travel, for the machine, a portal or the way home)."
  },
  {
   "address": 14753,
   "type": "line",
   "text": "Draws the room in $19 of the current era: finds the room's packed screen in the era record (from byte 10, two bytes a room) and reads its five-byte header: the screen's three background colours ($D021-$D023) and two colour-RAM values, all kept in $2B-$2F. Then it unpacks the rest into the screen at $F800, colouring each cell as it goes. A header byte with bit 7 set means an empty room: the screen and the sprite pointers after it ($F800-$FBFF) are filled with character 0 (the tya that loads the 0 comes before the loop, so the value never changes), the background is set black, and the sprite pointers are set again (sprite_ptrs_set)."
  },
  {
   "address": 14817,
   "type": "line",
   "text": "Y = room x 2 + 8 + Y, the offset in the era record of the room's entry (room 1 is at byte 10). Then fetches that word into $0F (record_word)."
  },
  {
   "address": 14830,
   "type": "line",
   "text": "Points $11-$12 at screen row Y (0-24) of the screen at $F800, plus X: $11 = X, then 40 added Y times. Its caller, door_draw, passes the row and column of a door."
  },
  {
   "address": 14846,
   "type": "line",
   "text": "Adds 40, one screen row, to the pointer at $11-$12. Two callers, both in this routine and door_draw."
  },
  {
   "address": 14859,
   "type": "line",
   "text": "Draws a closed door seven rows by two cells at the screen cell X, row Y, from door_cells, colouring each cell from the room's colours as room_draw does. Its caller is the mansion's door code (era 1)."
  },
  {
   "address": 14905,
   "type": "line",
   "text": "The fourteen character codes, two to a row, that door_draw puts on the screen."
  },
  {
   "address": 14919,
   "type": "line",
   "text": "Draws the room the gnome has moved into, and anything in it. Blanks the screen and sprites 1-7 (screen_off), sets the character set ($F000) and multicolour, clears the expansion, border and priority registers, frees sprites 1-7 (sprites_free), puts the gnome back on sprite 0 with his facing, and then for objects 4-$6C: each one in this era and room gets a sprite (object_show), and one whose room is 0 is the object the gnome carries, placed by his hands ($74, $75). Draws the room (room_draw), runs the special sprite list (special_sprites) if $91 is negative, calls the era's room-entry routine (record bytes 2-3) with the collisions read, and switches the screen back on. 32 callers: every move from room to room comes through it."
  },
  {
   "address": 15068,
   "type": "line",
   "text": "Called when the button is pressed: is the gnome at a door? In era 7 (the spaceship), room 3, it checks the gnome against two pairs of objects ($0888/$0889 and $088A/$088B, the first present of each) and toggles bit 0 or bit 1 of $C1 for the one he touches. In era 1, rooms 1-3, it looks up the room's door list (mansion_door_index) and tests the gnome against each door box (box_list_test). Carry set means a door was found, with its number in Y. Two callers: the mansion's per-pass routine and play_state."
  },
  {
   "address": 15148,
   "type": "line",
   "text": "Unpacks a packed block from ($0F) to ($11). The block is a run of groups: a flag byte, then up to eight data bytes. Each flag bit, from bit 7 down, says whether the next output byte repeats the last value (bit set) or takes a new byte from the stream (bit clear); a new byte equal to the last one ends the block. When the destination is the screen ($F8xx at the start) every byte also gets a colour in colour RAM ($D8xx) through cell_colour. Two callers: unpack_to_f000 (a character set) and room_draw (a room)."
  },
  {
   "address": 15226,
   "type": "line",
   "text": "Adds 1 to the source pointer $0F-$10. Three callers."
  },
  {
   "address": 15233,
   "type": "line",
   "text": "Writes a screen code and its colour: the code without its bit 7 to ($11),Y, and to colour RAM at ($13),Y the room's colour $2E, or $2F when bit 7 was set, with bit 3 added (multicolour on for the cell). Two callers: unpack and door_draw."
  },
  {
   "address": 15250,
   "type": "line",
   "text": "Points $02-$03 at the current era's record: $0A76 plus the era's offset from era_offsets. Two callers."
  },
  {
   "address": 15267,
   "type": "line",
   "text": "Loads the word at ($02),Y into $0F-$10. Four callers."
  },
  {
   "address": 15277,
   "type": "line",
   "text": "Waits for the raster to pass line 256, blanks the screen ($D011 = 0) and frees sprites 1-7 that hold an object (sprite_free). Keeps X. Five callers, all before a new screen is drawn."
  },
  {
   "address": 15304,
   "type": "line",
   "text": "The gnome takes object Y: the sprite slot showing it (obj_slot) becomes the carried slot $74 and Y the carried object $75, the button press is used up, the object's room becomes 0 (carried) and it is moved to the gnome's hands (carried_follow). Five callers: four jsr and one jmp."
  },
  {
   "address": 15321,
   "type": "line",
   "text": "Is object Y on screen? Loads its sprite slot into X (0 when it has none) and returns carry set when it has one and its era and room are the current ones. 40 callers: the puzzles test their objects with it."
  },
  {
   "address": 15342,
   "type": "line",
   "text": "The gnome lets go of what he carries: the slot is told to ignore its collision with the gnome until they part ($1A,x), the object's era and room become the current ones, and its x is kept (one of 200 or more is pulled back to 1) and its y set 21 lines below the gnome's top less one line for every 3 bytes of its sprite, so its bottom rests at the gnome's feet. Dropping object $2A also moves object $29, when it has a sprite, to sit 21 lines above it, and records $29's era and room. 12 callers."
  },
  {
   "address": 15467,
   "type": "line",
   "text": "Do the sprites in slots X and Y overlap? Builds a box at sprite Y's position, moved back by the width and height of sprite X's object and as wide and tall as both objects together (widths from obj_width, heights from obj_height), and tests sprite X's position against it (box_test). Carry set when they overlap. Keeps X and Y. 43 callers."
  },
  {
   "address": 15534,
   "type": "line",
   "text": "Is the point ($06, $07) inside the trapezoid at trapezoid_table + X? The four bytes are a top row, a bottom row, and the left and right x at the top; each edge moves one step outward for every two rows down, as the floor of a room drawn in perspective does. Carry set when the row is in top..bottom-1 and the x lies between the two edges at that row. X steps on by 4, so callers test several in a row. 16 callers."
  },
  {
   "address": 15582,
   "type": "line",
   "text": "Four-byte trapezoids for trapezoid_test (top row, bottom row, left x, right x): floors and obstacles of the rooms seen at an angle. The callers pick an entry by its offset."
  },
  {
   "address": 15583,
   "type": "line",
   "text": "The trapezoids' bottom rows, read by trapezoid_test as trapezoid_table + 1 + X."
  },
  {
   "address": 15584,
   "type": "line",
   "text": "The trapezoids' left x at the top row, read as trapezoid_table + 2 + X."
  },
  {
   "address": 15585,
   "type": "line",
   "text": "The trapezoids' right x at the top row, read as trapezoid_table + 3 + X. The table holds 21 trapezoids, offsets 0 to $50."
  },
  {
   "address": 15649,
   "type": "line",
   "text": "The last trapezoids in the table."
  },
  {
   "address": 15666,
   "type": "line",
   "text": "$06 and $07 = the gnome's x and y after this pass's move ($33 + $53, $3B + $5B). 14 callers, which test where the gnome is about to step."
  },
  {
   "address": 15681,
   "type": "line",
   "text": "Opens the time portal if this room has one: walks portal_table, five bytes each (era, room, x, y, and the era the portal leads to), and for the first that matches gives object $1B, the portal, a sprite at that place with animation frame A and keeps the entry's offset in $92. A 0 ends the list. Two callers: room_enter (frame 1, when a portal is open) and play_state (frame $FF, when one opens)."
  },
  {
   "address": 15736,
   "type": "line",
   "text": "A pseudo-random byte in A from the three bytes $93-$95. 16 callers."
  },
  {
   "address": 15757,
   "type": "line",
   "text": "Loads the box at box_list + Y (x, y, width, height) into $06-$09 and falls into box_test. 19 callers."
  },
  {
   "address": 15777,
   "type": "line",
   "text": "Carry set when sprite X's position ($33,x, $3B,x) is inside the box at $06 (x), $07 (y) with width $08 and height $09: x from $06+1 to $06+$08 and y from $07+1 to $07+$09. Two callers enter here with a box of their own."
  },
  {
   "address": 15803,
   "type": "line",
   "text": "Tests sprite X against A boxes of box_list in turn from Y, four bytes apart, until one holds it (box_test_n). Carry set and Y on the box when one does."
  },
  {
   "address": 15820,
   "type": "line",
   "text": "Points the eight sprite pointers ($FBF8-$FBFF) at blocks $B0-$B7, the sprite buffers at $EC00-$EDFF. Three callers."
  },
  {
   "address": 15833,
   "type": "line",
   "text": "Stops the gnome's move this pass ($53, $5B to 0) when it would take him outside x 1-$91 or y $32-$9A. Three callers: closet_pass (mansion room 5 and the gold rush's closet), persia_pass and ship_pass."
  },
  {
   "address": 15863,
   "type": "line",
   "text": "Lets the gnome's step through only where a list of rectangles at ($0F) allows it: five bytes each, x, width, y, height and a flag, ended by $FF. Each rectangle that holds his next position (x from its x to x+width-1, y the same) ORs its flag into $06; at the end, without bit 0 the move across ($53) is cancelled, and without bit 1 the move up and down ($5B), so a step into no rectangle is cancelled both ways."
  },
  {
   "address": 15953,
   "type": "line",
   "text": "Sets the three background colours and all of colour RAM to black and frees sprites 1-7. Three callers."
  },
  {
   "address": 15994,
   "type": "line",
   "text": "Eight colours that the sword (object $4E) cycles through, one a pass in play_state."
  },
  {
   "address": 16002,
   "type": "line",
   "text": "The packed character set for the mansion (era 1): unpack_to_f000 makes 1024 bytes of it at $F000. A flag byte stands for the next eight bytes, from bit 7 down: a set bit repeats the last value, a clear one takes a new value from the stream, and a new value equal to the last ends it."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "The mansion's packed character set, continued."
  },
  {
   "address": 16554,
   "type": "line",
   "text": "The packed screen of mansion room 4, the time machine's controls: text in the character ROM's letters, \"TIME MACHINE CONTROL ROOM\", the seven years scattered over the screen, \"FIRE BUTTON SELECTS NEW YEAR\" and \"DOWN JOYSTICK RETURNS TO MANSION\". Its cells have no end marker of their own: unpacking runs on for 11 more cells into row 24, through the next two items, and stops at $41AE. Header: background colours 6, 0 and 0, colour values 14 and 1; then 971 cells for room_draw. Packed the same way as a character set; bit 7 of a cell picks the second colour value, the rest is the character."
  },
  {
   "address": 16805,
   "type": "line",
   "text": "One byte, $FF: a header with bit 7 set, so room_draw fills the screen with character 0 on a black background. Mansion room 5 and the black hole's room 1 use it; in the black hole, character 0 is blank, so the room is black but for its sprites."
  },
  {
   "address": 16806,
   "type": "line",
   "text": "The packed screen of mansion room 1, the living room: the fireplace with a clock on the mantel, two doors, the armchair and the small table. Header: background colours 0, 11 and 2, colour values 6 and 3; then 960 cells for room_draw."
  },
  {
   "address": 17171,
   "type": "line",
   "text": "The packed screen of mansion room 2, the hall: two doors at the far end and a blue carpet. Header: background colours 12, 11 and 6, colour values 7 and 0; then 960 cells for room_draw."
  },
  {
   "address": 17542,
   "type": "line",
   "text": "The packed screen of mansion room 3, the room with the time machine, a door in each side wall. Header: background colours 0, 11 and 5, colour values 2 and 3; then 960 cells for room_draw."
  },
  {
   "address": 17866,
   "type": "line",
   "text": "The packed character set for the gold rush's street (era 2, rooms 1-3): unpack_to_f000 makes 1024 bytes of it at $F000."
  },
  {
   "address": 18579,
   "type": "line",
   "text": "The packed character set for the gold rush's caves and houses (era 2, rooms 4-9, the closet among them): unpack_to_f000 makes 1024 bytes of it at $F000."
  },
  {
   "address": 19195,
   "type": "line",
   "text": "The packed screen of gold rush room 1, the street with the saloon. Header: background colours 11, 7 and 9, colour values 3 and 0; then 960 cells for room_draw."
  },
  {
   "address": 19615,
   "type": "line",
   "text": "The packed screen of gold rush room 2, the street with the blacksmith's. Header: background colours 11, 7 and 9, colour values 3 and 0; then 960 cells for room_draw."
  },
  {
   "address": 19964,
   "type": "line",
   "text": "The packed screen of gold rush room 3, the end of the street, with the treadle that works the lift. Header: background colours 11, 7 and 9, colour values 3 and 0; then 960 cells for room_draw."
  },
  {
   "address": 20410,
   "type": "line",
   "text": "gold_wheels' lists of runs to flip in the character set, four bytes each: an address in the set at $F000, a count less one and the value to exclusive-OR the bytes with. Room 3's 13 runs (the chain and the treadle's wheels) end at $4FEE; room 8's 7 runs, from $4FF0, end at $500C. A high byte of 0 ends a list."
  },
  {
   "address": 20411,
   "type": "line",
   "text": "The runs' address high bytes, read by gold_wheels as wheel_flips + 1 + X; a 0 ends a list."
  },
  {
   "address": 20412,
   "type": "line",
   "text": "The runs' counts less one, read as wheel_flips + 2 + X."
  },
  {
   "address": 20413,
   "type": "line",
   "text": "The values the runs are exclusive-ORed with, read as wheel_flips + 3 + X."
  },
  {
   "address": 20464,
   "type": "line",
   "text": "Room 8's list of runs in wheel_flips (gold_wheels starts here, X = $36): the lift's chain in the house."
  },
  {
   "address": 20494,
   "type": "line",
   "text": "The packed screen of gold rush room 8, the house with the lift. Header: background colours 0, 9 and 12, colour values 3 and 2; then 960 cells for room_draw."
  },
  {
   "address": 20855,
   "type": "line",
   "text": "The packed screen of gold rush room 7, the dark house, with a sack on the floor. Header: background colours 0, 9 and 11, colour values 7 and 6; then 960 cells for room_draw."
  },
  {
   "address": 21405,
   "type": "line",
   "text": "The packed screen of the closet, gold rush room 9: a striped room with a curtained window. Header: background colours 7, 6 and 11, colour values 12 and 10; then 960 cells for room_draw."
  },
  {
   "address": 21585,
   "type": "line",
   "text": "The packed screen of gold rush room 4, the cave with the scripture's piece under the stalactites. Header: background colours 11, 9 and 6, colour values 7 and 0; then 960 cells for room_draw."
  },
  {
   "address": 22086,
   "type": "line",
   "text": "The packed screen of gold rush room 5, the scorpion's cave. Header: background colours 11, 9 and 6, colour values 2 and 0; then 960 cells for room_draw."
  },
  {
   "address": 22547,
   "type": "line",
   "text": "The packed screen of gold rush room 6, the cave at the lift's foot, where the flat balloon lies. Header: background colours 11, 9 and 6, colour values 2 and 0; then 960 cells for room_draw."
  },
  {
   "address": 23029,
   "type": "line",
   "text": "The packed character set for the black hole (era 3): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 23528,
   "type": "line",
   "text": "The packed screen of black hole room 2: a frame holding the message \"The Daimyo Carries The Staff\" in mirror writing. Header: background colours 15, 0 and 1, colour values 14 and 1; then 960 cells for room_draw."
  },
  {
   "address": 23885,
   "type": "line",
   "text": "The packed character set for Persia (era 4): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 24521,
   "type": "line",
   "text": "The packed screen of Persia room 1, hills at sunset, where the wine flask lies. Header: background colours 0, 8 and 11, colour values 4 and 0; then 960 cells for room_draw."
  },
  {
   "address": 24818,
   "type": "line",
   "text": "The packed screen of Persia room 2, the hills the flying carpet crosses. Header: background colours 0, 8 and 11, colour values 4 and 0; then 960 cells for room_draw."
  },
  {
   "address": 25105,
   "type": "line",
   "text": "The packed screen of Persia room 3, the hills with the snake's basket. Header: background colours 0, 8 and 11, colour values 4 and 0; then 960 cells for room_draw."
  },
  {
   "address": 25413,
   "type": "line",
   "text": "The packed screen of Persia room 4, the hills with the boulder over the cave. Header: background colours 0, 8 and 11, colour values 4 and 0; then 960 cells for room_draw."
  },
  {
   "address": 25756,
   "type": "line",
   "text": "The packed screen of Persia rooms 5-8, the cave: one picture, a hall with doorways, for all four rooms. Header: background colours 0, 4 and 11, colour values 6 and 0; then 960 cells for room_draw."
  },
  {
   "address": 26063,
   "type": "line",
   "text": "The packed character set for the stone age (era 5): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 26742,
   "type": "line",
   "text": "The packed screen of stone age room 5, the right end of the cliffs, with the mouth of cave 8 on the middle ledge. Header: background colours 0, 9 and 11, colour values 3 and 5; then 960 cells for room_draw."
  },
  {
   "address": 27237,
   "type": "line",
   "text": "The packed screen of stone age room 4, the left end of the cliffs, with the mouth of cave 6 on the bottom ledge. Header: background colours 0, 9 and 11, colour values 3 and 5; then 960 cells for room_draw."
  },
  {
   "address": 27725,
   "type": "line",
   "text": "The packed screen of stone age room 1, three ledges of cliff joined by ladders, where the cage lies. Header: background colours 0, 9 and 11, colour values 3 and 5; then 960 cells for room_draw."
  },
  {
   "address": 28232,
   "type": "line",
   "text": "The packed screen of stone age room 2, the cliffs where the boulder blocks the way. Header: background colours 0, 9 and 11, colour values 3 and 5; then 960 cells for room_draw."
  },
  {
   "address": 28722,
   "type": "line",
   "text": "The packed screen of stone age room 3, the cliffs with the mouth of cave 7 on the top ledge. Header: background colours 0, 9 and 11, colour values 3 and 5; then 960 cells for room_draw."
  },
  {
   "address": 29279,
   "type": "line",
   "text": "The packed screen of stone age rooms 6-8, inside a cave: one picture for all three. Header: background colours 0, 11 and 9, colour values 3 and 5; then 960 cells for room_draw."
  },
  {
   "address": 29693,
   "type": "line",
   "text": "The packed character set for Greece (era 6): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 30360,
   "type": "line",
   "text": "The packed screen of Greece room 1, two temples, the right one with a door. Header: background colours 11, 15 and 12, colour values 0 and 4; then 960 cells for room_draw."
  },
  {
   "address": 30937,
   "type": "line",
   "text": "The packed screen of Greece room 3, a wall of stone blocks between columns, one block marked. Header: background colours 11, 15 and 12, colour values 0 and 1; then 960 cells for room_draw."
  },
  {
   "address": 31561,
   "type": "line",
   "text": "The packed screen of Greece room 2, the hall of columns, a marked block in its east wall. Header: background colours 11, 15 and 12, colour values 0 and 1; then 960 cells for room_draw."
  },
  {
   "address": 32211,
   "type": "line",
   "text": "The packed screen of Greece room 4, busts above an arch between two pedestals. Header: background colours 11, 3 and 12, colour values 0 and 1; then 960 cells for room_draw."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "Greece room 4's packed screen, continued."
  },
  {
   "address": 32881,
   "type": "line",
   "text": "The packed screen of Greece room 5, Medusa's hall, between two busts on pedestals. Header: background colours 11, 3 and 12, colour values 0 and 1; then 960 cells for room_draw."
  },
  {
   "address": 33391,
   "type": "line",
   "text": "The packed character set for the spaceship (era 7): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 34076,
   "type": "line",
   "text": "The packed screen of spaceship room 1, the control room, the moon on its big screen. Header: background colours 1, 11 and 0, colour values 6 and 2; then 960 cells for room_draw."
  },
  {
   "address": 34489,
   "type": "line",
   "text": "The packed screen of spaceship rooms 2-4, the corridor with windows on space: one picture for all three. Header: background colours 0, 0 and 4, colour values 1 and 6; then 960 cells for room_draw."
  },
  {
   "address": 34790,
   "type": "line",
   "text": "The packed screen of spaceship room 5, the corridor to the numbered door. Header: background colours 0, 12 and 11, colour values 6 and 4; then 960 cells for room_draw."
  },
  {
   "address": 35052,
   "type": "line",
   "text": "The packed screen of spaceship room 6, where the safe stands. Header: background colours 0, 15 and 11, colour values 7 and 1; then 960 cells for room_draw."
  },
  {
   "address": 35390,
   "type": "line",
   "text": "The packed screen of spaceship room 7, the three teleport pads. Header: background colours 0, 11 and 12, colour values 1 and 4; then 960 cells for room_draw."
  },
  {
   "address": 35676,
   "type": "line",
   "text": "The packed screen of spaceship room 8, the moon's surface. Header: background colours 0, 5 and 0, colour values 1 and 0; then 960 cells for room_draw."
  },
  {
   "address": 36051,
   "type": "line",
   "text": "The packed character set for Salem's street and hillside (era 8, rooms 1-4): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 36823,
   "type": "line",
   "text": "The packed screen of Salem room 1, the church and the chemist's. Header: background colours 11, 9 and 0, colour values 5 and 1; then 960 cells for room_draw."
  },
  {
   "address": 37322,
   "type": "line",
   "text": "The packed screen of Salem room 2, the shop and a brick house. Header: background colours 11, 9 and 0, colour values 5 and 1; then 960 cells for room_draw."
  },
  {
   "address": 37727,
   "type": "line",
   "text": "The packed screen of Salem room 3, the log house by the lake. Header: background colours 0, 9 and 5, colour values 3 and 6; then 960 cells for room_draw."
  },
  {
   "address": 38030,
   "type": "line",
   "text": "The packed screen of Salem room 4, the wooded hillside past the lake. Header: background colours 0, 9 and 8, colour values 3 and 6; then 960 cells for room_draw."
  },
  {
   "address": 38418,
   "type": "line",
   "text": "The packed character set for the insides of Salem's houses (era 8, rooms 5-7): unpack_to_f000 makes 1032 bytes of it at $F000."
  },
  {
   "address": 39091,
   "type": "line",
   "text": "The packed screen of Salem room 5, inside the chemist's: shelves of bottles over a counter. Header: background colours 0, 9 and 11, colour values 6 and 5; then 960 cells for room_draw."
  },
  {
   "address": 39467,
   "type": "line",
   "text": "The packed screen of Salem room 6, inside the shop: shelves, a counter, sacks of flour and salt. Header: background colours 0, 12 and 11, colour values 6 and 1; then 960 cells for room_draw."
  },
  {
   "address": 39879,
   "type": "line",
   "text": "The packed screen of Salem room 7, inside the log house, with the fireplace. Header: background colours 0, 11 and 12, colour values 7 and 6; then 960 cells for room_draw."
  },
  {
   "address": 40223,
   "type": "line",
   "text": "The packed character set for the throne room (era 9): unpack_to_f000 makes 1032 bytes of it at $F000. Its last characters, 121-128, which the throne room's screen never uses, hold stray bytes rather than pictures: among them the ASCII text \"Bytes/sector:\", left over from whatever the set was drawn or saved with."
  },
  {
   "address": 40876,
   "type": "line",
   "text": "The packed screen of era 9, the throne room: the throne on its steps and \"GRATULARI!!!!!\". Header: background colours 0, 6 and 11, colour values 7 and 11; then 960 cells for room_draw."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The throne room's packed screen, continued."
  },
  {
   "address": 41176,
   "type": "line",
   "text": "Marks the eight sprite slots free ($42+1 to $42+8, that is $43-$4A, set to $FF) and switches every sprite off. One caller, room_enter."
  },
  {
   "address": 41189,
   "type": "line",
   "text": "Frees sprite slot X: the object it showed (when 4 or more, a world object) loses its slot, the slot is marked free ($43,x = $FF) and the sprite is switched off. 81 callers."
  },
  {
   "address": 41214,
   "type": "line",
   "text": "Gives object Y a sprite: takes the highest free slot from 7 down (none free returns with N set and X = $FF), and for a world object (4 or more) records the slot in obj_slot and takes the object's x and y. Then falls into sprite_object. 69 callers: 66 jsr and 3 jmp."
  },
  {
   "address": 41242,
   "type": "line",
   "text": "Shows object Y in slot X: sets the sprite's colour, multicolour and x-expansion from obj_flags, clears 63 bytes of its buffer and its move, sets its frame to $FF and its animation delay to 1 so that the next sprite_update steps to frame 0 and draws it, and switches it on. Three callers besides sprite_alloc: play_state when the gnome changes direction, room_enter, and travel_state."
  },
  {
   "address": 41310,
   "type": "line",
   "text": "Moves and animates slot X. When its animation delay ($63,x) runs out it steps to the next frame, wrapping after the frame count from obj_anim and reloading the delay from the same byte; on a new frame it copies the frame (sprite_draw). Every pass it adds the slot's move ($53,x, $5B,x) to its x and y, writes the sprite's position (sprite_set_x, sprite_set_y) and clears the move. 41 callers."
  },
  {
   "address": 41349,
   "type": "line",
   "text": "Copies frame $6B,x of the slot's object into the slot's sprite buffer: the frame's address is obj_gfx_lo/hi plus the frame number times the frame's size (obj_size); the bytes go in rows of 1, 2 or 3 (obj_flags bits 4-5) and the rest of each 3-byte row is skipped. The length of buffer it filled, three bytes a row, is kept in $4B,x for object_drop. Seven callers."
  },
  {
   "address": 41480,
   "type": "line",
   "text": "Points $11-$12 at slot X's sprite buffer, $EC00 + 64 x X. Two callers."
  },
  {
   "address": 41494,
   "type": "line",
   "text": "With carry set, ORs slot X's bit (bit_mask) into A; with carry clear, ANDs it out (bit_mask_inv). Two callers, sprite_object for the multicolour and expansion registers."
  },
  {
   "address": 41503,
   "type": "line",
   "text": "bit_mask less one: read as $A21F + X with X counted from 1, so that 1 gives bit 0. The byte here is the rts that ends spr_bit_set."
  },
  {
   "address": 41504,
   "type": "line",
   "text": "Eight bytes, $01, $02, $04 ... $80: the bit of each sprite slot."
  },
  {
   "address": 41512,
   "type": "line",
   "text": "The same bits inverted, $FE, $FD ... $7F."
  },
  {
   "address": 41520,
   "type": "line",
   "text": "One byte per object, $00-$6C: the low nibble is its sprite colour, bits 4-5 how many bytes of each 3-byte sprite row its frames hold (1, 2 or 3), bit 6 doubles its width (x-expansion) and bit 7 makes it multicolour."
  },
  {
   "address": 41629,
   "type": "line",
   "text": "One byte per object: bits 0-2 the passes each animation frame lasts, bits 3-5 the number of frames (0 or 1 means it never changes), bit 7 that the gnome can pick it up, and bit 6 is tested when the gnome tries to leave the closet (closet_pass): an object with it lying there keeps him in."
  },
  {
   "address": 41738,
   "type": "line",
   "text": "One byte per object: the bytes in one of its frames."
  },
  {
   "address": 41847,
   "type": "line",
   "text": "One byte per object: its height in lines, used by sprites_touch and to hold a carried object at the gnome's hands."
  },
  {
   "address": 41956,
   "type": "line",
   "text": "One byte per object: its width in x steps (two pixels each), used by sprites_touch and carried_follow."
  },
  {
   "address": 42065,
   "type": "line",
   "text": "One byte per object: the low byte of the address of its first frame."
  },
  {
   "address": 42174,
   "type": "line",
   "text": "One byte per object: the high byte. Objects 3, $17, $18, $19 and $6C point into $0400-$069F, frames the game builds at run time: sprites_build makes 3 and $19, mansion_pass's countdown at $10BA fills $17 and $18, and greece_medusa draws $6C's (greece_room_entry clears it)."
  },
  {
   "address": 42283,
   "type": "line",
   "text": "Sprite frames of the bat; the dead bat (object $1D) is its first frame: 3 frames of 32 bytes, 2 bytes a row, so 16 rows each."
  },
  {
   "address": 42379,
   "type": "line",
   "text": "Sprite frames of the time portal: one frame of 8 bytes, 1 byte a row, so 8 rows."
  },
  {
   "address": 42387,
   "type": "line",
   "text": "The portal's frames 1 and 2, eight bytes each after its first: a small round shape and a larger one, which portal_show and play_state set as the portal opens and grows."
  },
  {
   "address": 42403,
   "type": "line",
   "text": "Sprite frames of the gnome seen from the front, walking down: 4 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 42655,
   "type": "line",
   "text": "Sprite frames of the gnome seen from behind, walking up: 3 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 42844,
   "type": "line",
   "text": "Sprite frames of the gnome from the side, walking (frames 0-4); frame 5, after them, is him firing a bolt: 5 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 43219,
   "type": "line",
   "text": "gnome_side's frame 5 ends here, and the start-up's mirror loop ($0F3A) reads gfx_horse_right as $A8D3-$A8D5 + X, X from $FC down by 3, one 3-byte row at a time from the last."
  },
  {
   "address": 43220,
   "type": "line",
   "text": "The middle byte of each mirrored row: the start-up's mirror loop reads gfx_horse_right as $A8D4 + X."
  },
  {
   "address": 43221,
   "type": "line",
   "text": "The last byte of each mirrored row, read as $A8D5 + X: it becomes the first byte of the row in the horse facing left."
  },
  {
   "address": 43222,
   "type": "line",
   "text": "Sprite frames of the horse facing right; the start-up mirrors these frames to make object $19, the horse facing left, at $057A: 4 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 43474,
   "type": "line",
   "text": "Sprite frames of the bolt the gnome fires: 2 frames of 7 bytes, 1 byte a row, so 7 rows each."
  },
  {
   "address": 43488,
   "type": "line",
   "text": "Sprite frames of the stalactite: 2 frames of 20 bytes, 1 byte a row, so 20 rows each."
  },
  {
   "address": 43528,
   "type": "line",
   "text": "Sprite frames of the gold rush's piece of the scripture: one frame of 36 bytes, 3 bytes a row, so 12 rows."
  },
  {
   "address": 43564,
   "type": "line",
   "text": "Sprite frames of the black hole's piece of the scripture: one frame of 36 bytes, 3 bytes a row, so 12 rows."
  },
  {
   "address": 43600,
   "type": "line",
   "text": "Sprite frames of Persia's piece of the scripture: one frame of 24 bytes, 2 bytes a row, so 12 rows."
  },
  {
   "address": 43624,
   "type": "line",
   "text": "Sprite frames of the stone age's piece of the scripture: one frame of 39 bytes, 3 bytes a row, so 13 rows."
  },
  {
   "address": 43663,
   "type": "line",
   "text": "Sprite frames of Greece's piece of the scripture: one frame of 26 bytes, 2 bytes a row, so 13 rows."
  },
  {
   "address": 43689,
   "type": "line",
   "text": "Sprite frames of the moon's piece of the scripture: one frame of 24 bytes, 2 bytes a row, so 12 rows."
  },
  {
   "address": 43713,
   "type": "line",
   "text": "Sprite frames of Salem's piece of the scripture: one frame of 26 bytes, 2 bytes a row, so 13 rows."
  },
  {
   "address": 43739,
   "type": "line",
   "text": "Sprite frames of the mansion's log: one frame of 10 bytes, 2 bytes a row, so 5 rows."
  },
  {
   "address": 43749,
   "type": "line",
   "text": "Sprite frames of the time machine's part: object $14 in place and $15, the missing one, share it: one frame of 15 bytes, 1 byte a row, so 15 rows."
  },
  {
   "address": 43764,
   "type": "line",
   "text": "Sprite frames of the plant: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 43826,
   "type": "line",
   "text": "light_masks less one: mansion_pass reads them as $AB32 + X, X from $2A down to 1. The byte here is the plant's last."
  },
  {
   "address": 43827,
   "type": "line",
   "text": "42 masks for the time machine's lights: travel_state's start ($10BA) ANDs two random bytes with each and fills the lights' frames at $0676-$069F, objects $17 and $18."
  },
  {
   "address": 43869,
   "type": "line",
   "text": "Sprite frames of the fire: 2 frames of 40 bytes, 2 bytes a row, so 20 rows each."
  },
  {
   "address": 43949,
   "type": "line",
   "text": "Sprite frames of the torch, unlit (frame 0) and burning (frames 1-3): 4 frames of 38 bytes, 2 bytes a row, so 19 rows each."
  },
  {
   "address": 44101,
   "type": "line",
   "text": "Sprite frames of the ladder: one frame of 21 bytes, 1 byte a row, so 21 rows."
  },
  {
   "address": 44122,
   "type": "line",
   "text": "Sprite frames of the flat balloon: one frame of 27 bytes, 3 bytes a row, so 9 rows."
  },
  {
   "address": 44149,
   "type": "line",
   "text": "Sprite frames of the balloon, blown up: one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 44191,
   "type": "line",
   "text": "Sprite frames of the cage: one frame of 34 bytes, 2 bytes a row, so 17 rows."
  },
  {
   "address": 44225,
   "type": "line",
   "text": "Sprite frames of the oxygen tank: one frame of 38 bytes, 2 bytes a row, so 19 rows."
  },
  {
   "address": 44263,
   "type": "line",
   "text": "Sprite frames of the scorpion: 3 frames of 24 bytes, 2 bytes a row, so 12 rows each."
  },
  {
   "address": 44335,
   "type": "line",
   "text": "Sprite frames of the oxygen tank's valve: 6 frames of 3 bytes, 1 byte a row, so 3 rows each."
  },
  {
   "address": 44353,
   "type": "line",
   "text": "Sprite frames of the lift: one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 44395,
   "type": "line",
   "text": "Sprite frames of the horse's food: one frame of 13 bytes, 1 byte a row, so 13 rows."
  },
  {
   "address": 44408,
   "type": "line",
   "text": "Sprite frames of the lift's wheels, objects $1F, $20 and $21: 3 frames of 16 bytes, 2 bytes a row, so 8 rows each."
  },
  {
   "address": 44456,
   "type": "line",
   "text": "Sprite frames of the key: one frame of 10 bytes, 2 bytes a row, so 5 rows."
  },
  {
   "address": 44466,
   "type": "line",
   "text": "Sprite frames of the wine flask: one frame of 51 bytes, 3 bytes a row, so 17 rows."
  },
  {
   "address": 44517,
   "type": "line",
   "text": "Sprite frames of the glass: one frame of 9 bytes, 1 byte a row, so 9 rows."
  },
  {
   "address": 44526,
   "type": "line",
   "text": "Sprite frames of the lamp: one frame of 21 bytes, 3 bytes a row, so 7 rows."
  },
  {
   "address": 44547,
   "type": "line",
   "text": "Sprite frames of the snake rising from the basket: 4 frames of 26 bytes, 2 bytes a row, so 13 rows each."
  },
  {
   "address": 44625,
   "type": "line",
   "text": "Sprite frames of the risen snake (object $38), whose first frame is the rising snake's last: 3 frames of 26 bytes, 2 bytes a row, so 13 rows each."
  },
  {
   "address": 44703,
   "type": "line",
   "text": "Sprite frames of the basket's lid: one frame of 6 bytes, 3 bytes a row, so 2 rows."
  },
  {
   "address": 44709,
   "type": "line",
   "text": "The lid's third row. Its obj_height is 3, but obj_size gives 6 bytes, two rows of 3, so sprite_draw copies two rows and this third one is never copied into its sprite."
  },
  {
   "address": 44712,
   "type": "line",
   "text": "Sprite frames of the snake's basket: one frame of 24 bytes, 3 bytes a row, so 8 rows."
  },
  {
   "address": 44736,
   "type": "line",
   "text": "Sprite frames of the woman on the flying carpet: 2 frames of 51 bytes, 3 bytes a row, so 17 rows each."
  },
  {
   "address": 44838,
   "type": "line",
   "text": "Sprite frames of the flying carpet's left half: 2 frames of 12 bytes, 3 bytes a row, so 4 rows each."
  },
  {
   "address": 44862,
   "type": "line",
   "text": "Sprite frames of the flying carpet's right half: 2 frames of 12 bytes, 3 bytes a row, so 4 rows each."
  },
  {
   "address": 44886,
   "type": "line",
   "text": "Sprite frames of the flute lying still: one frame of 6 bytes, 3 bytes a row, so 2 rows."
  },
  {
   "address": 44892,
   "type": "line",
   "text": "Sprite frames of the flute being played (object $4C): 3 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 45081,
   "type": "line",
   "text": "Sprite frames of the cave's mouth in the boulder, upper part: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 45144,
   "type": "line",
   "text": "Sprite frames of the cave's mouth, lower part: one frame of 39 bytes, 3 bytes a row, so 13 rows."
  },
  {
   "address": 45183,
   "type": "line",
   "text": "Sprite frames of the dynamite with its fuse burning; frame 0 is also object $45, the dynamite unlit: 4 frames of 42 bytes, 2 bytes a row, so 21 rows each."
  },
  {
   "address": 45351,
   "type": "line",
   "text": "A fifth frame after the burning dynamite's four, which its frame count (4) never reaches and no code sets."
  },
  {
   "address": 45393,
   "type": "line",
   "text": "Sprite frames of the stone age's log: one frame of 48 bytes, 3 bytes a row, so 16 rows."
  },
  {
   "address": 45441,
   "type": "line",
   "text": "Sprite frames of the tipped log: one frame of 48 bytes, 3 bytes a row, so 16 rows."
  },
  {
   "address": 45489,
   "type": "line",
   "text": "Sprite frames of a small rock on the clifftop: one frame of 27 bytes, 3 bytes a row, so 9 rows."
  },
  {
   "address": 45516,
   "type": "line",
   "text": "Sprite frames of the other small rock: one frame of 36 bytes, 3 bytes a row, so 12 rows."
  },
  {
   "address": 45552,
   "type": "line",
   "text": "Sprite frames of the stone age's boulders, objects $43 and $63: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 45615,
   "type": "line",
   "text": "Sprite frames of the candelabras, objects $4D and $68 unlit, $6A and $6B lit (two frames): 2 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 45741,
   "type": "line",
   "text": "Sprite frames of the sword: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 45804,
   "type": "line",
   "text": "Sprite frames of the shield: one frame of 45 bytes, 3 bytes a row, so 15 rows."
  },
  {
   "address": 45849,
   "type": "line",
   "text": "Sprite frames of the dark holes behind the marked blocks, objects $55 and $69: one frame of 34 bytes, 2 bytes a row, so 17 rows."
  },
  {
   "address": 45883,
   "type": "line",
   "text": "Sprite frames of Medusa's upper half: 3 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 46072,
   "type": "line",
   "text": "A fourth frame of Medusa's upper half, after her three, which her frame count (3) never reaches and no code sets."
  },
  {
   "address": 46135,
   "type": "line",
   "text": "Sprite frames of Medusa's lower half: 3 frames of 63 bytes, 3 bytes a row, so 21 rows each."
  },
  {
   "address": 46324,
   "type": "line",
   "text": "A fourth frame of Medusa's lower half, also never shown."
  },
  {
   "address": 46387,
   "type": "line",
   "text": "Sprite frames of the round light from the control panel: one frame of 12 bytes, 2 bytes a row, so 6 rows."
  },
  {
   "address": 46399,
   "type": "line",
   "text": "Sprite frames of the hole the round light fits: one frame of 12 bytes, 2 bytes a row, so 6 rows."
  },
  {
   "address": 46411,
   "type": "line",
   "text": "Sprite frames of the pyramid key: one frame of 10 bytes, 2 bytes a row, so 5 rows."
  },
  {
   "address": 46421,
   "type": "line",
   "text": "Sprite frames of the lock under the left pad: one frame of 10 bytes, 2 bytes a row, so 5 rows."
  },
  {
   "address": 46431,
   "type": "line",
   "text": "Sprite frames of the safe: one frame of 10 bytes, 1 byte a row, so 10 rows."
  },
  {
   "address": 46441,
   "type": "line",
   "text": "Sprite frames of a thin dark shape, object $46, that starts nowhere and that no code names: one frame of 15 bytes, 1 byte a row, so 15 rows."
  },
  {
   "address": 46456,
   "type": "line",
   "text": "Sprite frames of another, object $47, also unused: one frame of 21 bytes, 1 byte a row, so 21 rows."
  },
  {
   "address": 46477,
   "type": "line",
   "text": "Sprite frames of the first lever, off: one frame of 34 bytes, 2 bytes a row, so 17 rows."
  },
  {
   "address": 46511,
   "type": "line",
   "text": "Sprite frames of the first lever, on: one frame of 34 bytes, 2 bytes a row, so 17 rows."
  },
  {
   "address": 46545,
   "type": "line",
   "text": "Sprite frames of the second lever, off: one frame of 34 bytes, 2 bytes a row, so 17 rows."
  },
  {
   "address": 46579,
   "type": "line",
   "text": "Sprite frames of the second lever, on: one frame of 34 bytes, 2 bytes a row, so 17 rows."
  },
  {
   "address": 46613,
   "type": "line",
   "text": "Sprite frames of a doorway (objects $50 and $66): one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 46655,
   "type": "line",
   "text": "Sprite frames of a doorway (objects $51 and $67): one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 46697,
   "type": "line",
   "text": "Sprite frames of a doorway (objects $52 and $64): one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 46739,
   "type": "line",
   "text": "Sprite frames of a doorway (objects $53 and $65): one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 46781,
   "type": "line",
   "text": "Sprite frames of the smoke: 7 frames of 42 bytes, 2 bytes a row, so 21 rows each."
  },
  {
   "address": 47075,
   "type": "line",
   "text": "Sprite frames of the potions, objects $27 and $28: 4 frames of 42 bytes, 2 bytes a row, so 21 rows each."
  },
  {
   "address": 47243,
   "type": "line",
   "text": "Sprite frames of the broom's handle: one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 47285,
   "type": "line",
   "text": "Sprite frames of the broom's head: one frame of 42 bytes, 2 bytes a row, so 21 rows."
  },
  {
   "address": 47327,
   "type": "line",
   "text": "Sprite frames of the flying broom's left end: one frame of 30 bytes, 3 bytes a row, so 10 rows."
  },
  {
   "address": 47357,
   "type": "line",
   "text": "Sprite frames of the flying broom's middle: one frame of 30 bytes, 3 bytes a row, so 10 rows."
  },
  {
   "address": 47387,
   "type": "line",
   "text": "Sprite frames of the flying broom's right end: one frame of 30 bytes, 3 bytes a row, so 10 rows."
  },
  {
   "address": 47417,
   "type": "line",
   "text": "Sprite frames of the rock over the hollow on Salem's hillside: one frame of 42 bytes, 3 bytes a row, so 14 rows."
  },
  {
   "address": 47459,
   "type": "line",
   "text": "Sprite frames of the rock over Salem's piece of the scripture: one frame of 30 bytes, 3 bytes a row, so 10 rows."
  },
  {
   "address": 47489,
   "type": "line",
   "text": "Sprite frames of the cauldron: one frame of 28 bytes, 2 bytes a row, so 14 rows."
  },
  {
   "address": 47517,
   "type": "line",
   "text": "Sprite frames of the staff: one frame of 36 bytes, 2 bytes a row, so 18 rows."
  },
  {
   "address": 47553,
   "type": "line",
   "text": "Sprite frames of the king on the throne, first of six pieces (objects $59-$5E): one frame of 42 bytes, 3 bytes a row, so 14 rows."
  },
  {
   "address": 47595,
   "type": "line",
   "text": "Sprite frames of the king, second piece: one frame of 42 bytes, 3 bytes a row, so 14 rows."
  },
  {
   "address": 47637,
   "type": "line",
   "text": "Sprite frames of the king, third piece: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 47700,
   "type": "line",
   "text": "Sprite frames of the king, fourth piece: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 47763,
   "type": "line",
   "text": "Sprite frames of the king, fifth piece: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 47826,
   "type": "line",
   "text": "Sprite frames of the king, sixth piece: one frame of 63 bytes, 3 bytes a row, so 21 rows."
  },
  {
   "address": 47889,
   "type": "line",
   "text": "Silences the sound effects: for each effect channel (there is one, X = 0) the voice's attack and decay are zeroed and the effect stopped (sfx_stop). Returns A = 0. Five callers."
  },
  {
   "address": 47908,
   "type": "line",
   "text": "Stops the effect on channel X (none when X is negative): its script position ($7A,x) and its voice's control register go to 0, which closes the gate."
  },
  {
   "address": 47922,
   "type": "line",
   "text": "Starts sound effect X (0-6) on a free channel: its script position ($7A) and restart position ($84) come from sfx_starts, its repeat count ($7E) is $FF and its wait ($7C) 1, so it begins on the next pass. The search covers channel 0 only, and when that is busy the new effect is not played. 17 callers."
  },
  {
   "address": 47953,
   "type": "line",
   "text": "The sound effects, once a pass from main_loop. Channel 0 (X counts down from 0) with an effect running counts its wait down; when the wait runs out it reads the effect's next command."
  },
  {
   "address": 47966,
   "type": "line",
   "text": "Runs the script byte at sfx_script + position: the high nibble picks a handler from sfx_handlers, the low nibble is its argument, in A."
  },
  {
   "address": 47992,
   "type": "line",
   "text": "Command $B: steps back to the command before and runs it again at once. After command $A it makes a loop that warbles every pass until the effect is stopped."
  },
  {
   "address": 47998,
   "type": "line",
   "text": "Command $A: loads $80 and runs on into sfx_cmd_warble."
  },
  {
   "address": 48002,
   "type": "line",
   "text": "Command 9 (and $A): one step of a warble. It subtracts the frequency's low byte from itself (sbc $86,x), so the $40 or $80 loaded first is overwritten and never used: the low byte becomes $FF and the high byte drops by one. From that high byte, h, it plays a high byte of 255 - h - 6 (less 8 more when h is odd) and a low byte of 7, so the pitch climbs as h falls, with a wobble. Then it waits one pass."
  },
  {
   "address": 48052,
   "type": "line",
   "text": "Commands 7 and 8: back to the effect's first command ($84), run at once."
  },
  {
   "address": 48059,
   "type": "line",
   "text": "Command 6: the frequency's high byte up by one, then as sfx_cmd_slide_down."
  },
  {
   "address": 48064,
   "type": "line",
   "text": "Command 5: the frequency's high byte down by one. The argument is a count: the first time it is loaded into $7E, and the command repeats every two passes until the count has run out, A + 1 steps in all; then the script moves on."
  },
  {
   "address": 48078,
   "type": "line",
   "text": "Command 4: moves on and waits A passes, writing the voice's registers."
  },
  {
   "address": 48085,
   "type": "line",
   "text": "Command 3: the sustain level ($82) drops by one; until it reaches 0 the command repeats every A passes, and then the script moves on at once."
  },
  {
   "address": 48091,
   "type": "line",
   "text": "Command 2: waveform and sustain from sfx_waves entry A: the low nibble is the sustain level ($82), the high nibble the waveform, kept with the gate bit set ($8A). The gate is closed first, so the envelope starts again. Then the next command at once."
  },
  {
   "address": 48121,
   "type": "line",
   "text": "Command 1: the frequency ($86, $88) from entry A of sfx_pitch_lo and sfx_pitch_hi, then the next command at once."
  },
  {
   "address": 48132,
   "type": "line",
   "text": "Moves to the next command and runs it."
  },
  {
   "address": 48139,
   "type": "line",
   "text": "Command 0: the effect ends: position and sustain 0, the gate closed, the registers written."
  },
  {
   "address": 48149,
   "type": "line",
   "text": "Writes the channel's voice: frequency ($D400-$D401), sustain level ($D406, release 0) and control ($D404). Then the next channel."
  },
  {
   "address": 48187,
   "type": "line",
   "text": "The twelve sound-effect commands' addresses, by the high nibble of the script byte: 0 end, 1 pitch, 2 waveform, 3 fade, 4 wait, 5 slide down, 6 slide up, 7 and 8 loop, 9 and $A warble, $B again."
  },
  {
   "address": 48188,
   "type": "line",
   "text": "The handler addresses' high bytes, read here by sfx_command, one byte after their low bytes."
  },
  {
   "address": 48211,
   "type": "line",
   "text": "Waveforms and sustain levels for command 2, the waveform in the high nibble ($1x triangle, $2x sawtooth, $8x noise) and the sustain level in the low nibble."
  },
  {
   "address": 48219,
   "type": "line",
   "text": "Low bytes of the six frequencies for command 1: $2187, $323C, $13EF, $080C, $D0C3 and $F0FF."
  },
  {
   "address": 48225,
   "type": "line",
   "text": "High bytes of the frequencies for command 1."
  },
  {
   "address": 48231,
   "type": "line",
   "text": "Where each of the seven sound effects starts in sfx_script (position 0 means no effect). 0: noise fading every 3 passes; 1: noise sliding down 12 steps; 2: noise sliding up in a loop; 3: the time trip's rising warble, eight steps and again; 4: a warble every pass until stopped (the teleport); 5: low noise fading every 4 passes; 6: a burst of noise every 16 passes, until stopped."
  },
  {
   "address": 48238,
   "type": "line",
   "text": "The effects' commands, one byte each, read at sfx_script + position; this first byte, at position 0, is never read."
  },
  {
   "address": 48276,
   "type": "line",
   "text": "The SID register offset of each effect channel: 0, voice 1 (a second entry, 7, belongs to a channel that is never used). Music has voices 2 and 3."
  },
  {
   "address": 48278,
   "type": "line",
   "text": "Stops the music: the tempo mask $A0 is zeroed, then into sid_clear. Six callers."
  },
  {
   "address": 48282,
   "type": "line",
   "text": "Zeroes every SID register and sets the volume to 15. Called when the game is paused and by music_stop."
  },
  {
   "address": 48298,
   "type": "line",
   "text": "Starts tune X / 4 (X = 0, 4, ... $1C): stops the music and clears the SID, zeroes both voices' state ($96-$9B) with a length of 1, so the first step fetches a note, and copies the tune's four bytes from tune_table to $9C-$9F. The caller then sets the tempo mask $A0, which starts it. Three callers: era_enter, and play_state for the flute."
  },
  {
   "address": 48334,
   "type": "line",
   "text": "The eight tunes, four bytes each: the low bytes of the first and second voice's data, then their high bytes."
  },
  {
   "address": 48366,
   "type": "line",
   "text": "The music, once a frame from the raster interrupt. A step plays when the tempo mask $A0, the frame count $24 (counted here) and the pause flag $AF share a bit: era records' masks 1, 3, 7 and $FF make the music play on half, three quarters, seven eighths or all but one in 256 of the frames. $A1 counts the steps from 3 down to 0. Each voice (X = 1 on SID voice 2, X = 0 on SID voice 3) counts its note's length ($96,x) down; when it is not over, every fourth step (when $A1 is 0) its sustain ($98,x) drops a level, so each note fades."
  },
  {
   "address": 48414,
   "type": "line",
   "text": "The voice's next pair from its data ($9C,x and $9E,x; index $9A,x moves on by 2 first): a note byte with bit 7 set sends the voice back to its first pair. The note sets sustain 7 ($D406 = $70, also $98,x = 7), the frequency from note_lo and note_hi, and the triangle waveform with its gate opened again ($10, then $11); the length goes to $96,x."
  },
  {
   "address": 48486,
   "type": "line",
   "text": "The next voice, SID voice 3 ($0E)."
  },
  {
   "address": 48492,
   "type": "line",
   "text": "Low bytes of the music's 60 frequencies, by note number. Note 0 is 0, a rest; notes 1-53 fall a semitone at a time from $547D; notes 54-59 are higher again, from $5983 to $861E."
  },
  {
   "address": 48552,
   "type": "line",
   "text": "High bytes of the music's frequencies, by note number."
  },
  {
   "address": 48612,
   "type": "line",
   "text": "Tune 0, for Salem (era 8): the first voice, played on SID voice 3. 60 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 960 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 48733,
   "type": "line",
   "text": "Tune 0, for Salem (era 8): the second voice, played on SID voice 2. 60 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 960 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 48854,
   "type": "line",
   "text": "Tune 1, for the gold rush (era 2): the first voice, played on SID voice 3. 62 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 630 steps in all, ended by $FF. The first pair, a rest of 6 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 48979,
   "type": "line",
   "text": "Tune 1, for the gold rush (era 2): the second voice, played on SID voice 2. 35 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 630 steps in all, ended by $FF. The first pair, a rest of 6 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49050,
   "type": "line",
   "text": "Tune 2, for Persia (era 4), and the flute lying on the ground: the first voice, played on SID voice 3. 49 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 774 steps in all, ended by $FF. The first pair, a rest of 6 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49149,
   "type": "line",
   "text": "Tune 2, for Persia (era 4), and the flute lying on the ground: the second voice, played on SID voice 2. 36 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 774 steps in all, ended by $FF. The first pair, a rest of 6 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Tune 2's second voice, continued."
  },
  {
   "address": 49222,
   "type": "line",
   "text": "Tune 3, for the mansion, the black hole and the throne room (eras 1, 3 and 9): the first voice, played on SID voice 3. 104 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 864 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49431,
   "type": "line",
   "text": "Tune 3, for the mansion, the black hole and the throne room (eras 1, 3 and 9): the second voice, played on SID voice 2. 83 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 864 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49598,
   "type": "line",
   "text": "Tune 4, for the spaceship (era 7): the first voice, played on SID voice 3. 78 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 1620 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49755,
   "type": "line",
   "text": "Tune 4, for the spaceship (era 7): the second voice, played on SID voice 2. 86 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 1620 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 49928,
   "type": "line",
   "text": "Tune 5, for the stone age (era 5): the first voice, played on SID voice 3. 90 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 864 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 50109,
   "type": "line",
   "text": "Tune 5, for the stone age (era 5): the second voice, played on SID voice 2. 50 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 864 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 50210,
   "type": "line",
   "text": "Tune 6, for the flute while the gnome plays it: the first voice, played on SID voice 3. 48 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 288 steps in all, ended by $FF. The first pair, note 15 for 6 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 50307,
   "type": "line",
   "text": "Tune 6, for the flute while the gnome plays it: the second voice, played on SID voice 2. 24 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 288 steps in all, ended by $FF. The first pair, note 27 for 12 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 50356,
   "type": "line",
   "text": "Tune 7, for Greece (era 6): the first voice, played on SID voice 3. 73 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 864 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 50503,
   "type": "line",
   "text": "Tune 7, for Greece (era 6): the second voice, played on SID voice 2. 48 pairs of note (an index into note_lo and note_hi, 0 a rest) and length in music steps, 864 steps in all, ended by $FF. The first pair, a rest of 48 steps, is skipped when the tune starts and played each time it repeats."
  },
  {
   "address": 50600,
   "type": "line",
   "text": "Bytes past the last tune that nothing reads, left in the file when it was saved. The first are text in ASCII with CR-LF line ends, from a source file's comments: \"ments if he will move outside entire screen\", a line holding only \";\", and \"whol\". The rest decode as Z80 instructions that read and rewrite the CP/M warm-boot and BDOS vectors at addresses 1 and 6."
  }
 ]
}