{
 "schema": 1,
 "platform": "c64",
 "game": "the-detective",
 "build": "T64 tape image of a cracked release: the game packed into one 44,302-byte program (Trianon, 1987), and a second program of crackers' instructions (Danish Gold, 1987)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    31744,
    32767,
    "screen RAM"
   ],
   [
    2,
    255,
    "runtime: zero page, the game's variables, cleared by the cold start ($2048) and written as it runs"
   ],
   [
    512,
    1023,
    "runtime: the sprite slot tables ($0208-$0264), the typed-line and list buffer ($0300) and the mirror index tables ($0380, $03C0, built by $919E)"
   ],
   [
    1024,
    1279,
    "runtime: the message bar's line buffer ($21D8 writes it, $2B21 reads it)"
   ],
   [
    1280,
    1535,
    "runtime: the multicolour mirror table built at start-up by $2383"
   ],
   [
    1536,
    2047,
    "runtime: the music player's spare byte ($0600) and the save areas for the picture behind each door ($0610 on, $3A27)"
   ],
   [
    2048,
    3071,
    "not the game's: what the crackers' unpacker left in memory, text of another program (\"TOWN RESCUE\", \"KASSETTE OHNE HIGHSCORE\"); no instruction of the game names it"
   ],
   [
    3072,
    6911,
    "runtime: the room map, 15 rows of 256 columns, built for each room by $388D (and the title's tables at $0C00-$0FFF, built by $8DC0)"
   ],
   [
    7360,
    7903,
    "runtime: the room's door lists ($1CC0-$1CFF, built by $388D), the music player's state ($1CE8-$1D1F), and the player's, the cast's and the game's state ($1D41-$1EDF), set at the start of each game and written as it runs"
   ],
   [
    16354,
    16367,
    "unused: fourteen bytes before the flip flags at $3FF0 that no instruction reads"
   ],
   [
    16368,
    16383,
    "runtime: the cast's flip flags ($3FF0-$3FF9) and the number of the room character set in place ($3FFF)"
   ],
   [
    22720,
    22847,
    "runtime: the buffer where a sprite shape is mirrored ($91E0) or a portrait wiped on ($8B01), inside the sprite shapes"
   ],
   [
    31744,
    32767,
    "runtime: the screen and the sprite pointers, drawn by the game"
   ],
   [
    65530,
    65535,
    "runtime: the NMI, reset and IRQ vectors, written by $28FA"
   ]
  ],
  "extra": [
   [
    16384,
    18431,
    "character set"
   ]
  ],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 12,
   "type": "Undefined"
  },
  {
   "start": 13,
   "end": 14,
   "type": "Code"
  },
  {
   "start": 15,
   "end": 6911,
   "type": "Undefined"
  },
  {
   "start": 6912,
   "end": 7359,
   "type": "Byte"
  },
  {
   "start": 7360,
   "end": 7903,
   "type": "Undefined"
  },
  {
   "start": 7904,
   "end": 8191,
   "type": "Byte"
  },
  {
   "start": 8192,
   "end": 8510,
   "type": "Code"
  },
  {
   "start": 8511,
   "end": 8530,
   "type": "Address"
  },
  {
   "start": 8531,
   "end": 8573,
   "type": "PETSCII Text"
  },
  {
   "start": 8574,
   "end": 8930,
   "type": "Code"
  },
  {
   "start": 8931,
   "end": 8952,
   "type": "PETSCII Text"
  },
  {
   "start": 8953,
   "end": 9021,
   "type": "Code"
  },
  {
   "start": 9022,
   "end": 9057,
   "type": "Byte"
  },
  {
   "start": 9058,
   "end": 9289,
   "type": "Code"
  },
  {
   "start": 9290,
   "end": 9342,
   "type": "Byte"
  },
  {
   "start": 9343,
   "end": 9385,
   "type": "Code"
  },
  {
   "start": 9386,
   "end": 9410,
   "type": "Undefined"
  },
  {
   "start": 9411,
   "end": 9479,
   "type": "Code"
  },
  {
   "start": 9480,
   "end": 9482,
   "type": "Undefined"
  },
  {
   "start": 9483,
   "end": 9612,
   "type": "Code"
  },
  {
   "start": 9613,
   "end": 9617,
   "type": "PETSCII Text"
  },
  {
   "start": 9618,
   "end": 9784,
   "type": "Code"
  },
  {
   "start": 9785,
   "end": 9855,
   "type": "PETSCII Text"
  },
  {
   "start": 9856,
   "end": 9909,
   "type": "Code"
  },
  {
   "start": 9910,
   "end": 9917,
   "type": "Byte"
  },
  {
   "start": 9918,
   "end": 10043,
   "type": "Code"
  },
  {
   "start": 10044,
   "end": 10048,
   "type": "Byte"
  },
  {
   "start": 10049,
   "end": 10381,
   "type": "Code"
  },
  {
   "start": 10382,
   "end": 10397,
   "type": "Byte"
  },
  {
   "start": 10398,
   "end": 10563,
   "type": "Code"
  },
  {
   "start": 10564,
   "end": 10569,
   "type": "Address"
  },
  {
   "start": 10570,
   "end": 10648,
   "type": "Code"
  },
  {
   "start": 10649,
   "end": 10654,
   "type": "Address"
  },
  {
   "start": 10655,
   "end": 10657,
   "type": "Byte"
  },
  {
   "start": 10658,
   "end": 10660,
   "type": "Code"
  },
  {
   "start": 10661,
   "end": 10672,
   "type": "Byte"
  },
  {
   "start": 10673,
   "end": 11022,
   "type": "Code"
  },
  {
   "start": 11023,
   "end": 11040,
   "type": "Address"
  },
  {
   "start": 11041,
   "end": 11307,
   "type": "Code"
  },
  {
   "start": 11308,
   "end": 11327,
   "type": "Byte"
  },
  {
   "start": 11328,
   "end": 11386,
   "type": "Code"
  },
  {
   "start": 11387,
   "end": 11394,
   "type": "Byte"
  },
  {
   "start": 11395,
   "end": 11591,
   "type": "Code"
  },
  {
   "start": 11592,
   "end": 11599,
   "type": "Address"
  },
  {
   "start": 11600,
   "end": 11927,
   "type": "Code"
  },
  {
   "start": 11928,
   "end": 11955,
   "type": "Byte"
  },
  {
   "start": 11956,
   "end": 12464,
   "type": "Code"
  },
  {
   "start": 12465,
   "end": 12473,
   "type": "Byte"
  },
  {
   "start": 12474,
   "end": 12609,
   "type": "Code"
  },
  {
   "start": 12610,
   "end": 12637,
   "type": "PETSCII Text"
  },
  {
   "start": 12638,
   "end": 13191,
   "type": "Code"
  },
  {
   "start": 13192,
   "end": 13218,
   "type": "Byte"
  },
  {
   "start": 13219,
   "end": 13528,
   "type": "Code"
  },
  {
   "start": 13529,
   "end": 13544,
   "type": "Byte"
  },
  {
   "start": 13545,
   "end": 14119,
   "type": "Code"
  },
  {
   "start": 14120,
   "end": 14125,
   "type": "Byte"
  },
  {
   "start": 14126,
   "end": 14131,
   "type": "PETSCII Text"
  },
  {
   "start": 14132,
   "end": 14162,
   "type": "Byte"
  },
  {
   "start": 14163,
   "end": 14771,
   "type": "Code"
  },
  {
   "start": 14772,
   "end": 14795,
   "type": "Address"
  },
  {
   "start": 14796,
   "end": 15139,
   "type": "Code"
  },
  {
   "start": 15140,
   "end": 15163,
   "type": "Address"
  },
  {
   "start": 15164,
   "end": 15497,
   "type": "Code"
  },
  {
   "start": 15498,
   "end": 15513,
   "type": "Byte"
  },
  {
   "start": 15514,
   "end": 16092,
   "type": "Code"
  },
  {
   "start": 16093,
   "end": 16107,
   "type": "PETSCII Text"
  },
  {
   "start": 16108,
   "end": 16111,
   "type": "Code"
  },
  {
   "start": 16112,
   "end": 16134,
   "type": "PETSCII Text"
  },
  {
   "start": 16135,
   "end": 16138,
   "type": "Code"
  },
  {
   "start": 16139,
   "end": 16156,
   "type": "PETSCII Text"
  },
  {
   "start": 16157,
   "end": 16350,
   "type": "Code"
  },
  {
   "start": 16351,
   "end": 16383,
   "type": "Undefined"
  },
  {
   "start": 16384,
   "end": 19087,
   "type": "Byte"
  },
  {
   "start": 19088,
   "end": 19325,
   "type": "PETSCII Text"
  },
  {
   "start": 19326,
   "end": 31743,
   "type": "Byte"
  },
  {
   "start": 31744,
   "end": 32767,
   "type": "Undefined"
  },
  {
   "start": 32768,
   "end": 32771,
   "type": "Address"
  },
  {
   "start": 32772,
   "end": 32776,
   "type": "PETSCII Text"
  },
  {
   "start": 32777,
   "end": 33036,
   "type": "Code"
  },
  {
   "start": 33037,
   "end": 33047,
   "type": "PETSCII Text"
  },
  {
   "start": 33048,
   "end": 33071,
   "type": "Code"
  },
  {
   "start": 33072,
   "end": 33740,
   "type": "PETSCII Text"
  },
  {
   "start": 33741,
   "end": 33792,
   "type": "Byte"
  },
  {
   "start": 33793,
   "end": 34148,
   "type": "PETSCII Text"
  },
  {
   "start": 34149,
   "end": 34151,
   "type": "Undefined"
  },
  {
   "start": 34152,
   "end": 34281,
   "type": "Code"
  },
  {
   "start": 34282,
   "end": 34431,
   "type": "PETSCII Text"
  },
  {
   "start": 34432,
   "end": 34689,
   "type": "Code"
  },
  {
   "start": 34690,
   "end": 34776,
   "type": "Byte"
  },
  {
   "start": 34777,
   "end": 34796,
   "type": "Code"
  },
  {
   "start": 34797,
   "end": 34832,
   "type": "Address"
  },
  {
   "start": 34833,
   "end": 34853,
   "type": "Code"
  },
  {
   "start": 34854,
   "end": 34873,
   "type": "Address"
  },
  {
   "start": 34874,
   "end": 34921,
   "type": "Code"
  },
  {
   "start": 34922,
   "end": 34937,
   "type": "PETSCII Text"
  },
  {
   "start": 34938,
   "end": 35100,
   "type": "Code"
  },
  {
   "start": 35101,
   "end": 35113,
   "type": "PETSCII Text"
  },
  {
   "start": 35114,
   "end": 35143,
   "type": "Code"
  },
  {
   "start": 35144,
   "end": 35151,
   "type": "PETSCII Text"
  },
  {
   "start": 35152,
   "end": 35158,
   "type": "Code"
  },
  {
   "start": 35159,
   "end": 35177,
   "type": "PETSCII Text"
  },
  {
   "start": 35178,
   "end": 35205,
   "type": "Code"
  },
  {
   "start": 35206,
   "end": 35214,
   "type": "PETSCII Text"
  },
  {
   "start": 35215,
   "end": 35265,
   "type": "Code"
  },
  {
   "start": 35266,
   "end": 35273,
   "type": "PETSCII Text"
  },
  {
   "start": 35274,
   "end": 35277,
   "type": "Code"
  },
  {
   "start": 35278,
   "end": 35305,
   "type": "PETSCII Text"
  },
  {
   "start": 35306,
   "end": 35306,
   "type": "Code"
  },
  {
   "start": 35307,
   "end": 35358,
   "type": "Byte"
  },
  {
   "start": 35359,
   "end": 35394,
   "type": "Code"
  },
  {
   "start": 35395,
   "end": 35412,
   "type": "PETSCII Text"
  },
  {
   "start": 35413,
   "end": 35428,
   "type": "Code"
  },
  {
   "start": 35429,
   "end": 35455,
   "type": "PETSCII Text"
  },
  {
   "start": 35456,
   "end": 35474,
   "type": "Code"
  },
  {
   "start": 35475,
   "end": 35494,
   "type": "PETSCII Text"
  },
  {
   "start": 35495,
   "end": 35539,
   "type": "Code"
  },
  {
   "start": 35540,
   "end": 35562,
   "type": "PETSCII Text"
  },
  {
   "start": 35563,
   "end": 35563,
   "type": "Code"
  },
  {
   "start": 35564,
   "end": 35566,
   "type": "Byte"
  },
  {
   "start": 35567,
   "end": 35578,
   "type": "Code"
  },
  {
   "start": 35579,
   "end": 35584,
   "type": "PETSCII Text"
  },
  {
   "start": 35585,
   "end": 35968,
   "type": "Code"
  },
  {
   "start": 35969,
   "end": 36033,
   "type": "Byte"
  },
  {
   "start": 36034,
   "end": 36104,
   "type": "Code"
  },
  {
   "start": 36105,
   "end": 36114,
   "type": "Byte"
  },
  {
   "start": 36115,
   "end": 36239,
   "type": "Code"
  },
  {
   "start": 36240,
   "end": 36287,
   "type": "Byte"
  },
  {
   "start": 36288,
   "end": 36452,
   "type": "Code"
  },
  {
   "start": 36453,
   "end": 37160,
   "type": "PETSCII Text"
  },
  {
   "start": 37161,
   "end": 37319,
   "type": "Code"
  },
  {
   "start": 37320,
   "end": 37343,
   "type": "Byte"
  },
  {
   "start": 37344,
   "end": 37397,
   "type": "Code"
  },
  {
   "start": 37398,
   "end": 37440,
   "type": "Byte"
  },
  {
   "start": 37441,
   "end": 37810,
   "type": "Code"
  },
  {
   "start": 37811,
   "end": 37833,
   "type": "Byte"
  },
  {
   "start": 37834,
   "end": 38080,
   "type": "Code"
  },
  {
   "start": 38081,
   "end": 38083,
   "type": "Byte"
  },
  {
   "start": 38084,
   "end": 38833,
   "type": "Code"
  },
  {
   "start": 38834,
   "end": 38987,
   "type": "Byte"
  },
  {
   "start": 38988,
   "end": 39353,
   "type": "Code"
  },
  {
   "start": 39354,
   "end": 39361,
   "type": "Address"
  },
  {
   "start": 39362,
   "end": 39455,
   "type": "Code"
  },
  {
   "start": 39456,
   "end": 39485,
   "type": "PETSCII Text"
  },
  {
   "start": 39486,
   "end": 39494,
   "type": "Code"
  },
  {
   "start": 39495,
   "end": 40556,
   "type": "PETSCII Text"
  },
  {
   "start": 40557,
   "end": 40608,
   "type": "Code"
  },
  {
   "start": 40609,
   "end": 41324,
   "type": "PETSCII Text"
  },
  {
   "start": 41325,
   "end": 41337,
   "type": "Code"
  },
  {
   "start": 41338,
   "end": 41351,
   "type": "PETSCII Text"
  },
  {
   "start": 41352,
   "end": 41355,
   "type": "Code"
  },
  {
   "start": 41356,
   "end": 41392,
   "type": "PETSCII Text"
  },
  {
   "start": 41393,
   "end": 41408,
   "type": "Code"
  },
  {
   "start": 41409,
   "end": 41439,
   "type": "PETSCII Text"
  },
  {
   "start": 41440,
   "end": 41442,
   "type": "Code"
  },
  {
   "start": 41443,
   "end": 41469,
   "type": "PETSCII Text"
  },
  {
   "start": 41470,
   "end": 41485,
   "type": "Code"
  },
  {
   "start": 41486,
   "end": 41523,
   "type": "PETSCII Text"
  },
  {
   "start": 41524,
   "end": 41543,
   "type": "Code"
  },
  {
   "start": 41544,
   "end": 41549,
   "type": "PETSCII Text"
  },
  {
   "start": 41550,
   "end": 41559,
   "type": "Code"
  },
  {
   "start": 41560,
   "end": 41597,
   "type": "PETSCII Text"
  },
  {
   "start": 41598,
   "end": 41622,
   "type": "Code"
  },
  {
   "start": 41623,
   "end": 41625,
   "type": "PETSCII Text"
  },
  {
   "start": 41626,
   "end": 41728,
   "type": "Code"
  },
  {
   "start": 41729,
   "end": 41737,
   "type": "PETSCII Text"
  },
  {
   "start": 41738,
   "end": 41750,
   "type": "Code"
  },
  {
   "start": 41751,
   "end": 41755,
   "type": "PETSCII Text"
  },
  {
   "start": 41756,
   "end": 41772,
   "type": "Code"
  },
  {
   "start": 41773,
   "end": 41781,
   "type": "PETSCII Text"
  },
  {
   "start": 41782,
   "end": 41785,
   "type": "Code"
  },
  {
   "start": 41786,
   "end": 41801,
   "type": "PETSCII Text"
  },
  {
   "start": 41802,
   "end": 41813,
   "type": "Code"
  },
  {
   "start": 41814,
   "end": 41822,
   "type": "PETSCII Text"
  },
  {
   "start": 41823,
   "end": 41825,
   "type": "Code"
  },
  {
   "start": 41826,
   "end": 41960,
   "type": "PETSCII Text"
  },
  {
   "start": 41961,
   "end": 42079,
   "type": "Byte"
  },
  {
   "start": 42080,
   "end": 42183,
   "type": "Code"
  },
  {
   "start": 42184,
   "end": 42237,
   "type": "Address"
  },
  {
   "start": 42238,
   "end": 42264,
   "type": "Byte"
  },
  {
   "start": 42265,
   "end": 42535,
   "type": "Code"
  },
  {
   "start": 42536,
   "end": 42549,
   "type": "PETSCII Text"
  },
  {
   "start": 42550,
   "end": 43002,
   "type": "Code"
  },
  {
   "start": 43003,
   "end": 43020,
   "type": "Address"
  },
  {
   "start": 43021,
   "end": 43234,
   "type": "Code"
  },
  {
   "start": 43235,
   "end": 43261,
   "type": "PETSCII Text"
  },
  {
   "start": 43262,
   "end": 43267,
   "type": "Code"
  },
  {
   "start": 43268,
   "end": 44181,
   "type": "Byte"
  },
  {
   "start": 44182,
   "end": 44228,
   "type": "Code"
  },
  {
   "start": 44229,
   "end": 44267,
   "type": "PETSCII Text"
  },
  {
   "start": 44268,
   "end": 44332,
   "type": "Code"
  },
  {
   "start": 44333,
   "end": 45452,
   "type": "Byte"
  },
  {
   "start": 45453,
   "end": 45569,
   "type": "Code"
  },
  {
   "start": 45570,
   "end": 45575,
   "type": "Undefined"
  },
  {
   "start": 45576,
   "end": 45578,
   "type": "Code"
  },
  {
   "start": 45579,
   "end": 45602,
   "type": "PETSCII Text"
  },
  {
   "start": 45603,
   "end": 45667,
   "type": "Code"
  },
  {
   "start": 45668,
   "end": 45677,
   "type": "PETSCII Text"
  },
  {
   "start": 45678,
   "end": 45712,
   "type": "Code"
  },
  {
   "start": 45713,
   "end": 45720,
   "type": "PETSCII Text"
  },
  {
   "start": 45721,
   "end": 45742,
   "type": "Code"
  },
  {
   "start": 45743,
   "end": 45757,
   "type": "PETSCII Text"
  },
  {
   "start": 45758,
   "end": 45769,
   "type": "Code"
  },
  {
   "start": 45770,
   "end": 45785,
   "type": "Byte"
  },
  {
   "start": 45786,
   "end": 45873,
   "type": "Code"
  },
  {
   "start": 45874,
   "end": 45917,
   "type": "PETSCII Text"
  },
  {
   "start": 45918,
   "end": 45977,
   "type": "Code"
  },
  {
   "start": 45978,
   "end": 45983,
   "type": "Address"
  },
  {
   "start": 45984,
   "end": 45998,
   "type": "Code"
  },
  {
   "start": 45999,
   "end": 46542,
   "type": "PETSCII Text"
  },
  {
   "start": 46543,
   "end": 46545,
   "type": "Code"
  },
  {
   "start": 46546,
   "end": 46558,
   "type": "PETSCII Text"
  },
  {
   "start": 46559,
   "end": 46655,
   "type": "Code"
  },
  {
   "start": 46656,
   "end": 46681,
   "type": "PETSCII Text"
  },
  {
   "start": 46682,
   "end": 46721,
   "type": "Code"
  },
  {
   "start": 46722,
   "end": 47071,
   "type": "PETSCII Text"
  },
  {
   "start": 47072,
   "end": 47252,
   "type": "Code"
  },
  {
   "start": 47253,
   "end": 47863,
   "type": "PETSCII Text"
  },
  {
   "start": 47864,
   "end": 47894,
   "type": "Code"
  },
  {
   "start": 47895,
   "end": 47904,
   "type": "Byte"
  },
  {
   "start": 47905,
   "end": 47907,
   "type": "Code"
  },
  {
   "start": 47908,
   "end": 47950,
   "type": "PETSCII Text"
  },
  {
   "start": 47951,
   "end": 47954,
   "type": "Code"
  },
  {
   "start": 47955,
   "end": 47976,
   "type": "PETSCII Text"
  },
  {
   "start": 47977,
   "end": 48124,
   "type": "Code"
  },
  {
   "start": 48125,
   "end": 48216,
   "type": "PETSCII Text"
  },
  {
   "start": 48217,
   "end": 48261,
   "type": "Code"
  },
  {
   "start": 48262,
   "end": 48302,
   "type": "PETSCII Text"
  },
  {
   "start": 48303,
   "end": 48330,
   "type": "Code"
  },
  {
   "start": 48331,
   "end": 48362,
   "type": "PETSCII Text"
  },
  {
   "start": 48363,
   "end": 48385,
   "type": "Code"
  },
  {
   "start": 48386,
   "end": 48434,
   "type": "PETSCII Text"
  },
  {
   "start": 48435,
   "end": 48435,
   "type": "Code"
  },
  {
   "start": 48436,
   "end": 48530,
   "type": "PETSCII Text"
  },
  {
   "start": 48531,
   "end": 48626,
   "type": "Code"
  },
  {
   "start": 48627,
   "end": 48668,
   "type": "PETSCII Text"
  },
  {
   "start": 48669,
   "end": 48691,
   "type": "Code"
  },
  {
   "start": 48692,
   "end": 48696,
   "type": "PETSCII Text"
  },
  {
   "start": 48697,
   "end": 48715,
   "type": "Code"
  },
  {
   "start": 48716,
   "end": 48723,
   "type": "PETSCII Text"
  },
  {
   "start": 48724,
   "end": 48726,
   "type": "Code"
  },
  {
   "start": 48727,
   "end": 48742,
   "type": "PETSCII Text"
  },
  {
   "start": 48743,
   "end": 48743,
   "type": "Code"
  },
  {
   "start": 48744,
   "end": 48765,
   "type": "PETSCII Text"
  },
  {
   "start": 48766,
   "end": 48954,
   "type": "Code"
  },
  {
   "start": 48955,
   "end": 48972,
   "type": "Byte"
  },
  {
   "start": 48973,
   "end": 49171,
   "type": "Code"
  },
  {
   "start": 49172,
   "end": 49193,
   "type": "PETSCII Text"
  },
  {
   "start": 49194,
   "end": 49386,
   "type": "Code"
  },
  {
   "start": 49387,
   "end": 59519,
   "type": "Byte"
  },
  {
   "start": 59520,
   "end": 59583,
   "type": "Undefined"
  },
  {
   "start": 59584,
   "end": 64959,
   "type": "Byte"
  },
  {
   "start": 64960,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2,
   "name": "zpf_02",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27,
   "name": "zpa_1B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32,
   "name": "zpa_20",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpa_23",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "zpa_34",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpa_35",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56,
   "name": "zpa_38",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpa_39",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64,
   "name": "zpa_40",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpa_45",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 72,
   "name": "zpa_48",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 73,
   "name": "zpa_49",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpa_4A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpa_4B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpa_4D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 80,
   "name": "zpa_50",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpa_53",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "zpa_57",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "zpa_59",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "zpa_5B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "zpa_5C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 93,
   "name": "zpa_5D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 94,
   "name": "zpa_5E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 98,
   "name": "zpa_62",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpa_63",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 100,
   "name": "zpa_64",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "zpa_69",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "zpa_6A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 108,
   "name": "zpa_6C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpa_6D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpa_6F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 112,
   "name": "zpa_70",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 113,
   "name": "zpa_71",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 114,
   "name": "zpa_72",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 115,
   "name": "zpa_73",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpa_74",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpa_88",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 160,
   "name": "zpa_A0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "a_00A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpa_A6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpa_A7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpa_A8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 169,
   "name": "zpa_A9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "zpa_AE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 175,
   "name": "zpa_AF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 176,
   "name": "zpa_B0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 178,
   "name": "zpa_B2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 179,
   "name": "zpa_B3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 182,
   "name": "zpa_B6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 187,
   "name": "zpp_BB",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 188,
   "name": "zpa_BC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 189,
   "name": "zpa_BD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 190,
   "name": "zpa_BE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpa_C0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpa_C1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 194,
   "name": "zpa_C2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpa_C3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 196,
   "name": "zpa_C4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpa_C7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpa_C8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 201,
   "name": "zpa_C9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 202,
   "name": "zpa_CA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "zpa_D1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpa_D2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 243,
   "name": "zpp_F3",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 244,
   "name": "zpa_F4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 256,
   "name": "f_0100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 292,
   "name": "p_0124",
   "type": "Pointer",
   "kind": "auto"
  },
  {
   "address": 293,
   "name": "a_0125",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 295,
   "name": "a_0127",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 296,
   "name": "a_0128",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 297,
   "name": "a_0129",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 298,
   "name": "a_012A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 300,
   "name": "a_012C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 301,
   "name": "a_012D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 302,
   "name": "a_012E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 303,
   "name": "a_012F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 304,
   "name": "a_0130",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 307,
   "name": "a_0133",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 308,
   "name": "a_0134",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 312,
   "name": "a_0138",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 313,
   "name": "a_0139",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 314,
   "name": "a_013A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 315,
   "name": "a_013B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 316,
   "name": "a_013C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 317,
   "name": "a_013D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 318,
   "name": "a_013E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 319,
   "name": "a_013F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 320,
   "name": "a_0140",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 321,
   "name": "a_0141",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 322,
   "name": "a_0142",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 323,
   "name": "a_0143",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 324,
   "name": "a_0144",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 325,
   "name": "a_0145",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 326,
   "name": "a_0146",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 327,
   "name": "a_0147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 328,
   "name": "a_0148",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 330,
   "name": "a_014A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 331,
   "name": "a_014B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 332,
   "name": "a_014C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 333,
   "name": "a_014D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 334,
   "name": "a_014E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 335,
   "name": "a_014F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 425,
   "name": "a_01A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 520,
   "name": "f_0208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 528,
   "name": "f_0210",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 536,
   "name": "f_0218",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 544,
   "name": "f_0220",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 552,
   "name": "f_0228",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 560,
   "name": "f_0230",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 568,
   "name": "f_0238",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 569,
   "name": "a_0239",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 576,
   "name": "f_0240",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 577,
   "name": "a_0241",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 578,
   "name": "a_0242",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 579,
   "name": "a_0243",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 580,
   "name": "f_0244",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 581,
   "name": "a_0245",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 582,
   "name": "a_0246",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 583,
   "name": "a_0247",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 584,
   "name": "f_0248",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 592,
   "name": "f_0250",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 602,
   "name": "f_025A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 612,
   "name": "f_0264",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 622,
   "name": "a_026E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 623,
   "name": "a_026F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 625,
   "name": "a_0271",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 626,
   "name": "a_0272",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 672,
   "name": "a_02A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 673,
   "name": "a_02A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 674,
   "name": "a_02A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 675,
   "name": "a_02A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 676,
   "name": "a_02A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 678,
   "name": "a_02A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 679,
   "name": "a_02A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 681,
   "name": "a_02A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 758,
   "name": "a_02F6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 760,
   "name": "a_02F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 761,
   "name": "a_02F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 768,
   "name": "f_0300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 873,
   "name": "a_0369",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 896,
   "name": "f_0380",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 897,
   "name": "f_0381",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 898,
   "name": "f_0382",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 959,
   "name": "a_03BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 960,
   "name": "f_03C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1280,
   "name": "f_0500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1442,
   "name": "a_05A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1449,
   "name": "a_05A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1536,
   "name": "a_0600",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3072,
   "name": "f_0C00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3136,
   "name": "f_0C40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3200,
   "name": "f_0C80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3328,
   "name": "f_0D00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3584,
   "name": "f_0E00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3840,
   "name": "f_0F00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4096,
   "name": "f_1000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4347,
   "name": "f_10FB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4350,
   "name": "f_10FE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4352,
   "name": "f_1100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4608,
   "name": "f_1200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4862,
   "name": "f_12FE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4863,
   "name": "f_12FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 4864,
   "name": "f_1300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5116,
   "name": "f_13FC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5117,
   "name": "f_13FD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5118,
   "name": "f_13FE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5119,
   "name": "f_13FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5120,
   "name": "f_1400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5376,
   "name": "f_1500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5632,
   "name": "f_1600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 5888,
   "name": "f_1700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6144,
   "name": "f_1800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6400,
   "name": "f_1900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6655,
   "name": "f_19FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6656,
   "name": "f_1A00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6657,
   "name": "f_1A01",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6658,
   "name": "f_1A02",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6659,
   "name": "f_1A03",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6660,
   "name": "f_1A04",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6661,
   "name": "f_1A05",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6912,
   "name": "object_rects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6944,
   "name": "object_rect_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6976,
   "name": "object_rect_back",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7008,
   "name": "object_rect_front",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7040,
   "name": "room_colours1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7072,
   "name": "room_colours2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7104,
   "name": "room_types",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7136,
   "name": "room_depths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7168,
   "name": "room_fronts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7200,
   "name": "room_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7232,
   "name": "room_object_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7233,
   "name": "a_1C41",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7234,
   "name": "a_1C42",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7244,
   "name": "a_1C4C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7264,
   "name": "a_1C60",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7274,
   "name": "a_1C6A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7290,
   "name": "a_1C7A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7307,
   "name": "a_1C8B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7360,
   "name": "f_1CC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7380,
   "name": "f_1CD4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7390,
   "name": "f_1CDE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7400,
   "name": "f_1CE8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7403,
   "name": "f_1CEB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7406,
   "name": "f_1CEE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7409,
   "name": "f_1CF1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7412,
   "name": "f_1CF4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7415,
   "name": "a_1CF7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7416,
   "name": "f_1CF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7419,
   "name": "f_1CFB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7420,
   "name": "a_1CFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7421,
   "name": "a_1CFD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7422,
   "name": "f_1CFE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7425,
   "name": "f_1D01",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7428,
   "name": "a_1D04",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7429,
   "name": "a_1D05",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7430,
   "name": "f_1D06",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7433,
   "name": "f_1D09",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7436,
   "name": "f_1D0C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7439,
   "name": "f_1D0F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7442,
   "name": "f_1D12",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7445,
   "name": "f_1D15",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7448,
   "name": "f_1D18",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7451,
   "name": "f_1D1B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7454,
   "name": "f_1D1E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7489,
   "name": "f_1D41",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7490,
   "name": "f_1D42",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7493,
   "name": "a_1D45",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7494,
   "name": "a_1D46",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7496,
   "name": "a_1D48",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7497,
   "name": "a_1D49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7498,
   "name": "a_1D4A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7499,
   "name": "a_1D4B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7500,
   "name": "f_1D4C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7509,
   "name": "a_1D55",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7510,
   "name": "f_1D56",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7519,
   "name": "f_1D5F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7520,
   "name": "f_1D60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7529,
   "name": "a_1D69",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7530,
   "name": "f_1D6A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7533,
   "name": "a_1D6D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7534,
   "name": "a_1D6E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7536,
   "name": "a_1D70",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7538,
   "name": "a_1D72",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7539,
   "name": "a_1D73",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7540,
   "name": "f_1D74",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7543,
   "name": "a_1D77",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7544,
   "name": "a_1D78",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7546,
   "name": "a_1D7A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7548,
   "name": "a_1D7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7549,
   "name": "a_1D7D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7550,
   "name": "f_1D7E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7553,
   "name": "a_1D81",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7554,
   "name": "a_1D82",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7556,
   "name": "a_1D84",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7558,
   "name": "a_1D86",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7569,
   "name": "a_1D91",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7570,
   "name": "f_1D92",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7573,
   "name": "a_1D95",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7574,
   "name": "a_1D96",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7576,
   "name": "a_1D98",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7578,
   "name": "a_1D9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7579,
   "name": "a_1D9B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7580,
   "name": "f_1D9C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7583,
   "name": "a_1D9F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7586,
   "name": "a_1DA2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7588,
   "name": "a_1DA4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7589,
   "name": "a_1DA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7590,
   "name": "a_1DA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7591,
   "name": "a_1DA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7592,
   "name": "a_1DA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7593,
   "name": "a_1DA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7594,
   "name": "a_1DAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7595,
   "name": "a_1DAB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7596,
   "name": "f_1DAC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7597,
   "name": "a_1DAD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7600,
   "name": "a_1DB0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7616,
   "name": "a_1DC0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7624,
   "name": "a_1DC8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7645,
   "name": "a_1DDD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7648,
   "name": "a_1DE0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7649,
   "name": "a_1DE1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7650,
   "name": "a_1DE2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7651,
   "name": "a_1DE3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7652,
   "name": "a_1DE4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7653,
   "name": "a_1DE5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7654,
   "name": "a_1DE6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7655,
   "name": "a_1DE7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7656,
   "name": "a_1DE8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7657,
   "name": "a_1DE9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7658,
   "name": "a_1DEA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7659,
   "name": "a_1DEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7660,
   "name": "f_1DEC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7661,
   "name": "a_1DED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7662,
   "name": "a_1DEE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7663,
   "name": "a_1DEF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7664,
   "name": "a_1DF0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7665,
   "name": "a_1DF1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7666,
   "name": "a_1DF2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7667,
   "name": "a_1DF3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7668,
   "name": "f_1DF4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7676,
   "name": "a_1DFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7677,
   "name": "f_1DFD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7686,
   "name": "f_1E06",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7694,
   "name": "a_1E0E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7695,
   "name": "f_1E0F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7704,
   "name": "f_1E18",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7722,
   "name": "f_1E2A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7731,
   "name": "f_1E33",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7739,
   "name": "a_1E3B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7740,
   "name": "f_1E3C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7749,
   "name": "f_1E45",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7758,
   "name": "a_1E4E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7759,
   "name": "a_1E4F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7770,
   "name": "f_1E5A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7780,
   "name": "a_1E64",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7781,
   "name": "a_1E65",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7782,
   "name": "a_1E66",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7783,
   "name": "a_1E67",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7784,
   "name": "a_1E68",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7785,
   "name": "a_1E69",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7786,
   "name": "a_1E6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7787,
   "name": "a_1E6B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7788,
   "name": "a_1E6C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7789,
   "name": "f_1E6D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7797,
   "name": "a_1E75",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7798,
   "name": "f_1E76",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7806,
   "name": "a_1E7E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7807,
   "name": "f_1E7F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7816,
   "name": "f_1E88",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7824,
   "name": "a_1E90",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7825,
   "name": "a_1E91",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7826,
   "name": "f_1E92",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7835,
   "name": "a_1E9B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7836,
   "name": "f_1E9C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7845,
   "name": "a_1EA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7846,
   "name": "f_1EA6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7854,
   "name": "a_1EAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7855,
   "name": "f_1EAF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7859,
   "name": "f_1EB3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7860,
   "name": "f_1EB4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7869,
   "name": "f_1EBD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7874,
   "name": "a_1EC2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7875,
   "name": "a_1EC3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7876,
   "name": "f_1EC4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7882,
   "name": "a_1ECA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7883,
   "name": "a_1ECB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7884,
   "name": "a_1ECC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7885,
   "name": "a_1ECD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7886,
   "name": "a_1ECE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7887,
   "name": "a_1ECF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7888,
   "name": "a_1ED0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7889,
   "name": "a_1ED1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7890,
   "name": "a_1ED2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7891,
   "name": "f_1ED3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7894,
   "name": "f_1ED6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 7897,
   "name": "a_1ED9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7904,
   "name": "room_charsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7936,
   "name": "doors",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7937,
   "name": "f_1F01",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7938,
   "name": "f_1F02",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7939,
   "name": "f_1F03",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7940,
   "name": "f_1F04",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7941,
   "name": "f_1F05",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7942,
   "name": "f_1F06",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7943,
   "name": "f_1F07",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7956,
   "name": "door_2_flags",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7964,
   "name": "door_3_flags",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8100,
   "name": "door_20_flags",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8192,
   "name": "engine_jump_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8195,
   "name": "j_2003",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8198,
   "name": "j_2006",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8201,
   "name": "s_2009",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8204,
   "name": "s_200C",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8207,
   "name": "j_200F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8210,
   "name": "s_2012",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8213,
   "name": "j_2015",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8216,
   "name": "a_2018",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8219,
   "name": "a_201B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8222,
   "name": "s_201E",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8225,
   "name": "j_2021",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8228,
   "name": "s_2024",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8234,
   "name": "s_202A",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8237,
   "name": "j_202D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8240,
   "name": "s_2030",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8243,
   "name": "j_2033",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8246,
   "name": "j_2036",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8249,
   "name": "j_2039",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8252,
   "name": "s_203C",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8255,
   "name": "j_203F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8258,
   "name": "j_2042",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8261,
   "name": "s_2045",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8264,
   "name": "start_cold",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8277,
   "name": "b_2055",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8287,
   "name": "b_205F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8295,
   "name": "start_warm",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8425,
   "name": "a_20E9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8452,
   "name": "b_2104",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8480,
   "name": "task_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8482,
   "name": "b_2122",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8508,
   "name": "call_task",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8511,
   "name": "task_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8512,
   "name": "f_2140",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8531,
   "name": "str_start_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8536,
   "name": "str_time_limit",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8541,
   "name": "str_introducing",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8574,
   "name": "video_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8622,
   "name": "sound_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8626,
   "name": "b_21B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8634,
   "name": "b_21BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8646,
   "name": "print_ay",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8650,
   "name": "j_21CA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8652,
   "name": "j_21CC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8663,
   "name": "r_21D7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8664,
   "name": "print_char",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8680,
   "name": "b_21E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8704,
   "name": "read_joystick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8734,
   "name": "b_221E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8740,
   "name": "test_fire_press",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8749,
   "name": "title_sequence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8751,
   "name": "b_222F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8766,
   "name": "b_223E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8785,
   "name": "b_2251",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8787,
   "name": "b_2253",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8839,
   "name": "b_2287",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8857,
   "name": "b_2299",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8870,
   "name": "b_22A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8877,
   "name": "b_22AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8894,
   "name": "swap_charsets",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8907,
   "name": "b_22CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8909,
   "name": "b_22CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8931,
   "name": "str_copyright",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8953,
   "name": "clear_sprite_tables",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8955,
   "name": "b_22FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8979,
   "name": "colour_rows_grey",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8981,
   "name": "b_2315",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8988,
   "name": "b_231C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8997,
   "name": "title_panel_box",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8999,
   "name": "b_2327",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9022,
   "name": "title_box_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9034,
   "name": "title_sprite_init",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9042,
   "name": "f_2352",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9050,
   "name": "f_235A",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9058,
   "name": "title_sprites_rise",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9072,
   "name": "b_2370",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9084,
   "name": "b_237C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9090,
   "name": "r_2382",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9091,
   "name": "make_mirror_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9093,
   "name": "b_2385",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9097,
   "name": "b_2389",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9121,
   "name": "b_23A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9128,
   "name": "draw_title_logo",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9140,
   "name": "j_23B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9149,
   "name": "b_23BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9161,
   "name": "b_23C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9173,
   "name": "b_23D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9188,
   "name": "b_23E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9221,
   "name": "clear_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9223,
   "name": "b_2407",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9230,
   "name": "b_240E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9239,
   "name": "unused_ldx0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9241,
   "name": "row_address",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9251,
   "name": "colour_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9264,
   "name": "panel_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9271,
   "name": "row_address_57",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9290,
   "name": "row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9316,
   "name": "row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9343,
   "name": "next_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9354,
   "name": "b_248A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9357,
   "name": "prev_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9370,
   "name": "clear_status_lines",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9372,
   "name": "b_249C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9386,
   "name": "print_inline_21C6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9411,
   "name": "show_sprite4",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9457,
   "name": "draw_1500_marker",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9479,
   "name": "r_2507",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9480,
   "name": "marker_offsets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9483,
   "name": "place_sprite_pair",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9516,
   "name": "j_252C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9519,
   "name": "j_252F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9522,
   "name": "b_2532",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9558,
   "name": "b_2556",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9581,
   "name": "b_256D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9584,
   "name": "clock_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9586,
   "name": "b_2572",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9606,
   "name": "b_2586",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9609,
   "name": "b_2589",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9612,
   "name": "r_258C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9613,
   "name": "clock_digit_limits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9618,
   "name": "time_up_check",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9633,
   "name": "b_25A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9648,
   "name": "b_25B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9663,
   "name": "game_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9679,
   "name": "b_25CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9686,
   "name": "set_end_values",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9705,
   "name": "end_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9726,
   "name": "noise_burst",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9772,
   "name": "delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9774,
   "name": "b_262E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9776,
   "name": "b_2630",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9785,
   "name": "str_shot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9819,
   "name": "str_game_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9837,
   "name": "str_lights_out",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9856,
   "name": "state9_clear_panel",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9862,
   "name": "b_2686",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9869,
   "name": "b_268D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9878,
   "name": "lights_out",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9889,
   "name": "sprite_x_high",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9891,
   "name": "s_26A3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9906,
   "name": "b_26B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9910,
   "name": "bit_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9918,
   "name": "text_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9935,
   "name": "b_26CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9942,
   "name": "b_26D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9973,
   "name": "text_fade_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9989,
   "name": "r_2705",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9990,
   "name": "text_fade_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10016,
   "name": "b_2720",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10044,
   "name": "text_fade_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10049,
   "name": "text_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10055,
   "name": "text_putc",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10058,
   "name": "b_274A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10142,
   "name": "b_279E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10145,
   "name": "b_27A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10148,
   "name": "b_27A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10151,
   "name": "b_27A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10154,
   "name": "b_27AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10157,
   "name": "b_27AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10160,
   "name": "b_27B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10163,
   "name": "b_27B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10166,
   "name": "b_27B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10169,
   "name": "b_27B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10171,
   "name": "b_27BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10180,
   "name": "b_27C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10196,
   "name": "b_27D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10206,
   "name": "b_27DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10213,
   "name": "b_27E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10217,
   "name": "b_27E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10221,
   "name": "text_putc_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10240,
   "name": "text_save_regs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10258,
   "name": "text_irq",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10292,
   "name": "b_2834",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10314,
   "name": "b_284A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10321,
   "name": "b_2851",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10373,
   "name": "b_2885",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10382,
   "name": "cursor_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10390,
   "name": "cursor_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10398,
   "name": "print_wrapped",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10402,
   "name": "j_28A2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10404,
   "name": "b_28A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10406,
   "name": "b_28A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10427,
   "name": "b_28BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10429,
   "name": "b_28BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10443,
   "name": "r_28CB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10444,
   "name": "next_word_char",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10460,
   "name": "b_28DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10461,
   "name": "r_28DD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10462,
   "name": "print_inline",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10474,
   "name": "b_28EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10490,
   "name": "irq_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10553,
   "name": "b_2939",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10564,
   "name": "hw_vectors",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10570,
   "name": "nmi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10596,
   "name": "b_2964",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10599,
   "name": "irq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10632,
   "name": "b_2988",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10649,
   "name": "irq_stages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10650,
   "name": "f_299A",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10655,
   "name": "irq_lines",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10658,
   "name": "irq_call",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10661,
   "name": "pair_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10665,
   "name": "f_29A9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10669,
   "name": "f_29AD",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10673,
   "name": "irq_room",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10681,
   "name": "b_29B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10704,
   "name": "b_29D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10728,
   "name": "b_29E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10765,
   "name": "place_slots",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 10791,
   "name": "b_2A27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10829,
   "name": "place_pair_stacked",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10850,
   "name": "next_slot",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10856,
   "name": "irq_room_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10876,
   "name": "b_2A7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10882,
   "name": "j_2A82",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10891,
   "name": "irq_bar",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10893,
   "name": "b_2A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10921,
   "name": "a_2AA9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10955,
   "name": "r_2ACB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10956,
   "name": "irq_panel",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10958,
   "name": "b_2ACE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11002,
   "name": "b_2AFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11023,
   "name": "state_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11024,
   "name": "f_2B10",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11041,
   "name": "bar_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11051,
   "name": "b_2B2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11066,
   "name": "b_2B3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11098,
   "name": "b_2B5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11129,
   "name": "b_2B79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11132,
   "name": "b_2B7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11141,
   "name": "b_2B85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11152,
   "name": "b_2B90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11160,
   "name": "b_2B98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11168,
   "name": "b_2BA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11173,
   "name": "b_2BA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11180,
   "name": "b_2BAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11183,
   "name": "b_2BAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11186,
   "name": "b_2BB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11193,
   "name": "b_2BB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11196,
   "name": "b_2BBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11220,
   "name": "b_2BD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11224,
   "name": "b_2BD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11230,
   "name": "title_video",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11264,
   "name": "state0_title",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11293,
   "name": "b_2C1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11299,
   "name": "b_2C23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11308,
   "name": "title_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11328,
   "name": "next_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11330,
   "name": "b_2C42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11338,
   "name": "wait_line_67",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11340,
   "name": "b_2C4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11351,
   "name": "anim_rotate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11371,
   "name": "b_2C6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11387,
   "name": "anim_jobs_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11391,
   "name": "anim_jobs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11395,
   "name": "anim_char97_clock",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11405,
   "name": "b_2C8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11411,
   "name": "b_2C93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11420,
   "name": "b_2C9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11457,
   "name": "r_2CC1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11458,
   "name": "anim_chars52",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11473,
   "name": "b_2CD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11483,
   "name": "b_2CDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11496,
   "name": "b_2CE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11502,
   "name": "title_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11506,
   "name": "b_2CF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11527,
   "name": "b_2D07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11544,
   "name": "b_2D18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11572,
   "name": "b_2D34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11576,
   "name": "set_state_hook",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11592,
   "name": "state_hooks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11593,
   "name": "f_2D49",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11600,
   "name": "hook_three_sprites",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11713,
   "name": "hook_two_sprites",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11741,
   "name": "b_2DDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11758,
   "name": "b_2DEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11766,
   "name": "b_2DF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11795,
   "name": "b_2E13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11831,
   "name": "b_2E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11865,
   "name": "b_2E59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11868,
   "name": "title_sprite_tails",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11870,
   "name": "b_2E5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11888,
   "name": "b_2E70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11902,
   "name": "b_2E7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11911,
   "name": "b_2E87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11924,
   "name": "b_2E94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11928,
   "name": "sprite_row_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11949,
   "name": "border_flash_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11956,
   "name": "find_limits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12010,
   "name": "b_2EEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12049,
   "name": "b_2F11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12062,
   "name": "b_2F1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12076,
   "name": "b_2F2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12100,
   "name": "b_2F44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12111,
   "name": "b_2F4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12114,
   "name": "b_2F52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12116,
   "name": "b_2F54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12126,
   "name": "list_room_objects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12130,
   "name": "b_2F62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12133,
   "name": "b_2F65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12141,
   "name": "b_2F6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12142,
   "name": "b_2F6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12173,
   "name": "b_2F8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12177,
   "name": "place_visible_cast",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12202,
   "name": "b_2FAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12231,
   "name": "b_2FC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12282,
   "name": "b_2FFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12285,
   "name": "b_2FFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12307,
   "name": "b_3013",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12319,
   "name": "b_301F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12329,
   "name": "b_3029",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12339,
   "name": "b_3033",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12346,
   "name": "b_303A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12362,
   "name": "r_304A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12363,
   "name": "init_cast",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12365,
   "name": "b_304D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12432,
   "name": "depth_to_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12465,
   "name": "cast_start_rooms",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12474,
   "name": "icon_pickup",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12521,
   "name": "b_30E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12526,
   "name": "b_30EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12529,
   "name": "b_30F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12537,
   "name": "b_30F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12545,
   "name": "b_3101",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12555,
   "name": "icon_fire",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12602,
   "name": "menu_close",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12606,
   "name": "r_313E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12607,
   "name": "say_cant_carry",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12610,
   "name": "str_3142",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12638,
   "name": "say_cant_carry_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12639,
   "name": "state3_menu",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12707,
   "name": "b_31A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12718,
   "name": "b_31AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12729,
   "name": "b_31B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12740,
   "name": "b_31C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12757,
   "name": "b_31D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12758,
   "name": "b_31D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12765,
   "name": "b_31DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12766,
   "name": "b_31DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12790,
   "name": "b_31F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12793,
   "name": "b_31F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12811,
   "name": "b_320B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12829,
   "name": "b_321D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12856,
   "name": "b_3238",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12870,
   "name": "b_3246",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12888,
   "name": "menu_step_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12894,
   "name": "draw_panel_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12896,
   "name": "b_3260",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12919,
   "name": "b_3277",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12980,
   "name": "clear_icon_box",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12982,
   "name": "b_32B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12987,
   "name": "b_32BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13006,
   "name": "draw_icons",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13022,
   "name": "b_32DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13033,
   "name": "b_32E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13064,
   "name": "b_3308",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13099,
   "name": "draw_icon_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13126,
   "name": "icon_highlight",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13173,
   "name": "b_3375",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13191,
   "name": "r_3387",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13192,
   "name": "icon_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13201,
   "name": "icon_x_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13210,
   "name": "icon_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13219,
   "name": "icon_under_pointer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13277,
   "name": "b_33DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13288,
   "name": "r_33E8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13289,
   "name": "state4_list",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13374,
   "name": "b_343E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13414,
   "name": "b_3466",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13423,
   "name": "b_346F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13429,
   "name": "b_3475",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13456,
   "name": "b_3490",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13460,
   "name": "b_3494",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13494,
   "name": "b_34B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13497,
   "name": "b_34B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13520,
   "name": "b_34D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13528,
   "name": "r_34D8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13529,
   "name": "pointer_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13545,
   "name": "anyone_here",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13551,
   "name": "b_34EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13563,
   "name": "b_34FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13566,
   "name": "state2_play",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13643,
   "name": "b_354B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13646,
   "name": "b_354E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13666,
   "name": "b_3562",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13693,
   "name": "b_357D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13701,
   "name": "b_3585",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13721,
   "name": "b_3599",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13728,
   "name": "b_35A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13750,
   "name": "b_35B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13767,
   "name": "b_35C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13772,
   "name": "b_35CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13781,
   "name": "b_35D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13797,
   "name": "b_35E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13800,
   "name": "scroll_and_draw",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13806,
   "name": "b_35EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13823,
   "name": "b_35FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13835,
   "name": "b_360B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13841,
   "name": "b_3611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13875,
   "name": "b_3633",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13883,
   "name": "b_363B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13980,
   "name": "j_369C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13990,
   "name": "b_36A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14036,
   "name": "b_36D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14041,
   "name": "b_36D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14058,
   "name": "b_36EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14061,
   "name": "b_36ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14063,
   "name": "b_36EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14066,
   "name": "b_36F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14114,
   "name": "place_cast_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14120,
   "name": "step_delays",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14126,
   "name": "player_shape_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14132,
   "name": "player_shape_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14147,
   "name": "stick_to_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14163,
   "name": "init_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14217,
   "name": "r_3789",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14218,
   "name": "stairs_check",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14231,
   "name": "b_3797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14277,
   "name": "b_37C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14306,
   "name": "r_37E2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14307,
   "name": "b_37E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14325,
   "name": "b_37F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14349,
   "name": "b_380D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14359,
   "name": "j_3817",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14396,
   "name": "b_383C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14405,
   "name": "touch_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14432,
   "name": "b_3860",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14435,
   "name": "before_room_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14450,
   "name": "b_3872",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14452,
   "name": "put_rows_3467",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14461,
   "name": "put_rows_3_7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14467,
   "name": "s_3883",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14470,
   "name": "j_3886",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14477,
   "name": "build_room",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14562,
   "name": "b_38E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14581,
   "name": "b_38F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14589,
   "name": "b_38FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14624,
   "name": "b_3920",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14653,
   "name": "b_393D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14662,
   "name": "b_3946",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14669,
   "name": "b_394D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14682,
   "name": "b_395A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14688,
   "name": "b_3960",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14713,
   "name": "room_event_check",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14734,
   "name": "b_398E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14738,
   "name": "r_3992",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14739,
   "name": "draw_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14752,
   "name": "b_39A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14772,
   "name": "door_open_draw",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14773,
   "name": "f_39B5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14796,
   "name": "door_type0_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14832,
   "name": "b_39F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14866,
   "name": "door_save_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14872,
   "name": "b_3A18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14884,
   "name": "b_3A24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14887,
   "name": "door_save",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14903,
   "name": "b_3A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14905,
   "name": "b_3A39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14924,
   "name": "b_3A4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14936,
   "name": "door_restore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14953,
   "name": "b_3A69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14962,
   "name": "b_3A72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14964,
   "name": "b_3A74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14983,
   "name": "b_3A87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14993,
   "name": "door_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15018,
   "name": "b_3AAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15065,
   "name": "door_type8_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15076,
   "name": "b_3AE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15120,
   "name": "draw_door_closed",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15140,
   "name": "door_closed_draw",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15141,
   "name": "f_3B25",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15164,
   "name": "door_type0_closed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15185,
   "name": "door_type2_closed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15191,
   "name": "b_3B57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15204,
   "name": "b_3B64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15212,
   "name": "door_bottom_open",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15243,
   "name": "door_type8_closed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15255,
   "name": "door_type10_closed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15264,
   "name": "b_3BA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15275,
   "name": "door_frame_closed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15284,
   "name": "room_depth_div4",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15291,
   "name": "clear_room_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15303,
   "name": "b_3BC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15307,
   "name": "b_3BCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15319,
   "name": "unpack_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15327,
   "name": "j_3BDF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15347,
   "name": "b_3BF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15362,
   "name": "b_3C02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15364,
   "name": "b_3C04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15389,
   "name": "b_3C1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15395,
   "name": "b_3C23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15399,
   "name": "b_3C27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15416,
   "name": "unpack_done",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15421,
   "name": "unpack_char",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15449,
   "name": "b_3C59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15458,
   "name": "b_3C62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15464,
   "name": "b_3C68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15469,
   "name": "room_type_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15496,
   "name": "b_3C88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15498,
   "name": "room_type_hooks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15514,
   "name": "scroll_limits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15528,
   "name": "b_3CA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15529,
   "name": "a_3CA9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15551,
   "name": "door_draw_nothing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15552,
   "name": "select_charset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15568,
   "name": "b_3CD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15589,
   "name": "r_3CE5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15590,
   "name": "swap_1k",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15604,
   "name": "b_3CF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15626,
   "name": "room_extra",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15660,
   "name": "r_3D2C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15661,
   "name": "b_3D2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15681,
   "name": "b_3D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15687,
   "name": "b_3D47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15702,
   "name": "unpack_bit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15710,
   "name": "b_3D5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15723,
   "name": "b_3D6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15728,
   "name": "unpack_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15740,
   "name": "r_3D7C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15741,
   "name": "b_3D7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15745,
   "name": "b_3D81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15757,
   "name": "unpack_nibble",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15761,
   "name": "b_3D91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15777,
   "name": "room_right_limit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15795,
   "name": "find_near_door",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15822,
   "name": "b_3DCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15829,
   "name": "b_3DD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15858,
   "name": "b_3DF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15861,
   "name": "b_3DF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15868,
   "name": "b_3DFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15872,
   "name": "b_3E00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15894,
   "name": "door_record_offset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15901,
   "name": "door_flags",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15909,
   "name": "door_toggle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15919,
   "name": "b_3E2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15922,
   "name": "door_near_flash",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15939,
   "name": "b_3E43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15944,
   "name": "r_3E48",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15945,
   "name": "door_task",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15958,
   "name": "b_3E56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15961,
   "name": "b_3E59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15987,
   "name": "b_3E73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16001,
   "name": "b_3E81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16026,
   "name": "b_3E9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16029,
   "name": "door_open_close",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16041,
   "name": "a_3EA9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16048,
   "name": "b_3EB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16056,
   "name": "door_unlock",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16090,
   "name": "say_locked",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16093,
   "name": "str_3EDD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16108,
   "name": "say_locked_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16109,
   "name": "b_3EED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16112,
   "name": "str_3EF0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16135,
   "name": "key_wont_fit_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16136,
   "name": "b_3F08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16139,
   "name": "str_3F0B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16157,
   "name": "say_no_door_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16158,
   "name": "go_through_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16192,
   "name": "b_3F40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16208,
   "name": "j_3F50",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16246,
   "name": "b_3F76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16254,
   "name": "b_3F7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16269,
   "name": "b_3F8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16274,
   "name": "b_3F92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16287,
   "name": "no_door_fire",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16302,
   "name": "b_3FAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16318,
   "name": "b_3FBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16321,
   "name": "r_3FC1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16322,
   "name": "near_door_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16334,
   "name": "unused_depth_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16344,
   "name": "is_list_state",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16350,
   "name": "r_3FDE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16368,
   "name": "f_3FF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16377,
   "name": "a_3FF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16383,
   "name": "a_3FFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "charset_room",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16664,
   "name": "charset_safe_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16800,
   "name": "charset_anim_52",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17160,
   "name": "charset_anim_97",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17400,
   "name": "charset_cellar_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17408,
   "name": "charset_room_4400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18176,
   "name": "charset_cellar_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18432,
   "name": "charset_panel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19088,
   "name": "word_list",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19113,
   "name": "word_list_4aa9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19326,
   "name": "charset_panel_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19369,
   "name": "charset_panel_b_4ba9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19625,
   "name": "charset_panel_b_4ca9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19881,
   "name": "charset_panel_b_4da9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19968,
   "name": "charset_icons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20137,
   "name": "charset_icons_4ea9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20393,
   "name": "a_4FA9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20416,
   "name": "object_start_places",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20468,
   "name": "charset_panel_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20480,
   "name": "sprites_misc",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21504,
   "name": "sprites_misc_5400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22144,
   "name": "sprite_question_mark",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "sprites_misc_5800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22720,
   "name": "f_58C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22848,
   "name": "sprites_misc_5940",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23360,
   "name": "sprites_cast",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24384,
   "name": "sprites_cast_5f40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25408,
   "name": "sprites_cast_6340",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26432,
   "name": "sprites_cast_6740",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27456,
   "name": "sprites_cast_6b40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28480,
   "name": "sprites_cast_6f40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28745,
   "name": "sprites_cast_6f40_7049",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29120,
   "name": "sprites_props",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30144,
   "name": "sprites_props_75c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31168,
   "name": "sprites_props_79c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31429,
   "name": "tune2_voice1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31445,
   "name": "tune2_voice2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31467,
   "name": "tune2_voice3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31680,
   "name": "sprite_blank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "f_7C00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31784,
   "name": "f_7C28",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31794,
   "name": "f_7C32",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31824,
   "name": "f_7C50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31864,
   "name": "f_7C78",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31904,
   "name": "f_7CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31944,
   "name": "f_7CC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31970,
   "name": "a_7CE2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31971,
   "name": "a_7CE3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31984,
   "name": "f_7CF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32010,
   "name": "a_7D0A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32011,
   "name": "a_7D0B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32024,
   "name": "f_7D18",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32050,
   "name": "a_7D32",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32051,
   "name": "a_7D33",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32064,
   "name": "f_7D40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32090,
   "name": "a_7D5A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32091,
   "name": "a_7D5B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32104,
   "name": "f_7D68",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32144,
   "name": "f_7D90",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32184,
   "name": "f_7DB8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32224,
   "name": "f_7DE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32237,
   "name": "f_7DED",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32264,
   "name": "f_7E08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32286,
   "name": "a_7E1E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32304,
   "name": "f_7E30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32344,
   "name": "f_7E58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32345,
   "name": "f_7E59",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32383,
   "name": "a_7E7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32384,
   "name": "f_7E80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32385,
   "name": "f_7E81",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32423,
   "name": "f_7EA7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32424,
   "name": "f_7EA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32450,
   "name": "a_7EC2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32451,
   "name": "f_7EC3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32462,
   "name": "a_7ECE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32463,
   "name": "f_7ECF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32464,
   "name": "f_7ED0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32503,
   "name": "f_7EF7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32504,
   "name": "f_7EF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32543,
   "name": "f_7F1F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32544,
   "name": "f_7F20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32583,
   "name": "f_7F47",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32584,
   "name": "f_7F48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32623,
   "name": "f_7F6F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32624,
   "name": "f_7F70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32663,
   "name": "f_7F97",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32664,
   "name": "f_7F98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32703,
   "name": "f_7FBF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32704,
   "name": "f_7FC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32730,
   "name": "a_7FDA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32731,
   "name": "f_7FDB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32742,
   "name": "a_7FE6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32760,
   "name": "f_7FF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32761,
   "name": "f_7FF9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32762,
   "name": "a_7FFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32763,
   "name": "a_7FFB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32764,
   "name": "a_7FFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32768,
   "name": "module_header",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32772,
   "name": "cbm80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32777,
   "name": "module_jump_table",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32780,
   "name": "s_800C",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32783,
   "name": "s_800F",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32786,
   "name": "s_8012",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32789,
   "name": "s_8015",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32792,
   "name": "s_8018",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32795,
   "name": "s_801B",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32798,
   "name": "s_801E",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32804,
   "name": "s_8024",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32807,
   "name": "s_8027",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32810,
   "name": "j_802A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32813,
   "name": "j_802D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32816,
   "name": "j_8030",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32819,
   "name": "a_8033",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32825,
   "name": "s_8039",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32828,
   "name": "a_803C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32831,
   "name": "j_803F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32834,
   "name": "s_8042",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32837,
   "name": "j_8045",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32840,
   "name": "s_8048",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32843,
   "name": "a_804B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32846,
   "name": "s_804E",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32849,
   "name": "a_8051",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32852,
   "name": "s_8054",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32855,
   "name": "s_8057",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32858,
   "name": "s_805A",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32861,
   "name": "j_805D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32864,
   "name": "j_8060",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32867,
   "name": "a_8063",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32870,
   "name": "s_8066",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32873,
   "name": "s_8069",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32876,
   "name": "s_806C",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32879,
   "name": "s_806F",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32882,
   "name": "s_8072",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32885,
   "name": "a_8075",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32888,
   "name": "s_8078",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32891,
   "name": "print_string_n",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32893,
   "name": "print_string_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32899,
   "name": "find_string_n",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32903,
   "name": "b_8087",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32908,
   "name": "b_808C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32925,
   "name": "r_809D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 32926,
   "name": "b_809E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32937,
   "name": "icon_action_1",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32945,
   "name": "b_80B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32964,
   "name": "clear_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32969,
   "name": "b_80C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32972,
   "name": "b_80CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32975,
   "name": "icon_action_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33001,
   "name": "b_80E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33004,
   "name": "b_80EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33009,
   "name": "b_80F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33024,
   "name": "b_8100",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33037,
   "name": "str_you_find",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33048,
   "name": "say_nothing_here",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 33055,
   "name": "icon_action_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33064,
   "name": "j_8128",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33072,
   "name": "str_nothing_here",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33086,
   "name": "str_you_are_carrying",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33105,
   "name": "object_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33741,
   "name": "object_sizes_83cd",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33793,
   "name": "furniture_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34152,
   "name": "print_name",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34162,
   "name": "speaker_prefix",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34194,
   "name": "b_8592",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34204,
   "name": "say_inline",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34216,
   "name": "b_85A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34237,
   "name": "say_string",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34243,
   "name": "b_85C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34254,
   "name": "print_list_entry",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 34263,
   "name": "b_85D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34279,
   "name": "b_85E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34282,
   "name": "str_speaks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34291,
   "name": "str_major_lines",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34432,
   "name": "init_objects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34434,
   "name": "b_8682",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34465,
   "name": "b_86A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34480,
   "name": "b_86B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34494,
   "name": "b_86BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34542,
   "name": "build_menu",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34565,
   "name": "b_8705",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34567,
   "name": "b_8707",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34578,
   "name": "b_8712",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34583,
   "name": "b_8717",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34585,
   "name": "b_8719",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34588,
   "name": "b_871C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34596,
   "name": "b_8724",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34606,
   "name": "b_872E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34610,
   "name": "b_8732",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34631,
   "name": "b_8747",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34666,
   "name": "b_876A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34684,
   "name": "b_877C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34689,
   "name": "r_8781",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34690,
   "name": "menu_bit_icons",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34697,
   "name": "menu_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34719,
   "name": "menu_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34725,
   "name": "f_87A5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34777,
   "name": "do_icon",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34797,
   "name": "icon_actions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34798,
   "name": "f_87EE",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34833,
   "name": "object_action",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34854,
   "name": "object_actions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34855,
   "name": "f_8827",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34874,
   "name": "do_nothing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34875,
   "name": "count_in_place",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34885,
   "name": "b_8845",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34894,
   "name": "b_884E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34902,
   "name": "room_for_more",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34915,
   "name": "b_8863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34922,
   "name": "str_886A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34938,
   "name": "room_for_more_full",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34939,
   "name": "r_887B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34940,
   "name": "icon_action_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34954,
   "name": "b_888A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34960,
   "name": "b_8890",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34980,
   "name": "b_88A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34986,
   "name": "b_88AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34995,
   "name": "b_88B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34998,
   "name": "list_place",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35000,
   "name": "s_88B8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35010,
   "name": "b_88C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35048,
   "name": "b_88E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35063,
   "name": "list_menu_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35083,
   "name": "b_890B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35086,
   "name": "say_nothing_dots",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35093,
   "name": "print_two_spaces",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35096,
   "name": "print_space",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35101,
   "name": "str_nothing_dots",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35114,
   "name": "door_menu_text",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35131,
   "name": "say_you_find",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35138,
   "name": "b_8942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35144,
   "name": "str_8948",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35153,
   "name": "b_8951",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35159,
   "name": "str_8957",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35178,
   "name": "door_menu_text_rest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35198,
   "name": "icon_action_16",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35206,
   "name": "str_8986",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35215,
   "name": "icon_action_16_rest_898f",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35229,
   "name": "r_899D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35230,
   "name": "put_into_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35263,
   "name": "say_okay",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35266,
   "name": "str_89C2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35274,
   "name": "say_okay_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35275,
   "name": "say_cant_do",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35278,
   "name": "str_89CE",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35306,
   "name": "r_89EA",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 35307,
   "name": "object_sizes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35359,
   "name": "safe_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35383,
   "name": "b_8A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35395,
   "name": "str_8A43",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35413,
   "name": "safe_check_rest_8a55",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35417,
   "name": "b_8A59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35426,
   "name": "open_safe",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35429,
   "name": "str_8A65",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35456,
   "name": "open_safe_rest_8a80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35461,
   "name": "b_8A85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35475,
   "name": "str_8A93",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35495,
   "name": "open_safe_opened",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35502,
   "name": "safe_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35513,
   "name": "b_8AB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35522,
   "name": "set_hall_list",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35537,
   "name": "b_8AD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35540,
   "name": "str_8AD4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35563,
   "name": "safe_wrong_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35564,
   "name": "safe_picture_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35567,
   "name": "after_object_moved",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35579,
   "name": "safe_combination",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35585,
   "name": "portrait_wipe_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35587,
   "name": "b_8B03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35615,
   "name": "b_8B1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35619,
   "name": "b_8B23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35626,
   "name": "b_8B2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35633,
   "name": "title_cast_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35643,
   "name": "b_8B3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35658,
   "name": "b_8B4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35703,
   "name": "b_8B77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35728,
   "name": "b_8B90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35797,
   "name": "r_8BD5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35798,
   "name": "b_8BD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35862,
   "name": "b_8C16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35926,
   "name": "r_8C56",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35927,
   "name": "b_8C57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35948,
   "name": "b_8C6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35963,
   "name": "f_8C7B",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35969,
   "name": "portrait_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35973,
   "name": "f_8C85",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35974,
   "name": "f_8C86",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35977,
   "name": "f_8C89",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35983,
   "name": "f_8C8F",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35984,
   "name": "f_8C90",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36034,
   "name": "title_cast_done",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 36039,
   "name": "r_8CC7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36040,
   "name": "title_cast_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36077,
   "name": "b_8CED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36084,
   "name": "b_8CF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36096,
   "name": "b_8D00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36099,
   "name": "b_8D03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36105,
   "name": "portrait_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36115,
   "name": "next_portrait",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36125,
   "name": "b_8D1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36172,
   "name": "b_8D4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36174,
   "name": "b_8D4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36206,
   "name": "portrait_masks",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36208,
   "name": "b_8D70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36240,
   "name": "nibble_spread",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36256,
   "name": "portrait_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36288,
   "name": "title_tables",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36290,
   "name": "b_8DC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36294,
   "name": "b_8DC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36306,
   "name": "b_8DD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36361,
   "name": "b_8E09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36363,
   "name": "b_8E0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36367,
   "name": "b_8E0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36407,
   "name": "b_8E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36418,
   "name": "b_8E42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36427,
   "name": "portrait_store",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36441,
   "name": "b_8E59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36453,
   "name": "biographies",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37161,
   "name": "title_biography",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37176,
   "name": "flip_sprites_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37214,
   "name": "b_915E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37216,
   "name": "b_9160",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37217,
   "name": "a_9161",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37218,
   "name": "a_9162",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37230,
   "name": "r_916E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37231,
   "name": "b_916F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37233,
   "name": "b_9171",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37251,
   "name": "b_9183",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37262,
   "name": "b_918E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37273,
   "name": "b_9199",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37278,
   "name": "make_row_reverse",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37280,
   "name": "b_91A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37307,
   "name": "b_91BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37320,
   "name": "walk_shape_select",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37324,
   "name": "room_type_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37344,
   "name": "start_flip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37362,
   "name": "b_91F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37398,
   "name": "cast_shapes_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37407,
   "name": "cast_shapes_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37416,
   "name": "pose_shape_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37420,
   "name": "pose_shape_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37424,
   "name": "cast_shape_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37433,
   "name": "anim_frame_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37441,
   "name": "cast_walk",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37459,
   "name": "b_9253",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37481,
   "name": "j_9269",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37489,
   "name": "b_9271",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37494,
   "name": "b_9276",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37497,
   "name": "b_9279",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37516,
   "name": "b_928C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37576,
   "name": "b_92C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37586,
   "name": "b_92D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37613,
   "name": "b_92ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37654,
   "name": "b_9316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37658,
   "name": "b_931A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37679,
   "name": "b_932F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37683,
   "name": "b_9333",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37727,
   "name": "b_935F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37750,
   "name": "b_9376",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37752,
   "name": "b_9378",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37758,
   "name": "b_937E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37788,
   "name": "b_939C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37801,
   "name": "j_93A9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37804,
   "name": "j_93AC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37810,
   "name": "r_93B2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37811,
   "name": "walk_dx_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37816,
   "name": "walk_dx_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37821,
   "name": "walk_ddepth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37826,
   "name": "speaker_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37834,
   "name": "speaker_pose",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37859,
   "name": "cast_reset",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37861,
   "name": "b_93E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37883,
   "name": "b_93FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37885,
   "name": "b_93FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37895,
   "name": "b_9407",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37920,
   "name": "b_9420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37926,
   "name": "b_9426",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37982,
   "name": "play_tune",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37985,
   "name": "j_9461",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37989,
   "name": "b_9465",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38001,
   "name": "b_9471",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38049,
   "name": "b_94A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38071,
   "name": "voice_registers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38081,
   "name": "voice_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38084,
   "name": "note_frequency",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38113,
   "name": "b_94E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38122,
   "name": "r_94EA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38123,
   "name": "voice_next_byte",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 38148,
   "name": "b_9504",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38165,
   "name": "b_9515",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38167,
   "name": "voice_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38189,
   "name": "b_952D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38224,
   "name": "b_9550",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38244,
   "name": "b_9564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38248,
   "name": "b_9568",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38268,
   "name": "b_957C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38285,
   "name": "b_958D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38298,
   "name": "b_959A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38306,
   "name": "b_95A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38316,
   "name": "voice_command",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38326,
   "name": "b_95B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38342,
   "name": "b_95C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38350,
   "name": "b_95CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38353,
   "name": "j_95D1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38376,
   "name": "b_95E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38379,
   "name": "b_95EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38393,
   "name": "b_95F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38405,
   "name": "b_9605",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38419,
   "name": "b_9613",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38433,
   "name": "b_9621",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38439,
   "name": "b_9627",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38464,
   "name": "b_9640",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38467,
   "name": "b_9643",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38485,
   "name": "b_9655",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38536,
   "name": "b_9688",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38564,
   "name": "b_96A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38570,
   "name": "b_96AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38582,
   "name": "b_96B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38585,
   "name": "set_note",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38615,
   "name": "j_96D7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38618,
   "name": "note_length",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38625,
   "name": "b_96E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38651,
   "name": "voice_vibrato",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38661,
   "name": "b_9705",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38675,
   "name": "b_9713",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38704,
   "name": "write_frequency",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38717,
   "name": "r_973D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38718,
   "name": "music_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38728,
   "name": "b_9748",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38751,
   "name": "b_975F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38780,
   "name": "b_977C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38783,
   "name": "pulse_sweep",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38785,
   "name": "b_9781",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38804,
   "name": "b_9794",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38830,
   "name": "b_97AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38834,
   "name": "music_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38837,
   "name": "f_97B5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38857,
   "name": "f_97C9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38877,
   "name": "f_97DD",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38878,
   "name": "f_97DE",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38901,
   "name": "f_97F5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38913,
   "name": "f_9801",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38939,
   "name": "instrument_ad",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38946,
   "name": "instrument_sr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38953,
   "name": "instrument_filter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38960,
   "name": "instrument_gate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38967,
   "name": "instrument_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38974,
   "name": "instrument_pulse",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38981,
   "name": "instrument_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38988,
   "name": "r_984C",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 38989,
   "name": "pickup_sound",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39028,
   "name": "b_9874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39072,
   "name": "b_98A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39074,
   "name": "b_98A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39087,
   "name": "b_98AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39099,
   "name": "footstep_on",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 39142,
   "name": "footstep_off",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 39148,
   "name": "footstep_silence",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 39153,
   "name": "r_98F1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39154,
   "name": "footstep_task",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39173,
   "name": "sound_door",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39235,
   "name": "sound_door_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39281,
   "name": "sound_delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39283,
   "name": "b_9973",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39290,
   "name": "sound_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39314,
   "name": "r_9992",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39315,
   "name": "sound_task",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39335,
   "name": "r_99A7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39336,
   "name": "b_99A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39354,
   "name": "sound_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39355,
   "name": "f_99BB",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39362,
   "name": "set_filter_routing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39368,
   "name": "major_mutters",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39391,
   "name": "major_line",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39408,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39436,
   "name": "r_9A0C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39437,
   "name": "examine_object",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39456,
   "name": "str_9A20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39486,
   "name": "examine_object_rest_9a3e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39487,
   "name": "b_9A3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39495,
   "name": "object_descriptions",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40519,
   "name": "object_descriptions_9e47",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40557,
   "name": "read_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40566,
   "name": "b_9E76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40579,
   "name": "b_9E83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40594,
   "name": "b_9E92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40600,
   "name": "b_9E98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40608,
   "name": "r_9EA0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40609,
   "name": "readable_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "readable_texts_a000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41325,
   "name": "consume_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41338,
   "name": "str_A17A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41352,
   "name": "consume_object_rest_a188",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41353,
   "name": "b_A189",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41356,
   "name": "str_A18C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41393,
   "name": "consume_object_rest_a1b1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41399,
   "name": "b_A1B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41409,
   "name": "str_drop_dead",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41440,
   "name": "time_pause",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41443,
   "name": "str_A1E3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41470,
   "name": "time_pause_rest_a1fe",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41472,
   "name": "b_A200",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41486,
   "name": "str_A20E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41524,
   "name": "time_pause_rest_a234",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41530,
   "name": "b_A23A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41541,
   "name": "use_action",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41544,
   "name": "str_A248",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41550,
   "name": "use_action_rest_a24e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41555,
   "name": "use_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41560,
   "name": "str_A258",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41598,
   "name": "use_object_rest_a27e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41608,
   "name": "list_menu_state4",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41618,
   "name": "use_with",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41623,
   "name": "str_A297",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41626,
   "name": "use_with_rest_a29a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41634,
   "name": "b_A2A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41647,
   "name": "use_lookup",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41653,
   "name": "b_A2B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41695,
   "name": "call_28",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41698,
   "name": "b_A2E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41701,
   "name": "room_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41710,
   "name": "say_where",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41729,
   "name": "str_A301",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41738,
   "name": "say_where_rest_a30a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41751,
   "name": "str_A317",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41756,
   "name": "say_where_rest_a31c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41765,
   "name": "j_A325",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41770,
   "name": "b_A32A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41773,
   "name": "str_A32D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41782,
   "name": "say_where_nothing",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 41783,
   "name": "b_A337",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41786,
   "name": "str_A33A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41802,
   "name": "say_where_rest_a34a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41803,
   "name": "b_A34B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41814,
   "name": "str_A356",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41823,
   "name": "say_where_room_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41826,
   "name": "room_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41961,
   "name": "use_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42080,
   "name": "script_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42092,
   "name": "b_A46C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42108,
   "name": "r_A47C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42109,
   "name": "b_A47D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42119,
   "name": "b_A487",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42149,
   "name": "b_A4A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42155,
   "name": "b_A4AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42184,
   "name": "script_ops",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42185,
   "name": "f_A4C9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42238,
   "name": "script_op_lengths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 42265,
   "name": "op_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42286,
   "name": "b_A52E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42306,
   "name": "op_repeat",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 42317,
   "name": "op_set_target",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42330,
   "name": "set_target_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42337,
   "name": "op_goto",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42340,
   "name": "j_A564",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42349,
   "name": "op_enter_room8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42376,
   "name": "set_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42388,
   "name": "b_A594",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42395,
   "name": "place_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42427,
   "name": "r_A5BB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42428,
   "name": "op_leave_room8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42463,
   "name": "b_A5DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42476,
   "name": "op_walk_to_room",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42483,
   "name": "b_A5F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42500,
   "name": "b_A604",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42512,
   "name": "b_A610",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42520,
   "name": "guest_error",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42536,
   "name": "str_A628",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42550,
   "name": "guest_error_rest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42559,
   "name": "b_A63F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42569,
   "name": "b_A649",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42577,
   "name": "b_A651",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42601,
   "name": "door_position",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42613,
   "name": "b_A675",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42616,
   "name": "b_A678",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42640,
   "name": "b_A690",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42642,
   "name": "r_A692",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42643,
   "name": "op_say",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42658,
   "name": "b_A6A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42674,
   "name": "op_print_here",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42681,
   "name": "op_print",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42697,
   "name": "op_goto_if_alone",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42702,
   "name": "b_A6CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42707,
   "name": "b_A6D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42718,
   "name": "goto_26",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 42723,
   "name": "b_A6E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42729,
   "name": "op_goto_if_with",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42742,
   "name": "op_goto_unless_with",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42755,
   "name": "op_native",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42758,
   "name": "j_A706",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42761,
   "name": "op_choose_door",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42770,
   "name": "op_goto_if_door",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42787,
   "name": "b_A723",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42790,
   "name": "op_take",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42801,
   "name": "r_A731",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42802,
   "name": "unused_object_test",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42811,
   "name": "goto_26_shared",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 42814,
   "name": "op_goto_if_player_in",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42823,
   "name": "op_set_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42838,
   "name": "op_use_door_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42841,
   "name": "op_use_door_else",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42895,
   "name": "b_A78F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42914,
   "name": "b_A7A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42945,
   "name": "j_A7C1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42947,
   "name": "b_A7C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42958,
   "name": "b_A7CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42961,
   "name": "b_A7D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42965,
   "name": "b_A7D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42968,
   "name": "b_A7D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42971,
   "name": "op_goto_random",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42982,
   "name": "init_scripts",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42984,
   "name": "b_A7E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43003,
   "name": "script_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43004,
   "name": "f_A7FC",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43021,
   "name": "read_op1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43028,
   "name": "read_word1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43040,
   "name": "read_op1_word2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43054,
   "name": "room_table_1BE0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43065,
   "name": "room_table_1C00",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43076,
   "name": "unused_room_width",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43091,
   "name": "op_put_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43102,
   "name": "count_in_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43108,
   "name": "b_A864",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43115,
   "name": "b_A86B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43121,
   "name": "find_door",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43126,
   "name": "b_A876",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43145,
   "name": "b_A889",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43152,
   "name": "door_has_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43160,
   "name": "r_A898",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43161,
   "name": "op_unlock",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43171,
   "name": "b_A8A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43178,
   "name": "op_lock",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43185,
   "name": "b_A8B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43188,
   "name": "op_goto_if_c8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43197,
   "name": "b_A8BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43200,
   "name": "op_narrate",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43218,
   "name": "op_strangled",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43235,
   "name": "str_A8E3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43262,
   "name": "op_strangled_rest_a8fe",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43268,
   "name": "script_reverend",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43377,
   "name": "script_bentley",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43639,
   "name": "script_cook",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43690,
   "name": "script_cook_aaaa",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43831,
   "name": "script_gabriel",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43964,
   "name": "script_cynthia",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44182,
   "name": "kill_cynthia",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44229,
   "name": "str_scream",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44268,
   "name": "kill_gabriel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44312,
   "name": "mark_dead",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44333,
   "name": "script_professor",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44496,
   "name": "script_major",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 44630,
   "name": "script_doctor",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45062,
   "name": "script_stop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45065,
   "name": "script_dingle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45212,
   "name": "script_dingle_killer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45401,
   "name": "script_dingle_escape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45453,
   "name": "hide_dingle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45464,
   "name": "place_bomb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45470,
   "name": "kill_doctor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45519,
   "name": "dingle_lies_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45542,
   "name": "take_ammunition",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45564,
   "name": "b_B1FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45569,
   "name": "r_B201",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45570,
   "name": "dingle_gone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45576,
   "name": "list_people_here",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45579,
   "name": "str_B20B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45603,
   "name": "list_people_here_rest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45609,
   "name": "b_B229",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45648,
   "name": "b_B250",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45665,
   "name": "b_B261",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45668,
   "name": "str_B264",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45678,
   "name": "list_people_none",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45680,
   "name": "icon_action_11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45693,
   "name": "question_person",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45713,
   "name": "str_B291",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45721,
   "name": "r_B299",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 45722,
   "name": "b_B29A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45726,
   "name": "b_B29E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45743,
   "name": "str_B2AF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45758,
   "name": "question_waiting_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45759,
   "name": "say_he_she",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45770,
   "name": "he_she",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45777,
   "name": "f_B2D1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45786,
   "name": "print_cast_name",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45793,
   "name": "talk_on_fire",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45836,
   "name": "b_B30C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45839,
   "name": "b_B30F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45854,
   "name": "b_B31E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45858,
   "name": "b_B322",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45860,
   "name": "b_B324",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45874,
   "name": "str_B332",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45918,
   "name": "talk_on_fire_rest_b35e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45937,
   "name": "list_0_to_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45941,
   "name": "b_B375",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45949,
   "name": "ask_about",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45967,
   "name": "release_person",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45978,
   "name": "ask_routines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45979,
   "name": "f_B39B",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45984,
   "name": "ask_mcfungus",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45993,
   "name": "j_B3A9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45999,
   "name": "answers_mcfungus",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46249,
   "name": "answers_mcfungus_b4a9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46543,
   "name": "say_ask_about",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46546,
   "name": "str_B5D2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46559,
   "name": "say_ask_about_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46560,
   "name": "ask_object_list",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46580,
   "name": "answer_object",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46589,
   "name": "b_B5FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46593,
   "name": "b_B601",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46624,
   "name": "b_B620",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46631,
   "name": "b_B627",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46633,
   "name": "b_B629",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46647,
   "name": "b_B637",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46653,
   "name": "b_B63D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46656,
   "name": "str_B640",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46682,
   "name": "answer_object_end",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 46685,
   "name": "b_B65D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46722,
   "name": "answers_objects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46761,
   "name": "answers_objects_b6a9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47072,
   "name": "list_other_people",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47087,
   "name": "b_B7EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47117,
   "name": "b_B80D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47129,
   "name": "ask_person_list",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47141,
   "name": "answer_person",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47145,
   "name": "b_B829",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47175,
   "name": "b_B847",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47185,
   "name": "b_B851",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47188,
   "name": "b_B854",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47190,
   "name": "b_B856",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47204,
   "name": "b_B864",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47210,
   "name": "b_B86A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47232,
   "name": "b_B880",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47240,
   "name": "b_B888",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47242,
   "name": "b_B88A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47253,
   "name": "answers_people",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47273,
   "name": "answers_people_b8a9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47864,
   "name": "copy_name",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47868,
   "name": "b_BAFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47884,
   "name": "b_BB0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47886,
   "name": "b_BB0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47895,
   "name": "evidence_objects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47905,
   "name": "say_no_evidence",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 47908,
   "name": "str_BB24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47951,
   "name": "say_no_evidence_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47952,
   "name": "icon_action_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47955,
   "name": "str_BB53",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47977,
   "name": "icon_action_7_rest_bb69",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47990,
   "name": "accuse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47996,
   "name": "b_BB7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48097,
   "name": "b_BBE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48107,
   "name": "b_BBEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48111,
   "name": "b_BBEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48125,
   "name": "str_BBFD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48217,
   "name": "accuse_rest",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 48235,
   "name": "b_BC6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48262,
   "name": "str_trigger",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48297,
   "name": "str_trigger_bca9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48303,
   "name": "icon_action_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48331,
   "name": "str_BCCB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48363,
   "name": "icon_action_6_rest_bceb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48383,
   "name": "b_BCFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48386,
   "name": "str_BD02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48435,
   "name": "gun_here_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48436,
   "name": "str_ending",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48531,
   "name": "read_keyboard",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48551,
   "name": "b_BDA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48558,
   "name": "b_BDAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48568,
   "name": "b_BDB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48589,
   "name": "b_BDCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48603,
   "name": "b_BDDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48607,
   "name": "b_BDDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48616,
   "name": "library_book",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48627,
   "name": "str_BDF3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48669,
   "name": "library_book_read",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48674,
   "name": "b_BE22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48689,
   "name": "b_BE31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48692,
   "name": "str_BE34",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48697,
   "name": "library_book_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48713,
   "name": "b_BE49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48716,
   "name": "str_BE4C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48724,
   "name": "library_book_end",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 48727,
   "name": "str_BE57",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48743,
   "name": "library_book_rts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48744,
   "name": "str_book",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48766,
   "name": "read_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48775,
   "name": "b_BE87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48821,
   "name": "b_BEB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48837,
   "name": "b_BEC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48855,
   "name": "b_BED7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48869,
   "name": "draw_list",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48873,
   "name": "b_BEE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48876,
   "name": "b_BEEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48884,
   "name": "b_BEF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48907,
   "name": "b_BF0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48909,
   "name": "b_BF0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48924,
   "name": "b_BF1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48926,
   "name": "b_BF1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48950,
   "name": "b_BF36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48954,
   "name": "f_BF3A",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48955,
   "name": "flash_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48963,
   "name": "flash_sprite_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48973,
   "name": "storm_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48993,
   "name": "b_BF61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49018,
   "name": "storm_hook",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49041,
   "name": "b_BF91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49044,
   "name": "b_BF94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49067,
   "name": "b_BFAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49092,
   "name": "b_BFC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49112,
   "name": "r_BFD8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49113,
   "name": "storm_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49133,
   "name": "next_thunder",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49169,
   "name": "icon_action_evidence",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49172,
   "name": "str_C014",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49194,
   "name": "evidence_list_rest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49201,
   "name": "b_C031",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49231,
   "name": "b_C04F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49253,
   "name": "r_C065",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49254,
   "name": "bomb_explodes",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49317,
   "name": "wait_counter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49322,
   "name": "b_C0AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49328,
   "name": "cellar_anim",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49350,
   "name": "b_C0C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49364,
   "name": "r_C0D4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49365,
   "name": "state8_tune",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49387,
   "name": "unused_c0eb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49408,
   "name": "room_picture_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50002,
   "name": "room_picture_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51005,
   "name": "room_picture_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51652,
   "name": "room_picture_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52361,
   "name": "room_picture_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53051,
   "name": "room_picture_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "room_picture_5_d000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53331,
   "name": "room_picture_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53751,
   "name": "room_picture_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54259,
   "name": "room_picture_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54833,
   "name": "room_picture_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55346,
   "name": "f_D832",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55395,
   "name": "room_picture_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55724,
   "name": "room_picture_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55789,
   "name": "f_D9ED",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55838,
   "name": "a_DA1E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55896,
   "name": "f_DA58",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55976,
   "name": "f_DAA8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56002,
   "name": "a_DAC2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56003,
   "name": "f_DAC3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56014,
   "name": "a_DACE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56016,
   "name": "f_DAD0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56056,
   "name": "f_DAF8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56096,
   "name": "f_DB20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56136,
   "name": "f_DB48",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56176,
   "name": "f_DB70",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56213,
   "name": "room_picture_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56216,
   "name": "f_DB98",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56256,
   "name": "f_DBC0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56282,
   "name": "a_DBDA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56283,
   "name": "f_DBDB",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56294,
   "name": "room_picture_12_dbe6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56778,
   "name": "room_picture_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57249,
   "name": "room_picture_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "room_picture_14_e000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57759,
   "name": "room_picture_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58237,
   "name": "room_picture_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59008,
   "name": "tune1_voice1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59072,
   "name": "tune1_voice2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59200,
   "name": "tune1_voice3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59261,
   "name": "room_picture_16_e77d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59392,
   "name": "anim_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59416,
   "name": "f_E818",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59520,
   "name": "object_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59584,
   "name": "hook2_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59587,
   "name": "f_E8C3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59648,
   "name": "safe_pictures",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59872,
   "name": "room_type_limits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59904,
   "name": "charset_swap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60289,
   "name": "charset_swap_eb81",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60928,
   "name": "charset_swap_ee00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61952,
   "name": "charset_variants",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62976,
   "name": "charset_variants_f600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64000,
   "name": "icon_graphics",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The processor port's direction register; the warm start writes $2F to it."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The processor port: $35 in play (all RAM, I/O at $D000), $34 while a room picture is unpacked, $36 while the keyboard is read."
  },
  {
   "address": 6912,
   "type": "line",
   "text": "The rectangles of the room objects the player cannot walk through, one byte per object number (the values in $0250): $1B00 and $1B20 the first and last column, $1B40 the back edge and $1B60 the front edge in depth (depth grows away from the viewer: the stick's up adds one, $35C7); read by $2EB4"
  },
  {
   "address": 6944,
   "type": "line",
   "text": "Last column of each object's rectangle."
  },
  {
   "address": 6976,
   "type": "line",
   "text": "The back edge of each object's rectangle in depth (the larger value): a player in its columns and behind it stops here walking towards the viewer ($2F49)."
  },
  {
   "address": 7008,
   "type": "line",
   "text": "The front edge of each object's rectangle in depth (the smaller value): a player in its columns and in front of it stops here walking away from the viewer ($2F3C); live, under the hall's stairs the limit is 26."
  },
  {
   "address": 7040,
   "type": "line",
   "text": "Room tables, one byte for each of 32 rooms: here the room's first multicolour ($5D, for $D022), then at $1BA0 its second ($5E, $D023), $1BC0 its type (bit 7: the picture is widened), $1BE0 its depth ($02A7), $1C00 the depth of its front edge ($C4), $1C20 its width in columns; read by build_room ($388D)"
  },
  {
   "address": 7072,
   "type": "line",
   "text": "The room's second multicolour, for $D022's partner $D023."
  },
  {
   "address": 7104,
   "type": "line",
   "text": "The room's type (bits 0-6: picture record, hook and sounds; bit 7: widen the picture)."
  },
  {
   "address": 7136,
   "type": "line",
   "text": "The room's depth: the player walks away from the viewer as far as one less than this (live, the hall's 59 stops at 58)."
  },
  {
   "address": 7168,
   "type": "line",
   "text": "The depth of the room's front edge: the player walks towards the viewer as far as one less than this (live, the hall's 8 stops at 7)."
  },
  {
   "address": 7200,
   "type": "line",
   "text": "The room's width in columns of the room map."
  },
  {
   "address": 7232,
   "type": "line",
   "text": "The objects of each room, a list per room in room order, each ended by a negative byte ($2F5E reads them); some entries are changed in play: the safe ($8AC2) and the bodies ($AC96, $ACEC, $B19E, $B1CF)"
  },
  {
   "address": 7233,
   "type": "line",
   "text": "An entry of the room object lists ($1C40), cleared at the start of a game ($86CA) and by the safe ($8AC7)."
  },
  {
   "address": 7234,
   "type": "line",
   "text": "Part of room_object_lists ($1C40), read by $86CD, $8ACA."
  },
  {
   "address": 7244,
   "type": "line",
   "text": "Part of room_object_lists ($1C40), read by $86D9."
  },
  {
   "address": 7264,
   "type": "line",
   "text": "An entry of the room object lists ($1C40), cleared at the start of a game ($86D0) and set when Cynthia dies ($AC9A)."
  },
  {
   "address": 7274,
   "type": "line",
   "text": "An entry of the room object lists ($1C40), cleared at the start of a game ($86DC) and set when Gabriel dies ($AD12)."
  },
  {
   "address": 7290,
   "type": "line",
   "text": "Part of room_object_lists ($1C40), read by $86D6, $B1E2."
  },
  {
   "address": 7307,
   "type": "line",
   "text": "Part of room_object_lists ($1C40), read by $86D3, $B1AC."
  },
  {
   "address": 7904,
   "type": "line",
   "text": "Which of the three room character sets each room uses (0-2), read by build_room through $3CC0"
  },
  {
   "address": 7936,
   "type": "line",
   "text": "The 32 door records, eight bytes each: the room on one side (+0) and the door's place there (+1), the room on the other side (+2) and its place (+3), the flags (+4: bit 0 open, bit 1 locked), each side's door type and position bits (+5, +6), and the object that is its key (+7)"
  },
  {
   "address": 7937,
   "type": "line",
   "text": "A door record's +1: the door's place in the room at +0."
  },
  {
   "address": 7938,
   "type": "line",
   "text": "A door record's +2: the room on the other side."
  },
  {
   "address": 7939,
   "type": "line",
   "text": "A door record's +3: the door's place in the room at +2."
  },
  {
   "address": 7940,
   "type": "line",
   "text": "A door record's +4: its flags, bit 0 open, bit 1 locked."
  },
  {
   "address": 7941,
   "type": "line",
   "text": "A door record's +5: the door's type and position bits on the side of the room at +0."
  },
  {
   "address": 7942,
   "type": "line",
   "text": "A door record's +6: the door's type and position bits on the side of the room at +2."
  },
  {
   "address": 7943,
   "type": "line",
   "text": "Part of doors ($1F00), read by $3EC1."
  },
  {
   "address": 7956,
   "type": "line",
   "text": "Door 2's flags, set to locked at the start of a game by $86E4."
  },
  {
   "address": 7964,
   "type": "line",
   "text": "Door 3's flags (+4 of its record), set to locked at the start of a game by $86E7."
  },
  {
   "address": 8100,
   "type": "line",
   "text": "Door 20's flags, set to locked at the start of a game by $86EA."
  },
  {
   "address": 8192,
   "type": "line",
   "text": "The engine's jump table: 24 three-byte JMPs at $2000-$2047, the entry points the adventure module at $8000 calls. $2000 is the start-up, and also where the loader's last stage lands and where the cartridge-style vectors at $8000 point."
  },
  {
   "address": 8201,
   "type": "line",
   "text": "Engine jump table entry: draw_icons ($32CE)."
  },
  {
   "address": 8204,
   "type": "line",
   "text": "Engine jump table entry: irq_room_end ($2A68)."
  },
  {
   "address": 8210,
   "type": "line",
   "text": "Engine jump table entry: print_ay ($21C6)."
  },
  {
   "address": 8216,
   "type": "line",
   "text": "Engine jump table entry: door_open_close ($3E9D)."
  },
  {
   "address": 8219,
   "type": "line",
   "text": "Engine jump table entry: door_unlock ($3EB8)."
  },
  {
   "address": 8222,
   "type": "line",
   "text": "Engine jump table entry: print_inline ($28DE)."
  },
  {
   "address": 8228,
   "type": "line",
   "text": "Engine jump table entry: row_address ($2419)."
  },
  {
   "address": 8234,
   "type": "line",
   "text": "Engine jump table entry: build_room ($388D)."
  },
  {
   "address": 8240,
   "type": "line",
   "text": "Engine jump table entry: read_joystick ($2200)."
  },
  {
   "address": 8252,
   "type": "line",
   "text": "Engine jump table entry: lights_out ($2696)."
  },
  {
   "address": 8261,
   "type": "line",
   "text": "Engine jump table entry: place_cast_end ($3722)."
  },
  {
   "address": 8264,
   "type": "line",
   "text": "Cold start, run once from the loader's jump to $2000. Clears the whole of zero page (STA $02,X with X counting down from 0 wraps within the page, reaching $00 and $01) and the stack page, then $3FF0-$3FF9 and $3FFF, and falls into the warm start at $2067."
  },
  {
   "address": 8295,
   "type": "line",
   "text": "Warm start, also reached from the NMI handler when RESTORE is pressed in play. Resets the stack, blanks the screen, sets $01 to $35 (RAM everywhere, I/O visible), video bank 1, initialises video, sound, the adventure module ($8024) and the interrupts, runs the title sequence ($222D) and then sets up a new game: clock strings from $2153/$2158, the cast's starting places ($8054, $8057), and enters the task loop at $2120."
  },
  {
   "address": 8425,
   "type": "line",
   "text": "Inside the warm start; the address is named only as the operand of a BIT at $279D that skips a LDA #$E9."
  },
  {
   "address": 8480,
   "type": "line",
   "text": "The main loop: calls the ten tasks of the table at $213F in turn, for ever, each through JMP ($26) at $213C."
  },
  {
   "address": 8508,
   "type": "line",
   "text": "JMP ($26): calls the task whose address the loop put in $26/$27."
  },
  {
   "address": 8511,
   "type": "line",
   "text": "The main loop's ten tasks, in the order run: fire latch test ($2224), joystick read ($2200), then $8033, $3E49, $2EB4, $378A, $803C, $804B, $2592 and $3979."
  },
  {
   "address": 8512,
   "type": "line",
   "text": "Part of task_table ($213F), read by $212B."
  },
  {
   "address": 8531,
   "type": "line",
   "text": "\"09:10\", copied to $1EBD at the start of a game."
  },
  {
   "address": 8536,
   "type": "line",
   "text": "\"11:03\", copied to $1EC4 at the start of a game."
  },
  {
   "address": 8541,
   "type": "line",
   "text": "\"INTRODUCING THE CAST..\", printed by the title sequence before the cast's biographies."
  },
  {
   "address": 8574,
   "type": "line",
   "text": "Turns all sprites off and unexpanded, sets the border and background to black and every sprite behind the background ($D01B = $FF), keeps the screen-on bit of $D011 with text mode, sets $D016 = $10 (multicolour, 38 columns) and $D018 = $F0 (screen $7C00, characters $4000 in bank 1)."
  },
  {
   "address": 8622,
   "type": "line",
   "text": "Clears all SID registers, waits a short delay loop, then sets the volume to 10."
  },
  {
   "address": 8646,
   "type": "line",
   "text": "Prints the zero-terminated string at A (high) / Y (low) through print_char ($21D8). Entry $21CA prints the string at ($26)."
  },
  {
   "address": 8664,
   "type": "line",
   "text": "Puts one character into the text line buffer: a byte below $60 is stored at $0400 + the column in $012D, which then advances. A byte of $60 or more is a word token: its low five bits go in X to the adventure module's token printer ($806F), with $26/$27 and Y saved round the call. A, X and the flags are preserved for the plain case."
  },
  {
   "address": 8704,
   "type": "line",
   "text": "Reads joystick port 2 ($DC00) until two reads agree, flips the fire bit so that 1 means pressed, and shifts left three times: fire ends in bit 7. Keeps the result in $4B and sets the latch $0129 to $80 when fire has gone from released to pressed since the last read. Returns the latch in A."
  },
  {
   "address": 8740,
   "type": "line",
   "text": "Tests the fire latch $0129: N set if fire was pressed since the last test, then clears the latch."
  },
  {
   "address": 8749,
   "type": "line",
   "text": "The title screen: writes the copyright line from $22E3 (converted to screen codes) to row 1 of the screen, makes sure the title's character set is the one at $4000 (swapping the two sets with $22BE if the first byte of $4000 is not $3C), copies sprite pointers and positions from $234A-$2361 to $0208-$021F, calls $23A8 and the adventure module's $8018 with interrupts off, turns the screen on, and waits for fire. While it waits it calls $8039 once when the counter $1E66 reaches 21 and $2741 when it then reaches 27. On fire it blanks the screen, sets the game state $0F to 2, calls $26F5, and falls into swap_charsets, which puts the game's character set back at $4000."
  },
  {
   "address": 8894,
   "type": "line",
   "text": "Swaps the 2 KB at $4000-$47FF with the 2 KB at $EA00-$F1FF, with interrupts off: the title's character set and the game's change places."
  },
  {
   "address": 8931,
   "type": "line",
   "text": "The copyright line for the title, in the title set's own codes: byte $00 is the copyright sign (glyph 0 of the title set), then \" A.P.S. SOFTWARE 1986\" with each full stop stored as $5C; title_sequence ($222F) converts the line to screen codes, $5C becoming $3C."
  },
  {
   "address": 8953,
   "type": "line",
   "text": "Clears the eight entries of each per-sprite table at $0208, $0210, $0218, $0220, $0238 and $0248."
  },
  {
   "address": 8979,
   "type": "line",
   "text": "Sets the colour of screen rows 0-14 (colour RAM through the row table) to 11, dark grey: the room's part of the screen."
  },
  {
   "address": 8997,
   "type": "line",
   "text": "Draws the title's picture box: twelve characters from $233E on row 12 from column 13 ($7DED), in white, and character $0B at row 13 column 22 ($7E1E), also white."
  },
  {
   "address": 9022,
   "type": "line",
   "text": "Twelve character codes for the title's box ($2325)."
  },
  {
   "address": 9034,
   "type": "line",
   "text": "Start values for the title's eight sprites, copied by the title routine: eight X positions (to $0208), eight X high bytes (to $0210) and eight Y positions (to $0218)."
  },
  {
   "address": 9042,
   "type": "line",
   "text": "Part of title_sprite_init ($234A), read by $2259."
  },
  {
   "address": 9050,
   "type": "line",
   "text": "Part of title_sprite_init ($234A), read by $225F."
  },
  {
   "address": 9058,
   "type": "line",
   "text": "Moves the title's eight sprites up the screen: every third call adds 1 to each Y position at $0218 and wraps it to 0 at $AA. Reached through the address at $2C24."
  },
  {
   "address": 9091,
   "type": "line",
   "text": "Builds the 256-byte table at $0500 that reverses the order of the four two-bit pixels of a multicolour byte (a picture flipped left to right), calls $801E, and clears the sprite shape at $7BC0-$7BFF."
  },
  {
   "address": 9128,
   "type": "line",
   "text": "Fills the title's logo area with character codes counting up from $40, 24 columns a row from row 3 column 8 ($7C80), skipping one column of rows past code $70, in light blue; when the codes reach $FA it places the six codes $FA-$FF by hand at $7CE2-$7D5B."
  },
  {
   "address": 9221,
   "type": "line",
   "text": "Fills all 25 rows of the screen at $7C00 with spaces."
  },
  {
   "address": 9239,
   "type": "line",
   "text": "LDX #$00 just before row_address ($2419): no instruction jumps or calls here; perhaps the start of a routine for row 0 that lost its callers."
  },
  {
   "address": 9241,
   "type": "line",
   "text": "Sets $D1/$D2 to the screen address of row X (tables $244A/$2464) and falls into $2423."
  },
  {
   "address": 9251,
   "type": "line",
   "text": "Sets $F3/$F4 to the colour RAM address that matches the screen address in $D1/$D2."
  },
  {
   "address": 9264,
   "type": "line",
   "text": "X = the text cursor's row $33 plus 17: the screen row of the text panel's line."
  },
  {
   "address": 9271,
   "type": "line",
   "text": "Sets $57/$58 and $59 to the screen address of row X, and $5A to its colour RAM page."
  },
  {
   "address": 9290,
   "type": "line",
   "text": "Low bytes of the screen address of rows 0-25 (screen $7C00, 40 bytes a row)."
  },
  {
   "address": 9316,
   "type": "line",
   "text": "High bytes of the screen address of rows 0-25, and one more byte."
  },
  {
   "address": 9343,
   "type": "line",
   "text": "Moves $D1/$D2 on by one row (40 bytes) and recomputes the colour pointer."
  },
  {
   "address": 9357,
   "type": "line",
   "text": "Moves $D1/$D2 back by one row and recomputes the colour pointer."
  },
  {
   "address": 9370,
   "type": "line",
   "text": "Clears screen rows 15 and 16 ($7E58-$7EA7) to spaces in white: the two lines under the room."
  },
  {
   "address": 9386,
   "type": "line",
   "text": "Takes its return address as a pointer to a zero-terminated string, prints it through print_ay ($21C6) and returns past it. No instruction in the image calls it."
  },
  {
   "address": 9411,
   "type": "line",
   "text": "Shows sprite 4 at X (low), Y and the X high bits in A, multicolour, with shape $D6 ($7580); its colour steps through the 16 colours at $34D9 as the counter $026F goes up on each call."
  },
  {
   "address": 9457,
   "type": "line",
   "text": "When the room $C7 is 14 and the low two bits of $1E68 are not zero, writes character $9D into the room buffer at $1500 plus one of the offsets 9, 14 or 19 ($2508) chosen by those bits."
  },
  {
   "address": 9480,
   "type": "line",
   "text": "Three offsets into the buffer at $1500, indexed 1-3 by $24F1."
  },
  {
   "address": 9483,
   "type": "line",
   "text": "Places a character's two sprites by the shape type in A: 1, side by side (the second 24 pixels right), both at the character's Y plus 21; 2, one above the other like type 0, with the first 2 pixels right of the second (the first at Y, the second at Y plus 21); 3, the first sprite alone at line $92 and the second off the screen. Other types go to $2A4D."
  },
  {
   "address": 9584,
   "type": "line",
   "text": "Adds one minute to the clock string at $1EBD (\"HH:MM\"), carrying through the digits with the limits at $258D."
  },
  {
   "address": 9613,
   "type": "line",
   "text": "The digit after the largest each place of the clock may hold: hours tens and units, the colon (skipped), minutes tens and units."
  },
  {
   "address": 9618,
   "type": "line",
   "text": "A main-loop task. Unless $1BC0 is 3 or $1B is 4 or more, compares the clock at $1EBD with the time limit at $1EC4 and, once it is reached, puts out the lights ($2696), calls $806C with 3, prints \"<you> ARE SHOT BY AN UNSEEN ASSASIN\" ($2639) and ends the game ($25BF)."
  },
  {
   "address": 9663,
   "type": "line",
   "text": "Turns the volume up, plays three bursts of noise on voice 1 ($25FE), falls into $25D6, sets the game state $0F to 2, prints \"THE GAME IS OVER.\" ($265B), calls $806C with 6 and restarts at the warm start."
  },
  {
   "address": 9686,
   "type": "line",
   "text": "Sets $1EA5 to 1 and $1D91/$1D9B to $D7/$D8 and the volume to 14. Also reached through the jump table at $2033."
  },
  {
   "address": 9705,
   "type": "line",
   "text": "Counts the game in $49, sets state 2, prints \"THE GAME IS OVER.\", calls $806C with 6 and restarts at the warm start. Also reached through $203F."
  },
  {
   "address": 9726,
   "type": "line",
   "text": "One burst on voice 1: frequency high byte $70, attack 0 decay 1, sustain 9 release 6, noise waveform gated on for a short delay, off, and silenced after a longer one."
  },
  {
   "address": 9772,
   "type": "line",
   "text": "A delay loop of X times 256 times 63 counts."
  },
  {
   "address": 9785,
   "type": "line",
   "text": "\"<k> ARE SHOT BY AN UNSEEN ASSASIN<p> \", with word tokens $6B and $70."
  },
  {
   "address": 9819,
   "type": "line",
   "text": "\"THE GAME IS OVER.\""
  },
  {
   "address": 9837,
   "type": "line",
   "text": "\"THE LIGHTS GO OUT\" and word token $70."
  },
  {
   "address": 9856,
   "type": "line",
   "text": "Game state handler 9 (table $2B0F): sets state 9 and clears screen rows 0-14."
  },
  {
   "address": 9878,
   "type": "line",
   "text": "Sets the game state $0F to 1 and prints \"THE LIGHTS GO OUT\". Reached through the jump table at $203C and from the time limit."
  },
  {
   "address": 9889,
   "type": "line",
   "text": "Sets the X high bit (bit 8) of the sprite the index Y points at in $B3, from the carry of A shifted right, for the sprite pair's second sprite (entry $26A1) or first ($26A3), and returns Y rounded down to a multiple of 4."
  },
  {
   "address": 9891,
   "type": "line",
   "text": "An entry into sprite_x_high ($26A1), reached from $2547."
  },
  {
   "address": 9910,
   "type": "line",
   "text": "The eight single-bit masks $01-$80."
  },
  {
   "address": 9918,
   "type": "line",
   "text": "Resets the text panel: cursor at line 0 column 1, clears screen rows 17-24 in columns 0-23, and the more-counter $026E."
  },
  {
   "address": 9973,
   "type": "line",
   "text": "Starts the text panel's fade-in: $5B = 5 steps, cursor home."
  },
  {
   "address": 9990,
   "type": "line",
   "text": "One step of the panel's fade-in, every fourth call: sets the colour of the panel's lines from the table at $273C, and at the last step clears the panel."
  },
  {
   "address": 10044,
   "type": "line",
   "text": "Panel colours for the fade-in steps."
  },
  {
   "address": 10049,
   "type": "line",
   "text": "Clears and fades in the text panel, then returns through $27ED. Printing a \"*\" does the same."
  },
  {
   "address": 10055,
   "type": "line",
   "text": "Prints the character in A at the text panel's cursor, keeping A, X, Y and the flags. Waits for any fade to finish, then: carriage return starts a new line; \"*\" clears the panel; letters ($40 and up) have $20 taken off (the SBC #$20 hidden in the BIT at $279D) to make the panel font's codes; punctuation and digits are mapped to the panel font's codes one by one. After the seventh line it waits for fire once every six lines (a \"more\" pause) and asks the interrupt to scroll the panel up ($56)."
  },
  {
   "address": 10221,
   "type": "line",
   "text": "Restores A, X, Y and the flags saved by $2800 and returns."
  },
  {
   "address": 10240,
   "type": "line",
   "text": "Saves A, X, Y and the flags in $014B-$014E."
  },
  {
   "address": 10258,
   "type": "line",
   "text": "Called from the interrupt: steps the fade, blinks the cursor (colours from $288E and $2896 on the cursor's row), scrolls the panel up one line when $56 asks, and in game state 6 goes on to $8060."
  },
  {
   "address": 10382,
   "type": "line",
   "text": "Character codes for the blinking cursor's eight steps."
  },
  {
   "address": 10390,
   "type": "line",
   "text": "Colours for the blinking cursor's eight steps."
  },
  {
   "address": 10398,
   "type": "line",
   "text": "Prints the zero-terminated text at A (high) / Y (low) in the text panel, a word at a time, starting a new line when the next word would go past column 24. Words end at a space, comma, carriage return or the zero. Entry $28A2 prints the text at ($26)."
  },
  {
   "address": 10444,
   "type": "line",
   "text": "Reads the next character of the text: carry set at the end (zero), clear at a space, comma or carriage return, with Y moved on."
  },
  {
   "address": 10462,
   "type": "line",
   "text": "Takes its return address as a pointer to a zero-terminated string, prints it word-wrapped in the text panel ($28A2), and returns past the string. Called through the jump table at $201E and directly."
  },
  {
   "address": 10490,
   "type": "line",
   "text": "Sets up the interrupts: CIA interrupts off and acknowledged, the video chip's raster interrupt on, the stage counter $B0 and text state cleared, the per-state hook set ($2D38 with X = 0), the first raster line from $299F, and the NMI, reset and IRQ vectors at $FFFA-$FFFF copied from $2944 (NMI and reset $294A, IRQ $2967)."
  },
  {
   "address": 10564,
   "type": "line",
   "text": "NMI, reset and IRQ vectors copied to $FFFA: $294A, $294A, $2967."
  },
  {
   "address": 10570,
   "type": "line",
   "text": "The NMI handler, reached by the RESTORE key. Ignores an NMI from a CIA 2 timer, and returns unless $76 is zero and the game state $0F is not zero; then restarts the game at the warm start ($2067)."
  },
  {
   "address": 10599,
   "type": "line",
   "text": "The raster interrupt: acknowledges it, takes the routine for the current stage ($B0, 0-2) from the table at $2999, moves the stage on, sets the raster line for the next stage from $299F (lines 10, 169, 185), and calls the routine. A, X and Y are kept."
  },
  {
   "address": 10649,
   "type": "line",
   "text": "The three raster stages: $29B1 (line 10, the room), $2A8B (line 169, the message bar), $2ACC (line 185, the text panel)."
  },
  {
   "address": 10650,
   "type": "line",
   "text": "Part of irq_stages ($2999), read by $297C."
  },
  {
   "address": 10655,
   "type": "line",
   "text": "Raster lines of the three stages: 10, 169, 185."
  },
  {
   "address": 10658,
   "type": "line",
   "text": "JMP ($AE): calls the stage routine."
  },
  {
   "address": 10661,
   "type": "line",
   "text": "Sprite bits for the four sprite pairs (sprites 0+1, 2+3, 4+5, 6+7), the same with those bits clear, and each pair's register offset (0, 2, 4, 6)."
  },
  {
   "address": 10665,
   "type": "line",
   "text": "Part of pair_masks ($29A5), read by $2A1D."
  },
  {
   "address": 10669,
   "type": "line",
   "text": "Part of pair_masks ($29A5), read by $2A29."
  },
  {
   "address": 10673,
   "type": "line",
   "text": "Raster stage 0, at line 10. Sets $D016 (multicolour, with the room's horizontal scroll $19 in play), black background, no X expansion, and the border colour: during a flash the count $0146 steps it through the colours at $2EAD. On the title (state 0) it sets up the title's video ($2BDE), runs its sprite and colour work ($2CEE, $2C4A, $8015, $804E) and the common end. In play it sets the room's character set ($D018 = $F0) and colours ($5D, $5E), and places the four characters' sprite pairs from the slot tables ($0244 the pair, $0208/$0210/$0218 the position, $0220 the colour, $0228/$0230 the two shape pointers, $1EAF the shape type), then jumps through the hook at $0124."
  },
  {
   "address": 10765,
   "type": "line",
   "text": "Loops over the four character slots, 3 down to 0, giving each its sprite pair."
  },
  {
   "address": 10829,
   "type": "line",
   "text": "Places a slot's two sprites one above the other: same X, the second 21 lines lower."
  },
  {
   "address": 10850,
   "type": "line",
   "text": "Next slot; after the last, jumps through the per-state hook at $0124."
  },
  {
   "address": 10856,
   "type": "line",
   "text": "The common end of raster stage 0: writes the sprite enable and X high bits gathered in $B2/$B3, makes every sprite multicolour, puts the sprites in front of the background in play ($D01B = 0) and behind it on the title ($FF), runs the door and room animation ($2C57), the message bar ($2B21), the text panel ($2812), and reads the joystick ($2200)."
  },
  {
   "address": 10891,
   "type": "line",
   "text": "Raster stage 1, at line 169: after a short delay turns all sprites off, sets the message bar's fine scroll from $012E, the panel's character set ($D018 = $F2) and a blue background. Below state 10 it counts frames: $1E68 to 60, then $1E69 to 60, then $1E6A."
  },
  {
   "address": 10921,
   "type": "line",
   "text": "Inside irq_bar ($2A8B); the address is named only as the operand of a BIT at $80C3 that skips a LDA #$2A."
  },
  {
   "address": 10956,
   "type": "line",
   "text": "Raster stage 2, at line 185: after a short delay sets 38-column multicolour text, the panel's character set, black background and the panel's colours; shows the pointer (sprite 4, $24C3) when $56 is negative; then, for game states 0-8, jumps to the state's handler from the table at $2B0F."
  },
  {
   "address": 11023,
   "type": "line",
   "text": "The game state handlers run from the third raster stage, by $0F: 0 title ($2C00), 1 ($2680), 2 ($34FE), 3 ($315F), 4 ($33E9), 5 ($8051), 6 ($33E9), 7 ($35E8), 8 ($8075)."
  },
  {
   "address": 11024,
   "type": "line",
   "text": "Part of state_handlers ($2B0F), read by $2B07."
  },
  {
   "address": 11041,
   "type": "line",
   "text": "Scrolls the message bar (screen rows 15 and 16) left two pixels a frame ($012E, the fine scroll stage 1 sets), and one column every fourth frame, while there is text to show (the line buffer's length $012D) or blank columns to clear ($0144). Each new character from the line buffer at $0400 (position $0130) is drawn at column 39 two rows high: letters as two characters, (letter - $41) times 2 plus $80 on top and that plus 1 below, and punctuation as its own pair. At the end of the line it sets $1E6B to $FF (the line free for the next speaker), empties the buffer unless on the title, and leaves 41 columns of blanks to scroll on."
  },
  {
   "address": 11230,
   "type": "line",
   "text": "Title video: screen on, sprite multicolours 14 and 15, background multicolour 14, no scroll, no sprite expansion, $D018 = $F0."
  },
  {
   "address": 11264,
   "type": "line",
   "text": "Game state 0 handler, the title: calls $8012; every third call steps the colour of the copyright row ($D832, 22 cells) through the table at $2C2C; moves the title's sprites ($2362) and calls $2E5C and $802A."
  },
  {
   "address": 11308,
   "type": "line",
   "text": "Colours the copyright line cycles through, ending with $FF."
  },
  {
   "address": 11328,
   "type": "line",
   "text": "X moves to the next colour of the table at $2C2C, back to the start at the $FF end; A is that colour."
  },
  {
   "address": 11338,
   "type": "line",
   "text": "Waits until the raster has passed line $43 and sets $D016 to $10."
  },
  {
   "address": 11351,
   "type": "line",
   "text": "Runs one of four animation jobs in turn each frame ($02A3, 0-3; addresses split low at $2C7B and high at $2C7F): $2C83, $8021, $2CC2, $8021. Not on the title, in state 5 or in states 10 and above."
  },
  {
   "address": 11387,
   "type": "line",
   "text": "Low bytes of the four animation jobs."
  },
  {
   "address": 11391,
   "type": "line",
   "text": "High bytes of the four animation jobs."
  },
  {
   "address": 11395,
   "type": "line",
   "text": "Animation job 0, every fourth frame: copies one of three 8-byte frames from $E800 (in the order 0, 1, 2, 1) over character 97 of the room's character set ($4308). Every tenth time it counts $68, and when that reaches 75 it adds a minute to the clock ($2570): 4 x 10 x 75 = 3,000 frames, one minute at 50 frames a second."
  },
  {
   "address": 11458,
   "type": "line",
   "text": "Animation job 2: calls $8072, then on every other call copies 24 bytes from a 40-byte ring at $E818, starting 4 bytes further on each time, over characters 52-54 of the room's set ($41A0)."
  },
  {
   "address": 11502,
   "type": "line",
   "text": "Title sprites: places the eight sprites from the slot tables ($0208 X, $0210 X high, $0218 Y, kept at $94 or above the panel), white, shape $5A, or shape $EC/$ED (by the sprite's number) once a sprite has reached the panel; all eight on and multicolour, behind the background on the title."
  },
  {
   "address": 11576,
   "type": "line",
   "text": "Sets the hook at $0124 that the end of raster stage 0 jumps through, to entry X of the table at $2D48."
  },
  {
   "address": 11592,
   "type": "line",
   "text": "The hooks: $2A68 (none), $2D50, $2DC1, $8063."
  },
  {
   "address": 11593,
   "type": "line",
   "text": "Part of state_hooks ($2D48), read by $2D41."
  },
  {
   "address": 11600,
   "type": "line",
   "text": "Hook 1: calls $8069, then places sprites 0-2 side by side at line $85, 24 pixels apart, from the position $1D55/$1D4B less the room's scroll $C2/$C3, brown, with shapes $D5, $D4, $D3, and goes on to $8063."
  },
  {
   "address": 11713,
   "type": "line",
   "text": "Hook 2: works out a column from the position $1D55/$1D4B, rounds it to a step of 6 columns (or that plus 3), and when it is below 41 places sprites 0 and 1 there at line $72, brown, with shapes from $E8C0/$E8C3 (the next pair when $C8 is 2 or more); then the common end at $2A68."
  },
  {
   "address": 11868,
   "type": "line",
   "text": "For each title sprite that has reached the panel (Y $95 or more), redraws its shape at $7B40 or $7B80 so that only the part above the panel shows: the rows below are cleared and the rest copied from $5680."
  },
  {
   "address": 11928,
   "type": "line",
   "text": "Byte offsets of sprite shape rows, 3 bytes a row."
  },
  {
   "address": 11949,
   "type": "line",
   "text": "The border colours of a flash, seven steps, read by irq_room ($29CD) as $0146 counts down."
  },
  {
   "address": 11956,
   "type": "line",
   "text": "A main-loop task: finds, among the objects of the player's room (the list at $0250, $02F6 of them, with their rectangles in $1B00/$1B20/$1B40/$1B60), the nearest one on each side of the player's position ($64, and $1D7D) and stores their edges in $1DE4-$1DE7 and their positions in the room's list (the index into $0250) in $1DE8-$1DEB, all copied to $1DEC-$1DF3."
  },
  {
   "address": 12126,
   "type": "line",
   "text": "Builds the list of the objects in the player's room ($48): from the lists at $1C40, one for each room and each ended by a negative byte, it copies each object's number to $0250, its offset in the lists less the room number (its index among every room's objects) to $025A and a value from $E880 to $0264; $02F6 is the count. Also reached through the jump table at $202D."
  },
  {
   "address": 12177,
   "type": "line",
   "text": "Works out the room's scroll position in pixels ($C2/$C3, from the scroll column $40 and the fine scroll $19), then fills the four sprite slots with the characters (player included, $1D41-$1D4A) who are in the player's room ($48) and within the visible width: X position ($0208/$0210), Y ($0218, and $0240 for sorting), colour ($0220), the two shape pointers ($0228/$0230) and the shape type ($1EAF). At most four. It then gives the slots their sprite pairs ($0244) in order of Y, taking the smallest Y first: the character highest on the screen gets pair 3."
  },
  {
   "address": 12363,
   "type": "line",
   "text": "Puts the nine characters in their starting rooms (the table at $30B1) and clears their state: positions, counters and delays; X coordinate $A0, depth $1A, $1E06 = $FF (no walk target), $1DF4 = 2, $1EB4 = 10; and their screen positions ($3090). Clears $76 and $1E4E."
  },
  {
   "address": 12432,
   "type": "line",
   "text": "Screen position of character X from its room coordinates: $1D60 (Y, from $81 less the depth $1D7E plus $1E92) and the 9-bit X $1D4C/$1D56 (twice the depth plus $1D74/$1D6A)."
  },
  {
   "address": 12465,
   "type": "line",
   "text": "The starting room of each of the nine characters."
  },
  {
   "address": 12474,
   "type": "line",
   "text": "The pick-up step of the investigation menu (game states 4 and 6). When $1E64 is 1, with the object number in A, counts what is carried through $8048: at 5, \"YOU CAN/T CARRY ANY MORE!\"; objects $24 and $25 go to $805D; others are marked carried ($1DAC = $80) and the menu goes on through $805A and $802D. With none, sets $0271 and opens the next menu ($800C, state 3)."
  },
  {
   "address": 12555,
   "type": "line",
   "text": "What fire does in the menu states. In state 2 (playing) it opens the investigation menu ($34E9, then state 3). In states 3, 4 and 6, with an icon under the pointer ($0147) that the icon table at $1E5A allows, it carries out the icon: states 4 and 6 through $30BA; state 3 runs $800F with the icon, in state 2 for the while."
  },
  {
   "address": 12602,
   "type": "line",
   "text": "Sets the game state $0F to 2 (play)."
  },
  {
   "address": 12607,
   "type": "line",
   "text": "Prints \"*YOU CAN/T CARRY ANY MORE!\"."
  },
  {
   "address": 12610,
   "type": "line",
   "text": "Text printed in the text panel by the call at $313F: \"(clears the panel) YOU CAN/T CARRY ANY MORE!  (new line)\"."
  },
  {
   "address": 12638,
   "type": "line",
   "text": "The end of say_cant_carry, after its text."
  },
  {
   "address": 12639,
   "type": "line",
   "text": "Game state 3 handler, the investigation menu, every frame. Shows the pointer (sprite 0, shape $5B) at $013B-$013D and the highlight ($3346). The pointer moves with momentum: every fourth frame the stick changes its speed $013E/$013F by one, within -8 to 7 in each direction; every sixth frame the speed falls by one towards zero; the pointer bounces off the edges of the icon box (X 244-305, Y $C0-$E1), its speed reversed. Its colour cycles ($2C40). Then it finds the icon under it ($33A3) and runs the adventure module's step ($801B) and $3722."
  },
  {
   "address": 12888,
   "type": "line",
   "text": "Calls $801B and goes on to $3722. Also reached through the jump table at $2027."
  },
  {
   "address": 12894,
   "type": "line",
   "text": "Draws the frame round the panel's picture box on the right of screen rows 17-24 (characters $0F, $13, $0D and corners $0C, $0E, $10, $11, in orange) and clears its inside ($32B4)."
  },
  {
   "address": 12980,
   "type": "line",
   "text": "Fills the inside of the box, rows 18-23 and columns 27-37, with character $12 in light red."
  },
  {
   "address": 13006,
   "type": "line",
   "text": "Draws X icons in the box, each three characters wide and two rows high, codes from $C0 up, brown, three to a row at columns 27, 31 and 35 from row 18 (read from the screen with six icons drawn, 1 November 2026); then puts the pointer at X $F0, Y $C8, still, with no icon chosen ($0147 = $FF). Reached through the jump table at $2009."
  },
  {
   "address": 13099,
   "type": "line",
   "text": "Puts three consecutive character codes (X up) at ($D1),Y on, brown."
  },
  {
   "address": 13126,
   "type": "line",
   "text": "When an icon is under the pointer ($0147), places sprite 1 (shape $5C) over it from the tables at $3388/$3391/$339A and flashes its colour between black and white every five frames."
  },
  {
   "address": 13192,
   "type": "line",
   "text": "X position of the highlight for each of the nine icon places."
  },
  {
   "address": 13201,
   "type": "line",
   "text": "Bit 8 of the highlight's X for each icon place."
  },
  {
   "address": 13210,
   "type": "line",
   "text": "Y position of the highlight for each icon place."
  },
  {
   "address": 13219,
   "type": "line",
   "text": "Finds which icon place the pointer is over: the box is three rows by three columns of icons, 32 pixels apart across (from X $EE) and 16 down (from Y $BE), with a margin round each. Sets $0147 to the place (0-8) when it is one of the $0148 icons drawn, else $FF."
  },
  {
   "address": 13289,
   "type": "line",
   "text": "Game state 4 and 6 handler: a list in the box rather than icons. Four wide sprites (shapes $CE-$D0) mark the chosen line across the panel at the pointer's Y, their colour stepping through $34D9. Up and down on the stick (each new press, $1E65) move the choice $0147 within the $0148 entries; in state 6 the list scrolls ($6A) to keep the choice among six lines shown, with sprite 4 as a \"more\" arrow when there are lines below. Fire acts through $3258; left or right leaves the list (choice $FF) and, for the menus that set $1E64 to 3 or to 8 or 9, clears bit 7 of $1E33 for the character being questioned ($74)."
  },
  {
   "address": 13529,
   "type": "line",
   "text": "Sixteen colours the menu marker and the pointer step through."
  },
  {
   "address": 13545,
   "type": "line",
   "text": "A = 1 when one of the nine characters is in the player's room ($48), else 0; also in $20."
  },
  {
   "address": 13566,
   "type": "line",
   "text": "Game state 2 handler, play, every frame. Works out the player's column ($64) from its X; when the player is walking ($012C) and the step count $1DAA runs out, moves it one step in its direction $1B: left and right along X ($1D69/$1D73), up and down in depth ($1D7D), stopped at the nearest object's edge ($1DEC-$1DF3, $3845) and the room's ends ($3863); on the stairs (directions 4 and 5) the height $1E91 changes instead. Then it scrolls the room to keep the player in view and copies the 40-column window of the room map at $0C00 onto the screen when the scroll column $40 has changed. Then it reads the stick every third frame to choose the direction (table $3743), sets the player's shapes ($1D91, $1D9B) from the tables at $372E and $3734, and places the visible cast ($2F91)."
  },
  {
   "address": 13800,
   "type": "line",
   "text": "Takes the player's X ($1D69/$1D73, written back as it is) less $94 pixels as the scroll position, kept between 0 and the room's limit $1DE1/$1DE2; its low three bits give the fine scroll $19 and the rest the scroll column $40. When the column has changed it copies the room map ($0C00-$1AFF, 15 rows of 256 columns, from column $40) to screen rows 0-14."
  },
  {
   "address": 14114,
   "type": "line",
   "text": "Places the visible cast ($2F91) and goes on to the adventure module ($8030). Also reached through the jump table at $2045."
  },
  {
   "address": 14120,
   "type": "line",
   "text": "Frames between steps for each direction of movement $1B."
  },
  {
   "address": 14126,
   "type": "line",
   "text": "The player's first shape pointer for each direction (stored as letters: \"M\", \"H\", \"C\", \"R\", \"C\", \"M\")."
  },
  {
   "address": 14132,
   "type": "line",
   "text": "Added to the first shape to give the second, by the walking step."
  },
  {
   "address": 14147,
   "type": "line",
   "text": "The direction of movement for each value of the stick's four direction bits; $FF where the player stands still."
  },
  {
   "address": 14163,
   "type": "line",
   "text": "Puts the player in the hall: X $A0, depth $28, height 0, scroll 0, direction 2, colour 10, and a step count of 1."
  },
  {
   "address": 14218,
   "type": "line",
   "text": "A main-loop task. Starts the climb up the stairs (direction 4) when the player in room 8 walks into their foot, and the climb down (direction 5) in room 9; during a climb, when the height $1E91 reaches its end, moves the player to the other room at the stairs' head or foot ($380D) and back to walking."
  },
  {
   "address": 14405,
   "type": "line",
   "text": "Called when the player walks into an object's edge (Y the object, negative for none): remembers it in $1DAB, and the first time since the last move away ($1DA8) flashes the border ($0146 = 7) when the object's flag at $0264 has bit 0 set: the flash that tells the player something here can be investigated."
  },
  {
   "address": 14435,
   "type": "line",
   "text": "Carry set when the room's right-hand limit $6C/$6D is beyond the player's position $1D55/$1D4B. A is kept."
  },
  {
   "address": 14452,
   "type": "line",
   "text": "Stores A in the room map at rows 3, 4, 6 and 7 of column X ($0F00, $1000, $1200, $1300)."
  },
  {
   "address": 14461,
   "type": "line",
   "text": "Stores A in the room map at rows 3 to 7 of column X; entry $3883 rows 5 to 7, $3886 rows 6 and 7."
  },
  {
   "address": 14467,
   "type": "line",
   "text": "An entry into put_rows_3_7 ($387D), reached from $3AE9."
  },
  {
   "address": 14477,
   "type": "line",
   "text": "Builds the player's room ($48) with the screen blanked: clears the room map ($3BBB), takes the room's width ($1C20), colours ($1B80, $1BA0 to $5D, $5E) and type ($1BC0, low seven bits to $C7) from the room tables, runs the type's set-up ($3C6D), unpacks the room's picture ($3BD7) and any extra part ($3D0A), works out the scroll limits ($3C9A), lists the room's objects ($2F5E), adds the type 14 marker ($24F1), the room's right-hand limit ($3DA1) and its character set ($1EE0, $3CC0), sets the height for room 8, fills the floor row at $1A00 with character $53, finds the doors of the room in the door table at $1F00 and draws each ($3993, and $3A27 for its frame), blanks the map's unused columns, finds the movement limits ($2EB4) and turns the screen on. Also reached through the jump table at $202A."
  },
  {
   "address": 14713,
   "type": "line",
   "text": "A main-loop task. When the room has been drawn and the player is in the room held in $77, clears $77, calls $8078 and holds the game in state 8 until something changes the state."
  },
  {
   "address": 14739,
   "type": "line",
   "text": "Draws door X of the room into the room map, open or closed by bit 0 of its record at $1F04: by the door's type ($1CD4) through the table at $39B4 when open, $3B24 when closed. Reached through the jump table at $2021 as well."
  },
  {
   "address": 14772,
   "type": "line",
   "text": "Drawing routine for each of the 12 door types, open: types 0, 2, 6, 8 and 10 draw something; the odd types and 4 draw nothing ($3CBF)."
  },
  {
   "address": 14773,
   "type": "line",
   "text": "Part of door_open_draw ($39B4), read by $39AB."
  },
  {
   "address": 14796,
   "type": "line",
   "text": "Draws an open door of type 0: the frame ($3A91) with the opening's characters ($5C-$60, and $10)."
  },
  {
   "address": 14866,
   "type": "line",
   "text": "Sets $26/$27 to the save area for door X: $0610 plus $36 bytes for each door."
  },
  {
   "address": 14887,
   "type": "line",
   "text": "Saves the 6 x 9 characters of the room map behind door X to its save area, so that opening the door can restore them."
  },
  {
   "address": 14936,
   "type": "line",
   "text": "Puts the 6 x 9 characters of door X back into the room map from its save area."
  },
  {
   "address": 14993,
   "type": "line",
   "text": "Draws a door's frame in the room map at column X, six columns wide (characters $06-$14)."
  },
  {
   "address": 15065,
   "type": "line",
   "text": "Draws an open door of type 8, in the back wall of the picture (rows 4-7): four columns of blank and the characters $47, $48, $0A, $31 and $30 round it."
  },
  {
   "address": 15120,
   "type": "line",
   "text": "Draws door X closed, by its type, through the table at $3B24."
  },
  {
   "address": 15140,
   "type": "line",
   "text": "Drawing routine for each of the 12 door types, closed."
  },
  {
   "address": 15141,
   "type": "line",
   "text": "Part of door_closed_draw ($3B24), read by $3B1B."
  },
  {
   "address": 15164,
   "type": "line",
   "text": "Restores the room behind a type 0 door ($3A58) and draws its frame closed ($3BAB)."
  },
  {
   "address": 15185,
   "type": "line",
   "text": "Draws a closed door of type 2: characters $54-$58 in the bottom row of the room map ($1A00)."
  },
  {
   "address": 15212,
   "type": "line",
   "text": "Draws an open door in the bottom row of the room map (types 2, 6 and 10, and type 6 closed): characters $59, $5A x 4 and $5B."
  },
  {
   "address": 15243,
   "type": "line",
   "text": "Closes a type 8 door: restores the picture behind it, so that the closed door cannot be seen."
  },
  {
   "address": 15255,
   "type": "line",
   "text": "Draws a closed type 10 door as six columns of plain floor (character $53): closed, it cannot be told from the floor."
  },
  {
   "address": 15275,
   "type": "line",
   "text": "Draws a door frame with character $10 in its fourth row."
  },
  {
   "address": 15284,
   "type": "line",
   "text": "A = the room's depth $02A7 divided by four, carry clear."
  },
  {
   "address": 15291,
   "type": "line",
   "text": "Fills the room map, $0C00-$1AFF, with spaces."
  },
  {
   "address": 15319,
   "type": "line",
   "text": "Unpacks picture record X of the list at $C100 into the room map, with the RAM under the I/O area switched in ($01 = $34). Each record starts with the address of the next and the picture's width; with carry clear the picture is centred in a 40-column screen (starting at (40 - width) / 2, or at 0 when it is wider), with carry set it starts at column 0. $2F and $30 are left at its right and left columns. The picture's 15 rows are unpacked one after another, each from its left column to its right ($3C3D)."
  },
  {
   "address": 15416,
   "type": "line",
   "text": "Puts $01 back to $35 and returns."
  },
  {
   "address": 15421,
   "type": "line",
   "text": "Next character of a packed picture. A run starts with a count byte (zero ends the picture, through two PLAs back to $3C38) and one bit: clear, the run's characters are whole bytes; set, a 4-bit high nibble follows and each character of the run is that nibble with 4 bits of its own. The stream is read a bit at a time, low bit first ($3D56)."
  },
  {
   "address": 15469,
   "type": "line",
   "text": "Sets up room type A: silences voice 2 with the value saved in $1ED2, sets the raster stage 0 hook from the table at $3C8A, and calls $8066 for the types marked with bit 7 there."
  },
  {
   "address": 15498,
   "type": "line",
   "text": "The raster hook for each room type (0 none, 2 the two-sprite hook), bit 7 for types that need $8066."
  },
  {
   "address": 15514,
   "type": "line",
   "text": "Works out how far the room can scroll: $1DE1/$1DE2 = (its right column $2F less 38) x 8 pixels, and $1DE0 = its left column plus 2."
  },
  {
   "address": 15529,
   "type": "line",
   "text": "Inside scroll_limits ($3C9A); the address is named only as the operand of a BIT at $27B5 that skips a LDA #$3C."
  },
  {
   "address": 15551,
   "type": "line",
   "text": "RTS: the drawing routine of the door types that draw nothing."
  },
  {
   "address": 15552,
   "type": "line",
   "text": "Brings the room's character set A (0-2) into $4400-$47FF: while the set there ($3FFF) is not the one asked for, swaps the 1 KB at $4400 with $F200, then $F200 with $F600, moving round the three sets."
  },
  {
   "address": 15590,
   "type": "line",
   "text": "Swaps the 1 KB at page A with the 1 KB at page X."
  },
  {
   "address": 15626,
   "type": "line",
   "text": "Adds to the room's picture: for a room of type 8 or 9 ($1BC0 halved is 4) once $C8 has reached 2, unpacks the extra record $C7 + 2 over it at its own place; for a room with bit 7 of $1BC0 set, copies columns 16 to its right edge of every row further right again, widening the room."
  },
  {
   "address": 15702,
   "type": "line",
   "text": "Next bit of the packed picture, in carry; a new byte is read every eight bits."
  },
  {
   "address": 15728,
   "type": "line",
   "text": "Next eight bits of the packed picture, in A."
  },
  {
   "address": 15757,
   "type": "line",
   "text": "Next four bits of the packed picture, in A."
  },
  {
   "address": 15777,
   "type": "line",
   "text": "Sets $6C/$6D to four times the room type's value at $E9E0: the X the player cannot pass to the right."
  },
  {
   "address": 15795,
   "type": "line",
   "text": "Finds a door of the room the player is at: $62 = 2 when the player has walked into a doorway (deep enough into a type 2 door's opening, or close enough to a back-wall door's depth) and 1 when standing just short of one, within the door's few columns ($3FC2); $63 the door's number; 0 when no door is at hand. Also sets the player's column $64."
  },
  {
   "address": 15894,
   "type": "line",
   "text": "A = the door table offset of door X of the room (its number times 8)."
  },
  {
   "address": 15901,
   "type": "line",
   "text": "A = the flags byte (+4) of door X of the room's record, X the record's offset."
  },
  {
   "address": 15909,
   "type": "line",
   "text": "Flips bit 0 (open) of door X's record; carry is the new state."
  },
  {
   "address": 15922,
   "type": "line",
   "text": "The first time the player comes to a door ($0145), flashes the border, except at a closed door of type 8, which so gives nothing away."
  },
  {
   "address": 15945,
   "type": "line",
   "text": "A main-loop task. In play, when the player is at a door, remembers whether it is open ($014A) and its kind ($1ED9); when the player has walked into a doorway ($62 = 2), takes it through ($3F1E). Standing at a door, flashes once on arrival ($3E32); then fire opens the door menu (state 3 through $3101, menu 3 for an open door and 2 for a closed one), or does what fire does in the menu ($310B) for a door of type 4 and when the door bits say so. Away from doors it goes to $3F9F."
  },
  {
   "address": 16029,
   "type": "line",
   "text": "Opens or closes the door the player is at ($63), unless it is locked (\"IT/S LOCKED.\"); remembers which in $1DA6 and redraws it. Reached through the jump table at $2018."
  },
  {
   "address": 16041,
   "type": "line",
   "text": "Inside door_open_close ($3E9D); the address is named only as the operand of a BIT at $27B8 that skips a LDA #$3E."
  },
  {
   "address": 16056,
   "type": "line",
   "text": "With a door at hand, when the key chosen ($C6) is the door's own ($1F07), flips its locked bit, closes it and redraws it, then goes to $8045; with the wrong key, \"THE KEY WILL NOT FIT.\"; with no door, \"YOU SEE NO DOOR.\". Reached through the jump table at $201B."
  },
  {
   "address": 16090,
   "type": "line",
   "text": "Prints \"*IT/S LOCKED.\". Reached through the jump table at $2039."
  },
  {
   "address": 16093,
   "type": "line",
   "text": "Text printed in the text panel by the call at $3EDA: \"(clears the panel) IT/S LOCKED.  (new line)\"."
  },
  {
   "address": 16108,
   "type": "line",
   "text": "The end of say_locked ($3EDA), after \"IT/S LOCKED.\"."
  },
  {
   "address": 16112,
   "type": "line",
   "text": "Text printed in the text panel by the call at $3EED: \"THE KEY WILL NOT FIT.  (new line)\"."
  },
  {
   "address": 16135,
   "type": "line",
   "text": "The end of the wrong-key path of door_unlock, after \"THE KEY WILL NOT FIT.\"."
  },
  {
   "address": 16139,
   "type": "line",
   "text": "Text printed in the text panel by the call at $3F08: \"YOU SEE NO DOOR.  (new line)\"."
  },
  {
   "address": 16157,
   "type": "line",
   "text": "The end of door_unlock after \"YOU SEE NO DOOR.\"."
  },
  {
   "address": 16158,
   "type": "line",
   "text": "Takes the player through door Y: marks it used, moves the player to the room on the other side ($48) at the door's position there, across (X) for a door in a side wall or in depth for one in the back, rebuilds the room ($388D), and calls $8057."
  },
  {
   "address": 16287,
   "type": "line",
   "text": "Away from doors: in the list menus (states 4 and 6) with no entry chosen ($0147 negative) it goes straight to what fire does in the menu ($310B); otherwise, on a fire press, in play it lets $8042 deal with it first, and then, or in the other states, goes to $310B."
  },
  {
   "address": 16322,
   "type": "line",
   "text": "Carry clear when the player's column $2E is within four columns of door X's column plus 3."
  },
  {
   "address": 16334,
   "type": "line",
   "text": "A = the player's depth less door X's column, compared with 3. Nothing in the image calls it."
  },
  {
   "address": 16344,
   "type": "line",
   "text": "Z set when A is 4 or 6, the list menus."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "The room character set's 2 KB, at $4000 in video bank 1 ($D018 = $F0). At the hand-over it holds the title's set (the copyright line and the logo); the title swaps it with the 2 KB at $EA00 ($22BE) and puts the room set here. Its upper half, $4400-$47FF, is one of the three room variants $3CC0 swaps in"
  },
  {
   "address": 16664,
   "type": "line",
   "text": "Characters 35-43 of the room set, which $8AAE overwrites with one of the safe's three pictures."
  },
  {
   "address": 16800,
   "type": "line",
   "text": "Characters 52-54, animated from the ring at $E818 by $2CC2."
  },
  {
   "address": 17160,
   "type": "line",
   "text": "Character 97, animated from the three frames at $E800 by $2C83."
  },
  {
   "address": 17400,
   "type": "line",
   "text": "The bytes $C0B0 swaps with $4700 in the cellar."
  },
  {
   "address": 17408,
   "type": "line",
   "text": "charset room, continued: bytes $4400-$47FF."
  },
  {
   "address": 18176,
   "type": "line",
   "text": "The bytes $C0B0 swaps with $43F8 in the cellar."
  },
  {
   "address": 18432,
   "type": "line",
   "text": "The text panel's character set, at $4800 ($D018 = $F2 below line 169): letters, digits, punctuation, the frame and the message bar's double-height letters (codes $80 and up)"
  },
  {
   "address": 19088,
   "type": "line",
   "text": "The 32 words a byte of $60 or more stands for in a string ($21D8, $806F, $8568): the ten names (THE REVEREND ... SNIDE), then INSPECTOR, YOU, SIR, ROOM, MR MC. FUNGUS, YES, \"..\", \" HE \", \"SHE \", \"HIS \", \" THAT\", \" POOR FELLOW \", \" SHAME,\", SAY, \" RESPONSIBLE \", \" CARE OF \", \" KNOW\", HAD, TERRIBL, WELL, \" SOME\", \" A \". They lie among the panel set's character shapes."
  },
  {
   "address": 19113,
   "type": "line",
   "text": "Inside the word list; named only as the operand of a BIT at $27A9 that skips a LDA #$4A."
  },
  {
   "address": 19326,
   "type": "line",
   "text": "More of the panel's character set"
  },
  {
   "address": 19369,
   "type": "line",
   "text": "Part of the panel's character set; named only as the operand of a BIT at $27A6 that skips a LDA #$4B."
  },
  {
   "address": 19625,
   "type": "line",
   "text": "Part of the panel's character set; named only as the operand of a BIT at $27A0 that skips a LDA #$4C."
  },
  {
   "address": 19881,
   "type": "line",
   "text": "Part of the panel's character set; named only as the operand of a BIT at $27AF that skips a LDA #$4D."
  },
  {
   "address": 19968,
   "type": "line",
   "text": "The characters $C0 and up of the panel set, where $86EE copies each menu's icons from $FA00. At the hand-over they hold older text, two other copies of the word list (one spelling \"THE REVERAND\"), which the first menu overwrites"
  },
  {
   "address": 20137,
   "type": "line",
   "text": "Part of the icon characters; named only as the operand of a BIT at $27B2 that skips a LDA #$4E."
  },
  {
   "address": 20393,
   "type": "line",
   "text": "Inside the icon characters at $4E00; the address is named only as the operand of the BITs at $27AC and $BB0B that skip a LDA #$4F."
  },
  {
   "address": 20416,
   "type": "line",
   "text": "The place of each of the 52 objects at the start of a game, copied to $1DAC by $8680: a number below $60 is a piece of furniture in a room (its index), $60 and $61 the two bookcases, $80 carried by the player, $81-$89 by a character, $90 plus an object inside that object, $C0 in the evidence envelopes, $FF nowhere yet."
  },
  {
   "address": 20468,
   "type": "line",
   "text": "The last twelve bytes of the panel set"
  },
  {
   "address": 20480,
   "type": "line",
   "text": "Sprite shapes $40-$6C, 64 bytes each (shape n at $4000 + n x 64): among them the player's walking shapes (from $43, $372E), the title's question mark ($5A), the menu pointer ($5B) and its highlight ($5C)"
  },
  {
   "address": 21504,
   "type": "line",
   "text": "sprites misc, continued: bytes $5400-$57FF."
  },
  {
   "address": 22144,
   "type": "line",
   "text": "Sprite shape $5A, the title's question mark; $2E87 copies its upper rows into the sinking question marks."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "sprites misc, continued: bytes $5800-$5B3F."
  },
  {
   "address": 22848,
   "type": "line",
   "text": "Sprite shapes $65-$6C, after the mirror buffer at $58C0-$593F."
  },
  {
   "address": 23360,
   "type": "line",
   "text": "The nine characters' sprite shapes, ten each (shapes $6D-$C6), at the addresses in $9216/$921F: standing, walking and talking poses, which $9138 mirrors in place when a character turns; the title's portraits use them too"
  },
  {
   "address": 24384,
   "type": "line",
   "text": "sprites cast, continued: bytes $5F40-$633F."
  },
  {
   "address": 25408,
   "type": "line",
   "text": "sprites cast, continued: bytes $6340-$673F."
  },
  {
   "address": 26432,
   "type": "line",
   "text": "sprites cast, continued: bytes $6740-$6B3F."
  },
  {
   "address": 27456,
   "type": "line",
   "text": "sprites cast, continued: bytes $6B40-$6F3F."
  },
  {
   "address": 28480,
   "type": "line",
   "text": "sprites cast, continued: bytes $6F40-$71BF."
  },
  {
   "address": 28745,
   "type": "line",
   "text": "Part of the cast's sprite shapes; the address is named only as the operand of a BIT at $27A3 that skips a LDA #$49."
  },
  {
   "address": 29120,
   "type": "line",
   "text": "Sprite shapes $C7-$EF: the list marker ($CE-$D0), the three-sprite object of hook 1 ($D3-$D5, $2D50), the \"more\" arrow ($D6), the bodies and other props, and the title's sinking question marks ($EC, $ED)"
  },
  {
   "address": 30144,
   "type": "line",
   "text": "sprites props, continued: bytes $75C0-$79BF."
  },
  {
   "address": 31168,
   "type": "line",
   "text": "sprites props, continued: bytes $79C0-$7BFF."
  },
  {
   "address": 31429,
   "type": "line",
   "text": "The second tune's first voice, among the sprite shapes ($97FB gives its address): played when Snide first enters a room where someone has died ($945E)."
  },
  {
   "address": 31445,
   "type": "line",
   "text": "The second tune's second voice."
  },
  {
   "address": 31467,
   "type": "line",
   "text": "The second tune's third voice; the sprite shapes resume after it."
  },
  {
   "address": 31680,
   "type": "line",
   "text": "Sprite shape $EF, cleared at start-up by $2383."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The adventure module's first nine bytes are a cartridge signature: cold and warm start vectors both $2000, then \"CBM80\". With the KERNAL in, a RESTORE press would restart the game at $2000 through them; in play the game's own NMI handler at $294A is used instead."
  },
  {
   "address": 32772,
   "type": "line",
   "text": "The signature \"CBM80\" (the letters with bit 7 set), which the KERNAL looks for at $8004 when the machine is reset or RESTORE is pressed, to jump through the vectors before it."
  },
  {
   "address": 32777,
   "type": "line",
   "text": "The adventure module's jump table: 38 three-byte JMPs at $8009-$807A, the entry points the engine calls."
  },
  {
   "address": 32780,
   "type": "line",
   "text": "Module jump table entry: build_menu ($86EE)."
  },
  {
   "address": 32783,
   "type": "line",
   "text": "Module jump table entry: do_icon ($87D9)."
  },
  {
   "address": 32786,
   "type": "line",
   "text": "Module jump table entry: title_cast_frame ($8B31)."
  },
  {
   "address": 32789,
   "type": "line",
   "text": "Module jump table entry: title_cast_step ($8CC8)."
  },
  {
   "address": 32792,
   "type": "line",
   "text": "Module jump table entry: title_tables ($8DC0)."
  },
  {
   "address": 32795,
   "type": "line",
   "text": "Module jump table entry: flip_sprites_step ($9138)."
  },
  {
   "address": 32798,
   "type": "line",
   "text": "Module jump table entry: make_row_reverse ($919E)."
  },
  {
   "address": 32804,
   "type": "line",
   "text": "Module jump table entry: cast_reset ($93E3)."
  },
  {
   "address": 32807,
   "type": "line",
   "text": "Module jump table entry: the start-up tune ($9461)."
  },
  {
   "address": 32819,
   "type": "line",
   "text": "Module jump table entry: sound_task ($9993)."
  },
  {
   "address": 32825,
   "type": "line",
   "text": "Module jump table entry: title_biography ($9129)."
  },
  {
   "address": 32828,
   "type": "line",
   "text": "Module jump table entry: script_step ($A460)."
  },
  {
   "address": 32834,
   "type": "line",
   "text": "Module jump table entry: talk_on_fire ($B2E1)."
  },
  {
   "address": 32840,
   "type": "line",
   "text": "Module jump table entry: count_in_place ($883B)."
  },
  {
   "address": 32843,
   "type": "line",
   "text": "Module jump table entry: major_mutters ($99C8)."
  },
  {
   "address": 32846,
   "type": "line",
   "text": "Module jump table entry: pulse_sweep ($977F)."
  },
  {
   "address": 32849,
   "type": "line",
   "text": "Module jump table entry: read_keyboard ($BD93)."
  },
  {
   "address": 32852,
   "type": "line",
   "text": "Module jump table entry: init_objects ($8680)."
  },
  {
   "address": 32855,
   "type": "line",
   "text": "Module jump table entry: say_where ($A2EE)."
  },
  {
   "address": 32858,
   "type": "line",
   "text": "Module jump table entry: after_object_moved ($8AEF)."
  },
  {
   "address": 32867,
   "type": "line",
   "text": "Module jump table entry: storm_hook ($BF7A)."
  },
  {
   "address": 32870,
   "type": "line",
   "text": "Module jump table entry: storm_start ($BFD9)."
  },
  {
   "address": 32873,
   "type": "line",
   "text": "Module jump table entry: storm_frame ($BF4D)."
  },
  {
   "address": 32876,
   "type": "line",
   "text": "Module jump table entry: wait_counter ($C0A5)."
  },
  {
   "address": 32879,
   "type": "line",
   "text": "Module jump table entry: print_name ($8568), the word-token printer."
  },
  {
   "address": 32882,
   "type": "line",
   "text": "Module jump table entry: cellar_anim ($C0B0)."
  },
  {
   "address": 32885,
   "type": "line",
   "text": "Module jump table entry: state8_tune ($C0D5)."
  },
  {
   "address": 32888,
   "type": "line",
   "text": "Module jump table entry: play_tune ($945E)."
  },
  {
   "address": 32891,
   "type": "line",
   "text": "Prints string X of the zero-terminated list at A (low) / Y (high) in the text panel (entry $807B prints string 0)."
  },
  {
   "address": 32893,
   "type": "line",
   "text": "Prints string X of the list at A (low) / Y (high); the entry print_string_n ($807B) sets X to 0 first."
  },
  {
   "address": 32899,
   "type": "line",
   "text": "Sets $26/$27 to string X of the zero-terminated list at A (low) / Y (high)."
  },
  {
   "address": 32937,
   "type": "line",
   "text": "Icon action 1 ($87ED): with an object named by $0271, goes to $9A0D; with a piece of furniture at hand ($1DAB), prints its name (string X of the list at $8401); at a door ($62 = 1), opens the door's menu ($892A); else \"NOTHING HERE\". Also reached through the jump table at $8009."
  },
  {
   "address": 32964,
   "type": "line",
   "text": "Prints \"*\" in the text panel, which clears it ($2003); used by the icon actions and the questions."
  },
  {
   "address": 32975,
   "type": "line",
   "text": "Icon action 0 ($87ED): for an object named by $0271, objects $30 and $31 have actions of their own ($C011, $C066), $1E and $2D (unless $1ED1 is set) say \"IT/S LOCKED.\", and the others show what is in them ($893B) as a list to pick from ($88B6, $1E64 = 1). With none named, for the furniture at hand: when its index $025A is 1 it goes to $8A62, else it lists what is there; with nothing at hand, \"NOTHING HERE\"."
  },
  {
   "address": 33037,
   "type": "line",
   "text": "\"YOU FIND:\" and a carriage return."
  },
  {
   "address": 33048,
   "type": "line",
   "text": "Prints \"NOTHING HERE\" (string 0 at $8130)."
  },
  {
   "address": 33055,
   "type": "line",
   "text": "Icon action 2 ($87ED), the inventory: \"YOU ARE CARRYING:\" and the list of what the player holds (place $80), in the list menu."
  },
  {
   "address": 33072,
   "type": "line",
   "text": "\"NOTHING HERE\" and a carriage return: string 0 of the list at $8130, which say_nothing_here ($8118) prints."
  },
  {
   "address": 33086,
   "type": "line",
   "text": "\"YOU ARE CARRYING:\" and a carriage return, which icon_action_2 ($811F) prints before the inventory."
  },
  {
   "address": 33105,
   "type": "line",
   "text": "The names of the 52 objects, in object order, zero-terminated (\"A HOT WATER BOTTLE\", \"BLANK BULLETS\", \"A CANDLESTICK\", \"THE WILL;\" ... \"A SMALL KEY\", \"BULLETS\"); the semicolon marks the ten pieces of evidence except the bottle, the wad of notes, the open locket and the bomb."
  },
  {
   "address": 33741,
   "type": "line",
   "text": "One byte for each of the 52 objects after the list of their names, read by $899E as the size an object has when it is put into another."
  },
  {
   "address": 33793,
   "type": "line",
   "text": "The names of the pieces of furniture, zero-terminated, by the object number the room's list gives them ($0250): string 0 is \"DUMMY\", then \"FOUR POSTER BED\", \"CHEST OF DRAWERS\", \"FIREPLACE\", ... \"OPEN WALL SAFE\", \"DINGLE/S BODY!\", \"STABBED DOCTOR!\"; icon_action_1 ($80A9) prints one."
  },
  {
   "address": 34152,
   "type": "line",
   "text": "Prints the name of character X from the list at $4A90 (0 the Reverend ... 8 Dingle, 9 Snide) through $2015. Reached through $806F, the token printer: a word token in a string is a character's name."
  },
  {
   "address": 34162,
   "type": "line",
   "text": "Starts a line of speech in the message bar for character $78: when the speaker changes ($1E6C), the name and \" SPEAKS \"; then marks the bar busy with the speaker ($1E6B) and an opening quote."
  },
  {
   "address": 34204,
   "type": "line",
   "text": "Speaks the zero-terminated string that follows the call, as character $78, in the message bar, with the speaker's name when it changes and quotes round it, and returns past it."
  },
  {
   "address": 34237,
   "type": "line",
   "text": "Speaks the string at ($26)+1 as character $78, in quotes, as $859C does. Used by script opcode 6."
  },
  {
   "address": 34254,
   "type": "line",
   "text": "Prints string X of the list at A (high) / Y (low) through $2015."
  },
  {
   "address": 34282,
   "type": "line",
   "text": "\" SPEAKS \"."
  },
  {
   "address": 34291,
   "type": "line",
   "text": "The Major's lines, with \"#\" as the closing quote: \"..DIRTY RATS..# MUMBLES THE MAJOR.\", \"THE MAJOR GRUMBLES \"OUGHT TO BE SHOT.#\", \"THE MAJOR BABBLES INCOMPREHENSIBLY..\", \"\"GRENADE!# SHOUTS THE MAJOR.\"."
  },
  {
   "address": 34432,
   "type": "line",
   "text": "Sets up a new game's objects: their places ($1DAC, 52 of them) from the table at $4FC0; clears the speech and object state; resets each door's flags, leaving only those of type 4 marked open; fills the ten bytes at $1EA5 with the last door's flag value; puts 5 in the drawing room's object list ($1C40, room 0's) and clears seven list entries; shows the safe's first picture ($8AAE); and locks the doors at $1F14, $1F1C and $1FA4."
  },
  {
   "address": 34542,
   "type": "line",
   "text": "Makes the icon list for menu A in $1E5A (up to eight, $FF after the last): menus 0-5 from the $FF-ended lists at $8789; menus 6 and up from the bits of their mask at $879F, picking icons from $8782, after icon 3 when a piece of furniture is at hand. Draws the icons ($2009) and copies each icon's 48 bytes of graphics from $FA00 + icon x 48 into the panel's character set from $4E00 (codes $C0 up)."
  },
  {
   "address": 34690,
   "type": "line",
   "text": "Icon numbers chosen by the bits of a menu mask."
  },
  {
   "address": 34697,
   "type": "line",
   "text": "The icon lists of menus 0-5, each ended by $FF, $8789-$87A4."
  },
  {
   "address": 34719,
   "type": "line",
   "text": "The end of menu 5's icon list at $8789. Menus 6 and up read their masks with LDA $879F,X (X 6 and up), so the masks begin at $87A5."
  },
  {
   "address": 34725,
   "type": "line",
   "text": "One byte for each object: the mask of icons its menu offers (menu 6 + the object; build_menu picks icons from $8782 by its bits), bit 7 also marking the objects Bentley names when asked about them ($B65F)."
  },
  {
   "address": 34777,
   "type": "line",
   "text": "Runs the action of icon A: calls $80C4, then jumps to the icon's handler from the table at $87ED."
  },
  {
   "address": 34797,
   "type": "line",
   "text": "The handler of each of the 18 icons: $80CF, $80A9, $811F, $887C, none, none, $BCAF, $BB50, door open/close ($2018) for icons 8 and 9, unlock ($201B), $B270, $9E6D, $A16D, $A245, $A1E0, $897E, none."
  },
  {
   "address": 34798,
   "type": "line",
   "text": "Part of icon_actions ($87ED), read by $87E1."
  },
  {
   "address": 34833,
   "type": "line",
   "text": "Runs action X for the object $C6, through the table at $8826 (entries 1-9: $B27D, $B37D, $899E, $A253, $A292, $A2AF, $B5F4, $B825, $BB76), with $1E64 cleared."
  },
  {
   "address": 34854,
   "type": "line",
   "text": "Handler addresses for object_action, entries 1-9 (entry 0 would be read from the routine's own bytes)."
  },
  {
   "address": 34855,
   "type": "line",
   "text": "Part of object_actions ($8826), read by $8819."
  },
  {
   "address": 34874,
   "type": "line",
   "text": "RTS: the handler of icons that do nothing here."
  },
  {
   "address": 34875,
   "type": "line",
   "text": "Counts the objects whose place ($1DAC) is A; the count in A, Y kept."
  },
  {
   "address": 34902,
   "type": "line",
   "text": "Checks that place $22 can take another object: five at most, ten for place $C0; full, it prints \"*IT WON/T FIT!\" with carry set."
  },
  {
   "address": 34922,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8867: \"(clears the panel) IT WON/T FIT!  (new line)\"."
  },
  {
   "address": 34938,
   "type": "line",
   "text": "The end of room_for_more after \"IT WON/T FIT!\": carry set."
  },
  {
   "address": 34940,
   "type": "line",
   "text": "Icon action 3 ($87ED): moves the chosen object $C6 into the furniture at hand, when that piece takes things (bits 0-1 of its flag at $0264 are 1, or bit 7 is set and the object is $1C) and has room ($8856); its place is the furniture's index ($025A), except that object $14 put into place 6 or 7 goes to place $60 or $61 instead. Then $8AEF and \"OKAY.\". A piece that does not take things: \"SORRY, YOU CAN/T DO THAT.\"."
  },
  {
   "address": 34998,
   "type": "line",
   "text": "Lists the objects in place A as a menu to pick from (entry $88B8 leaves out object X): for each, a new line, two spaces and its name (string X of the list at $8151); their numbers go in $1E5A, $FF after the last, the count in $0148. With none, prints \"NOTHING...\". Then $88F7."
  },
  {
   "address": 35000,
   "type": "line",
   "text": "An entry into list_place ($88B6), reached from $8993."
  },
  {
   "address": 35063,
   "type": "line",
   "text": "Starts a list menu: the first entry chosen, the marker at Y $90, the stick's last value $0C, and $C0 = 4 (the state to go to)."
  },
  {
   "address": 35086,
   "type": "line",
   "text": "Prints \"NOTHING...\" (string 0 at $891D)."
  },
  {
   "address": 35093,
   "type": "line",
   "text": "Prints two spaces in the text panel (entry $8918 prints one)."
  },
  {
   "address": 35096,
   "type": "line",
   "text": "Prints one space in the text panel."
  },
  {
   "address": 35101,
   "type": "line",
   "text": "\"NOTHING...\" between two carriage returns, printed by say_nothing_dots ($890E)."
  },
  {
   "address": 35114,
   "type": "line",
   "text": "Says what the door X at hand is: for a door of type 0, \"A DOOR\"; for type 8, \"A SECRET PASSAGE!\", and marks it open and redraws it ($2021); for other types, \"NOTHING...\". Each starts with the text at $810D (\"YOU FIND:\")."
  },
  {
   "address": 35131,
   "type": "line",
   "text": "Prints \"YOU FIND:\" ($810D) word-wrapped."
  },
  {
   "address": 35144,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8945: \"A DOOR  (new line)\"."
  },
  {
   "address": 35152,
   "type": "line",
   "text": "The end of door_menu_text ($892A) after \"A DOOR\"."
  },
  {
   "address": 35159,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8954: \"A SECRET PASSAGE!  (new line)\"."
  },
  {
   "address": 35178,
   "type": "line",
   "text": "The rest of door_menu_text ($892A) for a secret passage: marks the door open and redraws it."
  },
  {
   "address": 35198,
   "type": "line",
   "text": "Icon action 16 ($87ED): remembers the chosen object $C6 in $1EC2, prints \"PUT IN:\" and lists the objects carried (place $80) other than it, as a menu (state 4 through $1E64 = 4)."
  },
  {
   "address": 35206,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8983: \"PUT IN:  (new line)\"."
  },
  {
   "address": 35215,
   "type": "line",
   "text": "The rest of icon_action_16 ($897E), after the text at $8986."
  },
  {
   "address": 35230,
   "type": "line",
   "text": "Puts the object remembered in $1EC2 into the object chosen, when it can hold it ($8856 with place $90 + object) and the table at $89EB allows it."
  },
  {
   "address": 35263,
   "type": "line",
   "text": "Prints \"*OKAY.\". Reached through the jump table at $8045 as well."
  },
  {
   "address": 35266,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $89BF: \"(clears the panel) OKAY.  (new line)\"."
  },
  {
   "address": 35274,
   "type": "line",
   "text": "The end of say_okay."
  },
  {
   "address": 35275,
   "type": "line",
   "text": "Prints \"*SORRY, YOU CAN/T DO THAT.\"."
  },
  {
   "address": 35278,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $89CB: \"(clears the panel) SORRY, YOU CAN/T DO THAT.  (new line)\"."
  },
  {
   "address": 35306,
   "type": "line",
   "text": "The return of safe_check when nothing about the safe changes."
  },
  {
   "address": 35307,
   "type": "line",
   "text": "One value for each object, compared by $899E when one object is put into another."
  },
  {
   "address": 35359,
   "type": "line",
   "text": "After an object moves ($8AEF): when it is object $1C, the picture, for the safe behind it. With the picture in place 0-2 it empties the drawing room's list and puts 5 back ($8AC2) and shows the first safe picture; carried by the player ($80) while the drawing room's list is not empty, \"*YOU FIND A SAFE!\" and the second picture (object $1A in the list)."
  },
  {
   "address": 35395,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8A40: \"(clears the panel) YOU FIND A SAFE!\"."
  },
  {
   "address": 35413,
   "type": "line",
   "text": "The rest of safe_check ($8A1F), after the text at $8A43."
  },
  {
   "address": 35426,
   "type": "line",
   "text": "Asks for the safe's combination (\"*TYPE IN THE COMBINATION:\", $BE7E reads six characters to $0300) and compares it with the six characters at $8AFB, \"210319\". Right: \"*THE SAFE IS OPEN!\" and the open picture (object $1B in the list); wrong: \"THE SAFE DOESN/T OPEN\"."
  },
  {
   "address": 35429,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8A62: \"(clears the panel) TYPE IN THE COMBINATION:  (new line)\"."
  },
  {
   "address": 35456,
   "type": "line",
   "text": "The rest of open_safe ($8A62), after the text it prints."
  },
  {
   "address": 35475,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8A90: \"(clears the panel) THE SAFE IS OPEN!  (new line)\"."
  },
  {
   "address": 35495,
   "type": "line",
   "text": "The rest of open_safe ($8A62) after \"THE SAFE IS OPEN!\": shows the open safe (object $1B in the list)."
  },
  {
   "address": 35502,
   "type": "line",
   "text": "Copies 72 bytes of the safe's picture, set X of the three at $E900, $E948 and $E990, over characters 35-43 of the room's character set ($4118)."
  },
  {
   "address": 35522,
   "type": "line",
   "text": "Empties the first three entries of the drawing room's object list ($1C40, room 0's) and puts A at entry X."
  },
  {
   "address": 35540,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $8AD1: \"THE SAFE DOESN/T OPEN  (new line)\"."
  },
  {
   "address": 35563,
   "type": "line",
   "text": "The end of open_safe after \"THE SAFE DOESN/T OPEN\"."
  },
  {
   "address": 35564,
   "type": "line",
   "text": "Low bytes of the three safe pictures at $E9xx."
  },
  {
   "address": 35567,
   "type": "line",
   "text": "Runs the safe check ($8A1F) with X and Y kept. Reached through $805A."
  },
  {
   "address": 35579,
   "type": "line",
   "text": "The safe's combination, \"210319\": the day, month and year of Angus McFungus's birth, as the inscription read by examining the object at $9B90 gives it (\"BORN 21 MARCH 1919\")."
  },
  {
   "address": 35585,
   "type": "line",
   "text": "One step of a portrait's appearance on the title: masks 127 bytes of the sprite shapes at $58C0 with the masks at $0C80 and $0C00 and the picture through ($BB), moves $BB on by 128 and the sprite up a line."
  },
  {
   "address": 35633,
   "type": "line",
   "text": "The title's cast introduction, every frame: in its phases ($1E66) shows the portrait sprites 0 and 1 at the right of the panel with the colours of the character being introduced (tables at $8C81-$8C94, read as $8C7B,X and $8C85,X with X 6-15), animates the portrait ($1E4E, $1E4F), starts the next character's picture ($8D13) every eight counts of $1E69, and at phase $FE builds the next portrait's masks ($8D6E)."
  },
  {
   "address": 35963,
   "type": "line",
   "text": "The base of the indexed load LDA $8C7B,X at $8BC6, which runs with X 6 and up and so reads the portrait colours from $8C81; the address itself lies in the code."
  },
  {
   "address": 35969,
   "type": "line",
   "text": "Colours for the title's portraits, sprite colour and multicolour for each phase."
  },
  {
   "address": 35973,
   "type": "line",
   "text": "Part of portrait_colours ($8C81), read by $8BCF and $8C57."
  },
  {
   "address": 35974,
   "type": "line",
   "text": "Part of portrait_colours ($8C81), read by $8C6C."
  },
  {
   "address": 35977,
   "type": "line",
   "text": "Part of portrait_colours ($8C81), read by $8C60."
  },
  {
   "address": 35983,
   "type": "line",
   "text": "Part of portrait_colours ($8C81), read by $8C71."
  },
  {
   "address": 35984,
   "type": "line",
   "text": "Part of portrait_colours ($8C81), read by $8C7A."
  },
  {
   "address": 36034,
   "type": "line",
   "text": "The end of title_cast_step ($8CC8): $1E66 = $FF, the cast introduction is over."
  },
  {
   "address": 36040,
   "type": "line",
   "text": "Steps the title's cast phases ($1E66, up to 31) every third frame; phases 2-6 wipe the portrait on ($8B01); phases 21, 22 and 0 set a long delay."
  },
  {
   "address": 36105,
   "type": "line",
   "text": "The first sprite shape of each of the ten characters' portraits."
  },
  {
   "address": 36115,
   "type": "line",
   "text": "Moves to the next of the ten characters ($1E67) and builds the masks for its portrait: from its two sprite shapes (at the bank address of shape $8D09,x and the one after) through the table at $0E00 into $0C00 and $0C40."
  },
  {
   "address": 36206,
   "type": "line",
   "text": "Turns the masks at $0C00 into the second mask at $0C80 through $0D00, and resets the portrait's position and phase."
  },
  {
   "address": 36240,
   "type": "line",
   "text": "Sixteen bytes used to build the table at $0D00."
  },
  {
   "address": 36256,
   "type": "line",
   "text": "Offsets used when the title sets up the portraits."
  },
  {
   "address": 36288,
   "type": "line",
   "text": "Builds the title's tables at $0D00 and $0E00 (256 bytes each, from each byte's bit pairs), then works on the pictures at $5780 into $0F00 with the offsets at $8DA0."
  },
  {
   "address": 36427,
   "type": "line",
   "text": "Stores the byte $2E into the portrait buffer at ($28): offset from the table at $8DA0, plus $40 past entry 21, plus $42."
  },
  {
   "address": 36453,
   "type": "line",
   "text": "The ten biographies the title shows, in cast order with Snide first (\"INSPECTOR SNIDE:\" ... \"MR DINGLE: FAMILY SOLICITOR. HERE TO READ THE WILL.\"), zero-terminated."
  },
  {
   "address": 37161,
   "type": "line",
   "text": "Clears the text panel and prints the biography of character $1E67 (string X of the list at $8E65). Reached through $8039."
  },
  {
   "address": 37176,
   "type": "line",
   "text": "Mirrors a character's sprite shapes while $76 counts down: each call does 127 bytes (two shapes), each byte through the pixel-reversal table at $0500 and the bytes of each row in reverse order (table $0380). With $76 negative it copies shapes instead, 63 bytes of each 64-byte step from ($BB) to ($BD), until $76 reaches $7F, and then sets $76 = 5."
  },
  {
   "address": 37217,
   "type": "line",
   "text": "The low byte of the operand of LDY $AAAA,X at $9160, rewritten by $9145."
  },
  {
   "address": 37218,
   "type": "line",
   "text": "The high byte of the operand of LDY $AAAA,X at $9160; $914E rewrites it (and $9145 the low byte) before the instruction runs."
  },
  {
   "address": 37278,
   "type": "line",
   "text": "Builds the tables at $0380 (for each of the 63 bytes of a sprite shape, the offset of the byte that mirrors it in its row: 2, 1, 0, 5, 4, 3, ...) and $03C0 (the same plus $40)."
  },
  {
   "address": 37320,
   "type": "line",
   "text": "Picks a character's walking pose from what its movement does ($B6, 0-3)."
  },
  {
   "address": 37324,
   "type": "line",
   "text": "For each room type, a depth that $935F compares with a character's ($1D7E) when it chooses the character's pose."
  },
  {
   "address": 37344,
   "type": "line",
   "text": "Starts mirroring character X's sprite shapes to match its new direction: marks it ($1E33 bit 2), points $BB at its shapes (tables $9216/$921F) and $BD at the buffer $58C0, notes the flip in $3FF0,x, and sets $76 = $89. While another flip is running, only marks the character to wait (bit 3)."
  },
  {
   "address": 37398,
   "type": "line",
   "text": "Low byte of the address of each character's sprite shapes."
  },
  {
   "address": 37407,
   "type": "line",
   "text": "High byte of the address of each character's sprite shapes."
  },
  {
   "address": 37416,
   "type": "line",
   "text": "First shape offset for each pose."
  },
  {
   "address": 37420,
   "type": "line",
   "text": "Second shape offset for each pose."
  },
  {
   "address": 37424,
   "type": "line",
   "text": "First sprite shape of each of the nine characters."
  },
  {
   "address": 37433,
   "type": "line",
   "text": "Shape offsets for an eight-step animation: $9241 takes the step's offset into $B7 for the cast's poses, and the title's portraits use it too ($8C03)."
  },
  {
   "address": 37441,
   "type": "line",
   "text": "Moves the cast, twice in every four frames (animation jobs 1 and 3, $8021): steps the animation counters $1E4E/$1E4F; for each character not paused (bit 7 of $1E33) and not the one speaking, moves it by its direction ($1DF4) through the tables at $93B3 (X low), $93B8 (X high) and $93BD (depth), updates its screen position, climbs or descends it towards the height it wants ($1E18 against $1E92), walks it towards its target ($1DFD/$1E06/$1E0F) and chooses its direction and walking pose, and starts a flip ($91E0) when it turns."
  },
  {
   "address": 37811,
   "type": "line",
   "text": "X step for each direction (low byte)."
  },
  {
   "address": 37816,
   "type": "line",
   "text": "X step for each direction (high byte)."
  },
  {
   "address": 37821,
   "type": "line",
   "text": "Depth step for each direction."
  },
  {
   "address": 37826,
   "type": "line",
   "text": "Shape offsets for the speaking character's animation."
  },
  {
   "address": 37834,
   "type": "line",
   "text": "The character speaking gets its talking shapes, which change with the animation step."
  },
  {
   "address": 37859,
   "type": "line",
   "text": "Puts every character's sprite shapes back the right way round (mirroring those $3FF0 marks flipped), clears their movement and flags, sets their shapes to the standing pose, and restarts their scripts ($A7E6). Reached through $8024."
  },
  {
   "address": 37982,
   "type": "line",
   "text": "Starts one of two tunes: entry $945E (through $8078) the one whose three voice addresses are at $97FB, entry $9461 (through $8027, at start-up) the one at $97F5; the BIT at $9460 hides the second entry's LDX. Copies the voices' sequence addresses to $1ED3, clears the voices' counters, sets the SID's 25 registers from $9801, and starts the player ($C1 = $A0, $1D05, $0138)."
  },
  {
   "address": 38071,
   "type": "line",
   "text": "Points $4C/$4D at voice X's SID registers ($D400, $D407 or $D40E)."
  },
  {
   "address": 38081,
   "type": "line",
   "text": "Register offsets of the three voices."
  },
  {
   "address": 38084,
   "type": "line",
   "text": "Turns a note byte into a SID frequency in $0139/$013A: the low four bits pick one of twelve values at $97DD, bits 4-6 how many times it is halved."
  },
  {
   "address": 38123,
   "type": "line",
   "text": "Reads the next byte of voice X's sequence, looping back to the start at $FF; returns it in A and Y."
  },
  {
   "address": 38167,
   "type": "line",
   "text": "One frame of voice X: ends the gate after its countdown ($1D18), glides the frequency towards its target ($1CFE/$1D01 to $1D09/$1D0C by $1D01's step), counts down the note ($1CEE), and reads the next command when it ends."
  },
  {
   "address": 38316,
   "type": "line",
   "text": "Reads and carries out voice X's next sequence byte: below $F0 a note ($96D7); from $F0, a command by its low four bits: 0, for voice 0 sets $1D1B and reads on, for the others waits; 1, the next byte is a note to glide to; 2, vibrato on; 3, the voice's control register cleared (silent); 4, its waveform without the gate (release); 5, flips bit 0 of its flags ($1CFB); 6, a rest of a note's length; 7, the next byte is a repeat count, or a negative byte loops back to the repeat's start; 8, the next byte chooses an instrument (envelope, filter routing, waveform, flags, from the tables at $981B-$9845); 9, a note set at once, then a glide to the next."
  },
  {
   "address": 38585,
   "type": "line",
   "text": "Sets voice X's frequency from the note byte (through $94C4) and gates it with its waveform."
  },
  {
   "address": 38618,
   "type": "line",
   "text": "Starts a note's length: 12 frames, or 6 when the note byte has bit 7 set; and its gate time, and a fresh pulse width."
  },
  {
   "address": 38651,
   "type": "line",
   "text": "Writes voice X's frequency for this frame, with the vibrato offset from the tables at $97B5/$97C9 when the voice's vibrato is on, or the alternating value $1D04 into its pulse width when its flag bit 0 is set."
  },
  {
   "address": 38704,
   "type": "line",
   "text": "Writes voice X's current frequency to its SID registers."
  },
  {
   "address": 38718,
   "type": "line",
   "text": "The music player, once a frame while a tune plays ($0138): updates the three voices ($9517), sets the filter routing, steps the vibrato and the alternating value, and sets the filter cutoff; then the pulse-width sweep ($977F)."
  },
  {
   "address": 38783,
   "type": "line",
   "text": "For each voice with bit 7 of its flags set, narrows its pulse width ($1D1E) by 3 each frame. Reached through $804E."
  },
  {
   "address": 38834,
   "type": "line",
   "text": "The music player's tables: filter routing bits for the three voices, vibrato offsets, the twelve note frequencies (at $97DD), the two tunes' voice addresses (at $97F5), the SID's starting registers (at $9801), and the instruments' waveform, envelope and filter values (at $981B-$9845)."
  },
  {
   "address": 38837,
   "type": "line",
   "text": "Part of music_tables ($97B2), read by $9713."
  },
  {
   "address": 38857,
   "type": "line",
   "text": "Part of music_tables ($97B2), read by $9718."
  },
  {
   "address": 38877,
   "type": "line",
   "text": "The twelve note frequencies of the top octave, two bytes each, read by note_frequency ($94CA)."
  },
  {
   "address": 38878,
   "type": "line",
   "text": "Part of music_tables ($97B2), read by $94D0."
  },
  {
   "address": 38901,
   "type": "line",
   "text": "The two tunes' voice addresses, six bytes each (low bytes, then high bytes), read by play_tune ($9465)."
  },
  {
   "address": 38913,
   "type": "line",
   "text": "Part of music_tables ($97B2), read by $94A1."
  },
  {
   "address": 38939,
   "type": "line",
   "text": "Attack and decay of each instrument (voice register 5), set by command $F8 ($9662)."
  },
  {
   "address": 38946,
   "type": "line",
   "text": "Sustain and release of each instrument (voice register 6, $9668)."
  },
  {
   "address": 38953,
   "type": "line",
   "text": "Bit 0: whether each instrument goes through the filter ($9676)."
  },
  {
   "address": 38960,
   "type": "line",
   "text": "How long each instrument keeps its gate on ($968A, to $1CF8)."
  },
  {
   "address": 38967,
   "type": "line",
   "text": "Each instrument's waveform ($9690, to $1D06)."
  },
  {
   "address": 38974,
   "type": "line",
   "text": "Each instrument's pulse width high bits (voice register 3, $966F)."
  },
  {
   "address": 38981,
   "type": "line",
   "text": "Each instrument's flags ($9696, to $1CFB): bit 0 the alternating pulse, bit 1 a filter setting, bit 7 the pulse sweep."
  },
  {
   "address": 38988,
   "type": "line",
   "text": "The return of pickup_sound in rooms of type 3 or 7, where it makes no sound."
  },
  {
   "address": 38989,
   "type": "line",
   "text": "A sound on voice 1, made with a delay loop that holds the game: a sweep of 110 frequencies taken from the program's own bytes at $2001-$206E, with the pulse width narrowing, about 110 steps. Not in rooms of type 3 or 7. Reached through $802D."
  },
  {
   "address": 39099,
   "type": "line",
   "text": "Starts a footstep: voice 1 noise at frequency $0808, filtered."
  },
  {
   "address": 39142,
   "type": "line",
   "text": "Ends the footstep's gate."
  },
  {
   "address": 39148,
   "type": "line",
   "text": "Silences voice 1."
  },
  {
   "address": 39154,
   "type": "line",
   "text": "The footstep's countdown ($02A6, set to 4 when the player takes a step): on, gate off, silence. Reached through $8030 every frame of play."
  },
  {
   "address": 39173,
   "type": "line",
   "text": "A door's sound on voice 1: two noisy bursts with delays between, filtered, then a lower tone left to fade ($1DA7 = $90)."
  },
  {
   "address": 39235,
   "type": "line",
   "text": "The last part of the door's sound, played alone for sound 2."
  },
  {
   "address": 39281,
   "type": "line",
   "text": "A delay of X times 256 counts."
  },
  {
   "address": 39290,
   "type": "line",
   "text": "Sound 3: a low note on voice 1, noise, left to fade."
  },
  {
   "address": 39315,
   "type": "line",
   "text": "A main-loop task: plays the sound asked for in $1DA6 (1 the door, 2 its last part, 3 the low note) through the table at $99BA, or counts down $1DA7 and silences voice 1 when it ends."
  },
  {
   "address": 39354,
   "type": "line",
   "text": "The three sounds' routines."
  },
  {
   "address": 39355,
   "type": "line",
   "text": "Part of sound_table ($99BA), read by $99AF."
  },
  {
   "address": 39362,
   "type": "line",
   "text": "Stores A in $C1 and the SID's filter routing register."
  },
  {
   "address": 39368,
   "type": "line",
   "text": "A main-loop task: while the Major (character 7) is in the player's room, every 54 x 80 passes prints one of his four lines at $85F3, chosen at random ($99DF)."
  },
  {
   "address": 39391,
   "type": "line",
   "text": "Prints one of the Major's four lines, chosen by two bits of $99F0."
  },
  {
   "address": 39408,
   "type": "line",
   "text": "A pseudo-random byte made from the frame counters, the fine scroll, the raster line, a character's X, a byte of the program and the background colour."
  },
  {
   "address": 39437,
   "type": "line",
   "text": "Prints the description of object $0271 (string X of the list at $9A47), or \"YOU FIND NOTHING OF INTEREST.\" when it has none."
  },
  {
   "address": 39456,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $9A1D: \"YOU FIND NOTHING OF INTEREST.\"."
  },
  {
   "address": 39486,
   "type": "line",
   "text": "The rest of examine_object ($9A0D), after the text at $9A20."
  },
  {
   "address": 39495,
   "type": "line",
   "text": "What Examine says about each object, in object order, zero-terminated (\"HIGHEST QUALITY, WITH A FURRY COVER\", ...); an empty string for an object with nothing to say."
  },
  {
   "address": 40519,
   "type": "line",
   "text": "The object descriptions ($9A47) go on here."
  },
  {
   "address": 40557,
   "type": "line",
   "text": "The read action: finds object $0271 in the list at $9EA1 (records of an object number and a zero-terminated text, ended by a negative byte) and prints its text."
  },
  {
   "address": 40609,
   "type": "line",
   "text": "What Read shows for each readable object: the will, the newspaper cutting, the note, the letter, the books and others."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The readable texts at $9EA1 go on here, past the edge of the memory map at $A000."
  },
  {
   "address": 41325,
   "type": "line",
   "text": "The consume action: object $0D, \"YUK.. THAT DIDN/T TASTE TOO GOOD..!\" and the player's colour changes to green ($1EB3 = 5); object 7, \"<you> GASP IN AGONY AND DROP DEAD\" and the end ($2033); anything else, \"IT/S EMPTY..\"."
  },
  {
   "address": 41338,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A177: \"IT/S EMPTY..  (new line)\"."
  },
  {
   "address": 41352,
   "type": "line",
   "text": "The rest of consume_object ($A16D), after the text at $A17A."
  },
  {
   "address": 41356,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A189: \"YUK.. THAT DIDN/T TASTE TOO GOOD..!  (new line)\"."
  },
  {
   "address": 41393,
   "type": "line",
   "text": "The rest of consume_object ($A16D), after the text at $A18C."
  },
  {
   "address": 41409,
   "type": "line",
   "text": "\"<you> GASP IN AGONY AND DROP DEAD\", with word tokens."
  },
  {
   "address": 41440,
   "type": "line",
   "text": "The time/pause action: prints \"THE TIME IS NOW:\" and the clock, \"PAUSED..PRESS FIRE TO CONTINUE.\", and waits for fire with the game state shifted right and its top bit set (state 10 or more): anim_rotate ($2C5D) then skips the animation jobs, the clock's among them, so the clock stops."
  },
  {
   "address": 41443,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A1E0: \"(clears the panel)   THE TIME IS NOW: (new line)  (new line)\"."
  },
  {
   "address": 41470,
   "type": "line",
   "text": "The rest of time_pause ($A1E0), after the text at $A1E3."
  },
  {
   "address": 41486,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A20B: \"/  (new line)    PAUSED..PRESS (new line)  FIRE TO CONTINUE.\"."
  },
  {
   "address": 41524,
   "type": "line",
   "text": "The rest of time_pause ($A1E0), after the text at $A20E."
  },
  {
   "address": 41541,
   "type": "line",
   "text": "The use action: \"USE:\" and the list of what the player carries (menu 5)."
  },
  {
   "address": 41544,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A245: \"USE:  (new line)\"."
  },
  {
   "address": 41550,
   "type": "line",
   "text": "The rest of use_action ($A245), after the text at $A248."
  },
  {
   "address": 41555,
   "type": "line",
   "text": "After choosing what to use ($72): \"TO:\" and a list of ways (OPEN, BREAK, ...), as menu 6."
  },
  {
   "address": 41560,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A255: \"(clears the panel) TO: (new line)  (new line)   OPEN (new line)   BREAK (new line)   CUT (new line)   EXAMINE (new line)\"."
  },
  {
   "address": 41598,
   "type": "line",
   "text": "The rest of use_object ($A253), after the text at $A258."
  },
  {
   "address": 41608,
   "type": "line",
   "text": "Puts the game in state 4 (a list menu) with the first entry chosen."
  },
  {
   "address": 41618,
   "type": "line",
   "text": "After choosing how ($73): a blank panel and the list menu 7."
  },
  {
   "address": 41623,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A294: \"(clears the panel)   (new line)\"."
  },
  {
   "address": 41626,
   "type": "line",
   "text": "The rest of use_with ($A292), after the text it prints."
  },
  {
   "address": 41647,
   "type": "line",
   "text": "Finds the record for the verb $72, the object $C6 and the target $73 among the five-byte records at $A3ED (ended by a negative byte), runs its routine and says \"OKAY.\"; with none, \"SORRY, YOU CAN/T DO THAT.\"."
  },
  {
   "address": 41695,
   "type": "line",
   "text": "JMP ($28)."
  },
  {
   "address": 41701,
   "type": "line",
   "text": "Points $26 at entry $48 (the player's room) of the room name list at $A362."
  },
  {
   "address": 41710,
   "type": "line",
   "text": "Says where the player is: by the room's entry at $A362, \"YOU ARE OUTSIDE\", \"YOU ARE ON THE LANDING.\", \"YOU ARE IN <character>'S ROOM.\" or \"YOU ARE IN <name>\"; an entry of 1 says nothing. Reached through $8057 after each room change."
  },
  {
   "address": 41729,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A2FE: \"YOU ARE\"."
  },
  {
   "address": 41738,
   "type": "line",
   "text": "The rest of say_where ($A2EE), after the text at $A301."
  },
  {
   "address": 41751,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A314: \"IN   (new line)\"."
  },
  {
   "address": 41756,
   "type": "line",
   "text": "The rest of say_where ($A2EE), after the text at $A317."
  },
  {
   "address": 41773,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A32A: \"OUTSIDE  (new line)\"."
  },
  {
   "address": 41782,
   "type": "line",
   "text": "The end of say_where for an entry of 1: it says nothing."
  },
  {
   "address": 41786,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A337: \"ON THE LANDING.\"."
  },
  {
   "address": 41802,
   "type": "line",
   "text": "The rest of say_where ($A2EE), after the text at $A33A."
  },
  {
   "address": 41814,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $A353: \"/S ROOM.\"."
  },
  {
   "address": 41823,
   "type": "line",
   "text": "The end of say_where after \"<name>/S ROOM.\": a carriage return ($A325)."
  },
  {
   "address": 41826,
   "type": "line",
   "text": "The room list for \"YOU ARE ...\", one zero-terminated entry per room 0-29: a name (\"THE DRAWING ROOM\", \"THE LIBRARY\", \"THE KITCHEN\", \"THE CELLAR\", \"THE HALL\", \"THE STUDY\", \"YOUR ROOM\"), or a code: 1 says nothing (passages and stairs), 2 \"OUTSIDE\", 3 \"THE LANDING\", 4 and a character number \"<name>/S ROOM\" (rooms 7, 11, 12, 16-19, 21, 22). A character number of 0 is the entry's own terminator."
  },
  {
   "address": 41961,
   "type": "line",
   "text": "The use action's records, five bytes each: a verb, an object, a target and the routine to run; ended by a negative byte."
  },
  {
   "address": 42080,
   "type": "line",
   "text": "The cast's script interpreter, run once per pass of the main loop (task $803C). Each call serves the next of the nine characters in turn ($1E9B, 0-8; the counter $CA goes up each time it wraps). A character with a delay count in $1E9C,x waits, the count going down on every other turn. Otherwise, when its movement state lets it ($1E18,x negative, or equal to $1E92,x, and $1E06,x negative), the next instruction is fetched from the character's script pointer ($1E6D,x / $1E76,x): the opcode is the low five bits of its first byte, the operand length comes from the table at $A4FE ($FF: a zero-terminated string follows), the pointer is moved past the instruction and the handler from the table at $A4C8 is jumped to with ($2A) pointing at the instruction. A handler that needs to repeat the instruction puts the pointer back from $2A ($A542)."
  },
  {
   "address": 42184,
   "type": "line",
   "text": "The interpreter's 27 opcode handlers, by opcode 0-26."
  },
  {
   "address": 42185,
   "type": "line",
   "text": "Part of script_ops ($A4C8), read by $A4C0."
  },
  {
   "address": 42238,
   "type": "line",
   "text": "Operand length of each of the 27 script opcodes, in bytes after the opcode byte; $FF means a zero-terminated string."
  },
  {
   "address": 42265,
   "type": "line",
   "text": "Script opcode 0, one operand: wait. On the first turn it sets bit 4 of $1E88,x and loads the count $1E45,x from the operand (through $A80D); the count goes down once every 16 interpreter rounds (when the low four bits of $CA are zero), and the instruction repeats until it reaches zero."
  },
  {
   "address": 42306,
   "type": "line",
   "text": "Puts the character's script pointer back to the instruction being run ($2A/$2B), so it runs again on the character's next turn."
  },
  {
   "address": 42317,
   "type": "line",
   "text": "Script opcode 1, three operands: stores the first in $1DFD,x, the second in $1E06,x and the third in $1E0F,x, and counts the change in $1E2A,x. The same three tables are set from a door's record by opcode 5."
  },
  {
   "address": 42330,
   "type": "line",
   "text": "The end of op_set_target: stores A in $1E0F,x and counts the change in $1E2A,x; also used by op_walk_to_room ($A660)."
  },
  {
   "address": 42337,
   "type": "line",
   "text": "Script opcode 2, a two-byte operand: continues the character's script at that address. Also the shared jump of the conditional opcodes."
  },
  {
   "address": 42349,
   "type": "line",
   "text": "Script opcode 3, no operand: sets $1E18,x to $40 and waits until $1E92,x is $40 too; then puts the character in room 8 at $1D74/$1D6A/$1D7E = 1, $50, $0A."
  },
  {
   "address": 42376,
   "type": "line",
   "text": "Sets the character's room $1D42,x to A, and its $1E92,x and $1E18,x to $18 for room 8, else 0."
  },
  {
   "address": 42395,
   "type": "line",
   "text": "Works out the character's screen position from its room coordinates: $1D60,x (from $7F less $1D7E,x and $1E92,x) and the 9-bit $1D4C/$1D56,x (twice $1D7E,x plus $1D74/$1D6A,x)."
  },
  {
   "address": 42428,
   "type": "line",
   "text": "Script opcode 4, no operand: a character in room 8 is moved to room 9 at 0, $20, $2A; then $1E18,x is cleared and the instruction waits until $1E92,x is zero."
  },
  {
   "address": 42476,
   "type": "line",
   "text": "Script opcode 5, one operand, a room number: looks through the 32 door records at $1F00 (8 bytes each, a room at +0 and +2) for one between the character's room and the target. Found, it sets the character's walk target ($1DFD/$1E06/$1E0F,x) to that door's position on this side and remembers the door in $1E7F,x. Not found, it flashes the screen red and prints \"GUEST ERROR..\"."
  },
  {
   "address": 42520,
   "type": "line",
   "text": "Flashes the border and background red, prints \"GUEST ERROR..\" for the character being run, and puts the colours back: the script asked for a door that does not exist, or used one it had not chosen."
  },
  {
   "address": 42536,
   "type": "line",
   "text": "Text printed in the message bar, as speech by the call at $A625: \"GUEST ERROR..\"."
  },
  {
   "address": 42550,
   "type": "line",
   "text": "The rest of guest_error ($A618), after \"GUEST ERROR..\": the colours back to black."
  },
  {
   "address": 42601,
   "type": "line",
   "text": "Turns a door's packed position (A, and $30) into room coordinates: $23 from the room's table at $1C00 when bit 1 of A is set, else from $1BE0 plus 2; $22/$21 from $30 times 8 plus $16."
  },
  {
   "address": 42643,
   "type": "line",
   "text": "Script opcode 6, a string: when the character is in the player's room ($48) it waits until the speech line is free ($1E6B negative) and then speaks the string through $85BD; in another room it does nothing."
  },
  {
   "address": 42674,
   "type": "line",
   "text": "Script opcode 7, a string: printed (through $2015) only when the character is in the player's room."
  },
  {
   "address": 42681,
   "type": "line",
   "text": "Script opcode 26, a string: printed through $2015 wherever the character is. Also the end of opcodes 7 and 22."
  },
  {
   "address": 42697,
   "type": "line",
   "text": "Script opcode 8, a two-byte address: jumps there when no other member of the cast and not the player is in the character's room."
  },
  {
   "address": 42718,
   "type": "line",
   "text": "Continues the script at the address in $26/$27: the jump taken by the conditional opcodes."
  },
  {
   "address": 42729,
   "type": "line",
   "text": "Script opcode 9: a character number (0 is the player, 1-9 the cast, read from $1D41) and an address: jumps when that character is in this character's room."
  },
  {
   "address": 42742,
   "type": "line",
   "text": "Script opcode 10: a character number and an address: jumps when that character is not in this character's room."
  },
  {
   "address": 42755,
   "type": "line",
   "text": "Script opcode 11, a two-byte address: jumps to 6502 code there, which returns to the interpreter's caller."
  },
  {
   "address": 42761,
   "type": "line",
   "text": "Script opcode 12, one operand: stores it with bit 7 set in $1E7F,x, as the door to use."
  },
  {
   "address": 42770,
   "type": "line",
   "text": "Script opcode 13: a number and an address: with a door chosen (bit 7 of $1E7F,x), jumps when the door's number equals $1DAC indexed by the first operand; without one, prints GUEST ERROR."
  },
  {
   "address": 42790,
   "type": "line",
   "text": "Script opcode 14, an object number: marks the object as held by this character ($1DAC,object = character + $81)."
  },
  {
   "address": 42802,
   "type": "line",
   "text": "An opcode handler that no entry of the table at $A4C8 names: it reads an object number and an address (JSR $A820), and branches back to $A731 (an RTS) while the object's place ($1DAC) is not negative. Its last instruction, BPL $A731, ends at $A73A, just before the shared jump at $A73B."
  },
  {
   "address": 42811,
   "type": "line",
   "text": "JMP to goto_26 ($A6DE): the jump taken by opcodes 13 and 24 when their test holds."
  },
  {
   "address": 42814,
   "type": "line",
   "text": "Script opcode 24: a room and an address: jumps when that room is the one in $1D41, character 0's room in the numbering opcode 9 uses (the player's)."
  },
  {
   "address": 42823,
   "type": "line",
   "text": "Script opcode 25: a character number and an address: sets that character's script pointer."
  },
  {
   "address": 42838,
   "type": "line",
   "text": "Script opcode 17, no operand, and opcode 15 at $A759, an address: go through the door in $1E7F,x. If its record's bit 1 at +4 is set (locked), opcode 17 repeats (waits) and opcode 15 jumps to its address. Otherwise it marks the door used (bit 0); when three or more of the cast are already in the far room and fewer than three in this one it waits, and otherwise it moves the character to the far side at the door's position there; it redraws the door through $2021 when the door is one on screen ($1CDE, $4A entries)."
  },
  {
   "address": 42841,
   "type": "line",
   "text": "Script opcode 15's entry, an address: as opcode 17 ($A756) with A = 0, so that when the door is locked the script jumps to the address instead of waiting."
  },
  {
   "address": 42971,
   "type": "line",
   "text": "Script opcode 18, an address: jumps when the low bit of $99F0's result is clear."
  },
  {
   "address": 42982,
   "type": "line",
   "text": "Points each character's script at its start in the table at $A7FB. The loop runs Y from 9 to 0, so it sets ten pointers from a table of nine: the tenth is read from $A80D-$A80E, the first bytes of the routine after the table."
  },
  {
   "address": 43003,
   "type": "line",
   "text": "The script start of each of the nine characters, character 0 first."
  },
  {
   "address": 43004,
   "type": "line",
   "text": "Part of script_starts ($A7FB), read by $A7F1."
  },
  {
   "address": 43021,
   "type": "line",
   "text": "Reads the instruction's first operand into $2E and A."
  },
  {
   "address": 43028,
   "type": "line",
   "text": "Reads the two-byte operand after the opcode into $26/$27."
  },
  {
   "address": 43040,
   "type": "line",
   "text": "Reads the word at operand bytes 2-3 into $26/$27 and the first operand into $2E and A."
  },
  {
   "address": 43054,
   "type": "line",
   "text": "A = $1BE0 indexed by the character's room, Y kept."
  },
  {
   "address": 43065,
   "type": "line",
   "text": "A = $1C00 indexed by the character's room, Y kept."
  },
  {
   "address": 43076,
   "type": "line",
   "text": "A twin of room_table_1BE0 and room_table_1C00 for the room widths at $1C20 (with $22 cleared): A = the width of the character's room, Y kept. Nothing calls it."
  },
  {
   "address": 43091,
   "type": "line",
   "text": "Script opcode 16: an object number and a place: sets $1DAC,object to the place."
  },
  {
   "address": 43102,
   "type": "line",
   "text": "Counts the cast in room A (characters 1-9 in $1D41,y), into A and $42."
  },
  {
   "address": 43121,
   "type": "line",
   "text": "Finds the door record at $1F00 that joins the two rooms of the operand (either way round): X its number, Y its offset, carry set when found."
  },
  {
   "address": 43152,
   "type": "line",
   "text": "Compares A with the two rooms of the door record at Y (+0, +2): Z set when either matches."
  },
  {
   "address": 43161,
   "type": "line",
   "text": "Script opcode 19: two rooms: clears the locked bit of the door between them, and redraws it if on screen. GUEST ERROR if there is no such door."
  },
  {
   "address": 43178,
   "type": "line",
   "text": "Script opcode 20: two rooms: sets the locked bit of the door between them, and redraws it if on screen."
  },
  {
   "address": 43188,
   "type": "line",
   "text": "Script opcode 21: a value and an address: jumps when the value is no more than $C8."
  },
  {
   "address": 43200,
   "type": "line",
   "text": "Script opcode 22, a string: when the character is in the player's room, prints its name ($8568), a space and the string."
  },
  {
   "address": 43218,
   "type": "line",
   "text": "Script opcode 23, an address: when the character is in the player's room, sets its delay to $40 and prints the inline text at $A8E3 (\"..\" and \"MR. \" and \"/S BEEN STRANGLED!\", with two word tokens between), then jumps to the address."
  },
  {
   "address": 43235,
   "type": "line",
   "text": "Text printed in the message bar, as speech by the call at $A8E0: \"<INSPECTOR>..MR. <DINGLE>/S BEEN STRANGLED!\"."
  },
  {
   "address": 43262,
   "type": "line",
   "text": "The rest of op_strangled ($A8D2), after the text at $A8E3."
  },
  {
   "address": 43268,
   "type": "line",
   "text": "The Reverend's script (character 0), from the drawing room: wanders it at random, now and then belching (\" BELCHES\"); sometimes walks through room 1 to the library, waits, says \"LOOKING FOR CLUES INSPECTOR?\" and comes back."
  },
  {
   "address": 43377,
   "type": "line",
   "text": "Bentley's script (character 1), the butler. First \" ADVANCES: \"THIS WAY TO YOUR ROOM SIR\"\", and takes the player upstairs (room 8, then rooms 14, 25 and 15 to \"YOUR ROOM\"); then down again through room 1 to his room (7), unlocking and locking its door, \"YOU/LL FIND NOTHING OF INTEREST IN HERE..\"; asks the Reverend in the drawing room \"IS EVERYTHING SATISFACTORY, SIR?\"; and meets the Cook in room 13, going into her room (11) with her and locking the door for a long wait, unless the player is there (\"AHEM\")."
  },
  {
   "address": 43639,
   "type": "line",
   "text": "The Cook's script (character 2), from the kitchen: \"OOH YES I KNOW DEAR..\" when Gabriel is there; walks out and back; in room 13 or her room (11), to the player \"YOU/LL FIND YOUR ROOM UPSTAIRS..THIS ONE/S MINE.\"; waits there while Bentley is with her."
  },
  {
   "address": 43690,
   "type": "line",
   "text": "Inside the Cook's script. Named only by the placeholder operand of LDY $AAAA,X at $9160, which $9138 rewrites ($9161/$9162) before it runs."
  },
  {
   "address": 43831,
   "type": "line",
   "text": "Gabriel's script (character 3), the maid, from the kitchen: wanders the ground floor, \"OH..\" in the library, the study, her room (12): \"WELL!\" when its door will not open, \"HELP!\" when the way out is locked, \"LET ME IN!\" at the kitchen, \"..DUM DE DAH..\"."
  },
  {
   "address": 43964,
   "type": "line",
   "text": "Cynthia's script (character 4), from her room (17): \"GRIMACES..\", \" SNIFFS DISSAPROVINGLY..\"; at Dingle's door (19) \"SORRY..WRONG ROOM\"; \"HELLO..\"; in room 20 \"AWFUL WEATHER..\"; in the Major's room (21) \"TSK TSK..SUCH A MESS..\"."
  },
  {
   "address": 44182,
   "type": "line",
   "text": "Native code for Dingle's script (opcode 11): Cynthia (character 4) is killed in the hall (room 9): marked so ($AD18, state 3), given the body shapes $D1 and a place on the floor, object $1D put in the list at $1C60; then \"<you> HEAR<a>SCREAM ..FOLLOWED ...\" is printed ($ACC5)."
  },
  {
   "address": 44229,
   "type": "line",
   "text": "The text printed when Cynthia dies, with word tokens."
  },
  {
   "address": 44268,
   "type": "line",
   "text": "Native code for Dingle's script: Gabriel (character 3) is killed in her room (12): shapes $E0/$E1, state 2 ($AD18), placed at X $A0, depth $28, object $1E in the list at $1C6A."
  },
  {
   "address": 44312,
   "type": "line",
   "text": "Counts a death in $C8 and marks character X dead: $1EA6,x = A (how it is drawn), its room remembered in $77 (the room whose next visit runs $8078), paused ($1E33 = $80) and with no walk target."
  },
  {
   "address": 44333,
   "type": "line",
   "text": "The Professor's script (character 5), from the library: \"..ER..\", \"YES!\", \"WHERE IS IT?\", \"MORNING INSPECTOR\", \"GOODNESS!\", in the study \"THAT/S ODD..\", and walks through the drawing room to room 27 and back."
  },
  {
   "address": 44496,
   "type": "line",
   "text": "The Major's script (character 7), from his room (21): \"I SAY!\" when a door will not open; walks the upstairs rooms (14, 17, 20, 25, 15); once two have died ($C8 2 or more), \"HAVE YOU SEEN THAT PIANO DOWNSTAIRS,SNIDE?\"."
  },
  {
   "address": 44630,
   "type": "line",
   "text": "The Doctor's script (character 6), from room 2: \" GLANCES AT HIS WATCH..\"; once someone has died ($C8 1 or more): in the drawing room \"HAS ANYONE SEEN MY SCALPELS?\", \"GOOD EVENING\", then upstairs to his room (18): \"I/M TOO BUSY TO EXAMINE YOUR HAEMORRHOIDS AT THE MOMENT, INSPECTOR\"; then walks between Dingle's room and the hall, and as soon as the player is with him (opcode 23) announces \"INSPECTOR..MR. DINGLE/S BEEN STRANGLED!\", leads the player to Dingle's room, \"HERE..\", \" POOR FELLOW ..TERRIBLE\", and switches Dingle to his second script ($B09C); then \"..TRAGIC..\" and wanders the ground floor."
  },
  {
   "address": 45062,
   "type": "line",
   "text": "An instruction that jumps to itself: a character set here does nothing more. Dingle's second script sends the dead here."
  },
  {
   "address": 45065,
   "type": "line",
   "text": "Dingle's script (character 8), from the drawing room: goes up to his room (19) and locks its door; with the player there, \"WOULD YOU MIND LEAVING MY ROOM PLEASE, SIR..\", then \"MR DINGLE ASKS YOU TO GO\"; alone, he lies down as if strangled ($B1CF) and stops."
  },
  {
   "address": 45212,
   "type": "line",
   "text": "Dingle's second script, set by the Doctor's: from his 'death' on he is the murderer. When the player is in room 1 or 15 he leaves his room and vanishes ($B18D); when the player is downstairs (rooms 0, 13, 7, 11 or 12) Cynthia dies ($AC96); when the player has left their room, the bomb is placed ($B198); later, with the player upstairs (14, 15 or 8), \"YOU HEAR A RATHER UNPLEASANT, GASPING SCREAM FROM DOWNSTAIRS!\" and the Doctor dies ($B19E); then Gabriel ($ACEC); and last, while the player is out of the study, he takes the ammunition ($B1E6)."
  },
  {
   "address": 45401,
   "type": "line",
   "text": "Dingle's escape, the script the arrest gives him when his gun fails ($BC72): he walks off to room 5, leaves every room ($B202), and \"DINGLE HAS ESCAPED..NEVER TO BE SEEN AGAIN\" is printed."
  },
  {
   "address": 45453,
   "type": "line",
   "text": "Native code: takes Dingle out of every room ($1D4A = $FF) and clears $1EAE."
  },
  {
   "address": 45464,
   "type": "line",
   "text": "Native code: puts the bomb (object $31) in place $2D."
  },
  {
   "address": 45470,
   "type": "line",
   "text": "Native code: the Doctor (character 6) is killed in room 27 ($1B): state 1 ($AD18), shapes $DC/$DD, placed at X $22, depth 8, object $1F in the list at $1C8B, and the knife (object 4) put in place $1A."
  },
  {
   "address": 45519,
   "type": "line",
   "text": "Native code: Dingle is marked dead ($AD18 with A = 2, his 'strangling'), given the shapes $BF/$D9, and object $1C added to the list at $1C7A."
  },
  {
   "address": 45542,
   "type": "line",
   "text": "Takes the ammunition from place $18: the bullets (object $33) if they are there, else the blank bullets (object 1), marking them $F7, Dingle's; nothing when he already has some. Run at the end of Dingle's second script and again when he draws his gun at the arrest ($BC5E)."
  },
  {
   "address": 45570,
   "type": "line",
   "text": "Native code for Dingle's escape script: takes him out of every room ($1D4A = $FF)."
  },
  {
   "address": 45576,
   "type": "line",
   "text": "Prints \"IN THE ROOM YOU SEE:\" and the names of up to six of the cast in the player's room who are alive ($1EA6 zero), as a list to pick from; \"NOBODY..\" with carry clear when there is none."
  },
  {
   "address": 45579,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $B208: \"(clears the panel) IN THE ROOM YOU SEE: (new line)  (new line)\"."
  },
  {
   "address": 45603,
   "type": "line",
   "text": "The rest of list_people_here ($B208), after \"IN THE ROOM YOU SEE:\"."
  },
  {
   "address": 45668,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $B261: \"NOBODY..  (new line)\"."
  },
  {
   "address": 45678,
   "type": "line",
   "text": "The end of list_people_here after \"NOBODY..\": carry clear."
  },
  {
   "address": 45680,
   "type": "line",
   "text": "Icon action 11 ($87ED): lists the people here ($B208) and, when there are any, opens the list to choose one (menu 2)."
  },
  {
   "address": 45693,
   "type": "line",
   "text": "After choosing a person ($C6, kept in $74): if they have gone, \"<HE/SHE> LEFT.\"; else stops every character's delay, makes this one wait ($1E9C = $F8), \"<HE/SHE> IS WAITING..\"."
  },
  {
   "address": 45713,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $B28E: \"LEFT.  (new line)\"."
  },
  {
   "address": 45721,
   "type": "line",
   "text": "An entry into question_person ($B27D), reached from $B273."
  },
  {
   "address": 45743,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $B2AC: \"IS WAITING..  (new line)\"."
  },
  {
   "address": 45758,
   "type": "line",
   "text": "The end of question_person after \"IS WAITING..\"."
  },
  {
   "address": 45759,
   "type": "line",
   "text": "Prints \"HE\" or \"SHE\" for character X (table $B2D1)."
  },
  {
   "address": 45770,
   "type": "line",
   "text": "\"HE\", \"SHE\", and for each character 0 or 1, which of the two."
  },
  {
   "address": 45777,
   "type": "line",
   "text": "Part of he_she ($B2CA), read by $B2BF."
  },
  {
   "address": 45786,
   "type": "line",
   "text": "Prints the name of character X (list at $4A90) word-wrapped."
  },
  {
   "address": 45793,
   "type": "line",
   "text": "What fire does in play when it is not at a door ($8042): with a character chosen ($74) who is in the room, alive, within 22 pixels across and 9 in depth of the player, stops that character (bit 7 of $1E33) and opens the questions: \"ASK ABOUT:\" \"MR MCFUNGUS / AN OBJECT / ANOTHER PERSON\" as menu 3; carry clear otherwise."
  },
  {
   "address": 45874,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $B32F: \"/   MR MCFUNGUS (new line)   AN OBJECT (new line)   ANOTHER GUEST (new line)\"."
  },
  {
   "address": 45918,
   "type": "line",
   "text": "The rest of talk_on_fire ($B2E1), after the text it prints."
  },
  {
   "address": 45937,
   "type": "line",
   "text": "Fills the menu list $1E5A with 0 to Y-1, and $0148 with Y."
  },
  {
   "address": 45949,
   "type": "line",
   "text": "Runs the question chosen (A, 0-2) through the table at $B39A: about McFungus, an object, another person."
  },
  {
   "address": 45967,
   "type": "line",
   "text": "Lets the questioned character ($74) move again (clears bit 7 of $1E33)."
  },
  {
   "address": 45978,
   "type": "line",
   "text": "The three questions: $B3A0 (McFungus), $B5E0 (an object), $B819 (another person)."
  },
  {
   "address": 45979,
   "type": "line",
   "text": "Part of ask_routines ($B39A), read by $B384."
  },
  {
   "address": 45984,
   "type": "line",
   "text": "Speaks the questioned character's answer about McFungus (string $74 of the list at $B3AF) and lets them go."
  },
  {
   "address": 45999,
   "type": "line",
   "text": "Each character's answer about Mr McFungus, in cast order, with word tokens (\"MOST VALUABLE PARISHIONER.. MAY HE REST IN PEACE.\", ...)."
  },
  {
   "address": 46249,
   "type": "line",
   "text": "Inside the answers about McFungus. The address is named only as the operand of a BIT at $2BAB, which skips a LDA #$B4; nothing reads here by it."
  },
  {
   "address": 46543,
   "type": "line",
   "text": "Prints \"*ASK ABOUT:\"."
  },
  {
   "address": 46546,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $B5CF: \"(clears the panel) ASK ABOUT:  (new line)\"."
  },
  {
   "address": 46559,
   "type": "line",
   "text": "The end of say_ask_about."
  },
  {
   "address": 46560,
   "type": "line",
   "text": "Lists what the player carries to ask about, as menu 8."
  },
  {
   "address": 46580,
   "type": "line",
   "text": "Answers a question about object $C6: the Major always mutters ($99DF); others say their line from the records at $B699 (character, object, text), or \"DON/T KNOW ANYTHING ABOUT IT.\"; Bentley (character 1) names some objects instead (\"IT IS QUITE OBVIOUSLY \" and the object's name), as the table at $87A5 marks them."
  },
  {
   "address": 46656,
   "type": "line",
   "text": "Text printed in the message bar, as speech by the call at $B63D: \"DON/T<KNOW> ANYTHING ABOUT IT.\"."
  },
  {
   "address": 46682,
   "type": "line",
   "text": "The end of answer_object ($B5F4) and of ask_object_list when the player carries nothing: lets the questioned character go ($B38F)."
  },
  {
   "address": 46722,
   "type": "line",
   "text": "\"IT IS QUITE OBVIOUSLY \" and the records of what each character says about each object: a character, an object and a zero-terminated text, ended by a negative byte."
  },
  {
   "address": 46761,
   "type": "line",
   "text": "Inside the answers about objects. Named only as the operand of a BIT at $2B7B that skips a LDA #$B6."
  },
  {
   "address": 47072,
   "type": "line",
   "text": "Lists every character other than the one questioned ($74) by name, as menu 6."
  },
  {
   "address": 47129,
   "type": "line",
   "text": "\"ASK ABOUT:\" and the list of the other characters, as menu 9."
  },
  {
   "address": 47141,
   "type": "line",
   "text": "Answers a question about person $C6: from the records at $B895 (character, person, the number of deaths from which it applies, text); the Major mutters; without a record, the Professor takes turns through five replies and the others give the reply of their own number, from the list at $B9F0."
  },
  {
   "address": 47253,
   "type": "line",
   "text": "What each character says about each other character, and the general replies (\"FINE..\", \"HMM..\", \"SORRY, NO COMMENT\" ...)."
  },
  {
   "address": 47273,
   "type": "line",
   "text": "Inside the answers about people. Named only as the operand of a BIT at $2BAE that skips a LDA #$B8."
  },
  {
   "address": 47864,
   "type": "line",
   "text": "Copies the zero-terminated name at ($26) into the list buffer at $0300 from $31 on, letters as screen codes."
  },
  {
   "address": 47895,
   "type": "line",
   "text": "The ten pieces of evidence: the will, the knife, the note, the small bottle, the cravat, the syringe, the folded document, the wad of notes, the open locket and the bomb (objects 3, 4, 6, 7, 8, 12, 21, 29, 32, 49)."
  },
  {
   "address": 47905,
   "type": "line",
   "text": "Prints \"*YOU DO NOT HAVE THE EVIDENCE TO PROVE IT.\"."
  },
  {
   "address": 47908,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BB21: \"(clears the panel) YOU DO NOT HAVE THE EVIDENCE TO PROVE IT.\"."
  },
  {
   "address": 47951,
   "type": "line",
   "text": "The end of say_no_evidence."
  },
  {
   "address": 47952,
   "type": "line",
   "text": "Icon action 7 ($87ED), the accusation: \"*WHO IS THE MURDERER?\" and the list of the cast to choose from (menu 10)."
  },
  {
   "address": 47955,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BB50: \"(clears the panel) WHO IS THE MURDERER?\"."
  },
  {
   "address": 47977,
   "type": "line",
   "text": "The rest of icon_action_7 ($BB50), after the text at $BB53."
  },
  {
   "address": 47990,
   "type": "line",
   "text": "Accuses character A. Anyone but Dingle (8), or any of the ten pieces of evidence at $BB17 not in the envelopes (place $C0): \"YOU DO NOT HAVE THE EVIDENCE TO PROVE IT.\". Otherwise the lights go out, \"<you> ARE LED AT GUNPOINT THROUGH A DARK TUNNEL\" to the cellar (room 6) with Dingle, who says \"VERY CLEVER, INSPECTOR.. I PAID THE DOCTOR TO CERTIFY ME DEAD, AND THEN TOOK CARE OF HIM.. NOW I JUST HAVE TO TAKE CARE OF YOU!\" and takes his ammunition ($B1E6). With the blank bullets in his gun ($1DAD = $F7), \"<Dingle> PULLS THE TRIGGER, BUT NOTHING HAPPENS..\", his script becomes the escape at $B159 and play goes on; with the real ones, the game ends ($2042)."
  },
  {
   "address": 48125,
   "type": "line",
   "text": "Text printed in the message bar, as speech by the call at $BBFA: \"VERY CLEVER, <SNIDE><..> I PAID <THE DOCTOR> TO CERTIFY ME DEAD, AND THEN TOOK<CARE OF>HIM<..>. NOW I JUST HAVE TO TAKE<CARE OF><YOU>!\"."
  },
  {
   "address": 48217,
   "type": "line",
   "text": "The rest of accuse ($BB76), after Dingle's speech: waits for the bar to be free, takes his ammunition ($B1E6) and tests it."
  },
  {
   "address": 48262,
   "type": "line",
   "text": "\"<Dingle> PULLS THE TRIGGER, BUT NOTHING HAPPENS..\", with word tokens."
  },
  {
   "address": 48297,
   "type": "line",
   "text": "Inside the trigger text. Named only as the operand of a BIT at $2BB1 that skips a LDA #$BC."
  },
  {
   "address": 48303,
   "type": "line",
   "text": "Icon action 6 ($87ED), use the gun: in the cellar with Dingle there, Dingle says \"DON/T SHOOT! I/LL COME QUIETLY..\" and the game is won: \"WELL DONE, INSPECTOR.. YOU/RE A CREDIT TO THE FORCE, TAKE A PROMOTION!\" and the end ($203F). Elsewhere, \"YOU CAN/T USE THAT HERE, YOU MIGHT HURT SOMEONE!\"."
  },
  {
   "address": 48331,
   "type": "line",
   "text": "Text printed in the message bar, as speech by the call at $BCC8: \"DON/T SHOOT! I/LL COME QUIETLY<..>\"."
  },
  {
   "address": 48363,
   "type": "line",
   "text": "The rest of icon_action_6 ($BCAF), after the text it prints."
  },
  {
   "address": 48386,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BCFF: \"YOU CAN/T USE THAT HERE, YOU MIGHT HURT SOMEONE!\"."
  },
  {
   "address": 48435,
   "type": "line",
   "text": "The end of icon_action_6 after \"YOU CAN/T USE THAT HERE, YOU MIGHT HURT SOMEONE!\"."
  },
  {
   "address": 48436,
   "type": "line",
   "text": "\"<you> ARE LED AT GUNPOINT THROUGH A DARK TUNNEL\" and \"WELL DONE, INSPECTOR.. YOU/RE A CREDIT TO THE FORCE, TAKE A PROMOTION!\", with word tokens."
  },
  {
   "address": 48531,
   "type": "line",
   "text": "Game state 5 handler: scans the keyboard's 64 keys through $DC00/$DC01 and puts the character of a newly pressed key in $70, from the KERNAL ROM's own keyboard table at $EB81, which it switches in for the read ($01 = $36)."
  },
  {
   "address": 48616,
   "type": "line",
   "text": "Asks \"*TYPE IN THE NAME OF THE BOOK YOU WANT:\" and reads it ($BE7E); typing \"101 DETECTIVE STORIES\" ($BE68) at the bookcase where the hardback book is (object $14's place $1DC0 equals the bookcase's number $30 xor $44) gives \"YOU FIND THE BOOK.\" and hands it over ($1DC0 = $80); anything else \"YOU DO NOT FIND THE BOOK.\"."
  },
  {
   "address": 48627,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BDF0: \"(clears the panel) TYPE IN THE NAME OF THE BOOK YOU WANT: (new line)  (new line)\"."
  },
  {
   "address": 48669,
   "type": "line",
   "text": "The rest of library_book ($BDE8) after its question: reads the typed name ($BE7E) and compares it with \"101 DETECTIVE STORIES\"."
  },
  {
   "address": 48692,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BE31: \"YOU\"."
  },
  {
   "address": 48697,
   "type": "line",
   "text": "The rest of library_book after \"YOU \": checks that the hardback book is in this bookcase, and hands it over."
  },
  {
   "address": 48716,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BE49: \"DO NOT\"."
  },
  {
   "address": 48724,
   "type": "line",
   "text": "The end of library_book: \"FIND THE BOOK.\"."
  },
  {
   "address": 48727,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $BE54: \"FIND THE BOOK.  (new line)\"."
  },
  {
   "address": 48743,
   "type": "line",
   "text": "The return of library_book."
  },
  {
   "address": 48744,
   "type": "line",
   "text": "\"101 DETECTIVE STORIES\", the book the library gives."
  },
  {
   "address": 48766,
   "type": "line",
   "text": "Reads up to 22 characters typed on the keyboard into $0300 (digits and letters, space; DEL rubs out), echoing them in the text panel, until RETURN; in game state 5 for the while."
  },
  {
   "address": 48869,
   "type": "line",
   "text": "Draws the list menu's lines from the buffer at $0300 (from line $6A, up to six) in the text panel, from row 20 column 3."
  },
  {
   "address": 48954,
   "type": "line",
   "text": "The RTS that ends draw_list; flash_colours reads the table from here ($BF55 with X 1 and up), so this byte is never read as a colour."
  },
  {
   "address": 48955,
   "type": "line",
   "text": "Background and sprite colours for a flash, nine steps."
  },
  {
   "address": 48963,
   "type": "line",
   "text": "The sprite multicolours of the flash, read by $BF5B."
  },
  {
   "address": 48973,
   "type": "line",
   "text": "Each frame in a room with the storm: steps a flash through the colours at $BF3B, and sweeps voice 2's frequency with three running sums of the frame counters: the rain."
  },
  {
   "address": 49018,
   "type": "line",
   "text": "The storm's raster hook: runs $BF4D and the room's end ($200C); counts down and stops thunder on voice 1; sweeps the filter's cutoff, and now and then starts a flash and a roll of thunder ($997A)."
  },
  {
   "address": 49113,
   "type": "line",
   "text": "Starts the rain on voice 2 (noise) for a room with the storm, and sets the time to the next thunder ($BFED)."
  },
  {
   "address": 49133,
   "type": "line",
   "text": "Sets a random wait before the next thunder ($1ECB), the filter and volume."
  },
  {
   "address": 49169,
   "type": "line",
   "text": "For the envelopes (object $30): \"*EVIDENCE COLLECTED:\" and the list of the objects in place $C0."
  },
  {
   "address": 49172,
   "type": "line",
   "text": "Text printed in the text panel (through $201E) by the call at $C011: \"(clears the panel) EVIDENCE COLLECTED:  (new line)\"."
  },
  {
   "address": 49194,
   "type": "line",
   "text": "The rest of icon_action_evidence ($C011), after its text: lists the objects in the envelopes (place $C0)."
  },
  {
   "address": 49254,
   "type": "line",
   "text": "For the bomb (object $31): the player's shapes and state change, a long explosion on voice 3, and the game ends ($2033)."
  },
  {
   "address": 49317,
   "type": "line",
   "text": "Waits until the frame counter $1E69, cleared first, passes A."
  },
  {
   "address": 49328,
   "type": "line",
   "text": "In the cellar (room 6), every so often swaps a byte between $4700 and $43F8, animating two characters."
  },
  {
   "address": 49365,
   "type": "line",
   "text": "Game state 8 handler: places the cast and plays the tune; when the first voice has gone 15 steps, back to play (state 2)."
  },
  {
   "address": 49387,
   "type": "line",
   "text": "Unused: 21 bytes between the last routine and the room pictures; no instruction reads them"
  },
  {
   "address": 49408,
   "type": "line",
   "text": "Room picture record 0 of the list at $C100: the address of the next record, the picture's width in columns (67), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 50002,
   "type": "line",
   "text": "Room picture record 1 of the list at $C100: the address of the next record, the picture's width in columns (80), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 51005,
   "type": "line",
   "text": "Room picture record 2 of the list at $C100: the address of the next record, the picture's width in columns (50), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 51652,
   "type": "line",
   "text": "Room picture record 3 of the list at $C100: the address of the next record, the picture's width in columns (68), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 52361,
   "type": "line",
   "text": "Room picture record 4 of the list at $C100: the address of the next record, the picture's width in columns (67), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 53051,
   "type": "line",
   "text": "Room picture record 5 of the list at $C100: the address of the next record, the picture's width in columns (21), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 53248,
   "type": "line",
   "text": "Room picture 5 ($CF3B) goes on past the edge of the memory map at $D000, in the RAM under the I/O area. The instructions at $2512, $253F, $255D and $2A50 name the sprite position register at this address, not this RAM."
  },
  {
   "address": 53331,
   "type": "line",
   "text": "Room picture record 6 of the list at $C100: the address of the next record, the picture's width in columns (36), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 53751,
   "type": "line",
   "text": "Room picture record 7 of the list at $C100: the address of the next record, the picture's width in columns (50), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 54259,
   "type": "line",
   "text": "Room picture record 8 of the list at $C100: the address of the next record, the picture's width in columns (50), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 54833,
   "type": "line",
   "text": "Room picture record 9 of the list at $C100: the address of the next record, the picture's width in columns (42), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 55346,
   "type": "line",
   "text": "Part of room_picture_9 ($D631). The address is named only by the instruction at $2C1D, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 55395,
   "type": "line",
   "text": "Room picture record 10 of the list at $C100: the address of the next record, the picture's width in columns (25), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 55724,
   "type": "line",
   "text": "Room picture record 11 of the list at $C100: the address of the next record, the picture's width in columns (37), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 55789,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $232F, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 55838,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $2335, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 55896,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $24A3, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 55976,
   "type": "line",
   "text": "Part of room picture 11 ($D9AC). The address is named only by the instruction at $2720, which writes the colour RAM there, not this RAM."
  },
  {
   "address": 56002,
   "type": "line",
   "text": "Part of room picture 11 ($D9AC). The address is named only by an instruction of draw_panel_frame ($325E) that writes the colour RAM there, not this RAM."
  },
  {
   "address": 56003,
   "type": "line",
   "text": "Part of room picture 11 ($D9AC). The address is named only by the instruction at $326F, which writes the colour RAM there, not this RAM."
  },
  {
   "address": 56014,
   "type": "line",
   "text": "Part of room picture 11 ($D9AC). The address $DACE is named only by the instruction at $32AB in draw_panel_frame, which writes the colour RAM there, not this RAM."
  },
  {
   "address": 56016,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $2723, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 56056,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $2726, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 56096,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $2729, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 56136,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $272C, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 56176,
   "type": "line",
   "text": "Part of room_picture_11 ($D9AC). The address is named only by the instruction at $272F, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 56213,
   "type": "line",
   "text": "Room picture record 12 of the list at $C100: the address of the next record, the picture's width in columns (52), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 56216,
   "type": "line",
   "text": "Part of room_picture_12 ($DB95). The address is named only by the instruction at $2732, which reaches the colour RAM there, not this RAM."
  },
  {
   "address": 56256,
   "type": "line",
   "text": "Part of room picture 12 ($DB95). The address is named only by the instruction at $2735, which writes the colour RAM there, not this RAM."
  },
  {
   "address": 56282,
   "type": "line",
   "text": "Part of room picture 12 ($DB95). The address is named only by an instruction of draw_panel_frame ($325E) that writes the colour RAM there, not this RAM."
  },
  {
   "address": 56283,
   "type": "line",
   "text": "Part of room picture 12 ($DB95). The address is named only by the instruction at $326C, which writes the colour RAM there, not this RAM."
  },
  {
   "address": 56294,
   "type": "line",
   "text": "Part of room picture 12 ($DB95). The address is named only by $32B1, which writes the colour RAM there, not this RAM."
  },
  {
   "address": 56778,
   "type": "line",
   "text": "Room picture record 13 of the list at $C100: the address of the next record, the picture's width in columns (44), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 57249,
   "type": "line",
   "text": "Room picture record 14 of the list at $C100: the address of the next record, the picture's width in columns (50), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 57344,
   "type": "line",
   "text": "Room picture 14 ($DFA1) goes on past the edge of the memory map at $E000."
  },
  {
   "address": 57759,
   "type": "line",
   "text": "Room picture record 15 of the list at $C100: the address of the next record, the picture's width in columns (43), then its 15 rows, one after another, packed as $3BD7 unpacks them"
  },
  {
   "address": 58237,
   "type": "line",
   "text": "Room picture record 16 of the list at $C100, the last (its next address is 0): width 32 columns. No room's type names it. Where its packed rows end was not measured; the title tune's sequences follow from $E680."
  },
  {
   "address": 59008,
   "type": "line",
   "text": "The title tune's first voice: the sequence of notes and commands the music player reads ($94EB), looping back to here at $FF. The start-up copies its address from $97F5."
  },
  {
   "address": 59072,
   "type": "line",
   "text": "The title tune's second voice."
  },
  {
   "address": 59200,
   "type": "line",
   "text": "The title tune's third voice, running on to $E7FF."
  },
  {
   "address": 59261,
   "type": "line",
   "text": "room picture 16, continued: bytes $E77D-$E7FF."
  },
  {
   "address": 59392,
   "type": "line",
   "text": "Animation frames: three 8-byte frames for character 97 ($E800, $2C83) and the 40-byte ring for characters 52-54 ($E818, $2CC2), then 64 bytes that no instruction names"
  },
  {
   "address": 59416,
   "type": "line",
   "text": "Part of anim_frames ($E800), read by $2CDB."
  },
  {
   "address": 59520,
   "type": "line",
   "text": "A flag byte for each room object, by its index ($0264): bit 0 makes the border flash when the player touches it ($3845), bits 0-1 equal to 1 let things be put in it ($887C), and bit 7 lets only object $1C (the picture) go there."
  },
  {
   "address": 59584,
   "type": "line",
   "text": "Sprite shape numbers for the two-sprite hook ($2DC1)"
  },
  {
   "address": 59587,
   "type": "line",
   "text": "Part of hook2_shapes ($E8C0), read by $2E3D."
  },
  {
   "address": 59648,
   "type": "line",
   "text": "The safe's three pictures, 72 bytes each (characters 35-43): hidden, found and open ($8AAE)"
  },
  {
   "address": 59872,
   "type": "line",
   "text": "For each room type, the column the player cannot pass to the right, in units of 4 pixels ($3DA1)"
  },
  {
   "address": 59904,
   "type": "line",
   "text": "The other 2 KB character set: at the hand-over the room set, which the title swaps into $4000 ($22BE); in play the title's set waits here"
  },
  {
   "address": 60289,
   "type": "line",
   "text": "Part of the character set at $EA00. The address is named only by $BDBC, which reads the KERNAL ROM's keyboard table at this address with the ROM switched in, never this RAM."
  },
  {
   "address": 60928,
   "type": "line",
   "text": "charset swap, continued: bytes $EE00-$F1FF."
  },
  {
   "address": 61952,
   "type": "line",
   "text": "Two more versions of the room set's upper half, 1 KB each, which $3CC0 rotates through $4400 so that each room has its own characters"
  },
  {
   "address": 62976,
   "type": "line",
   "text": "charset variants, continued: bytes $F600-$F9FF."
  },
  {
   "address": 64000,
   "type": "line",
   "text": "The menu icons, 48 bytes each (six characters), copied into the panel set by $86EE: icon n at $FA00 + n x 48"
  }
 ]
}