{
 "schema": 1,
 "platform": "spectrum",
 "game": "where-time-stood-still",
 "part": "bank-03",
 "build": "Ocean's original 128K release (TOSEC: Where Time Stood Still (1988)(Ocean)(128K)[aka Land That Time Forgot, The][aka Tibet].tzx), a BASIC loader and SpeedLock 4 turbo blocks: the loading screen, 22,183 bytes of program, five 16 KB banks and 9,472 bytes of bank 7",
 "source": "control file",
 "regions": {
  "exclude": [
   [
    0,
    16383,
    "ROM"
   ],
   [
    0,
    49151,
    "The game"
   ]
  ],
  "extra": [],
  "elsewhere": [
   [
    0,
    49151,
    "The game"
   ]
  ]
 },
 "blocks": [
  {
   "start": 49152,
   "end": 49407,
   "type": "Byte"
  },
  {
   "start": 49408,
   "end": 49599,
   "type": "Byte"
  },
  {
   "start": 49600,
   "end": 49671,
   "type": "Byte"
  },
  {
   "start": 49672,
   "end": 49687,
   "type": "Byte"
  },
  {
   "start": 49688,
   "end": 49690,
   "type": "Word"
  },
  {
   "start": 49691,
   "end": 49736,
   "type": "Code"
  },
  {
   "start": 49737,
   "end": 49793,
   "type": "Code"
  },
  {
   "start": 49794,
   "end": 50017,
   "type": "Code"
  },
  {
   "start": 50018,
   "end": 50061,
   "type": "Code"
  },
  {
   "start": 50062,
   "end": 50118,
   "type": "Code"
  },
  {
   "start": 50119,
   "end": 50205,
   "type": "Code"
  },
  {
   "start": 50206,
   "end": 50273,
   "type": "Code"
  },
  {
   "start": 50274,
   "end": 50380,
   "type": "Code"
  },
  {
   "start": 50381,
   "end": 50422,
   "type": "Code"
  },
  {
   "start": 50423,
   "end": 50499,
   "type": "Code"
  },
  {
   "start": 50500,
   "end": 50519,
   "type": "Byte"
  },
  {
   "start": 50520,
   "end": 50569,
   "type": "Byte"
  },
  {
   "start": 50570,
   "end": 50743,
   "type": "Code"
  },
  {
   "start": 50744,
   "end": 50907,
   "type": "Code"
  },
  {
   "start": 50908,
   "end": 50996,
   "type": "Code"
  },
  {
   "start": 50997,
   "end": 51033,
   "type": "Code"
  },
  {
   "start": 51034,
   "end": 51112,
   "type": "Code"
  },
  {
   "start": 51113,
   "end": 51125,
   "type": "Code"
  },
  {
   "start": 51126,
   "end": 51288,
   "type": "Code"
  },
  {
   "start": 51289,
   "end": 51343,
   "type": "Code"
  },
  {
   "start": 51344,
   "end": 51344,
   "type": "Byte"
  },
  {
   "start": 51345,
   "end": 51352,
   "type": "Byte"
  },
  {
   "start": 51353,
   "end": 51378,
   "type": "Byte"
  },
  {
   "start": 51379,
   "end": 51396,
   "type": "Byte"
  },
  {
   "start": 51397,
   "end": 51411,
   "type": "Code"
  },
  {
   "start": 51412,
   "end": 51437,
   "type": "Code"
  },
  {
   "start": 51438,
   "end": 51474,
   "type": "Code"
  },
  {
   "start": 51475,
   "end": 51586,
   "type": "Code"
  },
  {
   "start": 51587,
   "end": 51687,
   "type": "Code"
  },
  {
   "start": 51688,
   "end": 51784,
   "type": "Code"
  },
  {
   "start": 51785,
   "end": 51822,
   "type": "Code"
  },
  {
   "start": 51823,
   "end": 51858,
   "type": "Word"
  },
  {
   "start": 51859,
   "end": 51878,
   "type": "Code"
  },
  {
   "start": 51879,
   "end": 51890,
   "type": "Code"
  },
  {
   "start": 51891,
   "end": 51914,
   "type": "Code"
  },
  {
   "start": 51915,
   "end": 51926,
   "type": "Code"
  },
  {
   "start": 51927,
   "end": 51946,
   "type": "Code"
  },
  {
   "start": 51947,
   "end": 51955,
   "type": "Code"
  },
  {
   "start": 51956,
   "end": 52164,
   "type": "Code"
  },
  {
   "start": 52165,
   "end": 52249,
   "type": "Code"
  },
  {
   "start": 52250,
   "end": 52296,
   "type": "Code"
  },
  {
   "start": 52297,
   "end": 52343,
   "type": "Code"
  },
  {
   "start": 52344,
   "end": 52406,
   "type": "Code"
  },
  {
   "start": 52407,
   "end": 52431,
   "type": "Code"
  },
  {
   "start": 52432,
   "end": 52494,
   "type": "Code"
  },
  {
   "start": 52495,
   "end": 52530,
   "type": "Word"
  },
  {
   "start": 52531,
   "end": 52554,
   "type": "Code"
  },
  {
   "start": 52555,
   "end": 52598,
   "type": "Code"
  },
  {
   "start": 52599,
   "end": 52610,
   "type": "Code"
  },
  {
   "start": 52611,
   "end": 52666,
   "type": "Code"
  },
  {
   "start": 52667,
   "end": 52716,
   "type": "Code"
  },
  {
   "start": 52717,
   "end": 52717,
   "type": "Byte"
  },
  {
   "start": 52718,
   "end": 52754,
   "type": "Code"
  },
  {
   "start": 52755,
   "end": 52822,
   "type": "Code"
  },
  {
   "start": 52823,
   "end": 52854,
   "type": "Code"
  },
  {
   "start": 52855,
   "end": 52890,
   "type": "Code"
  },
  {
   "start": 52891,
   "end": 52928,
   "type": "Code"
  },
  {
   "start": 52929,
   "end": 52955,
   "type": "Code"
  },
  {
   "start": 52956,
   "end": 52968,
   "type": "Code"
  },
  {
   "start": 52969,
   "end": 53057,
   "type": "Code"
  },
  {
   "start": 53058,
   "end": 53218,
   "type": "Code"
  },
  {
   "start": 53219,
   "end": 53284,
   "type": "Code"
  },
  {
   "start": 53285,
   "end": 53383,
   "type": "Code"
  },
  {
   "start": 53384,
   "end": 53423,
   "type": "Byte"
  },
  {
   "start": 53424,
   "end": 53473,
   "type": "Byte"
  },
  {
   "start": 53474,
   "end": 53509,
   "type": "Byte"
  },
  {
   "start": 53510,
   "end": 53535,
   "type": "Word"
  },
  {
   "start": 53536,
   "end": 53723,
   "type": "Byte"
  },
  {
   "start": 53724,
   "end": 53783,
   "type": "Byte"
  },
  {
   "start": 53784,
   "end": 54719,
   "type": "Byte"
  },
  {
   "start": 54720,
   "end": 54722,
   "type": "Byte"
  },
  {
   "start": 54723,
   "end": 54754,
   "type": "Byte"
  },
  {
   "start": 54755,
   "end": 54786,
   "type": "Byte"
  },
  {
   "start": 54787,
   "end": 54928,
   "type": "Code"
  },
  {
   "start": 54929,
   "end": 54937,
   "type": "Code"
  },
  {
   "start": 54938,
   "end": 54969,
   "type": "Code"
  },
  {
   "start": 54970,
   "end": 55004,
   "type": "Code"
  },
  {
   "start": 55005,
   "end": 55049,
   "type": "Code"
  },
  {
   "start": 55050,
   "end": 55188,
   "type": "Code"
  },
  {
   "start": 55189,
   "end": 55224,
   "type": "Code"
  },
  {
   "start": 55225,
   "end": 55275,
   "type": "Code"
  },
  {
   "start": 55276,
   "end": 55371,
   "type": "Code"
  },
  {
   "start": 55372,
   "end": 55375,
   "type": "Byte"
  },
  {
   "start": 55376,
   "end": 55472,
   "type": "Code"
  },
  {
   "start": 55473,
   "end": 55486,
   "type": "Word"
  },
  {
   "start": 55487,
   "end": 55498,
   "type": "Code"
  },
  {
   "start": 55499,
   "end": 55503,
   "type": "Code"
  },
  {
   "start": 55504,
   "end": 55513,
   "type": "Code"
  },
  {
   "start": 55514,
   "end": 55538,
   "type": "Code"
  },
  {
   "start": 55539,
   "end": 55561,
   "type": "Code"
  },
  {
   "start": 55562,
   "end": 55569,
   "type": "Code"
  },
  {
   "start": 55570,
   "end": 55578,
   "type": "Code"
  },
  {
   "start": 55579,
   "end": 55715,
   "type": "Code"
  },
  {
   "start": 55716,
   "end": 55716,
   "type": "Byte"
  },
  {
   "start": 55717,
   "end": 55792,
   "type": "Code"
  },
  {
   "start": 55793,
   "end": 55820,
   "type": "Code"
  },
  {
   "start": 55821,
   "end": 55945,
   "type": "Byte"
  },
  {
   "start": 55946,
   "end": 56062,
   "type": "Byte"
  },
  {
   "start": 56063,
   "end": 56074,
   "type": "Byte"
  },
  {
   "start": 56075,
   "end": 56130,
   "type": "Code"
  },
  {
   "start": 56131,
   "end": 56231,
   "type": "Code"
  },
  {
   "start": 56232,
   "end": 56284,
   "type": "Code"
  },
  {
   "start": 56285,
   "end": 56330,
   "type": "Code"
  },
  {
   "start": 56331,
   "end": 56479,
   "type": "Code"
  },
  {
   "start": 56480,
   "end": 56504,
   "type": "Code"
  },
  {
   "start": 56505,
   "end": 56603,
   "type": "Code"
  },
  {
   "start": 56604,
   "end": 56919,
   "type": "Code"
  },
  {
   "start": 56920,
   "end": 57012,
   "type": "Code"
  },
  {
   "start": 57013,
   "end": 57044,
   "type": "Code"
  },
  {
   "start": 57045,
   "end": 57123,
   "type": "Code"
  },
  {
   "start": 57124,
   "end": 57157,
   "type": "Code"
  },
  {
   "start": 57158,
   "end": 57177,
   "type": "Word"
  },
  {
   "start": 57178,
   "end": 57183,
   "type": "Code"
  },
  {
   "start": 57184,
   "end": 57223,
   "type": "Code"
  },
  {
   "start": 57224,
   "end": 57226,
   "type": "Code"
  },
  {
   "start": 57227,
   "end": 57378,
   "type": "Code"
  },
  {
   "start": 57379,
   "end": 57421,
   "type": "Code"
  },
  {
   "start": 57422,
   "end": 57465,
   "type": "Code"
  },
  {
   "start": 57466,
   "end": 57473,
   "type": "Code"
  },
  {
   "start": 57474,
   "end": 57605,
   "type": "Code"
  },
  {
   "start": 57606,
   "end": 57620,
   "type": "Code"
  },
  {
   "start": 57621,
   "end": 57675,
   "type": "Code"
  },
  {
   "start": 57676,
   "end": 57734,
   "type": "Code"
  },
  {
   "start": 57735,
   "end": 57933,
   "type": "Code"
  },
  {
   "start": 57934,
   "end": 58035,
   "type": "Code"
  },
  {
   "start": 58036,
   "end": 58065,
   "type": "Code"
  },
  {
   "start": 58066,
   "end": 58133,
   "type": "Code"
  },
  {
   "start": 58134,
   "end": 58264,
   "type": "Code"
  },
  {
   "start": 58265,
   "end": 58440,
   "type": "Code"
  },
  {
   "start": 58441,
   "end": 58455,
   "type": "Code"
  },
  {
   "start": 58456,
   "end": 58496,
   "type": "Code"
  },
  {
   "start": 58497,
   "end": 58511,
   "type": "Code"
  },
  {
   "start": 58512,
   "end": 58513,
   "type": "Word"
  },
  {
   "start": 58514,
   "end": 58527,
   "type": "Code"
  },
  {
   "start": 58528,
   "end": 58557,
   "type": "Code"
  },
  {
   "start": 58558,
   "end": 58561,
   "type": "Byte"
  },
  {
   "start": 58562,
   "end": 58676,
   "type": "Code"
  },
  {
   "start": 58677,
   "end": 58741,
   "type": "Code"
  },
  {
   "start": 58742,
   "end": 58791,
   "type": "Code"
  },
  {
   "start": 58792,
   "end": 58888,
   "type": "Code"
  },
  {
   "start": 58889,
   "end": 59020,
   "type": "Code"
  },
  {
   "start": 59021,
   "end": 59058,
   "type": "Code"
  },
  {
   "start": 59059,
   "end": 59214,
   "type": "Code"
  },
  {
   "start": 59215,
   "end": 59229,
   "type": "Code"
  },
  {
   "start": 59230,
   "end": 59334,
   "type": "Code"
  },
  {
   "start": 59335,
   "end": 59504,
   "type": "Code"
  },
  {
   "start": 59505,
   "end": 59606,
   "type": "Code"
  },
  {
   "start": 59607,
   "end": 59663,
   "type": "Code"
  },
  {
   "start": 59664,
   "end": 59764,
   "type": "Code"
  },
  {
   "start": 59765,
   "end": 59914,
   "type": "Code"
  },
  {
   "start": 59915,
   "end": 59964,
   "type": "Code"
  },
  {
   "start": 59965,
   "end": 59991,
   "type": "Code"
  },
  {
   "start": 59992,
   "end": 60101,
   "type": "ZX"
  },
  {
   "start": 60102,
   "end": 60103,
   "type": "Byte"
  },
  {
   "start": 60104,
   "end": 60163,
   "type": "Byte"
  },
  {
   "start": 60164,
   "end": 60164,
   "type": "Byte"
  },
  {
   "start": 60165,
   "end": 60532,
   "type": "Byte"
  },
  {
   "start": 60533,
   "end": 60616,
   "type": "Byte"
  },
  {
   "start": 60617,
   "end": 60631,
   "type": "Byte"
  },
  {
   "start": 60632,
   "end": 60750,
   "type": "Byte"
  },
  {
   "start": 60751,
   "end": 60771,
   "type": "Byte"
  },
  {
   "start": 60772,
   "end": 60775,
   "type": "Byte"
  },
  {
   "start": 60776,
   "end": 60847,
   "type": "Word"
  },
  {
   "start": 60848,
   "end": 61420,
   "type": "Byte"
  },
  {
   "start": 61421,
   "end": 61434,
   "type": "Byte"
  },
  {
   "start": 61435,
   "end": 61439,
   "type": "Byte"
  },
  {
   "start": 61440,
   "end": 61450,
   "type": "Byte"
  },
  {
   "start": 61451,
   "end": 61459,
   "type": "Byte"
  },
  {
   "start": 61460,
   "end": 61483,
   "type": "Byte"
  },
  {
   "start": 61484,
   "end": 61602,
   "type": "Code"
  },
  {
   "start": 61603,
   "end": 61650,
   "type": "Code"
  },
  {
   "start": 61651,
   "end": 61717,
   "type": "Code"
  },
  {
   "start": 61718,
   "end": 61769,
   "type": "Code"
  },
  {
   "start": 61770,
   "end": 61909,
   "type": "Code"
  },
  {
   "start": 61910,
   "end": 61953,
   "type": "Code"
  },
  {
   "start": 61954,
   "end": 62001,
   "type": "Code"
  },
  {
   "start": 62002,
   "end": 62061,
   "type": "Code"
  },
  {
   "start": 62062,
   "end": 62119,
   "type": "Code"
  },
  {
   "start": 62120,
   "end": 62141,
   "type": "Code"
  },
  {
   "start": 62142,
   "end": 62196,
   "type": "Code"
  },
  {
   "start": 62197,
   "end": 62236,
   "type": "Code"
  },
  {
   "start": 62237,
   "end": 62269,
   "type": "Code"
  },
  {
   "start": 62270,
   "end": 62310,
   "type": "Code"
  },
  {
   "start": 62311,
   "end": 62354,
   "type": "Code"
  },
  {
   "start": 62355,
   "end": 62366,
   "type": "Code"
  },
  {
   "start": 62367,
   "end": 62387,
   "type": "Code"
  },
  {
   "start": 62388,
   "end": 62533,
   "type": "Code"
  },
  {
   "start": 62534,
   "end": 62655,
   "type": "Code"
  },
  {
   "start": 62656,
   "end": 62696,
   "type": "Code"
  },
  {
   "start": 62697,
   "end": 62734,
   "type": "Code"
  },
  {
   "start": 62735,
   "end": 62748,
   "type": "Code"
  },
  {
   "start": 62749,
   "end": 62982,
   "type": "Code"
  },
  {
   "start": 62983,
   "end": 62997,
   "type": "Code"
  },
  {
   "start": 62998,
   "end": 63014,
   "type": "Byte"
  },
  {
   "start": 63015,
   "end": 63026,
   "type": "Byte"
  },
  {
   "start": 63027,
   "end": 63112,
   "type": "Code"
  },
  {
   "start": 63113,
   "end": 63189,
   "type": "Code"
  },
  {
   "start": 63190,
   "end": 63273,
   "type": "Code"
  },
  {
   "start": 63274,
   "end": 63401,
   "type": "Code"
  },
  {
   "start": 63402,
   "end": 63423,
   "type": "Code"
  },
  {
   "start": 63424,
   "end": 63451,
   "type": "Code"
  },
  {
   "start": 63452,
   "end": 63488,
   "type": "Code"
  },
  {
   "start": 63489,
   "end": 63511,
   "type": "Code"
  },
  {
   "start": 63512,
   "end": 63549,
   "type": "Code"
  },
  {
   "start": 63550,
   "end": 63562,
   "type": "Code"
  },
  {
   "start": 63563,
   "end": 63589,
   "type": "Code"
  },
  {
   "start": 63590,
   "end": 63623,
   "type": "Word"
  },
  {
   "start": 63624,
   "end": 63652,
   "type": "Code"
  },
  {
   "start": 63653,
   "end": 63658,
   "type": "Code"
  },
  {
   "start": 63659,
   "end": 63759,
   "type": "Code"
  },
  {
   "start": 63760,
   "end": 63854,
   "type": "Code"
  },
  {
   "start": 63855,
   "end": 63869,
   "type": "Code"
  },
  {
   "start": 63870,
   "end": 63884,
   "type": "Code"
  },
  {
   "start": 63885,
   "end": 64001,
   "type": "Code"
  },
  {
   "start": 64002,
   "end": 64029,
   "type": "Code"
  },
  {
   "start": 64030,
   "end": 64057,
   "type": "Code"
  },
  {
   "start": 64058,
   "end": 64097,
   "type": "Code"
  },
  {
   "start": 64098,
   "end": 64114,
   "type": "Code"
  },
  {
   "start": 64115,
   "end": 64155,
   "type": "Code"
  },
  {
   "start": 64156,
   "end": 64160,
   "type": "Byte"
  },
  {
   "start": 64161,
   "end": 64191,
   "type": "Code"
  },
  {
   "start": 64192,
   "end": 64234,
   "type": "Code"
  },
  {
   "start": 64235,
   "end": 64254,
   "type": "Code"
  },
  {
   "start": 64255,
   "end": 64283,
   "type": "Code"
  },
  {
   "start": 64284,
   "end": 64285,
   "type": "Byte"
  },
  {
   "start": 64286,
   "end": 64330,
   "type": "Byte"
  },
  {
   "start": 64331,
   "end": 64348,
   "type": "Word"
  },
  {
   "start": 64349,
   "end": 64351,
   "type": "Byte"
  },
  {
   "start": 64352,
   "end": 64379,
   "type": "Code"
  },
  {
   "start": 64380,
   "end": 64410,
   "type": "Code"
  },
  {
   "start": 64411,
   "end": 64492,
   "type": "Code"
  },
  {
   "start": 64493,
   "end": 64700,
   "type": "Code"
  },
  {
   "start": 64701,
   "end": 64751,
   "type": "Code"
  },
  {
   "start": 64752,
   "end": 64916,
   "type": "Code"
  },
  {
   "start": 64917,
   "end": 64932,
   "type": "Code"
  },
  {
   "start": 64933,
   "end": 64994,
   "type": "Code"
  },
  {
   "start": 64995,
   "end": 65024,
   "type": "Code"
  },
  {
   "start": 65025,
   "end": 65046,
   "type": "Code"
  },
  {
   "start": 65047,
   "end": 65114,
   "type": "Code"
  },
  {
   "start": 65115,
   "end": 65223,
   "type": "Code"
  },
  {
   "start": 65224,
   "end": 65359,
   "type": "Code"
  },
  {
   "start": 65360,
   "end": 65406,
   "type": "Code"
  },
  {
   "start": 65407,
   "end": 65429,
   "type": "Code"
  },
  {
   "start": 65430,
   "end": 65472,
   "type": "Code"
  },
  {
   "start": 65473,
   "end": 65485,
   "type": "Code"
  },
  {
   "start": 65486,
   "end": 65501,
   "type": "Word"
  },
  {
   "start": 65502,
   "end": 65535,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 49152,
   "name": "area_boxes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49408,
   "name": "shots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49600,
   "name": "muzzles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49672,
   "name": "hits_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49688,
   "name": "shot_ptr",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49691,
   "name": "move_shots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49737,
   "name": "shot_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49794,
   "name": "shot_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50018,
   "name": "project",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50062,
   "name": "screen_address",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50119,
   "name": "next_shot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50206,
   "name": "draw_shot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50274,
   "name": "shot_line",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50381,
   "name": "shot_advance",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50423,
   "name": "shot_offsets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50500,
   "name": "shot_nudges",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50520,
   "name": "shot_steps",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50570,
   "name": "draw_any_shot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50744,
   "name": "shot_path",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50908,
   "name": "enemy_shot_hit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50997,
   "name": "can_fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51034,
   "name": "fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51113,
   "name": "shot_collapse",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51126,
   "name": "shot_hits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51289,
   "name": "muzzle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51344,
   "name": "menu_mode",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51345,
   "name": "menu_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51353,
   "name": "menu_windows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51379,
   "name": "pointer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51397,
   "name": "click",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51412,
   "name": "menus_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51438,
   "name": "redraw_dragged",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51475,
   "name": "update_icons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51587,
   "name": "update_inventory",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51688,
   "name": "fill_slots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51785,
   "name": "menu_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51823,
   "name": "menu_moves",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51859,
   "name": "pointer_up_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51879,
   "name": "pointer_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51891,
   "name": "pointer_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51915,
   "name": "pointer_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51927,
   "name": "pointer_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51947,
   "name": "copy_window",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51956,
   "name": "menu_fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52165,
   "name": "redraw_area",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52250,
   "name": "window_down_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52297,
   "name": "window_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52344,
   "name": "drop_on_icon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52407,
   "name": "four_clear",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52432,
   "name": "drop_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52495,
   "name": "icon_actions",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52531,
   "name": "pick_character",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52555,
   "name": "ask_new_game",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52599,
   "name": "toggle_music",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52611,
   "name": "use_item",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52667,
   "name": "quit_menu",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52717,
   "name": "spare_ret",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52718,
   "name": "pause",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52755,
   "name": "take_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52823,
   "name": "open_menu_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52855,
   "name": "open_menu_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52891,
   "name": "draw_menu",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52929,
   "name": "portraits_state",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52956,
   "name": "menu_colour",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52969,
   "name": "draw_icon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53058,
   "name": "draw_object_icon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53219,
   "name": "draw_char_icon",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53285,
   "name": "icon_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53384,
   "name": "menu_1_icons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53424,
   "name": "menu_2_icons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53474,
   "name": "menu_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53510,
   "name": "icon_pictures",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53536,
   "name": "icon_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53724,
   "name": "portraits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53784,
   "name": "menu_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54720,
   "name": "text_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54723,
   "name": "needs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54755,
   "name": "need_limits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54787,
   "name": "needs_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54929,
   "name": "need_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54938,
   "name": "need_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54970,
   "name": "runner_noise",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55005,
   "name": "thirst_starve",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55050,
   "name": "needs_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55189,
   "name": "leave_party",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55225,
   "name": "next_message",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55276,
   "name": "show_message",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55372,
   "name": "mirror_letters",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55376,
   "name": "print_letter",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55473,
   "name": "message_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55487,
   "name": "code_he_said",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55499,
   "name": "code_name",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55504,
   "name": "code_exclamation",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55514,
   "name": "code_leader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55539,
   "name": "new_line",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55562,
   "name": "new_line_back",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55570,
   "name": "or_letter_row",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55579,
   "name": "message_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55716,
   "name": "frame_count",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55717,
   "name": "draw_menu_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55793,
   "name": "draw_menu_char",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55821,
   "name": "message_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55946,
   "name": "small_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56063,
   "name": "route_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56075,
   "name": "area_edges",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56131,
   "name": "area_east",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56232,
   "name": "carry_actors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56285,
   "name": "carry_actor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56331,
   "name": "place_creatures",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56480,
   "name": "record_ground",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56505,
   "name": "drop_far_actors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56604,
   "name": "bring_in",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56920,
   "name": "put_back",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57013,
   "name": "leader_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57045,
   "name": "actors_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57124,
   "name": "actor_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57158,
   "name": "state_steps",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57178,
   "name": "state_die",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57184,
   "name": "state_route",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57224,
   "name": "state_stand",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57227,
   "name": "state_follow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57379,
   "name": "walk_to_leader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57422,
   "name": "step_round",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57466,
   "name": "state_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57474,
   "name": "state_fetch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57606,
   "name": "next_point",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57621,
   "name": "walk_towards",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57676,
   "name": "axis_walk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57735,
   "name": "move_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57934,
   "name": "nearest_route",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58036,
   "name": "near_leader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58066,
   "name": "edge_east",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58134,
   "name": "record_edges",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58265,
   "name": "route_point",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58441,
   "name": "turn_round",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58456,
   "name": "step_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58497,
   "name": "random",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58512,
   "name": "random_ptr",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58514,
   "name": "record_of",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58528,
   "name": "add_percent",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58558,
   "name": "left_behind",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58562,
   "name": "state_pull",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58677,
   "name": "state_throw",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58742,
   "name": "state_haul",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58792,
   "name": "back_to_follow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58889,
   "name": "clive_falls",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59021,
   "name": "rope_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59059,
   "name": "draw_rope",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59215,
   "name": "rope_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59230,
   "name": "clip_falling",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59335,
   "name": "shot_visible",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59505,
   "name": "view_limits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59607,
   "name": "turn_marker",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59664,
   "name": "game_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59765,
   "name": "end_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59915,
   "name": "pity_line",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59965,
   "name": "frame_size",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59992,
   "name": "end_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60102,
   "name": "record_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60104,
   "name": "actor_classes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60164,
   "name": "unused_eb04",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60165,
   "name": "records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60533,
   "name": "restart_places",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60617,
   "name": "restart_places_28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60632,
   "name": "objects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60751,
   "name": "objects_extra",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60772,
   "name": "ham_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60776,
   "name": "routes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60848,
   "name": "waypoints",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61421,
   "name": "hostility",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61435,
   "name": "gather_offsets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61440,
   "name": "gather_offsets_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61451,
   "name": "ai_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61460,
   "name": "carry_offsets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61484,
   "name": "alarm_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61603,
   "name": "route_ended",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61651,
   "name": "state_gather",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61718,
   "name": "actor_ai",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61770,
   "name": "grabber_ai",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61910,
   "name": "type_10_ai",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61954,
   "name": "type_14_ai",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62002,
   "name": "seize",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62062,
   "name": "carry_flight",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62120,
   "name": "drop_victim",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62142,
   "name": "move_with",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62197,
   "name": "sink",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62237,
   "name": "hold_victim",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62270,
   "name": "look_round",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62311,
   "name": "look_one_way",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62355,
   "name": "own_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62367,
   "name": "scan_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62388,
   "name": "scan_actors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62534,
   "name": "scan_boxes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62656,
   "name": "will_target",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62697,
   "name": "face_target",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62735,
   "name": "set_action",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62749,
   "name": "new_leader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62983,
   "name": "leader_done",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62998,
   "name": "object_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63015,
   "name": "object_stock",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63027,
   "name": "objects_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63113,
   "name": "next_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63190,
   "name": "draw_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63274,
   "name": "carry_objects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63402,
   "name": "fetch_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63424,
   "name": "drop_object_ground",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63452,
   "name": "put_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63489,
   "name": "place_object",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63512,
   "name": "object_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63550,
   "name": "object_record",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63563,
   "name": "use_item",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63590,
   "name": "use_handlers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63624,
   "name": "use_dynamite",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63653,
   "name": "use_bag",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63659,
   "name": "use_knife",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63760,
   "name": "consume",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63855,
   "name": "icon_slot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63870,
   "name": "use_first_aid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63885,
   "name": "use_bottle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64002,
   "name": "bottle_filled",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64030,
   "name": "use_ham",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64058,
   "name": "use_tin",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64098,
   "name": "use_ammunition",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64115,
   "name": "use_watch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64156,
   "name": "rescue_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64161,
   "name": "use_rope",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64192,
   "name": "drop_all",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64235,
   "name": "coarse_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64255,
   "name": "cycle_graphic",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64284,
   "name": "zone_vars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64286,
   "name": "zones",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64331,
   "name": "zone_handlers",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64349,
   "name": "zone_state",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64352,
   "name": "find_actor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64380,
   "name": "within_reach",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64411,
   "name": "zones_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64493,
   "name": "dynamite",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64701,
   "name": "river",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64752,
   "name": "tribe_welcome",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64917,
   "name": "tribe_says",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64933,
   "name": "zone_2d_outer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64995,
   "name": "zone_2d_inner",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65025,
   "name": "zone_2d_fed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65047,
   "name": "zone_2d_grab",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65115,
   "name": "capture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65224,
   "name": "altar",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65360,
   "name": "sacrifice",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65407,
   "name": "ceremony_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65430,
   "name": "dynamite_zone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65473,
   "name": "set_route",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65486,
   "name": "held_places",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65502,
   "name": "capture_places",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 49152,
   "type": "line",
   "text": "The area's boxes, four bytes each (first and last across, first and last down, in units of four; up to 64), copied here from bank 6 when an area is loaded ($87CF; $962D counts them): the ground that the actors walk round ($9546) and that stops a shot ($F452). Zero in the snapshot, taken before the first area was loaded."
  },
  {
   "address": 49408,
   "type": "line",
   "text": "A shot for each of the eight actors at $8300, 24 bytes each, $FF at +0 when there is none. +0 the direction (bits 0-1, 4 down) with bit 7 set while it flies and bit 6 for an enemy's; +1 bit 7 set once it is drawn this pass, and for an enemy's shot a count of its passes, held at 4 in flight, 5 when it hits and on to $0F after ($C58A); +2/+4/+6 where its line starts (across, down, height) and +8/+$0A that point on the screen; +$0C-+$15 the same for where it ends. The zeros and the $FF and $C0 bytes in the snapshot are left over."
  },
  {
   "address": 49600,
   "type": "line",
   "text": "Where a shot starts, from the shooter's position: three bytes (across, down, height) for each of four directions, for each shooter: Jarret, Gloria, Dirk, Clive, an enemy (4) and the one at $E6B3 (5). A byte is a distance with bit 7 for minus ($C859)."
  },
  {
   "address": 49672,
   "type": "line",
   "text": "Hits still needed to kill each enemy type $18 to $27: 4 for $18-$1B, 2 for the rest, put back each time one is killed ($C821)."
  },
  {
   "address": 49688,
   "type": "line",
   "text": "The shot being handled, and ($C21A) its direction."
  },
  {
   "address": 49691,
   "type": "line",
   "text": "Once a pass: each shot that is flying (+0 bit 7) is moved on ($C249), with bit 7 of its shooter's type byte set meanwhile so that the shot cannot hit the one who fired it; bit 7 of every shot's +1 (drawn) is cleared."
  },
  {
   "address": 49737,
   "type": "line",
   "text": "One step of a shot. An enemy's (bit 6) has its end put back on its start ($C7A9). Otherwise what lies in its path is found ($C638) and its end placed there or 128 units on ($C282); a shot that goes off the view is removed ($E7C7), the rest have both ends projected on to the screen ($C362), and one going down ends when it reaches the ground ($E75E)."
  },
  {
   "address": 49794,
   "type": "line",
   "text": "Places the shot's end: with nothing in the way ($F00E = $FF) 128 units on from its start, with sound effect 3 for the leader's party; at a box of the area ($F011 = $FF) at the box's edge; at a wall of the ground ($F011 = $FE) where the cell begins, sound effect $17; at an actor ($C7B6 hits it) at the actor's position, sound effect 3."
  },
  {
   "address": 50018,
   "type": "line",
   "text": "The isometric projection: from the across, down and height words at HL, the screen across is twice (down - across + 512) and the screen down $607 - across - down - height; both are stored in the two words after them and HL is left past them."
  },
  {
   "address": 50062,
   "type": "line",
   "text": "The screen address of a point: from its screen across (HL) and down, less the view's column ($9633) and row ($9637) and the pixel offset ($9632), through the row table at $8D5D."
  },
  {
   "address": 50119,
   "type": "line",
   "text": "For the drawing order ($A802): goes through all eight shots, and each not yet drawn this pass whose place across (BC) or down (BC', by its direction) is no less than the bound becomes $C218 and raises the bound to its own; NZ if any did."
  },
  {
   "address": 50206,
   "type": "line",
   "text": "Draws the leader's party's shot at $C218 as an isometric line from its start, as many steps as it has to go (up to 12 at a time, $C462, then $C4CD moves the start on), with the line drawers in the RAM part ($8785 to $87BB, by direction). When the view scrolls half a character ($9631) the line is moved with it. The shot is removed when it is drawn out."
  },
  {
   "address": 50274,
   "type": "line",
   "text": "The length of the shot's next stretch of line: the difference between its start and its end on the screen, at most 12 ($8D1A says whether more remain), and the pixel to start from ($C38E); then jumps to the line drawer for its direction."
  },
  {
   "address": 50381,
   "type": "line",
   "text": "Moves the shot's start on one stretch: the five words from +2 (across, down, height, screen across and down) each get the step for its direction from $C558."
  },
  {
   "address": 50423,
   "type": "line",
   "text": "The coarse position of the shot ($A5BB) moved by the direction's four bytes from $C544, and the pattern of the line's first byte (DE, in $8521)."
  },
  {
   "address": 50500,
   "type": "line",
   "text": "Four bytes for each of five directions added to $A03A-$A03D by $C4F7."
  },
  {
   "address": 50520,
   "type": "line",
   "text": "For each direction (0 to 4), five words added to a shot's start each stretch: across, down, height, screen across, screen down. 0 is 12 across, 1 is 12 down, 2 and 3 back, 4 is 12 down in height."
  },
  {
   "address": 50570,
   "type": "line",
   "text": "Draws the shot at $C218: the party's go to $C41E. An enemy's is a line 12 units long: each pass until it hits something ($C6DC) its end is put 128 units ahead and it is drawn from $C5CD, which then moves its start on 12 units ($C4CD) and counts its passes (+1) up to 4. Once it has hit (+1 set to 5) it drops to the height of the ground under it ($90D5) and stays there, counting, until +1 passes $0F and it is removed."
  },
  {
   "address": 50744,
   "type": "line",
   "text": "What lies in the shot's path: the nearest actor across or down the line ($F3A3, $F3AD), then the boxes ($F446, $F452), then sixteen cells of ground along it (copied from bank 1 by $8CD0); a cell higher than the shot nearer than the rest makes $F011 $FE and $F00E its distance."
  },
  {
   "address": 50908,
   "type": "line",
   "text": "Whether an enemy's shot hits: with bit 7 of the shooter's type set meanwhile, its path is checked ($C638); something within 21 units is hit ($C282), with sound effect 8 on channel B, the shot's +1 becomes 5 and its start is put 12 units back from where it ended."
  },
  {
   "address": 50997,
   "type": "line",
   "text": "Whether the actor of type A has a free shot slot (Z): one of the party also needs ammunition (+4 of its need bytes at $D5C3), NZ if none."
  },
  {
   "address": 51034,
   "type": "line",
   "text": "Event 1, the end of a firing animation: an actor of type under $10 that can fire ($C735) gets a shot from its muzzle ($C859) in the direction it faces; one of the party spends 2 units of ammunition (message 1 when it runs out), an enemy's shot has bit 6 and sound effect 2 on channel C."
  },
  {
   "address": 51113,
   "type": "line",
   "text": "Copies the shot's start (+2-+7) over its end (+$0C-+$11)."
  },
  {
   "address": 51126,
   "type": "line",
   "text": "The shot has hit the actor at $F00F. One of the party loses 12 strength (+0 of its need bytes, never below 1) and queues message 0 unless busy; one left at 1 is killed ($C84E). Types 4 to 7 set $EFED/$EFEE and $8D0D, and at the altar ($FB5D = 4) with the ceremony's count ($8D15) neither 0 nor $FF start the sacrifice ($FF50); types $10-$17 and $28 on are not harmed; types $18-$27 need their hits ($C208). A kill adds 0.15% to the score ($E4A6), and 0.25% (types $18-$1B) or 0.10% more for the big ones, and starts the actor's death (+1 $48, action $8B)."
  },
  {
   "address": 51289,
   "type": "line",
   "text": "The start of a shot: the shooter's position (HL', three words) plus the muzzle offset for shooter A and direction B from $C1C0, written at DE."
  },
  {
   "address": 51344,
   "type": "line",
   "text": "What the pointer may pick in the menus: 7 normally, 8 (or 6) after USE ITEM ($CD83), ANDed with each icon's mask; bit 7 is set while an object is being dragged ($CE13)."
  },
  {
   "address": 51345,
   "type": "line",
   "text": "$C891 the object being dragged or used (its number less $0D); $C892 the passes left to redraw what is behind a window being dragged; $C893 set while fire is held on an icon, so that one press acts once; $C894-$C897 the four slots of menu 2 for the objects carried, 0 when empty (an object can be taken while one is empty, $CCB7, and a dropped object's slot is emptied, $F7F2); $C898 flags: bit 0 set when an object on the ground is dropped on the bag, to go into the bag when fetched ($CCA9), bit 1 while the bag's contents are shown ($F8A5)."
  },
  {
   "address": 51353,
   "type": "line",
   "text": "The two menu windows' records, laid out as the RAM part's $AA70 (13 bytes: the size shown, the left column, the columns and rows still hidden, the full size, the pixel and attribute addresses and the row-table entry of the top row): $C899 is menu 2 (the inventory, 21 by 9 characters), $C8A6 menu 1 (17 by 9). Both show the pixels at $5B00 and the attributes at $60E8."
  },
  {
   "address": 51379,
   "type": "line",
   "text": "The pointer moved about a menu: two words naming its graphics in bank 6, a word, then its width (bytes) and height (rows) at $C8BA/$C8BB. While an object is dragged its picture takes the pointer's place; $C8BC is the arrow, copied back over it ($CCFE)."
  },
  {
   "address": 51397,
   "type": "line",
   "text": "A click on the beeper: 75 toggles of the speaker bit of port $FE."
  },
  {
   "address": 51412,
   "type": "line",
   "text": "Once a pass while a menu is up ($8D22): the redraw behind a dragged window ($C8EE); once a window is fully open, its icons are brought up to date ($C913) and the pointer is handled ($CAF4)."
  },
  {
   "address": 51438,
   "type": "line",
   "text": "While $C892 counts down: the view behind the menu window is redrawn ($ACEC) over the window's place and a margin round it ($CBC5)."
  },
  {
   "address": 51475,
   "type": "line",
   "text": "Menu 1 ($C8A6): the colour of the whole menu ($CEC1, $CEDC: cyan in play, magenta once the leader has died, when it is the third menu), then each character's portrait is lit or dimmed as he or she is within hailing distance or not ($FB7C), and redrawn when that changes ($D025). Menu 2 goes to $C983."
  },
  {
   "address": 51587,
   "type": "line",
   "text": "Menu 2 ($C899), for the character picked ($D0B0): the menu closes ($CDBB) if he or she is out of reach ($FB7C); the USE ITEM icon is drawn for a character standing still (state 3) or not; the colour is set (red, or green while the bag is open); then the four objects carried ($20 plus the character's number in an object's second byte, or $24 for those in the bag) and up to three of those on the ground in the area ($80 plus the area) fill the slots ($C9E8)."
  },
  {
   "address": 51688,
   "type": "line",
   "text": "Fills B icon slots from HL with the objects (17 records of 7 bytes from $ECD9) whose owner byte is C: picture $0D plus the object's number, mask A; the slots left over get picture 5 (empty) and mask 0. A slot that changes is redrawn ($CEE9). Object 10 is never shown."
  },
  {
   "address": 51785,
   "type": "line",
   "text": "With a menu fully open, an input code 0 to 8 (a direction, without fire) moves the pointer through the table at $CA6F."
  },
  {
   "address": 51823,
   "type": "line",
   "text": "For input codes 0 to 17: the pointer's moves for 0 to 8 (none, up, down, left, up-left, down-left, right, up-right, down-right) and, from 9, the window's moves when fire is held off the icons."
  },
  {
   "address": 51859,
   "type": "line",
   "text": "Moves the pointer up and right; $CA98 down and right, $CA9D up and left, $CAA2 down and left."
  },
  {
   "address": 51879,
   "type": "line",
   "text": "Moves the pointer 6 pixels left, to the window's edge at the most ($8D23)."
  },
  {
   "address": 51891,
   "type": "line",
   "text": "Moves the pointer 6 pixels right, no further than the window's width less the pointer's."
  },
  {
   "address": 51915,
   "type": "line",
   "text": "Moves the pointer 6 rows up ($8D24)."
  },
  {
   "address": 51927,
   "type": "line",
   "text": "Moves the pointer 6 rows down, no further than 72 less its height."
  },
  {
   "address": 51947,
   "type": "line",
   "text": "Copies the 13-byte window record at HL to the RAM part's $AA70."
  },
  {
   "address": 51956,
   "type": "line",
   "text": "Fire held in a menu: the pointer ($8D23 across, $8D24 down) is tested against each icon of the window open (8 records from $D088, or 10 from $D0B0). On one whose mask allows it ($C890; $FF always), once a press ($C893), a click ($C8C5) and its action from the table at $CD0F; in use mode the object is used ($F84B); a dragged object is dropped ($CCD0). Off the icons, a direction with fire drags the window ($CA81), with a redraw behind it."
  },
  {
   "address": 52165,
   "type": "line",
   "text": "Widens the window's record at $AA70 by a column left, two right and a character row above and below, within the screen, for the redraw behind it."
  },
  {
   "address": 52250,
   "type": "line",
   "text": "Drags the window a character row down and a column left; $CC1F up and left, $CC22 left, $CC2D down and right, $CC32 up and right, $CC35 right (within 32 columns)."
  },
  {
   "address": 52297,
   "type": "line",
   "text": "Moves the window's top row up ($CC49) or down ($CC4E) a character row, within the top and the bottom of the view."
  },
  {
   "address": 52344,
   "type": "line",
   "text": "An object dropped on the bag's icon (picture $0D, object 0) while the bag is carried: one that is carried goes into the bag (owner $24) when the bag has a free slot ($CCB7); one on the ground is fetched by the character ($F7AA) to go into the bag (bit 0 of $C898)."
  },
  {
   "address": 52407,
   "type": "line",
   "text": "Z if one of the four slots for objects carried ($C894) is empty; otherwise message $21 (THE BAG IS FULL) for the character picked, and NZ."
  },
  {
   "address": 52432,
   "type": "line",
   "text": "The dragged object let go: in the bottom half of the menu it is dropped ($F7C0), in the top half taken; an object the character cannot carry gives message $22. The pointer becomes the arrow again ($CCFE)."
  },
  {
   "address": 52495,
   "type": "line",
   "text": "The action of each icon (0 to 17): nothing; a character's portrait (1-4); quit the menu (5); pause (6); sound effects or music (7); new game (8); use item (9); take an object (10, 11); 12-15 the third menu's portraits ($F51D); yes (16) and no (17) to the new-game question."
  },
  {
   "address": 52531,
   "type": "line",
   "text": "A portrait in menu 1: that character's inventory, menu 2 ($D0B0 = $80 plus the character), opens as menu 1 closes ($8D22 = $0A)."
  },
  {
   "address": 52555,
   "type": "line",
   "text": "New game asks first: the pause and sound icons become yes ($0B, action 16) and no ($0C, 17). $CD69 puts them back; $CD71, yes, starts a new game ($85E2)."
  },
  {
   "address": 52599,
   "type": "line",
   "text": "Asks the sound driver for tune 14 (music) and 4 (sound effects only) in turn, keeping the next choice in its own operand."
  },
  {
   "address": 52611,
   "type": "line",
   "text": "USE ITEM: the next object picked is used ($C890 8). A character not standing still is told to stop (state 1, action $80) instead."
  },
  {
   "address": 52667,
   "type": "line",
   "text": "Closes the menu open, putting back the arrow; when the game is over ($8D10) a new game starts; while the bag is open (bit 1 of $C898) it goes back to the character's own objects."
  },
  {
   "address": 52717,
   "type": "line",
   "text": "A RET ($C9) after $CDEC's that no code in the code maps reaches."
  },
  {
   "address": 52718,
   "type": "line",
   "text": "Waits for fire and every direction to be let go, then for any input, with the border magenta ($BF30 = 3) meanwhile."
  },
  {
   "address": 52755,
   "type": "line",
   "text": "Fire on an object's icon: it becomes the pointer ($C8B3, from its record in bank 6 at $F1B1, six bytes each) and is being dragged ($C890 bit 7)."
  },
  {
   "address": 52823,
   "type": "line",
   "text": "Menu 2 opens (click on channel B); when the game is over ($8D10) the end is shown instead ($E975). The colour, the inventory and the window's icons are drawn ($CE9B)."
  },
  {
   "address": 52855,
   "type": "line",
   "text": "SPACE: menu 1 opens from its middle with the pointer at 16 across and 50 down; its frame and its eight icons are drawn into the menu buffer ($CE9B)."
  },
  {
   "address": 52891,
   "type": "line",
   "text": "Draws a menu's frame ($EA3D, $D9A5) and its B icons from DE ($CEE9)."
  },
  {
   "address": 52929,
   "type": "line",
   "text": "The four portraits' masks ($D08C on, five bytes apart): 1 to 4 in play, $0C to $0F once the leader has died ($8D09), and C the menu's colour."
  },
  {
   "address": 52956,
   "type": "line",
   "text": "Fills the menu's 189 attributes from $60E8 with A."
  },
  {
   "address": 52969,
   "type": "line",
   "text": "Draws the icon record at HL into the menu buffer: its colours ($D025), then a picture of characters ($80 on, $CFE3), a bitmap three bytes across ($CF1C: 24 rows for pictures 0-3, 16 for the rest) or an object ($CF42)."
  },
  {
   "address": 53058,
   "type": "line",
   "text": "An object's icon: the empty slot (picture 5), then the object's picture from bank 6 (its record at $F1B1, 48 bytes, two or three across) ORed over it, centred, shifted half a byte when it is two bytes wide. A' comes back changed, which use_knife reads at $F8D6: $FF for a picture of width 4, otherwise the middle byte of the last row drawn."
  },
  {
   "address": 53219,
   "type": "line",
   "text": "An icon made of characters: three across by three rows (two for pictures 5 on), each from the list its entry in $D106 points to ($D9F1)."
  },
  {
   "address": 53285,
   "type": "line",
   "text": "An icon's attributes in the menu: three bytes across for three rows (two for pictures 5 on), the first byte of its picture's list ($D106) or, for an object, its colour from $F616."
  },
  {
   "address": 53384,
   "type": "line",
   "text": "Menu 1's eight icons, five bytes each: picture, column (in characters), row (in pixels), mask and action ($CD0F). The four portraits ($80-$83) across the top, actions 1 to 4; below them quit ($86), pause ($87), sound effects or music ($88) and new game ($89), actions 5 to 8."
  },
  {
   "address": 53424,
   "type": "line",
   "text": "Menu 2's ten icons, laid out as menu 1's: the portrait of the character whose objects these are (the picture at $D0B0 is $80 plus the character), quit, USE ITEM ($8A, action 9), the four objects carried (row 16, action 10) and three on the ground (row 48, action 11), filled in by $C983."
  },
  {
   "address": 53474,
   "type": "line",
   "text": "A menu's frame as characters from $D218, a byte with bit 7 being a count for the byte after it: the corners, the edges and the blank inside; the counts are set for the window's width ($EA3D)."
  },
  {
   "address": 53510,
   "type": "line",
   "text": "The pictures 0 to 12 that icons use: each points to a colour and then either the characters (pictures drawn with bit 7: three by three for 0-4, three by two for the rest) or a bitmap three bytes across (24 rows for 0-3, 16 for the rest): the four portraits, the empty slot (4 and 5), quit, pause, sound, new game, use item, yes and no."
  },
  {
   "address": 53536,
   "type": "line",
   "text": "The colours and characters of the icons that are made of characters, and the bitmaps of the empty slot ($D14A), yes ($D17B) and no ($D1AC)."
  },
  {
   "address": 53724,
   "type": "line",
   "text": "Six portraits, ten bytes each: a colour (6 dim, 7 lit, set by $C913) and three by three characters. The first four are Jarret, Gloria, Dirk and Clive; the conversation window uses the speaker's ($D91B), so the other two are for speakers 4 and 5."
  },
  {
   "address": 53784,
   "type": "line",
   "text": "The menus' characters, eight bytes each, numbered from here: the frame, the portraits and the icons."
  },
  {
   "address": 54720,
   "type": "line",
   "text": "The conversation window's printing: $D5C0 which half of a byte the next letter goes in, $D5C1 the line, $D5C2 the speaker."
  },
  {
   "address": 54723,
   "type": "line",
   "text": "Each character's eight need bytes ($FF at the start): +0 strength, +1 energy, +2 water, +3 food, +4 ammunition, +6 patience; the panel shows the leader's ($8CB6)."
  },
  {
   "address": 54755,
   "type": "line",
   "text": "Each character's limits for the need bytes: below a limit by more than 32 a character must rest ($D70A), and 32 and 16 above it he or she complains ($D69A). Jarret's are $60, Gloria's $80, Dirk's $70 and Clive's $A0 (the first to complain); patience $D7 for Gloria, $D8 for Dirk, $D6 for Clive and none for Jarret."
  },
  {
   "address": 54787,
   "type": "line",
   "text": "Every 32 passes, for each of the party who is up (state under 8): energy rises while standing (twice as fast while resting) and falls while moving (messages $15 tired, $16 very tired); water and food fall (messages $17, $18 and $19, $1A); patience falls while the leader rests and the character is not hungry (messages $1B, $1C), and rises otherwise."
  },
  {
   "address": 54929,
   "type": "line",
   "text": "Raises the need byte at HL, to $FF at most."
  },
  {
   "address": 54938,
   "type": "line",
   "text": "Lowers the need byte at HL, unless it is 0, and queues message B or B+1 for character C as it comes to 32 or 16 above its limit at DE ($FF in C for none); B comes back one more when C is not $FF."
  },
  {
   "address": 54970,
   "type": "line",
   "text": "For an actor of type $27 to $2C: sound effect $10 every fourth pass, and a walk (1 to 4) turned into its running form (6 to 9)."
  },
  {
   "address": 55005,
   "type": "line",
   "text": "Every 32 passes: Jarret's energy falls by two more when he has no water and by one when he has no food; at 0 he dies (action $8B, state $48)."
  },
  {
   "address": 55050,
   "type": "line",
   "text": "For each of the party who is up (state under 2): no strength left means death ($D78C); below the limit by more than 32 he or she sits down to rest (message 5, action $8A); no water or no food costs strength; patience above its limit makes him or her follow (state 1), and more than two below it he or she leaves the party (message 6, $D795)."
  },
  {
   "address": 55189,
   "type": "line",
   "text": "A character gives up and goes his or her own way: message 6 for the leader, the area's place to head for from $DB07 ($E253), state 0."
  },
  {
   "address": 55225,
   "type": "line",
   "text": "Once a pass with no conversation window up ($8D25 = 0): the first message queued ($8D26) is shown ($D7EC), the queue moves up, the window starts to open ($8D25 = $48) with sound effect $11 on channel C."
  },
  {
   "address": 55276,
   "type": "line",
   "text": "Fills the conversation window for message A spoken by character C: the window's column is four times the speaker, its height the message's first byte; the frame and the speaker's portrait ($D91B); then the text, two letters to a byte in the small font at $DA8A, with the control codes through $D8B1. A speaker who is not one of the party has each letter swapped for its mirror in the alphabet (A for Z, B for Y), $2C less it."
  },
  {
   "address": 55372,
   "type": "line",
   "text": "NEG and ADD A,$2C, reached only when $D84A holds no jump (a speaker who is not one of the party)."
  },
  {
   "address": 55376,
   "type": "line",
   "text": "Prints one letter of the small font into the conversation window."
  },
  {
   "address": 55473,
   "type": "line",
   "text": "The control codes $F8 to $FE: $F8 the speaker's exclamation ($D8D0), $F9 nothing, $FA HE SAID when the window is at column 8 ($D8BF), $FB the name of character $8D0C ($D8CB), $FC the leader's name unless the leader speaks ($D8DA), $FD a new line four bytes (eight letters) back ($D90A), $FE a new line."
  },
  {
   "address": 55487,
   "type": "line",
   "text": "$FA: prints HE SAID ($7FBF) when the window's column is 8."
  },
  {
   "address": 55499,
   "type": "line",
   "text": "$FB: the name of the character in $8D0C."
  },
  {
   "address": 55504,
   "type": "line",
   "text": "$F8: the speaker's exclamation from $7FC6: DAMN IT for Jarret, GOSH for Gloria, HECK for Dirk, CRIKEY for Clive."
  },
  {
   "address": 55514,
   "type": "line",
   "text": "$FC: the leader's name ($8D0A), or nothing when the leader is the speaker; the B-th name from $7FA1 ($D8E3)."
  },
  {
   "address": 55539,
   "type": "line",
   "text": "$FE: the next line of the window, 12 bytes across, eight rows down."
  },
  {
   "address": 55562,
   "type": "line",
   "text": "$FD: a new line, then four bytes back."
  },
  {
   "address": 55570,
   "type": "line",
   "text": "ORs a row of a letter into the window and steps 12 bytes down."
  },
  {
   "address": 55579,
   "type": "line",
   "text": "The conversation window's frame and the speaker's portrait (from $D1DC) into the lists at $DA0D, made as tall as the window; drawn into $61A5 ($D9AB) and the colours into $64A5."
  },
  {
   "address": 55716,
   "type": "line",
   "text": "The repeat count while a frame list is drawn."
  },
  {
   "address": 55717,
   "type": "line",
   "text": "Draws the menu frame list at $D0E2 into the menu buffer at $5B00, B characters across by C rows ($D9AB with other lists)."
  },
  {
   "address": 55793,
   "type": "line",
   "text": "Draws character A of $D218 into a buffer, eight rows a width apart."
  },
  {
   "address": 55821,
   "type": "line",
   "text": "The conversation window's lists: its colours, a count with bit 7 before a repeated byte, then its frame and portrait characters, filled in by $D91B."
  },
  {
   "address": 55946,
   "type": "line",
   "text": "The small font of the conversation window, letters 0 to $26 of the game's alphabet (the last, at $DAFC, the % of the end screen): three bytes each, two rows of four pixels to a byte, six rows."
  },
  {
   "address": 56063,
   "type": "line",
   "text": "Places in units of four for the actors' walking: $DAFF-$DB01 the point being walked to (area, across, down), $DB02-$DB04 another, $DB05-$DB07 the leader's place (across, down, height; $DEB5) and $DB08-$DB0A the actor's being moved ($DEBD)."
  },
  {
   "address": 56075,
   "type": "line",
   "text": "After each step of the scrolling: when the view's column ($9633) or row ($9634) runs off an edge of the area, the next area of the four by four plateau becomes $8D1F (one along, or four up or down), the view is put at the opposite edge, the actors who stand on that side are carried across ($DBA8), and the new area is loaded ($87CF)."
  },
  {
   "address": 56131,
   "type": "line",
   "text": "Into the area to the east: column 0, actors shifted 456 back across. $DB56 west, $DB75 south (432 down), $DB88 north."
  },
  {
   "address": 56232,
   "type": "line",
   "text": "Each actor in play but type $2D whose word at +$14 (across on the screen) or +$16 (down), as A = $13 or $15 picks (written into $DBBD), is below DE (or at least DE, with the CCF written at $DBC7 in place of the NOP) is given the new area (+$1E) and moved by BC ($DBDD)."
  },
  {
   "address": 56285,
   "type": "line",
   "text": "Moves an actor into the new area: +$1E the area, one coordinate moved by BC, the other kept, and its place on the screen worked out again ($C362)."
  },
  {
   "address": 56331,
   "type": "line",
   "text": "Brings into play the creatures and people of the plateau ($EB06, 46 records) that are in this area, not already in play (bit 7) and within reach of the view: each stands on the ground under it ($DCA0) and becomes an actor ($DD1C)."
  },
  {
   "address": 56480,
   "type": "line",
   "text": "The ground cell under a record's place: its across and down (in units of four) to $8ED1 and $8ED3, then $90D5."
  },
  {
   "address": 56505,
   "type": "line",
   "text": "Each actor out of this area, or more than 13 characters outside the view, goes back into its record ($DE58)."
  },
  {
   "address": 56604,
   "type": "line",
   "text": "Makes the record at HL an actor in the first free slot (the leader's character only in slot 0): its type, state $80, and if it does not stand in another actor or a box, nor on ground it may not stand on, its place, its graphics from the table at $EAC8 by type, its area and its frame ($9048). Type $2D is held (state $40); types $14 to $17 make sound effect $0A on channel C."
  },
  {
   "address": 56920,
   "type": "line",
   "text": "An actor leaving play: its record ($E492) takes back its state (bit 6 off; one of type 4 or above in state 1 goes back in state 0), its area, its place in units of four and its route, which a character (type below 4) not in state 0 does not keep; the slot is freed."
  },
  {
   "address": 57013,
   "type": "line",
   "text": "The leader's place, in units of four, to $DB05; $DEBD the actor's at HL to $DB08."
  },
  {
   "address": 57045,
   "type": "line",
   "text": "Once a pass: the leader's place ($DEB5), then each actor but the leader (and the leader too when he is not being steered: his state 3 or more, or 2 or more after 65 passes without input) that is not held (bit 6 of +1): its place ($DEBD), its route check ($F116), its state's step ($DF24) and, for the party, the needs ($D70A)."
  },
  {
   "address": 57124,
   "type": "line",
   "text": "When the actor's countdown (+4, low nibble) has run out: the routine for its state (+1, low nibble) from the table at $DF46."
  },
  {
   "address": 57158,
   "type": "line",
   "text": "The ten states: 0 walk a route ($DF60), 1 follow the leader ($DF8B), 2 $F0D3, 3 go for an object ($E082), 4 pull with the rope ($E4C2), 5 haul up ($E576), 6 throw the rope ($E535), 7 keep the action at +6 ($E07A), 8 die ($DF5A), 9 stand ($DF88)."
  },
  {
   "address": 57178,
   "type": "line",
   "text": "State 8: becomes $48 (held) with action $0B."
  },
  {
   "address": 57184,
   "type": "line",
   "text": "State 0: walks the route in +2 and +3 ($E399) towards its next point ($E115), going on to the next when there ($E106); at the route's end the direction is turned round ($E449), or type $28 on gets event 3 ($F0A3). The action, when it changes, is stored with bit 7."
  },
  {
   "address": 57224,
   "type": "line",
   "text": "State 9: action 0."
  },
  {
   "address": 57227,
   "type": "line",
   "text": "State 1: follows the leader. On ground $7B, or more than 5 units away across or down, or one who is not of the party, it walks towards him ($E023, finding a way round a step in height, $E04E). Near him: when he rests (state $08-$0B) it sits down too, one pass in eight, or at the fifth hour stops; otherwise it stands one pass in eight."
  },
  {
   "address": 57379,
   "type": "line",
   "text": "Walks towards the leader's place ($E115), running when he runs."
  },
  {
   "address": 57422,
   "type": "line",
   "text": "Looks for a step near the leader ($95C0) to walk to when the height between them is two or more."
  },
  {
   "address": 57466,
   "type": "line",
   "text": "State 7: the action in +6."
  },
  {
   "address": 57474,
   "type": "line",
   "text": "State 3: walks to the object in +6 (its record, $F83E) while it lies on the ground (bit 7 of its owner byte); within 3 units it is taken: the owner becomes $20 plus the actor's type (into the bag, $24, when it was dropped on the bag, bit 0 of $C898, and the bag has room) and the actor goes back to following (state 1) or 0."
  },
  {
   "address": 57606,
   "type": "line",
   "text": "The next point of the actor's route: +3 up, or down when bit 7 of +2 is set."
  },
  {
   "address": 57621,
   "type": "line",
   "text": "The walk (1 to 4) that takes the actor at DE+$0B towards the point at HL (units of four), across and down in turn (bit 5 of +$18); 0 when it is within 2 units of it."
  },
  {
   "address": 57676,
   "type": "line",
   "text": "One axis of $E115: B when the actor is beyond the point, C when short of it, 0 when within 2."
  },
  {
   "address": 57735,
   "type": "line",
   "text": "Once a pass, one of the 46 records ($EAC6 counts them round): one not in play walks its route off the screen, a step at a time ($E458), going from area to area ($E316); state 1 (left behind following) finds its way back to the route nearest the leader ($E24E, $E3BB)."
  },
  {
   "address": 57934,
   "type": "line",
   "text": "The point of routes 1 to 4 ($ED6A) nearest to a place in area A: D the route, E the point."
  },
  {
   "address": 58036,
   "type": "line",
   "text": "Z when the record whose +6 is at HL is within 48 of the leader across and down, in units of four (+3 and +4 against $DB05 and $DB06)."
  },
  {
   "address": 58066,
   "type": "line",
   "text": "Moves a walking record into the next area when it passes an edge, its place shifted by $72 or $6C units ($E36B to $E38C); $E2D2, $E2DF and $E2EF across, $E2FF and $E30A down."
  },
  {
   "address": 58134,
   "type": "line",
   "text": "Which edge of its area a walking record has crossed, from its place on the screen."
  },
  {
   "address": 58265,
   "type": "line",
   "text": "The next point of the route at DE (number and index): from the table at $ED68 (first point and count) the point in $EDB0 (area, across, down); in another area the point is moved into this area's frame ($DAFF, by $72 across and $6C down for each area apart); $FF at the end."
  },
  {
   "address": 58441,
   "type": "line",
   "text": "Turns the route round: bit 7 of +2 flipped and the index stepped back."
  },
  {
   "address": 58456,
   "type": "line",
   "text": "Moves a record's place at DE up to 4 units across and down towards the point at HL; C counts the axes it moved, 0 when it was there. A is 0 and Z on every return (XOR A, AND C)."
  },
  {
   "address": 58497,
   "type": "line",
   "text": "A byte from bank 3 itself, the pointer at $E490 stepping through $C000-$FFFF: the game's random numbers."
  },
  {
   "address": 58512,
   "type": "line",
   "text": "The pointer of $E481."
  },
  {
   "address": 58514,
   "type": "line",
   "text": "HL = the record of actor number A in the table at $EB05, 8 bytes each."
  },
  {
   "address": 58528,
   "type": "line",
   "text": "Adds B to the score's units digit ($8D06), carrying up; $E4A6 adds B hundredths ($8D08), $E4AC adds at HL. The score is five decimal digits from $8D04, the percentage of the game done."
  },
  {
   "address": 58558,
   "type": "line",
   "text": "A byte for each of the four characters at the end ($E910): $FB7C's answer, 0 for one in play in a state of 7 or less and not 0 for most others; $EA0B names those that are not 0 after PITY ABOUT. One away from the area in state 0 also gets 0, so is neither named nor given the bonus."
  },
  {
   "address": 58562,
   "type": "line",
   "text": "State 4: the rope's other end ($FA9C 3, the character at $FA9D, $FB60): standing on ground $75 or $76 he or she pulls ($FAEB), facing the one being rescued; otherwise message $10 (I CAN'T REACH FROM HERE)."
  },
  {
   "address": 58677,
   "type": "line",
   "text": "State 6: the rope is thrown ($8D12 makes $E6B3 draw it) and the rescuer turns towards Clive."
  },
  {
   "address": 58742,
   "type": "line",
   "text": "State 5: Clive is hauled up the rope until he stands on ground $75: 10% is added to the score ($E4A0) and both go back to following ($E5A8)."
  },
  {
   "address": 58792,
   "type": "line",
   "text": "State 1 and action 0 for the actor at HL."
  },
  {
   "address": 58889,
   "type": "line",
   "text": "Ground $74 under Clive: he falls through (state 9, action $80, 24 units down), shouting HELP (message 14, sound effect 5), and his place is kept at $ED50 ($F818); while he hangs the count at $8D11 goes up, with HURRY UP HURRY UP (message 15) at $C0."
  },
  {
   "address": 59021,
   "type": "line",
   "text": "While object $11 is at $ED4F, $ED55 counts to $48, then it becomes $12."
  },
  {
   "address": 59059,
   "type": "line",
   "text": "When $8D12 is set (once): the rope between the rescuer ($FA9F) and Clive ($FA9D) is made of the shot records: shot 0 ($C100) a line from the rescuer's muzzle 5 along the down axis to Clive's down (its end keeps the rescuer's across and height), and when Clive hangs below the ground a second, shot 1 ($C118), straight down (direction 4) from its end to 16 above him. They are drawn as shots are ($C260)."
  },
  {
   "address": 59215,
   "type": "line",
   "text": "After the rope's first line: when its end was not clipped (its +$0E as it was), the second line is drawn too ($E73F); otherwise the second is removed."
  },
  {
   "address": 59230,
   "type": "line",
   "text": "Keeps a line going down (direction 4) within the view: NZ when its column (+8) is left of the view ($9635) or $DF or more to its right, or when its end (+$14, as it was before clipping) is above the word at +$1E, which is the next shot's record ($18 bytes on) at +6. Otherwise A is 0 and Z, with its start (+$0A) no higher than the view's top ($9637, $9632 added to its low byte) and its end (+$14) no lower than the top plus $8F."
  },
  {
   "address": 59335,
   "type": "line",
   "text": "Clips a shot's line in the four other directions to the view, the ends brought within the view's columns ($E871, $E88C) and rows; NZ when nothing of it is left on the screen."
  },
  {
   "address": 59505,
   "type": "line",
   "text": "The view's limits across and down for clipping a shot's line, from $9635 and $9637."
  },
  {
   "address": 59607,
   "type": "line",
   "text": "An actor's event (HL at its +$0B): every 16 passes ($8D1C), for the character whose turn it is (the pass over 16, 0 to 3; at 0 $ED5E is cleared first), object record 19 ($ED5D) is put at that character's place ($F801) and moved on the screen: its row ($ED63) up 1 and its column ($ED62) 3 right for character 1, up 2 for character 3, up 3 for characters 0 and 2."
  },
  {
   "address": 59664,
   "type": "line",
   "text": "Ground $72 reached, the end of the game, once ($8D10): the days and the left-behind flags are cleared; the score's whole percent (its tens and units, $8D05-$8D06) is raised to 60 if below, and (100 less it) / 4 is the bonus; for each character $FB7C's answer goes in $E4BE, and each one within reach of the leader adds the bonus ($E4A0); tune 14 is asked for ($7002) and menu 2 is opened for the end screen ($CD39)."
  },
  {
   "address": 59765,
   "type": "line",
   "text": "Draws the end in menu 2's window: colour 7 ($CEDC), the frame's counts set to $93 ($EA3D), drawn ($D9A5), the window copied ($CAEB), the masks of the icons from the third cleared (the ninth write lands on $D0E5, the frame's +3) and the second icon drawn. The days ($BF2D, when not 0) go into the text as four digits, leading zeros made $F9 (nothing); the score's first three digits ($8D04) go into the percentage, its first digit $F9 when 0. The four lines at $EA58 are printed at $5BAA, $A8 bytes apart, with the line stride ($D916) set to $15; at the $80 after the third, $EA0B adds a line. The stride goes back to $0C."
  },
  {
   "address": 59915,
   "type": "line",
   "text": "When any of the four left-behind flags ($E4BE) is not 0: PITY ABOUT ($EABA), then the name of each such character ($D8E3), the flag being set to $FF."
  },
  {
   "address": 59965,
   "type": "line",
   "text": "Sets a menu's frame ($D0E2) for the end screen: 8 at its +3, B at its +1 and +$21, and B and C in the first two bytes of each of seven entries of four bytes from $D0E7."
  },
  {
   "address": 59992,
   "type": "line",
   "text": "The end screen's texts in the game's alphabet, $FF after each: WELL DONE <leader>!, YOU ARE ON YOUR WAY HOME, YOUR ORDEAL LASTED 0000 DAYS (the digits at $EA91), the $80 marker, then YOU HAVE BEEN ___ % SUCCESSFUL (the digits at $EAAA) and, at $EABA, PITY ABOUT."
  },
  {
   "address": 60102,
   "type": "line",
   "text": "$EAC6 the record $E187 moves next (0 to 45); $EAC7 the area of the place being worked out, for the frame of reference of $E316 and $E399."
  },
  {
   "address": 60104,
   "type": "line",
   "text": "Five bytes for each of twelve classes of actor, read by $DD1C: the bank of its graphics, then two addresses copied into the actor. The class is the type for the four characters (0 to 3), then one class each for types 4 to $0F, $10 to $13, $14 to $17, $18 to $1B, $1C to $1F, $20 to $27, $28 to $2C, and $2D on."
  },
  {
   "address": 60164,
   "type": "line",
   "text": "A $C9 between the classes and the records that no code in the code maps reads."
  },
  {
   "address": 60165,
   "type": "line",
   "text": "The 46 records of the game's creatures and characters, eight bytes each, the record's number being its type: +0 the type, +1 its state (bit 7 in play as an actor, bit 6 held, low nibble the state), +2 its area, +3 and +4 its place across and down in units of four, +5 its height, +6 its route ($ED68) and +7 the point it has reached. Records 0 to 3 are the four characters. New game ($861C) sets records 0 to 7, $2B and $2C from bank 0's $FE05; the rest keep what they hold."
  },
  {
   "address": 60533,
   "type": "line",
   "text": "Places of three bytes (area, across, down) for a record whose route has ended ($F0A3), at three times the type less 4 (types below $18) or less $0C. Only types $28 on reach $F0A3, so only the last five, from $ECC9, are read; the 28 before them are read by no code in the code maps."
  },
  {
   "address": 60617,
   "type": "line",
   "text": "The places types $28 to $2C go back to when their route ends, three bytes each (area, across, down): read by $E1DC and $F0A3."
  },
  {
   "address": 60632,
   "type": "line",
   "text": "The objects, seven bytes each: +0 its number, +1 where it is (an area 0 to 15, with bit 7 when on the ground in view and bit 6 to be drawn; $20 plus a character carrying it; $24 in the bag; $27 held by actor type 7), +2 to +4 across, down and height in units of four, +5 and +6 its column and row on the screen ($F818). Objects 0 to 16: the bag, four tins, the bottle, the knife, the can opener, the ammunition, the ham, the jewel, the compact, the watch, the rope, the first aid kit, an object no handler uses (15), and the dynamite."
  },
  {
   "address": 60751,
   "type": "line",
   "text": "Three more records in the objects' form, 17 to 19, that the objects' loops cover too: 17 ($ED4F) marks where Clive fell ($E609) and turns from $11 to $12 ($E68D); 19 ($ED5D) is put by $E8D7."
  },
  {
   "address": 60772,
   "type": "line",
   "text": "A place in the objects' form from +1 (area 5, across $BB, down $82, height $1B, column $47, row $13), copied into the ham's record when the ham is dropped in zone 2 ($FDA5). Its last two bytes are also the entry for route 0 in $ED68, read when a new leader's record has no route and $E24E finds no route point in its area ($F55B). When the dynamite is placed ($FF96), $ED66 becomes $9680 and $ED69 $1596, making route 1 start at point $15; $FFB2 reads bit 5 of $ED65."
  },
  {
   "address": 60776,
   "type": "line",
   "text": "Two bytes for each route: the first of its points in $EDB0 and how many there are. Routes are numbered from 1 (a record with route 0 has none, $F561); $ED68-$ED69, route 0's, is read only when $E24E finds no point of routes 1 to 4, the ones it chooses from, in the record's area."
  },
  {
   "address": 60848,
   "type": "line",
   "text": "The routes' points, three bytes each: the area, and the place across and down in units of four."
  },
  {
   "address": 61421,
   "type": "line",
   "text": "A byte for each four types (type / 4), read by $F4C0 and $F02C: bit 2 the party takes it for a target, bit 3 types 4 to 7 do, bit 0 the rest do, and bit 1 its being in the area raises the alarm. The party's ($EFED) starts as 1 and becomes 9 when the tribe turns on the party ($FD86, $C801), 1 again at a capture ($FEB7); types 4 to 7's ($EFEE) starts as 0 and becomes 6 ($FD8F) or 7 ($C804). Types 8 to $0F and $1C to $27: 6; $18 to $1B: $0E; $10 to $17 and $28 to $2F: 0. The last two of the fourteen bytes are for types no record has."
  },
  {
   "address": 61435,
   "type": "line",
   "text": "Eight pairs (across, down) of places around the leader, four and six units away, for state 2 ($F0D3): which one an actor goes to changes every 16 passes."
  },
  {
   "address": 61440,
   "type": "line",
   "text": "Continued from gather_offsets ($EFFB): its bytes from $F000."
  },
  {
   "address": 61451,
   "type": "line",
   "text": "$F00B-$F00C the place where the leader was left alone (copied from $DB05 after 65 passes with no input, main $8B81), which he keeps near in state 2; $F00D the direction being looked in; $F00E the distance to what was found ($FF nothing); $F00F-$F010 its address (an actor's +1, or a box); $F011 its actor's low byte, or $FF for a box; $F012 the state types 4 to 7 take when calm; $F013 the alarm (1 calm, 2 alarmed)."
  },
  {
   "address": 61460,
   "type": "line",
   "text": "Moves (across, down) for each of four directions: $F014 for a carrier of type $1C on, $F01C for types $18 to $1B, while a victim is held ($F2BE); $F024 where a victim lands when dropped ($F2A8)."
  },
  {
   "address": 61484,
   "type": "line",
   "text": "Once a pass ($DED5): when an actor in slots 1 to 7, not held, is of a type whose hostility byte ($EFED) has bit 1, the alarm is 2 ($F013) and $ED5E is cleared; otherwise it is 1. When the alarm changes, each actor of types 0 to $0F or $18 to $1B in a state below 3 takes the new state: the alarm's (1 follow, 2 gather), except that types 4 to 7 take $F012 when calm."
  },
  {
   "address": 61603,
   "type": "line",
   "text": "Event 3, the end of the route of a type $28 on: its record leaves play (+1 = 0), goes back to its place in $EC75 (area, across, down), height and point 0; the actor's slot is freed ($FF)."
  },
  {
   "address": 61651,
   "type": "line",
   "text": "State 2: walks to a place around the leader ($DB05; for the leader himself, around $F00B), one of the eight in $EFFB chosen by the pass over 16 and the type; the action is the direction ($E115), 5 more (running) while not there."
  },
  {
   "address": 61718,
   "type": "line",
   "text": "For each actor below type $28 in a state below 8 (bit 7 of its type set while it is worked on): types $18 to $27 go to $F14A, $14 to $17 to $F202, $10 to $13 to $F1D6; the party and types 4 to $0F, in state 2 or more and able to fire ($C735), look all round for a target ($F33E) and face it ($F4E9)."
  },
  {
   "address": 61770,
   "type": "line",
   "text": "Types $18 to $27, which seize. On odd frames (+$0B), sound on channel A ($7006): effect $0F for $18 to $1B, effect 5 every fourth pass for $1C to $27 (the test meant for $A0 compares $0F). Holding no one (+5 = $FF): looks all round for a victim ($F33E) and seizes one within reach ($F232), then, when its action is 5, turns the way it looked. Holding: the victim is held ($F31D) and moved with the grabber ($F2BE, by $F014 or $F01C); if the victim is the leader $8D17 is set; the victim's +5 counts down, and at 0 it dies (state $48, action $8B) and the grabber lets go."
  },
  {
   "address": 61910,
   "type": "line",
   "text": "Types $10 to $13: the type's sink count ($9613) is cleared unless the action is 5; they look all round ($F33E) and seize ($F232); every eighth pass while reaching (action 6 or more), sound effect $12 on channel B ($701F)."
  },
  {
   "address": 61954,
   "type": "line",
   "text": "Types $14 to $17, which chase: in action 5 the action is kept and +4 set to 5; otherwise they look ahead only ($F341, B = 1) and seize ($F232), with sound effect $0B on channel C ($7038) when seizing; +$12 (the height) is kept at $20 or more."
  },
  {
   "address": 62002,
   "type": "line",
   "text": "The actor found ($F00F): when it is within 3 units across and down ($FAEB, $DB08), it becomes the victim (+5 its slot, its own +5 = $0C, the count to its death) and the action is 5; otherwise the action is 6 to 9, reaching in the direction looked."
  },
  {
   "address": 62062,
   "type": "line",
   "text": "Event 6, a victim carried off: when the victim is the leader, $8D1B is cleared and $8D16 holds the direction. The victim is held ($F31D); while the carrier's height is above $C0 it flies on (sound effect $0B, action its direction plus 1, $8D16 = $FF); otherwise ($F2A8) the victim is dropped."
  },
  {
   "address": 62120,
   "type": "line",
   "text": "The victim is put down beside the carrier ($F024 by direction, $F2BE) and dies (action $8B, state $48)."
  },
  {
   "address": 62142,
   "type": "line",
   "text": "Adds the pair at HL for the actor's direction (+$0D) to the place across and down at DE, and works out the screen place ($C362)."
  },
  {
   "address": 62197,
   "type": "line",
   "text": "Event 4: while holding a victim, the grabber's and the victim's sink counts ($9613) go up by 3, the grabber's to at most 12: both sink into the ground."
  },
  {
   "address": 62237,
   "type": "line",
   "text": "The victim (slot +5) says HELP (message 14), is marked held (bit 6 of +1), its action $80, and its place across, down and height becomes the holder's."
  },
  {
   "address": 62270,
   "type": "line",
   "text": "Looks for a target in all four directions, the one faced first, then the opposite, then the two others; $F341 with B = 1 looks ahead only. NZ when one is found that $F4C0 accepts, the direction in $F00D."
  },
  {
   "address": 62311,
   "type": "line",
   "text": "Looks along direction A: the actor's height ($F411, 0 for types $14 to $17) and a margin of 4 ($F3E4) set the scan for actors, along the across axis ($F3AA) or the down axis ($F39F). When an actor is found, the boxes are scanned too ($F446, $F452), and a nearer box takes its place. Looking across and finding none, the scan goes on down from where it left HL ($8301): slot 0's place."
  },
  {
   "address": 62355,
   "type": "line",
   "text": "The place across and down at HL into BC and the other set's BC."
  },
  {
   "address": 62367,
   "type": "line",
   "text": "Scans for actors along the down axis ($F3B4 with +$0E across and +$0F); $F3AA along the across axis."
  },
  {
   "address": 62388,
   "type": "line",
   "text": "For each actor in play, not being worked on: within 4 units off the line, ahead in the direction looked, and within $1B in height; the nearest goes in $F00E (its distance), $F011 and $F00F. A is one more than the distance, 0 when nothing is found."
  },
  {
   "address": 62534,
   "type": "line",
   "text": "Scans the area's boxes ($962D of them, from $C002 or $C000 for the two axes) for one ahead within $40 cells; nearer than any actor found, it goes in $F00E and $F00F with $F011 = $FF."
  },
  {
   "address": 62656,
   "type": "line",
   "text": "Z for a box; otherwise NZ when the hostility byte of the target's type ($EFED) has the bit for the one looking: 4 for the party, 8 for types 4 to 7, 1 for the rest."
  },
  {
   "address": 62697,
   "type": "line",
   "text": "Turns to face the target unless it faces this way already and this is one of the party: the action is the direction plus 1, or 5 when already facing it."
  },
  {
   "address": 62735,
   "type": "line",
   "text": "Sets +4 to 2 and the action to A, with bit 7 when it changes."
  },
  {
   "address": 62749,
   "type": "line",
   "text": "The portraits of the third menu (actions 12 to 15): $8D0A becomes character A less 12; if that is the captive ($8D0C), the ceremony's count stops ($8D15 = $FF). A character in play has his or her actor swapped into slot 0 (action $80); otherwise the record is put at its route's point (a route chosen by $E24E when it has none), the area loaded when it is another ($87CF), the old leader put back ($DE58) and the new one brought in ($DD1C). Then the view is centred on the leader ($9633 to $9637) and the area's edges set ($DB0B)."
  },
  {
   "address": 62983,
   "type": "line",
   "text": "The end of $F51D: $8D09 cleared, $8D16 and $8D17 set to $FF, back to the main loop ($868E)."
  },
  {
   "address": 62998,
   "type": "line",
   "text": "A colour for each of the seventeen objects' icons; a tin's and the bottle's show how full it is ($F910), the dynamite's turns to $D6 when lit."
  },
  {
   "address": 63015,
   "type": "line",
   "text": "$F627-$F62A each tin opened ($FF) or not; $F62B-$F62E what each tin holds; $F62F the water in the bottle; $F630 not read; $F631 the first aid left; $F632 the ammunition left."
  },
  {
   "address": 63027,
   "type": "line",
   "text": "For the area, once a pass ($DC9C): $FAFF, then each object lying in the area ($8D1F) whose screen column and row are within the view ($9633, $9634, with a margin of 4) is marked to be shown and drawn (bits 7 and 6 of +1); the others lose both marks."
  },
  {
   "address": 63113,
   "type": "line",
   "text": "Goes through the objects marked to be shown and drawn (bits 7 and 6 of +1): each whose screen column and row, times four (the column plus $100), are no less than BC and the other set's BC is chosen and they become its. NZ with IY at the record chosen; Z when there is none."
  },
  {
   "address": 63190,
   "type": "line",
   "text": "Makes the record copy at $8501 an actor for the object at HL, to be drawn as a sprite: type $20, bank 6 (+$1F), the object's number as its frame (+$1B), its place across, down and height times four, its screen place times eight (16 added to the row) and bank 6's frame list $F1B1; the object's mark to be drawn (bit 6) is cleared."
  },
  {
   "address": 63274,
   "type": "line",
   "text": "On entering an area: every object's marks are cleared, and one lying in an area 1, 3, 4 or 5 away in number, within $1C of the edge across (areas 1 apart) or $14 down (the others), is moved one area towards this one, its place shifted to match ($E36B to $E37A) and its screen place worked out again ($F818)."
  },
  {
   "address": 63402,
   "type": "line",
   "text": "The character menu 2 shows ($D0B0), when in play ($FB60), goes for the object $C891 (state 3, +6 the object): one taken from the ground ($CCFB) or dropped on the bag ($CCB1). $F7AF does the same for the actor of type C."
  },
  {
   "address": 63424,
   "type": "line",
   "text": "An object dropped on the view: in a zone ($FB5D) it is noted in $FB5E; one carried (bit 5 of +1) is put down at the place of the character picked ($F7DC)."
  },
  {
   "address": 63452,
   "type": "line",
   "text": "Puts the object at HL down where the actor of type A stands, when that actor is in play; with the bag open its slot is emptied ($C894)."
  },
  {
   "address": 63489,
   "type": "line",
   "text": "The object at DE gets the area ($8D1F) and the place of the actor at HL ($FAEB), and its screen column and row from $F818."
  },
  {
   "address": 63512,
   "type": "line",
   "text": "The screen place of the object whose down is at DE (across at DE-1, height at DE+1): the column $80 plus down less across, and the row the low byte of $17E less across, down and height, halved; both to the two bytes after the height."
  },
  {
   "address": 63550,
   "type": "line",
   "text": "HL = the record of object A ($ECD8 plus seven times A)."
  },
  {
   "address": 63563,
   "type": "line",
   "text": "USE ITEM on the icon whose field is at HL: its picture, three bytes back, less $0D is the object, which goes in $C891, and its handler from $F866 runs after $CD83 has turned USE ITEM off."
  },
  {
   "address": 63590,
   "type": "line",
   "text": "The handler for using each object, 0 to 16: the bag $F8A5, the tins $FA3A to $FA46, the bottle $F98D, the knife $F8AB, the can opener $F8AF, the ammunition $FA62, the ham $FA1E, the watch $FA73, the rope $FAA1, the first aid kit $F97E, the dynamite $F888. Objects 10, 11 and 15 have $F865, a RET: using them does nothing."
  },
  {
   "address": 63624,
   "type": "line",
   "text": "I'VE LIT THE FUSE (message $13), the dynamite's colour $D6, the fuse ($8D0B) set to $7F, and its icon redrawn."
  },
  {
   "address": 63653,
   "type": "line",
   "text": "Opens the bag: bit 1 of $C898, so menu 2 shows what is in the bag."
  },
  {
   "address": 63659,
   "type": "line",
   "text": "Opens the tins shown in menu 2 that are still shut: with the knife ($F8AB) each gets half ($80) and NOT AS GOOD AS A TIN OPENER (message $1F); with the can opener ($F8AF) each gets all ($FF). A tin opened is marked ($F627), its contents raised (to at most $FF) and its colour set from them."
  },
  {
   "address": 63760,
   "type": "line",
   "text": "Uses up an object that holds portions (DE its store): the need at HL is filled for all four characters, and the store loses a quarter of what they lacked, plus one; empty, it is cleared with THATS THE LAST OF THAT (message 2) and colour $41, otherwise its colour shows what is left."
  },
  {
   "address": 63855,
   "type": "line",
   "text": "Z with HL when object icon A is in one of menu 2's four object slots ($D0BF, five bytes apart)."
  },
  {
   "address": 63870,
   "type": "line",
   "text": "Fills the party's strength (+0) from the first aid left ($F631)."
  },
  {
   "address": 63885,
   "type": "line",
   "text": "Fills the party's water (+2) from the bottle ($F62F). Then, when its user stands on ground 0 and water ($7E) lies along the row of cells either way, within eight and before any other ground (bank 1), I'LL FILL UP THE BOTTLE (message $23), state 7 with the action kept at 4 or 2: walking to fill it."
  },
  {
   "address": 64002,
   "type": "line",
   "text": "Ground $7D reached while filling: back to following, action $8A, the bottle full ($F62F) and its colour $47."
  },
  {
   "address": 64030,
   "type": "line",
   "text": "The ham is eaten: gone (+1 = 0), everyone's food full, DELICIOUS (message $1E)."
  },
  {
   "address": 64058,
   "type": "line",
   "text": "Tins 1 to 4 ($FA3A, $FA3E, $FA42, $FA46): fill the party's food (+3) from the tin's contents ($F62B on)."
  },
  {
   "address": 64098,
   "type": "line",
   "text": "Fills the party's ammunition (+4) from what is left ($F632)."
  },
  {
   "address": 64115,
   "type": "line",
   "text": "ITS ABOUT __ O'CLOCK (message 13): the hour ($BF2C, 0 to 23) made 1 to 12 (0 as 12) and written into the text at $7D9E."
  },
  {
   "address": 64156,
   "type": "line",
   "text": "$FA9C the one to be rescued (3, Clive); $FA9D-$FA9E his actor; $FA9F-$FAA0 the rescuer's."
  },
  {
   "address": 64161,
   "type": "line",
   "text": "When Clive is in play, the character using the rope, also in play, starts the rescue (state 4)."
  },
  {
   "address": 64192,
   "type": "line",
   "text": "Event 9, one of the party dying: everything he or she carries is put down where they fell ($F801)."
  },
  {
   "address": 64235,
   "type": "line",
   "text": "The three words at HL (across, down, height) over four, into $A03A-$A03C."
  },
  {
   "address": 64255,
   "type": "line",
   "text": "Once a pass: $FB1C counts 0 to 2, and the word $F25B, $F279 or $F295 is written into bank 6 ($AA8B)."
  },
  {
   "address": 64284,
   "type": "line",
   "text": "$FB1C the count for $FAFF; $FB1D the view's colour kept while the dynamite flashes."
  },
  {
   "address": 64286,
   "type": "line",
   "text": "Nine places that start something when the leader stands in them, five bytes each: the area, and the range across and down (from, to). Zone 0 the tribe's welcome (area 5), 1 and 2 near actor $2D (area 5), 3 the capture (area 6), 4 the altar (area 2), 5 where the dynamite goes (area 7), 6 to 8 rivers (areas 5, 6 and 10)."
  },
  {
   "address": 64331,
   "type": "line",
   "text": "The nine zones' routines, $FCF0 to $FCC5."
  },
  {
   "address": 64349,
   "type": "line",
   "text": "$FB5D the zone the leader is in ($FF none); $FB5E the object dropped in it ($FF none); $FB5F a count for the zone, from 0 down."
  },
  {
   "address": 64352,
   "type": "line",
   "text": "Z with HL at the actor of type A when it is in play; NZ otherwise."
  },
  {
   "address": 64380,
   "type": "line",
   "text": "Z (A = 0) when character A is in play in a state of 7 or less. NZ otherwise: in play, A is its state; away from the area, A is the record's state (low six bits), with bit 0 set when 7 or more and carry when below 7."
  },
  {
   "address": 64411,
   "type": "line",
   "text": "The dynamite ($FBED), then the zone the leader stands in ($DB05) is found and its handler run; in none, $FB5D-$FB5F and $8D0E are reset."
  },
  {
   "address": 64493,
   "type": "line",
   "text": "The fuse ($8D0B) counts down. At $0F: the explosion, sound effect 9 on channel A, the view flashes ($BF2E). Carried, the dynamite kills its carrier (state 8); in the bag, the bag is moved to area 0 ($ECD9) and its carrier dies, or, when the bag lay on the ground, the blast is where the bag was. On the ground it kills (state $48) every actor within 9 units but types $10 to $17 and $28 on. The dynamite is moved to area 0; when it was placed in zone 5 (bit 7) records $2B and $2C take route $17 and 10% is added. Below $0F ($FCA5): the leader stops, and the view shakes ($9632) for the rest of the count."
  },
  {
   "address": 64701,
   "type": "line",
   "text": "Zones 6 to 8, the rivers: the leader, in a state below 8, walking in action 2 while above the line at $9C, $2A or $96 down, or in action 4 while below it (running counts as walking), stops (action $80) and says THE CURRENT IS TOO STRONG (message $24)."
  },
  {
   "address": 64752,
   "type": "line",
   "text": "Zone 0: 5% the first time ($8D0D). An object dropped here ends the meeting ($8D0D = $FF) with 10%; the compact (object $0B) adds 5% more and is answered with THATS GREAT TAKE THIS... (message 4), YUMMY ROAST HAM from the leader, and the ham handed over ($F7DC); the object is fetched by type 7 ($F7AF), whose route becomes 7, and the tribe is calm ($F012, $F013 = 0). With nothing dropped $FB5F counts down: WELCOME FOOLISH PEOPLE FROM THE SKY and HAVE SOME FOOD AND REST A WHILE at $C0, a tin (object 1) put in area 5 at $A0, IT IS A CUSTOM TO GIVE SOMETHING IN RETURN at $80 and $40, the tribe turns hostile at $20 ($EFED = 9) and the party may fire on it at $10 ($EFEE = 6); at 0 it is over."
  },
  {
   "address": 64917,
   "type": "line",
   "text": "Queues message B for speaker C (a tribesman, whose letters are mirrored, $D84C), and when Dirk (character 2) is within reach queues it for Dirk too: he translates, beginning HE SAID."
  },
  {
   "address": 64933,
   "type": "line",
   "text": "Zone 2, near actor $2D: its action 0, or 4 every 32nd pass. The ham (object 9) dropped here is put at $ED64's place, $8D0E = $7F and the actor's action 2; then $8D0E counts down, and at $7B $FE01 runs."
  },
  {
   "address": 64995,
   "type": "line",
   "text": "Zone 1, close to actor $2D: its action 4. With $8D0E at $7B, $FE01; at $7F, action 2; otherwise $FE17."
  },
  {
   "address": 65025,
   "type": "line",
   "text": "The object dropped ($FB5E, the ham) is gone (+1 = $1C), $FB5E = $FF, the actor's action 0 and 10% added. With nothing dropped ($FB5E = $FF) the record $F83E finds is at $EDD1, among the waypoints, and $EDD2 becomes $1C."
  },
  {
   "address": 65047,
   "type": "line",
   "text": "With $8D0E at 0 it becomes $FD, and the actor's action 0; at $FF nothing happens. While it is $80 or more it counts down, and the leader is held (bit 6 of $8301, action $80) at the place across from $FFCE (by actor $2D's frame, +$1B) and down $020A, the actor's action 1 once below $F0; from 1 to $7E it counts down with the action 0, and at $7B $FE01 runs whether or not anything was dropped."
  },
  {
   "address": 65115,
   "type": "line",
   "text": "Zone 3, until done ($8D0F): for each of the other three characters, the first within reach has +4 counted down and then action 7; the first away from the area (not in play, in a state below 7) is captured: $8D0C = that character, put in area 2 from $FFDE with records 5 to 7 (the tribe, $FFE5) beside, the tribe calm, the ceremony's count started ($8D15 = 0), 5%, and WHERE HAS <name> GONE from the leader."
  },
  {
   "address": 65224,
   "type": "line",
   "text": "Zone 4: $8D15 counts up, unless it is $FF. The same byte is the calendar's month (main $F465), so a month's end with no ceremony running leaves it at 0 to 3 and the count runs. The jewel (object $0A) dropped here is fetched by type 7 (its route becomes 7), 10% is added and the ceremony ends ($FF7F). Otherwise the captive, when in play, ends it too if in state 2, or else takes state 0 and action 1 and cries HELP; and the tribe speaks at $40, $80 and $C0: MAY THIS SACRIFICE BRING US VICTORY, ALL PRAISE TO THE EVIL ONE and WE COMMIT <name>'S BODY TO THE BOTTOMLESS DEPTHS while the jewel lies in area 2, GIVE US THE SACRED JEWEL AND <name> WILL BE SPARED when it does not; at $C0 type 5 takes route $1A."
  },
  {
   "address": 65360,
   "type": "line",
   "text": "At $E8 (or when a tribesman is shot in this zone, $C817): $8D0C gets bit 7 and the captive, in play, has its across set to $82; type 5, or else 6, has its across set to $7B; then $FF7F."
  },
  {
   "address": 65407,
   "type": "line",
   "text": "$8D15 = $FF and types 5 to 7 take route 4 from point 6 ($FFC1). Being the calendar's month too, $FF makes the next month's end show MAY (main $F465)."
  },
  {
   "address": 65430,
   "type": "line",
   "text": "Zone 5: the dynamite (object $10) dropped here is placed (bit 7 of $8D0B) and $ED66 and $ED69 are changed; otherwise, unless bit 5 of $ED65 is set, WE COULD HAVE DONE WITH SOME DYNAMITE (message 3) from the leader."
  },
  {
   "address": 65473,
   "type": "line",
   "text": "The actor of type A, in play, gets route E from point D (+2, +3)."
  },
  {
   "address": 65486,
   "type": "line",
   "text": "Eight places across for the leader held by actor $2D, by its frame ($FE17)."
  },
  {
   "address": 65502,
   "type": "line",
   "text": "The captive's record from +1 (state 0, area 2, across $5E, down $90), then records 5 to 7 whole, around it in area 2 with routes $18, $19 and none."
  }
 ]
}