{
 "schema": 1,
 "platform": "c64",
 "game": "rambo-first-blood-part-ii",
 "build": "Ocean's original disk, mastered 4 December 1985 (\"MASTER DATE 04/12/85 NO:014.006.2\" on track 18, sector 2), protected by the XROM system of Tequila Sunrise, Belgium; a G64 image",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    55296,
    57343,
    "I/O and colour RAM"
   ],
   [
    0,
    255,
    "runtime: zero page, the game's pointers, the object tables, the multiplexer's lists and the music driver's sequence pointers (named in the listing); game_init clears $03-$FF before play"
   ],
   [
    512,
    767,
    "not the game's: page 2 holds the loader's leftovers and a fill pattern, and no instruction of the game reads or writes it (references search, 2 November 2026)"
   ],
   [
    10496,
    12287,
    "not the game's: a regular fill pattern after the unused row drawer, which no instruction reads and the video chip cannot see (bank 1 is $4000-$7FFF)"
   ],
   [
    16096,
    16383,
    "not the game's: zeros after the unread glyph bytes"
   ],
   [
    16384,
    17407,
    "runtime: the jungle's screen and its sprite pointers, drawn from the map by the scroll code and the text printer; what it holds at the hand-over is overwritten before anything is shown"
   ],
   [
    32855,
    33023,
    "not the game's: a fill pattern between the arc tables and the music driver, which nothing reads"
   ],
   [
    44980,
    45055,
    "not the game's: a fill pattern after the tune data"
   ],
   [
    46186,
    46842,
    "not the game's: a fill pattern between the heroes table and the unreached sequence data"
   ],
   [
    55296,
    57343,
    "not the game's: the RAM under the colour RAM and the CIAs, which no instruction reads with the I/O switched out (swap_charset exchanges only $D000-$D7FF)"
   ],
   [
    57344,
    59247,
    "runtime: the working map, rewritten from the clean copy at $E770 by map_restore before every game and damaged by explosions in play; what it holds at the hand-over is never read"
   ],
   [
    61152,
    61183,
    "not the game's: filler between the clean map and the tiles"
   ],
   [
    65472,
    65527,
    "not the game's: a fill pattern between the last tile and the vectors"
   ],
   [
    33077,
    33418,
    "runtime: the music driver's voice state (instruments, return stacks, transposes, volume and the three voices' effect work areas), which tune_start, effect_start and the sequence commands fill before the driver reads them; named in the listing"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 822,
   "type": "Undefined"
  },
  {
   "start": 823,
   "end": 1034,
   "type": "Code"
  },
  {
   "start": 1035,
   "end": 1035,
   "type": "Undefined"
  },
  {
   "start": 1036,
   "end": 1142,
   "type": "Code"
  },
  {
   "start": 1143,
   "end": 1144,
   "type": "Address"
  },
  {
   "start": 1145,
   "end": 1180,
   "type": "Code"
  },
  {
   "start": 1181,
   "end": 1182,
   "type": "Address"
  },
  {
   "start": 1183,
   "end": 1240,
   "type": "Code"
  },
  {
   "start": 1241,
   "end": 1242,
   "type": "Address"
  },
  {
   "start": 1243,
   "end": 1334,
   "type": "Code"
  },
  {
   "start": 1335,
   "end": 1400,
   "type": "Undefined"
  },
  {
   "start": 1401,
   "end": 1955,
   "type": "Byte"
  },
  {
   "start": 1956,
   "end": 2049,
   "type": "Code"
  },
  {
   "start": 2050,
   "end": 2050,
   "type": "Undefined"
  },
  {
   "start": 2051,
   "end": 2117,
   "type": "Code"
  },
  {
   "start": 2118,
   "end": 2122,
   "type": "Undefined"
  },
  {
   "start": 2123,
   "end": 2215,
   "type": "Code"
  },
  {
   "start": 2216,
   "end": 2220,
   "type": "Undefined"
  },
  {
   "start": 2221,
   "end": 2282,
   "type": "Code"
  },
  {
   "start": 2283,
   "end": 2283,
   "type": "Undefined"
  },
  {
   "start": 2284,
   "end": 2366,
   "type": "Code"
  },
  {
   "start": 2367,
   "end": 2370,
   "type": "Undefined"
  },
  {
   "start": 2371,
   "end": 2393,
   "type": "Code"
  },
  {
   "start": 2394,
   "end": 2395,
   "type": "Undefined"
  },
  {
   "start": 2396,
   "end": 2434,
   "type": "Code"
  },
  {
   "start": 2435,
   "end": 2436,
   "type": "Address"
  },
  {
   "start": 2437,
   "end": 2500,
   "type": "Code"
  },
  {
   "start": 2501,
   "end": 2502,
   "type": "Address"
  },
  {
   "start": 2503,
   "end": 2583,
   "type": "Code"
  },
  {
   "start": 2584,
   "end": 2585,
   "type": "Undefined"
  },
  {
   "start": 2586,
   "end": 2814,
   "type": "Code"
  },
  {
   "start": 2815,
   "end": 2816,
   "type": "Undefined"
  },
  {
   "start": 2817,
   "end": 2997,
   "type": "Code"
  },
  {
   "start": 2998,
   "end": 3022,
   "type": "Undefined"
  },
  {
   "start": 3023,
   "end": 3044,
   "type": "Code"
  },
  {
   "start": 3045,
   "end": 3045,
   "type": "Undefined"
  },
  {
   "start": 3046,
   "end": 3184,
   "type": "Code"
  },
  {
   "start": 3185,
   "end": 3185,
   "type": "Undefined"
  },
  {
   "start": 3186,
   "end": 3266,
   "type": "Code"
  },
  {
   "start": 3267,
   "end": 3275,
   "type": "Undefined"
  },
  {
   "start": 3276,
   "end": 3319,
   "type": "Code"
  },
  {
   "start": 3320,
   "end": 3321,
   "type": "Undefined"
  },
  {
   "start": 3322,
   "end": 3344,
   "type": "Code"
  },
  {
   "start": 3345,
   "end": 3346,
   "type": "Undefined"
  },
  {
   "start": 3347,
   "end": 3421,
   "type": "Code"
  },
  {
   "start": 3422,
   "end": 3438,
   "type": "Undefined"
  },
  {
   "start": 3439,
   "end": 3630,
   "type": "Code"
  },
  {
   "start": 3631,
   "end": 3632,
   "type": "Undefined"
  },
  {
   "start": 3633,
   "end": 3720,
   "type": "Code"
  },
  {
   "start": 3721,
   "end": 3721,
   "type": "Undefined"
  },
  {
   "start": 3722,
   "end": 3759,
   "type": "Code"
  },
  {
   "start": 3760,
   "end": 3761,
   "type": "Undefined"
  },
  {
   "start": 3762,
   "end": 4073,
   "type": "Code"
  },
  {
   "start": 4074,
   "end": 4086,
   "type": "Undefined"
  },
  {
   "start": 4087,
   "end": 4165,
   "type": "Code"
  },
  {
   "start": 4166,
   "end": 4207,
   "type": "Undefined"
  },
  {
   "start": 4208,
   "end": 4272,
   "type": "Code"
  },
  {
   "start": 4273,
   "end": 4318,
   "type": "Undefined"
  },
  {
   "start": 4319,
   "end": 4412,
   "type": "Code"
  },
  {
   "start": 4413,
   "end": 4440,
   "type": "Undefined"
  },
  {
   "start": 4441,
   "end": 4506,
   "type": "Code"
  },
  {
   "start": 4507,
   "end": 4507,
   "type": "Undefined"
  },
  {
   "start": 4508,
   "end": 4575,
   "type": "Code"
  },
  {
   "start": 4576,
   "end": 4627,
   "type": "Undefined"
  },
  {
   "start": 4628,
   "end": 4671,
   "type": "Code"
  },
  {
   "start": 4672,
   "end": 4736,
   "type": "Undefined"
  },
  {
   "start": 4737,
   "end": 4807,
   "type": "Code"
  },
  {
   "start": 4808,
   "end": 4843,
   "type": "Undefined"
  },
  {
   "start": 4844,
   "end": 5315,
   "type": "Code"
  },
  {
   "start": 5316,
   "end": 5321,
   "type": "Undefined"
  },
  {
   "start": 5322,
   "end": 5382,
   "type": "Code"
  },
  {
   "start": 5383,
   "end": 5383,
   "type": "Undefined"
  },
  {
   "start": 5384,
   "end": 5415,
   "type": "Code"
  },
  {
   "start": 5416,
   "end": 5432,
   "type": "Undefined"
  },
  {
   "start": 5433,
   "end": 5623,
   "type": "Code"
  },
  {
   "start": 5624,
   "end": 5632,
   "type": "Undefined"
  },
  {
   "start": 5633,
   "end": 6366,
   "type": "Code"
  },
  {
   "start": 6367,
   "end": 6379,
   "type": "Undefined"
  },
  {
   "start": 6380,
   "end": 6406,
   "type": "Code"
  },
  {
   "start": 6407,
   "end": 6419,
   "type": "Undefined"
  },
  {
   "start": 6420,
   "end": 6424,
   "type": "Code"
  },
  {
   "start": 6425,
   "end": 6431,
   "type": "Undefined"
  },
  {
   "start": 6432,
   "end": 6454,
   "type": "Code"
  },
  {
   "start": 6455,
   "end": 6457,
   "type": "Undefined"
  },
  {
   "start": 6458,
   "end": 6516,
   "type": "Code"
  },
  {
   "start": 6517,
   "end": 6524,
   "type": "Undefined"
  },
  {
   "start": 6525,
   "end": 6634,
   "type": "Code"
  },
  {
   "start": 6635,
   "end": 6646,
   "type": "Undefined"
  },
  {
   "start": 6647,
   "end": 6809,
   "type": "Code"
  },
  {
   "start": 6810,
   "end": 6911,
   "type": "Undefined"
  },
  {
   "start": 6912,
   "end": 6932,
   "type": "Code"
  },
  {
   "start": 6933,
   "end": 6942,
   "type": "Undefined"
  },
  {
   "start": 6943,
   "end": 7116,
   "type": "Code"
  },
  {
   "start": 7117,
   "end": 7118,
   "type": "Undefined"
  },
  {
   "start": 7119,
   "end": 7269,
   "type": "Code"
  },
  {
   "start": 7270,
   "end": 7270,
   "type": "Undefined"
  },
  {
   "start": 7271,
   "end": 7395,
   "type": "Code"
  },
  {
   "start": 7396,
   "end": 7396,
   "type": "Undefined"
  },
  {
   "start": 7397,
   "end": 7429,
   "type": "Code"
  },
  {
   "start": 7430,
   "end": 7435,
   "type": "Undefined"
  },
  {
   "start": 7436,
   "end": 7471,
   "type": "Code"
  },
  {
   "start": 7472,
   "end": 7474,
   "type": "Undefined"
  },
  {
   "start": 7475,
   "end": 8205,
   "type": "Code"
  },
  {
   "start": 8206,
   "end": 8245,
   "type": "Undefined"
  },
  {
   "start": 8246,
   "end": 8567,
   "type": "Code"
  },
  {
   "start": 8568,
   "end": 8571,
   "type": "Undefined"
  },
  {
   "start": 8572,
   "end": 8790,
   "type": "Code"
  },
  {
   "start": 8791,
   "end": 8820,
   "type": "Undefined"
  },
  {
   "start": 8821,
   "end": 8897,
   "type": "Code"
  },
  {
   "start": 8898,
   "end": 8900,
   "type": "Undefined"
  },
  {
   "start": 8901,
   "end": 9011,
   "type": "Code"
  },
  {
   "start": 9012,
   "end": 9012,
   "type": "Undefined"
  },
  {
   "start": 9013,
   "end": 9036,
   "type": "Code"
  },
  {
   "start": 9037,
   "end": 9053,
   "type": "Undefined"
  },
  {
   "start": 9054,
   "end": 9149,
   "type": "Code"
  },
  {
   "start": 9150,
   "end": 9153,
   "type": "Undefined"
  },
  {
   "start": 9154,
   "end": 9232,
   "type": "Code"
  },
  {
   "start": 9233,
   "end": 9246,
   "type": "Byte"
  },
  {
   "start": 9247,
   "end": 9346,
   "type": "Code"
  },
  {
   "start": 9347,
   "end": 9365,
   "type": "Undefined"
  },
  {
   "start": 9366,
   "end": 9432,
   "type": "Code"
  },
  {
   "start": 9433,
   "end": 9440,
   "type": "Undefined"
  },
  {
   "start": 9441,
   "end": 9461,
   "type": "Code"
  },
  {
   "start": 9462,
   "end": 9462,
   "type": "Undefined"
  },
  {
   "start": 9463,
   "end": 9760,
   "type": "Code"
  },
  {
   "start": 9761,
   "end": 9776,
   "type": "Undefined"
  },
  {
   "start": 9777,
   "end": 9834,
   "type": "Code"
  },
  {
   "start": 9835,
   "end": 9856,
   "type": "Undefined"
  },
  {
   "start": 9857,
   "end": 10290,
   "type": "Code"
  },
  {
   "start": 10291,
   "end": 10495,
   "type": "Byte"
  },
  {
   "start": 10496,
   "end": 12287,
   "type": "Undefined"
  },
  {
   "start": 12288,
   "end": 12386,
   "type": "Code"
  },
  {
   "start": 12387,
   "end": 12389,
   "type": "Undefined"
  },
  {
   "start": 12390,
   "end": 12482,
   "type": "Code"
  },
  {
   "start": 12483,
   "end": 12483,
   "type": "Undefined"
  },
  {
   "start": 12484,
   "end": 12582,
   "type": "Code"
  },
  {
   "start": 12583,
   "end": 12607,
   "type": "Undefined"
  },
  {
   "start": 12608,
   "end": 12698,
   "type": "Code"
  },
  {
   "start": 12699,
   "end": 12700,
   "type": "Undefined"
  },
  {
   "start": 12701,
   "end": 12875,
   "type": "Code"
  },
  {
   "start": 12876,
   "end": 12913,
   "type": "Undefined"
  },
  {
   "start": 12914,
   "end": 13011,
   "type": "Code"
  },
  {
   "start": 13012,
   "end": 13016,
   "type": "Undefined"
  },
  {
   "start": 13017,
   "end": 13076,
   "type": "Code"
  },
  {
   "start": 13077,
   "end": 13077,
   "type": "Undefined"
  },
  {
   "start": 13078,
   "end": 13164,
   "type": "Code"
  },
  {
   "start": 13165,
   "end": 13170,
   "type": "Undefined"
  },
  {
   "start": 13171,
   "end": 13325,
   "type": "Code"
  },
  {
   "start": 13326,
   "end": 13326,
   "type": "Undefined"
  },
  {
   "start": 13327,
   "end": 13438,
   "type": "Code"
  },
  {
   "start": 13439,
   "end": 13443,
   "type": "Undefined"
  },
  {
   "start": 13444,
   "end": 13533,
   "type": "Code"
  },
  {
   "start": 13534,
   "end": 13534,
   "type": "Byte"
  },
  {
   "start": 13535,
   "end": 13662,
   "type": "Code"
  },
  {
   "start": 13663,
   "end": 13677,
   "type": "Undefined"
  },
  {
   "start": 13678,
   "end": 13867,
   "type": "Code"
  },
  {
   "start": 13868,
   "end": 13979,
   "type": "Undefined"
  },
  {
   "start": 13980,
   "end": 14015,
   "type": "Code"
  },
  {
   "start": 14016,
   "end": 14021,
   "type": "Undefined"
  },
  {
   "start": 14022,
   "end": 14151,
   "type": "Code"
  },
  {
   "start": 14152,
   "end": 14179,
   "type": "Undefined"
  },
  {
   "start": 14180,
   "end": 14191,
   "type": "Code"
  },
  {
   "start": 14192,
   "end": 14196,
   "type": "Undefined"
  },
  {
   "start": 14197,
   "end": 14226,
   "type": "Code"
  },
  {
   "start": 14227,
   "end": 14262,
   "type": "Undefined"
  },
  {
   "start": 14263,
   "end": 14372,
   "type": "Code"
  },
  {
   "start": 14373,
   "end": 14374,
   "type": "Undefined"
  },
  {
   "start": 14375,
   "end": 14471,
   "type": "Code"
  },
  {
   "start": 14472,
   "end": 14486,
   "type": "Undefined"
  },
  {
   "start": 14487,
   "end": 14553,
   "type": "Code"
  },
  {
   "start": 14554,
   "end": 14719,
   "type": "Undefined"
  },
  {
   "start": 14720,
   "end": 14805,
   "type": "Byte"
  },
  {
   "start": 14806,
   "end": 14847,
   "type": "Undefined"
  },
  {
   "start": 14848,
   "end": 16095,
   "type": "Byte"
  },
  {
   "start": 16096,
   "end": 17535,
   "type": "Undefined"
  },
  {
   "start": 17536,
   "end": 32854,
   "type": "Byte"
  },
  {
   "start": 32855,
   "end": 33023,
   "type": "Undefined"
  },
  {
   "start": 33024,
   "end": 33076,
   "type": "Code"
  },
  {
   "start": 33077,
   "end": 33707,
   "type": "Undefined"
  },
  {
   "start": 33708,
   "end": 33882,
   "type": "Code"
  },
  {
   "start": 33883,
   "end": 33884,
   "type": "Undefined"
  },
  {
   "start": 33885,
   "end": 34282,
   "type": "Code"
  },
  {
   "start": 34283,
   "end": 34284,
   "type": "Undefined"
  },
  {
   "start": 34285,
   "end": 37048,
   "type": "Code"
  },
  {
   "start": 37049,
   "end": 37066,
   "type": "Undefined"
  },
  {
   "start": 37067,
   "end": 37256,
   "type": "Byte"
  },
  {
   "start": 37257,
   "end": 37346,
   "type": "Undefined"
  },
  {
   "start": 37347,
   "end": 37440,
   "type": "Byte"
  },
  {
   "start": 37441,
   "end": 37593,
   "type": "Undefined"
  },
  {
   "start": 37594,
   "end": 39933,
   "type": "Byte"
  },
  {
   "start": 39934,
   "end": 40000,
   "type": "Code"
  },
  {
   "start": 40001,
   "end": 44979,
   "type": "Byte"
  },
  {
   "start": 44980,
   "end": 45055,
   "type": "Undefined"
  },
  {
   "start": 45056,
   "end": 46105,
   "type": "Byte"
  },
  {
   "start": 46106,
   "end": 46842,
   "type": "Undefined"
  },
  {
   "start": 46843,
   "end": 49150,
   "type": "Byte"
  },
  {
   "start": 49151,
   "end": 49151,
   "type": "Undefined"
  },
  {
   "start": 49152,
   "end": 49257,
   "type": "Code"
  },
  {
   "start": 49258,
   "end": 49270,
   "type": "Undefined"
  },
  {
   "start": 49271,
   "end": 49429,
   "type": "Code"
  },
  {
   "start": 49430,
   "end": 49445,
   "type": "Undefined"
  },
  {
   "start": 49446,
   "end": 49457,
   "type": "Code"
  },
  {
   "start": 49458,
   "end": 49458,
   "type": "Undefined"
  },
  {
   "start": 49459,
   "end": 49560,
   "type": "Code"
  },
  {
   "start": 49561,
   "end": 49563,
   "type": "Undefined"
  },
  {
   "start": 49564,
   "end": 49647,
   "type": "Code"
  },
  {
   "start": 49648,
   "end": 49649,
   "type": "Address"
  },
  {
   "start": 49650,
   "end": 49787,
   "type": "Code"
  },
  {
   "start": 49788,
   "end": 49789,
   "type": "Address"
  },
  {
   "start": 49790,
   "end": 49792,
   "type": "Code"
  },
  {
   "start": 49793,
   "end": 49794,
   "type": "Address"
  },
  {
   "start": 49795,
   "end": 49821,
   "type": "Code"
  },
  {
   "start": 49822,
   "end": 49823,
   "type": "Address"
  },
  {
   "start": 49824,
   "end": 49855,
   "type": "Code"
  },
  {
   "start": 49856,
   "end": 49857,
   "type": "Address"
  },
  {
   "start": 49858,
   "end": 49866,
   "type": "Code"
  },
  {
   "start": 49867,
   "end": 49868,
   "type": "Undefined"
  },
  {
   "start": 49869,
   "end": 50020,
   "type": "Code"
  },
  {
   "start": 50021,
   "end": 50022,
   "type": "Undefined"
  },
  {
   "start": 50023,
   "end": 50214,
   "type": "Code"
  },
  {
   "start": 50215,
   "end": 50216,
   "type": "Address"
  },
  {
   "start": 50217,
   "end": 50217,
   "type": "Code"
  },
  {
   "start": 50218,
   "end": 50228,
   "type": "Byte"
  },
  {
   "start": 50229,
   "end": 50325,
   "type": "Code"
  },
  {
   "start": 50326,
   "end": 50337,
   "type": "Undefined"
  },
  {
   "start": 50338,
   "end": 50350,
   "type": "Code"
  },
  {
   "start": 50351,
   "end": 50352,
   "type": "Address"
  },
  {
   "start": 50353,
   "end": 50353,
   "type": "Code"
  },
  {
   "start": 50354,
   "end": 50374,
   "type": "Undefined"
  },
  {
   "start": 50375,
   "end": 50464,
   "type": "Code"
  },
  {
   "start": 50465,
   "end": 50465,
   "type": "Undefined"
  },
  {
   "start": 50466,
   "end": 50494,
   "type": "Code"
  },
  {
   "start": 50495,
   "end": 50513,
   "type": "Undefined"
  },
  {
   "start": 50514,
   "end": 50521,
   "type": "Code"
  },
  {
   "start": 50522,
   "end": 50523,
   "type": "Address"
  },
  {
   "start": 50524,
   "end": 50524,
   "type": "Code"
  },
  {
   "start": 50525,
   "end": 50561,
   "type": "Byte"
  },
  {
   "start": 50562,
   "end": 50622,
   "type": "Code"
  },
  {
   "start": 50623,
   "end": 50630,
   "type": "Undefined"
  },
  {
   "start": 50631,
   "end": 50761,
   "type": "Code"
  },
  {
   "start": 50762,
   "end": 50765,
   "type": "Undefined"
  },
  {
   "start": 50766,
   "end": 50774,
   "type": "Code"
  },
  {
   "start": 50775,
   "end": 50775,
   "type": "Undefined"
  },
  {
   "start": 50776,
   "end": 50857,
   "type": "Code"
  },
  {
   "start": 50858,
   "end": 50879,
   "type": "Undefined"
  },
  {
   "start": 50880,
   "end": 50912,
   "type": "Code"
  },
  {
   "start": 50913,
   "end": 51012,
   "type": "Undefined"
  },
  {
   "start": 51013,
   "end": 51015,
   "type": "Code"
  },
  {
   "start": 51016,
   "end": 51017,
   "type": "Address"
  },
  {
   "start": 51018,
   "end": 51018,
   "type": "Code"
  },
  {
   "start": 51019,
   "end": 51019,
   "type": "Undefined"
  },
  {
   "start": 51020,
   "end": 51236,
   "type": "Byte"
  },
  {
   "start": 51237,
   "end": 51238,
   "type": "Undefined"
  },
  {
   "start": 51239,
   "end": 51287,
   "type": "Code"
  },
  {
   "start": 51288,
   "end": 51289,
   "type": "Address"
  },
  {
   "start": 51290,
   "end": 51300,
   "type": "Code"
  },
  {
   "start": 51301,
   "end": 51302,
   "type": "Address"
  },
  {
   "start": 51303,
   "end": 51405,
   "type": "Code"
  },
  {
   "start": 51406,
   "end": 51407,
   "type": "Address"
  },
  {
   "start": 51408,
   "end": 51504,
   "type": "Code"
  },
  {
   "start": 51505,
   "end": 51506,
   "type": "Address"
  },
  {
   "start": 51507,
   "end": 51556,
   "type": "Code"
  },
  {
   "start": 51557,
   "end": 52340,
   "type": "Byte"
  },
  {
   "start": 52341,
   "end": 52431,
   "type": "Undefined"
  },
  {
   "start": 52432,
   "end": 52588,
   "type": "Code"
  },
  {
   "start": 52589,
   "end": 52589,
   "type": "Undefined"
  },
  {
   "start": 52590,
   "end": 52821,
   "type": "Code"
  },
  {
   "start": 52822,
   "end": 52839,
   "type": "Undefined"
  },
  {
   "start": 52840,
   "end": 52895,
   "type": "Code"
  },
  {
   "start": 52896,
   "end": 52903,
   "type": "Undefined"
  },
  {
   "start": 52904,
   "end": 52994,
   "type": "Code"
  },
  {
   "start": 52995,
   "end": 53247,
   "type": "Undefined"
  },
  {
   "start": 53248,
   "end": 55295,
   "type": "Byte"
  },
  {
   "start": 55296,
   "end": 59247,
   "type": "Undefined"
  },
  {
   "start": 59248,
   "end": 61151,
   "type": "Byte"
  },
  {
   "start": 61152,
   "end": 61183,
   "type": "Undefined"
  },
  {
   "start": 61184,
   "end": 65471,
   "type": "Byte"
  },
  {
   "start": 65472,
   "end": 65527,
   "type": "Undefined"
  },
  {
   "start": 65528,
   "end": 65535,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpf_02",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32,
   "name": "zpf_20",
   "type": "ZeroPageField",
   "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": "zpf_2A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "zpa_2C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45,
   "name": "zpf_2D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpp_30",
   "type": "ZeroPagePointer",
   "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": 55,
   "name": "zpf_37",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 60,
   "name": "zpf_3C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpf_45",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 73,
   "name": "zpa_49",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpf_4A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpa_4B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpf_4C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpa_4D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 78,
   "name": "zpf_4E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "zpa_4F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 81,
   "name": "zpa_51",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpf_53",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 88,
   "name": "zpf_58",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 96,
   "name": "zpa_60",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpf_61",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpa_6D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 110,
   "name": "zpa_6E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpf_6F",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpf_74",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpf_7D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpa_81",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpf_82",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpa_83",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "zpa_84",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "zpa_85",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpf_86",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 135,
   "name": "zpa_87",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 137,
   "name": "zpa_89",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpa_8A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 139,
   "name": "zpf_8B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 143,
   "name": "zpa_8F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 144,
   "name": "zpf_90",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 145,
   "name": "zpa_91",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 146,
   "name": "zpa_92",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "zpa_93",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 148,
   "name": "zpf_94",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 151,
   "name": "zpa_97",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 152,
   "name": "zpa_98",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 153,
   "name": "zpf_99",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 157,
   "name": "zpa_9D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 158,
   "name": "zpf_9E",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 159,
   "name": "zpa_9F",
   "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": "zp_leftover",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpa_A6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpf_A7",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 180,
   "name": "zpf_B4",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 181,
   "name": "zpf_B5",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpf_C3",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "zpa_C7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 200,
   "name": "zpf_C8",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 202,
   "name": "zpf_CA",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 204,
   "name": "zpf_CC",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 205,
   "name": "zpa_CD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 207,
   "name": "zpa_CF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpa_D0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "zpa_D1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpa_D2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 224,
   "name": "f_00E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 225,
   "name": "zpa_E1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpa_E3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 228,
   "name": "zpa_E4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 230,
   "name": "zpa_E6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 240,
   "name": "zpa_F0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 241,
   "name": "zpa_F1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 242,
   "name": "zpa_F2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 243,
   "name": "zpa_F3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 244,
   "name": "zpa_F4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 245,
   "name": "zpa_F5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 246,
   "name": "zpa_F6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 247,
   "name": "zpa_F7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 248,
   "name": "zpa_F8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 250,
   "name": "zpa_FA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 251,
   "name": "zpa_FB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 255,
   "name": "loader_leftover_0100",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 672,
   "name": "a_02A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 823,
   "name": "jt_sort_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 826,
   "name": "jt_read_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 829,
   "name": "jt_weapon_key",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 832,
   "name": "jt_coarse_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 835,
   "name": "jt_scroll_redraw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 838,
   "name": "jt_frame_wait_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 841,
   "name": "jt_frame_wait_irq2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 844,
   "name": "jt_music_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 847,
   "name": "jt_score_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 850,
   "name": "jt_score_add_all",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 853,
   "name": "jt_bullets_scroll",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 856,
   "name": "jt_energy_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 859,
   "name": "jt_score_pair",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 862,
   "name": "jt_main_loop_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 865,
   "name": "jt_play_effect",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 868,
   "name": "jt_frame_wait",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 871,
   "name": "jt_game_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 874,
   "name": "jt_cell_of_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 877,
   "name": "jt_item_place",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 880,
   "name": "jt_input_lock",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 886,
   "name": "jt_restart",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 889,
   "name": "jt_score_clear",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 892,
   "name": "jt_score_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 895,
   "name": "jt_lose_life",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 898,
   "name": "game_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 915,
   "name": "j_0393",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 928,
   "name": "a_03A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1002,
   "name": "music_zone_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1029,
   "name": "b_0405",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1034,
   "name": "r_040A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1035,
   "name": "music_zone_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1036,
   "name": "score_add_digit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1040,
   "name": "score_clear",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1044,
   "name": "b_0414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1054,
   "name": "check_task_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1059,
   "name": "lose_life_restart",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1067,
   "name": "show_game_over",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1072,
   "name": "j_0430",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1077,
   "name": "task_complete",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1097,
   "name": "b_0449",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1101,
   "name": "message_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1131,
   "name": "b_046B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1181,
   "name": "msg_text_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1182,
   "name": "a_049E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1183,
   "name": "b_049F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1202,
   "name": "b_04B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1245,
   "name": "b_04DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1263,
   "name": "b_04EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1266,
   "name": "resume_after_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1292,
   "name": "b_050C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1325,
   "name": "b_052D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1335,
   "name": "restart_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1336,
   "name": "restart_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1338,
   "name": "restart_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1340,
   "name": "restart_column",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1342,
   "name": "restart_scroll_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1343,
   "name": "zp_save",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1375,
   "name": "message_close_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1381,
   "name": "message_tune",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1391,
   "name": "message_text_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1392,
   "name": "f_0570",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1401,
   "name": "message_scripts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1440,
   "name": "msg_scripts_05A0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1696,
   "name": "msg_scripts_06A0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1952,
   "name": "a_07A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1956,
   "name": "input_lock",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1962,
   "name": "input_unlock",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1968,
   "name": "frame_wait",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1977,
   "name": "score_digit_pair",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2006,
   "name": "pow_run_update",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2011,
   "name": "b_07DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2022,
   "name": "b_07E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2025,
   "name": "j_07E9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2049,
   "name": "r_0801",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2050,
   "name": "pow_slots_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2051,
   "name": "pow_spawn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2059,
   "name": "b_080B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2068,
   "name": "b_0814",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2078,
   "name": "b_081E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2118,
   "name": "pows_to_release",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2119,
   "name": "pow_walk_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2123,
   "name": "pow_walk",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2130,
   "name": "b_0852",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2138,
   "name": "b_085A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2151,
   "name": "b_0867",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2156,
   "name": "b_086C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2166,
   "name": "r_0876",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2167,
   "name": "b_0877",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2175,
   "name": "j_087F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2193,
   "name": "b_0891",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2199,
   "name": "pow_anim_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2211,
   "name": "b_08A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2216,
   "name": "pow_anim_div",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2221,
   "name": "pow_scroll_lock",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2244,
   "name": "b_08C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2265,
   "name": "hut_door_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2276,
   "name": "r_08E4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2277,
   "name": "b_08E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2283,
   "name": "rescue_started",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2284,
   "name": "b_08EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2290,
   "name": "b_08F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2366,
   "name": "r_093E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2367,
   "name": "rescue_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2368,
   "name": "rescue_active",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2369,
   "name": "hut_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2370,
   "name": "hut_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2371,
   "name": "enemies_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2375,
   "name": "b_0947",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2385,
   "name": "b_0951",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2394,
   "name": "last_stick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2395,
   "name": "stick_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2396,
   "name": "mission_briefing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2440,
   "name": "b_0988",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2464,
   "name": "a_09A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2467,
   "name": "stick_changed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2473,
   "name": "a_09A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2489,
   "name": "r_09B9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2490,
   "name": "b_09BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2508,
   "name": "map_restore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2522,
   "name": "b_09DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2524,
   "name": "a_09DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2527,
   "name": "a_09DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2542,
   "name": "b_09EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2552,
   "name": "key_pause_toggle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2577,
   "name": "r_0A11",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2578,
   "name": "b_0A12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2584,
   "name": "pause_key_held",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2585,
   "name": "paused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2586,
   "name": "item_pickup_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2632,
   "name": "b_0A48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2675,
   "name": "b_0A73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2698,
   "name": "r_0A8A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2699,
   "name": "object_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2701,
   "name": "b_0A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2738,
   "name": "item3_taken",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2815,
   "name": "pows_items_taken",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2816,
   "name": "hut_unlocked",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2817,
   "name": "item_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2819,
   "name": "j_0B03",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2824,
   "name": "b_0B08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2827,
   "name": "b_0B0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2956,
   "name": "b_0B8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2963,
   "name": "b_0B93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2972,
   "name": "j_0B9C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2975,
   "name": "j_0B9F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2976,
   "name": "a_0BA0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2985,
   "name": "a_0BA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2994,
   "name": "r_0BB2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2995,
   "name": "b_0BB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2998,
   "name": "item_on_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2999,
   "name": "item_column",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3002,
   "name": "item_column_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3003,
   "name": "item_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3006,
   "name": "item_row_lo_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3007,
   "name": "item_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3010,
   "name": "item_row_hi_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3011,
   "name": "item_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3015,
   "name": "item_kind_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3019,
   "name": "item_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3023,
   "name": "enemy_hit_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3036,
   "name": "b_0BDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3041,
   "name": "b_0BE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3045,
   "name": "enemy_check_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3046,
   "name": "enemy_touch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3102,
   "name": "r_0C1E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3103,
   "name": "bullet_hit_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3114,
   "name": "b_0C2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3119,
   "name": "b_0C2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3123,
   "name": "bullet_touch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3184,
   "name": "r_0C70",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3185,
   "name": "bullet_check_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3186,
   "name": "energy_bar_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3188,
   "name": "b_0C74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3209,
   "name": "energy_tick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3225,
   "name": "b_0C99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3239,
   "name": "b_0CA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3249,
   "name": "b_0CB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3266,
   "name": "r_0CC2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3267,
   "name": "energy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3268,
   "name": "energy_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3276,
   "name": "music_toggle_key",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3313,
   "name": "r_0CF1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3314,
   "name": "b_0CF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3320,
   "name": "music_key_held",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3321,
   "name": "music_voices",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3322,
   "name": "play_effect",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3340,
   "name": "b_0D0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3345,
   "name": "effects_off",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3346,
   "name": "effect_number",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3347,
   "name": "scroll_redraw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3353,
   "name": "b_0D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3364,
   "name": "b_0D24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3370,
   "name": "b_0D2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3376,
   "name": "b_0D30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3379,
   "name": "enemy_rise",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3404,
   "name": "b_0D4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3410,
   "name": "b_0D52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3422,
   "name": "rise_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3424,
   "name": "rise_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3439,
   "name": "hole_scan",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3445,
   "name": "b_0D75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3488,
   "name": "b_0DA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3503,
   "name": "b_0DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3511,
   "name": "hole_spawn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3523,
   "name": "b_0DC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3575,
   "name": "b_0DF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3582,
   "name": "j_0DFE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3631,
   "name": "hole_scan_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3632,
   "name": "hole_scan_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3633,
   "name": "marker_scan",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3639,
   "name": "b_0E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3645,
   "name": "b_0E3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3647,
   "name": "b_0E3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3662,
   "name": "b_0E4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3721,
   "name": "marker_scan_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3722,
   "name": "sprite_bit_cycle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3760,
   "name": "sprite_bit_src",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3761,
   "name": "sprite_bit_dst",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3762,
   "name": "marker_place_col",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3770,
   "name": "b_0EBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3788,
   "name": "b_0ECC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3798,
   "name": "j_0ED6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3822,
   "name": "marker_place_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3830,
   "name": "b_0EF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3870,
   "name": "j_0F1E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3904,
   "name": "b_0F40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3906,
   "name": "enemies_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3912,
   "name": "b_0F48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3914,
   "name": "b_0F4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3925,
   "name": "b_0F55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3928,
   "name": "j_0F58",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3943,
   "name": "r_0F67",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3944,
   "name": "enemy_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3954,
   "name": "b_0F72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3970,
   "name": "b_0F82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3984,
   "name": "b_0F90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3987,
   "name": "b_0F93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4000,
   "name": "a_0FA0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4015,
   "name": "b_0FAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4021,
   "name": "b_0FB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4040,
   "name": "b_0FC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4071,
   "name": "b_0FE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4074,
   "name": "obj4_step_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4085,
   "name": "obj4_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4086,
   "name": "obj4_trigger",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4087,
   "name": "enemy_walk",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4103,
   "name": "b_1007",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4106,
   "name": "enemy_steer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4139,
   "name": "r_102B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4140,
   "name": "b_102C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4153,
   "name": "enemy_new_direction",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4166,
   "name": "enemy_blocked",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4170,
   "name": "obj4_blocked",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4171,
   "name": "enemy_probe_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4182,
   "name": "briefing_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4202,
   "name": "message_frame_script",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4205,
   "name": "message_text_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4208,
   "name": "enemy_animate",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4214,
   "name": "j_1076",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4223,
   "name": "b_107F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4240,
   "name": "b_1090",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4248,
   "name": "j_1098",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4267,
   "name": "b_10AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4273,
   "name": "enemy_anim_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4284,
   "name": "enemy_anim_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4309,
   "name": "enemy_anim_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4314,
   "name": "enemy_anim_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4319,
   "name": "enemy_move",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4332,
   "name": "b_10EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4335,
   "name": "j_10EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4351,
   "name": "b_10FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4354,
   "name": "j_1102",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4379,
   "name": "b_111B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4382,
   "name": "b_111E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4404,
   "name": "j_1134",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4413,
   "name": "enemy_dx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4414,
   "name": "enemy_dy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4415,
   "name": "enemy_type_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4428,
   "name": "enemy_type_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4441,
   "name": "music_tick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4446,
   "name": "enemy_bounds",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4459,
   "name": "j_116B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4474,
   "name": "j_117A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4491,
   "name": "enemy_spawn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4496,
   "name": "b_1190",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4507,
   "name": "spawn_budget",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4508,
   "name": "b_119C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4511,
   "name": "b_119F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4512,
   "name": "a_11A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4577,
   "name": "enemy_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4581,
   "name": "enemy_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4585,
   "name": "obj4_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4586,
   "name": "enemy_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4590,
   "name": "obj4_type",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4591,
   "name": "spawn_x_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4598,
   "name": "spawn_x_range",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4605,
   "name": "spawn_y_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4612,
   "name": "spawn_y_range",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4619,
   "name": "spawn_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4628,
   "name": "bullets_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4630,
   "name": "b_1216",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4654,
   "name": "b_122E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4671,
   "name": "r_123F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4672,
   "name": "bullet_x_div",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4673,
   "name": "tile_damage",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4723,
   "name": "tile_damage_patch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4737,
   "name": "rambo_animate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4757,
   "name": "r_1295",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4758,
   "name": "b_1296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4769,
   "name": "b_12A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4774,
   "name": "j_12A6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4793,
   "name": "j_12B9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4809,
   "name": "rambo_anim_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4810,
   "name": "rambo_last_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4811,
   "name": "scroll_mask_keep",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4812,
   "name": "rambo_anim_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4813,
   "name": "rambo_anim_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4824,
   "name": "rambo_anim_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4844,
   "name": "map_edge_limits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4866,
   "name": "j_1302",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4880,
   "name": "r_1310",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4881,
   "name": "b_1311",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4888,
   "name": "b_1318",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4897,
   "name": "b_1321",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4906,
   "name": "b_132A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4917,
   "name": "b_1335",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4928,
   "name": "tile_destroy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4953,
   "name": "b_1359",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4956,
   "name": "j_135C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5040,
   "name": "b_13B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5051,
   "name": "b_13BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5181,
   "name": "b_143D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5218,
   "name": "b_1462",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5226,
   "name": "j_146A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5253,
   "name": "b_1485",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5256,
   "name": "tile_dest",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5257,
   "name": "a_1489",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5281,
   "name": "b_14A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5295,
   "name": "b_14AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5312,
   "name": "b_14C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5315,
   "name": "r_14C3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5316,
   "name": "tile_col_in",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5317,
   "name": "tile_row_in",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5318,
   "name": "tile_copy_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5319,
   "name": "tile_rows_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5320,
   "name": "tile_screen_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5321,
   "name": "tile_first_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5322,
   "name": "grenade_landing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5328,
   "name": "b_14D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5345,
   "name": "b_14E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5371,
   "name": "b_14FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5374,
   "name": "j_14FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5379,
   "name": "b_1503",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5383,
   "name": "grenade_check_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5384,
   "name": "shots_vs_enemies",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5405,
   "name": "b_151D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5410,
   "name": "b_1522",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5416,
   "name": "shot_check_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5417,
   "name": "shot_box_w",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5425,
   "name": "shot_box_h",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5433,
   "name": "shot_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5438,
   "name": "j_153E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5533,
   "name": "b_159D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5536,
   "name": "j_15A0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5572,
   "name": "b_15C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5576,
   "name": "b_15C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5579,
   "name": "rambo_ground_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5592,
   "name": "b_15D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5611,
   "name": "b_15EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5620,
   "name": "j_15F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5624,
   "name": "char_under_rambo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5625,
   "name": "foot_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5629,
   "name": "foot_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5633,
   "name": "screen_cell_of_object",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5660,
   "name": "b_161C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5682,
   "name": "b_1632",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5709,
   "name": "screen_cell_of_shot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5732,
   "name": "b_1664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5754,
   "name": "b_167A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5781,
   "name": "game_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5788,
   "name": "b_169C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5826,
   "name": "b_16C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6019,
   "name": "b_1783",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6034,
   "name": "b_1792",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6048,
   "name": "a_17A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6085,
   "name": "screen_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6091,
   "name": "screen_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6097,
   "name": "shots_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6099,
   "name": "b_17D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6107,
   "name": "b_17DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6111,
   "name": "shot_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6118,
   "name": "b_17E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6127,
   "name": "shot_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6139,
   "name": "b_17FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6146,
   "name": "b_1802",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6155,
   "name": "b_180B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6169,
   "name": "b_1819",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6193,
   "name": "b_1831",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6202,
   "name": "b_183A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6205,
   "name": "shot_arc",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6228,
   "name": "b_1854",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6238,
   "name": "j_185E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6282,
   "name": "b_188A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6290,
   "name": "b_1892",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6300,
   "name": "shot_explode",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6336,
   "name": "b_18C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6367,
   "name": "shot_sounds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6377,
   "name": "hit_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6378,
   "name": "hit_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6379,
   "name": "hit_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6380,
   "name": "explosion_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6407,
   "name": "arc_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6410,
   "name": "arc_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6413,
   "name": "arc_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6416,
   "name": "arc_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6419,
   "name": "random_x_save",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6420,
   "name": "shot_frame_39",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6425,
   "name": "bullet_active",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6427,
   "name": "bullet_active_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6429,
   "name": "shot_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6432,
   "name": "explosion_animate",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6441,
   "name": "b_1929",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6455,
   "name": "explosion_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6458,
   "name": "b_193A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6461,
   "name": "panel_weapons",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6483,
   "name": "b_1953",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6495,
   "name": "b_195F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6517,
   "name": "panel_icon_pairs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6518,
   "name": "f_1976",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 6525,
   "name": "panel_colours_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6527,
   "name": "b_197F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6537,
   "name": "panel_flash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6560,
   "name": "b_19A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6563,
   "name": "j_19A3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6575,
   "name": "b_19AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6582,
   "name": "b_19B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6589,
   "name": "weapon_select_key",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6607,
   "name": "b_19CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6610,
   "name": "b_19D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6616,
   "name": "b_19D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6629,
   "name": "b_19E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6635,
   "name": "weapon_key_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6636,
   "name": "tile_point_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6637,
   "name": "weapons_owned",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6638,
   "name": "weapon_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6639,
   "name": "sprite_bit_values",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6646,
   "name": "tile_point_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6647,
   "name": "fire_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6660,
   "name": "b_1A04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6666,
   "name": "b_1A0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6671,
   "name": "b_1A0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6680,
   "name": "b_1A18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6695,
   "name": "b_1A27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6738,
   "name": "b_1A52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6748,
   "name": "b_1A5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6758,
   "name": "b_1A66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6780,
   "name": "b_1A7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6783,
   "name": "j_1A7F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6810,
   "name": "weapon_sound",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6816,
   "name": "weapon_shot_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6822,
   "name": "weapon_shot_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6828,
   "name": "shot_frame_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6839,
   "name": "shot_frame_dir_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6850,
   "name": "shot_frame_dir_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6861,
   "name": "shot_dx_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6872,
   "name": "shot_dy_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6883,
   "name": "arc_dx_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6894,
   "name": "arc_dy_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6905,
   "name": "shot_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6908,
   "name": "shot_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6911,
   "name": "fire_held",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6912,
   "name": "flash_counter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6932,
   "name": "r_1B14",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6933,
   "name": "flash_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6934,
   "name": "flash_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6935,
   "name": "flash_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6943,
   "name": "rambo_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6957,
   "name": "r_1B2D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6958,
   "name": "rambo_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6972,
   "name": "r_1B3C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6973,
   "name": "rambo_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6987,
   "name": "r_1B4B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6988,
   "name": "rambo_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7002,
   "name": "r_1B5A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7003,
   "name": "scroll_or_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7015,
   "name": "b_1B67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7030,
   "name": "b_1B76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7034,
   "name": "rambo_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7059,
   "name": "b_1B93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7070,
   "name": "b_1B9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7081,
   "name": "b_1BA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7092,
   "name": "b_1BB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7117,
   "name": "stick_bits_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7118,
   "name": "at_screen_edge",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7119,
   "name": "scroll_mask_jungle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7151,
   "name": "b_1BEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7159,
   "name": "b_1BF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7172,
   "name": "b_1C04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7185,
   "name": "b_1C11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7189,
   "name": "r_1C15",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7190,
   "name": "scroll_mask_heli",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7231,
   "name": "b_1C3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7239,
   "name": "b_1C47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7252,
   "name": "b_1C54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7265,
   "name": "b_1C61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7270,
   "name": "scroll_x_parity",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7271,
   "name": "scroll_jungle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7287,
   "name": "b_1C77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7295,
   "name": "b_1C7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7303,
   "name": "b_1C87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7311,
   "name": "b_1C8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7320,
   "name": "b_1C98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7324,
   "name": "scroll_heli",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7340,
   "name": "b_1CAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7348,
   "name": "b_1CB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7356,
   "name": "b_1CBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7364,
   "name": "b_1CC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7376,
   "name": "read_stick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7396,
   "name": "input_locked",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7397,
   "name": "b_1CE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7405,
   "name": "b_1CED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7426,
   "name": "b_1D02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7430,
   "name": "stick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7431,
   "name": "scroll_mask",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7432,
   "name": "stick_unused_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7433,
   "name": "stick_unused_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7434,
   "name": "stick_raw",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7435,
   "name": "stick_last_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7436,
   "name": "coarse_scroll",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7450,
   "name": "r_1D1A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7451,
   "name": "coarse_scroll_dispatch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7457,
   "name": "b_1D21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7463,
   "name": "b_1D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7469,
   "name": "b_1D2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7472,
   "name": "coarse_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7474,
   "name": "init_value_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7475,
   "name": "objects_snapshot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7477,
   "name": "b_1D35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7494,
   "name": "b_1D46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7511,
   "name": "b_1D57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7526,
   "name": "frame_wait_irq",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7535,
   "name": "view_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7545,
   "name": "set_d016",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7556,
   "name": "b_1D84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7569,
   "name": "view_left2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7584,
   "name": "b_1DA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7597,
   "name": "shift_screen_right",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7601,
   "name": "b_1DB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7690,
   "name": "b_1E0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7760,
   "name": "view_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7771,
   "name": "b_1E5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7784,
   "name": "view_right2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7797,
   "name": "b_1E75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7810,
   "name": "shift_screen_left",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7814,
   "name": "b_1E86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7905,
   "name": "b_1EE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7977,
   "name": "view_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7987,
   "name": "set_d011",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7998,
   "name": "b_1F3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8011,
   "name": "view_up2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8026,
   "name": "b_1F5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8039,
   "name": "shift_screen_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8047,
   "name": "b_1F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8136,
   "name": "b_1FC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8206,
   "name": "row_buffer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8246,
   "name": "view_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8257,
   "name": "b_2041",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8270,
   "name": "view_down2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8285,
   "name": "b_205D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8298,
   "name": "shift_screen_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8313,
   "name": "b_2079",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8396,
   "name": "b_20CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8466,
   "name": "frame_wait_irq2",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8475,
   "name": "irq_install",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8523,
   "name": "irq_game",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8534,
   "name": "a_2156",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8535,
   "name": "a_2157",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8548,
   "name": "b_2164",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8562,
   "name": "j_2172",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8568,
   "name": "irq_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8569,
   "name": "f_2179",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8572,
   "name": "irq_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8628,
   "name": "b_21B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8683,
   "name": "b_21EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8686,
   "name": "j_21EE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8708,
   "name": "b_2204",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8711,
   "name": "j_2207",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8756,
   "name": "b_2234",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8759,
   "name": "j_2237",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8770,
   "name": "b_2242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8773,
   "name": "j_2245",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8786,
   "name": "b_2252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8792,
   "name": "panel_sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8798,
   "name": "panel_sprite_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8801,
   "name": "panel_icon_ptr_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8802,
   "name": "panel_icon_ptr_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8803,
   "name": "panel_icon_ptr_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8804,
   "name": "panel_flash_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8805,
   "name": "panel_icon_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8809,
   "name": "panel_icon_colour_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8810,
   "name": "panel_icon_colour_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8811,
   "name": "panel_icon_colour_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8812,
   "name": "panel_icon_colour_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8813,
   "name": "panel_icon_colour_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8821,
   "name": "irq_top",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8840,
   "name": "b_2288",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8843,
   "name": "j_228B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8873,
   "name": "b_22A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8898,
   "name": "heli_mode",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8900,
   "name": "frame_flag2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8901,
   "name": "irq_multiplex",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8908,
   "name": "j_22CC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8956,
   "name": "b_22FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8982,
   "name": "b_2316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8993,
   "name": "j_2321",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9012,
   "name": "frame_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9013,
   "name": "irq_multiplex_wait",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 9025,
   "name": "b_2341",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9037,
   "name": "sprite_x_msb_clear",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9045,
   "name": "sprite_x_msb_set",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9053,
   "name": "temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9054,
   "name": "objects_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9056,
   "name": "b_2360",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9086,
   "name": "random_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9117,
   "name": "random_below",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9120,
   "name": "a_23A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9133,
   "name": "b_23AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9142,
   "name": "b_23B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9150,
   "name": "random_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9151,
   "name": "random_state_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9152,
   "name": "random_state_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9153,
   "name": "random_state_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9154,
   "name": "objects_sort",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9158,
   "name": "j_23C6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9173,
   "name": "b_23D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9177,
   "name": "b_23D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9223,
   "name": "b_2407",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9232,
   "name": "r_2410",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9233,
   "name": "unused_zeros_2411",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9247,
   "name": "score_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9253,
   "name": "b_2425",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9255,
   "name": "b_2427",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9272,
   "name": "b_2438",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9276,
   "name": "score_digit_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9290,
   "name": "b_244A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9296,
   "name": "j_2450",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9314,
   "name": "score_add",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9316,
   "name": "b_2464",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9335,
   "name": "b_2477",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9347,
   "name": "score_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9348,
   "name": "f_2484",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 9353,
   "name": "score_shown",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9358,
   "name": "score_carry",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9359,
   "name": "score_pending",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9361,
   "name": "score_pending_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9362,
   "name": "score_pending_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9366,
   "name": "box_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9431,
   "name": "b_24D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9433,
   "name": "box_a_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9434,
   "name": "box_a_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9435,
   "name": "box_b_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9436,
   "name": "box_b_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9437,
   "name": "box_a_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9438,
   "name": "box_b_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9439,
   "name": "box_w",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9440,
   "name": "box_h",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9441,
   "name": "enemy_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9444,
   "name": "b_24E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9455,
   "name": "b_24EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9458,
   "name": "j_24F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9462,
   "name": "bullet_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9463,
   "name": "bullet_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9469,
   "name": "bullet_free",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9481,
   "name": "b_2509",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9488,
   "name": "b_2510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9497,
   "name": "b_2519",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9539,
   "name": "b_2543",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9543,
   "name": "b_2547",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9553,
   "name": "b_2551",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9556,
   "name": "b_2554",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9587,
   "name": "b_2573",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9589,
   "name": "b_2575",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9601,
   "name": "b_2581",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9606,
   "name": "bullet_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9624,
   "name": "b_2598",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9655,
   "name": "b_25B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9711,
   "name": "b_25EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9730,
   "name": "b_2602",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9753,
   "name": "b_2619",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9761,
   "name": "bullet_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9765,
   "name": "bullet_minor",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9769,
   "name": "bullet_error",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9773,
   "name": "bullet_major",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9777,
   "name": "key_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9820,
   "name": "b_265C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9821,
   "name": "j_265D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9835,
   "name": "key_y_save",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9836,
   "name": "key_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9844,
   "name": "key_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9852,
   "name": "temp2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9853,
   "name": "temp3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9854,
   "name": "marker_column",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9857,
   "name": "draw_right_column",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9905,
   "name": "draw_left_column",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9949,
   "name": "j_26DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9976,
   "name": "j_26F8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10003,
   "name": "j_2713",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10021,
   "name": "b_2725",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10022,
   "name": "col_dest",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10023,
   "name": "a_2727",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10038,
   "name": "b_2736",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10048,
   "name": "b_2740",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10059,
   "name": "b_274B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10063,
   "name": "b_274F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10072,
   "name": "b_2758",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10089,
   "name": "draw_bottom_row",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10130,
   "name": "b_2792",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10142,
   "name": "draw_top_row",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10164,
   "name": "draw_map_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10204,
   "name": "j_27DC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10252,
   "name": "b_280C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10264,
   "name": "b_2818",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10269,
   "name": "a_281D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10270,
   "name": "a_281E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10274,
   "name": "a_2822",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10290,
   "name": "r_2832",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10291,
   "name": "unused_row_drawer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10656,
   "name": "a_29A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12192,
   "name": "a_2FA0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12288,
   "name": "heli_jump_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12291,
   "name": "heli_start_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12294,
   "name": "heli_steer_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12297,
   "name": "heli_main_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12351,
   "name": "heli_end_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12359,
   "name": "b_3047",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12366,
   "name": "gunship_fire_timer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12375,
   "name": "b_3057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12387,
   "name": "heli_fuel_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12388,
   "name": "heli_fuel_rate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12390,
   "name": "gunship_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12398,
   "name": "b_306E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12413,
   "name": "j_307D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12434,
   "name": "b_3092",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12444,
   "name": "b_309C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12466,
   "name": "gunship_frame_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12477,
   "name": "b_30BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12483,
   "name": "gunship_downed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12484,
   "name": "gunship_hit_test",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12492,
   "name": "b_30CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12498,
   "name": "b_30D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12569,
   "name": "r_3119",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12570,
   "name": "j_311A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12579,
   "name": "b_3123",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12583,
   "name": "gunship_hits_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12584,
   "name": "gunship_box_w",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12596,
   "name": "gunship_box_h",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12608,
   "name": "heli_fire_rocket",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12615,
   "name": "b_3147",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12623,
   "name": "b_314F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12629,
   "name": "b_3155",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12650,
   "name": "heli_explosion_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12673,
   "name": "heli_explosion_animate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12682,
   "name": "b_318A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12696,
   "name": "b_3198",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12699,
   "name": "heli_explosion_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12701,
   "name": "gunship_shot_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12709,
   "name": "b_31A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12759,
   "name": "b_31D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12806,
   "name": "j_3206",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12815,
   "name": "r_320F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12816,
   "name": "gunship_shoot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12822,
   "name": "b_3216",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12831,
   "name": "b_321F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12837,
   "name": "b_3225",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12875,
   "name": "r_324B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12876,
   "name": "gunship_shot_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12877,
   "name": "rocket_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12878,
   "name": "heli_shot_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12890,
   "name": "heli_shot_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12902,
   "name": "heli_shot_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12914,
   "name": "heli_shots_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12916,
   "name": "b_3274",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12929,
   "name": "b_3281",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12932,
   "name": "j_3284",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12936,
   "name": "heli_shot_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13000,
   "name": "j_32C8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13012,
   "name": "heli_shot_step_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13013,
   "name": "heli_shot_step_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13014,
   "name": "heli_shot_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13015,
   "name": "rocket_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13016,
   "name": "gunship_fire_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13017,
   "name": "gunship_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13022,
   "name": "gunship_parts_visible",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13029,
   "name": "b_32E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13038,
   "name": "b_32EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13060,
   "name": "j_3304",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13064,
   "name": "j_3308",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13077,
   "name": "gunship_visible",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13078,
   "name": "gunship_screen_pos",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13087,
   "name": "b_331F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13092,
   "name": "b_3324",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13111,
   "name": "b_3337",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13121,
   "name": "r_3341",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13122,
   "name": "b_3342",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13165,
   "name": "heli_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13166,
   "name": "heli_temp2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13171,
   "name": "gunship_steer_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13190,
   "name": "b_3386",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13198,
   "name": "b_338E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13201,
   "name": "gunship_compare_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13267,
   "name": "b_33D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13285,
   "name": "b_33E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13288,
   "name": "j_33E8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13307,
   "name": "j_33FB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13326,
   "name": "gunship_speed_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13327,
   "name": "j_340F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13352,
   "name": "b_3428",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13363,
   "name": "b_3433",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13372,
   "name": "b_343C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13380,
   "name": "j_3444",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13405,
   "name": "b_345D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13416,
   "name": "b_3468",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13425,
   "name": "b_3471",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13433,
   "name": "j_3479",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13439,
   "name": "gunship_row_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13440,
   "name": "gunship_row_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13441,
   "name": "gunship_accel_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13442,
   "name": "gunship_frac_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13443,
   "name": "gunship_dir_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13444,
   "name": "gunship_steer_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13463,
   "name": "b_3497",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13471,
   "name": "b_349F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13474,
   "name": "gunship_compare_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13525,
   "name": "b_34D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13531,
   "name": "b_34DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13535,
   "name": "gunship_x_inc",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13553,
   "name": "gunship_x_dec",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13571,
   "name": "j_3503",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13586,
   "name": "b_3512",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13597,
   "name": "b_351D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13606,
   "name": "b_3526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13614,
   "name": "j_352E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13639,
   "name": "r_3547",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13640,
   "name": "b_3548",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13649,
   "name": "b_3551",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13657,
   "name": "j_3559",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13663,
   "name": "gunship_accel_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13664,
   "name": "gunship_frac_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13665,
   "name": "gunship_dir_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13668,
   "name": "gunship_x_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13669,
   "name": "gunship_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13670,
   "name": "gunship_y_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13671,
   "name": "gunship_y_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13672,
   "name": "gunship_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13673,
   "name": "heli_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13674,
   "name": "heli_row_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13675,
   "name": "heli_row_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13678,
   "name": "heli_landing_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13694,
   "name": "b_357E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13750,
   "name": "b_35B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13762,
   "name": "r_35C2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13763,
   "name": "gunship_place_sprites",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13868,
   "name": "gunship_sounds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13870,
   "name": "gunship_screen_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13871,
   "name": "gunship_screen_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13872,
   "name": "gunship_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13884,
   "name": "gunship_part2_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13896,
   "name": "gunship_part2_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13908,
   "name": "gunship_part3_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13920,
   "name": "gunship_part3_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13932,
   "name": "gunship_part4_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13944,
   "name": "gunship_part4_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13956,
   "name": "gunship_part1_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13968,
   "name": "gunship_part1_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13980,
   "name": "heli_anim_timers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13982,
   "name": "b_369E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13993,
   "name": "b_36A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14009,
   "name": "b_36B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14012,
   "name": "j_36BC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14016,
   "name": "rotor_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14018,
   "name": "rotor_rate",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14020,
   "name": "rotor_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14021,
   "name": "gunship_rotor_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14022,
   "name": "heli_steer",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14030,
   "name": "steer_heading",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14059,
   "name": "b_36EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14082,
   "name": "b_3702",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14095,
   "name": "b_370F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14121,
   "name": "b_3729",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14135,
   "name": "j_3737",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14143,
   "name": "heli_steer_tail",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14152,
   "name": "heading_axis_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14161,
   "name": "heading_frame_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14170,
   "name": "heli_heading",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14172,
   "name": "heading_target",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14174,
   "name": "heading_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14180,
   "name": "heli_read_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14192,
   "name": "heli_stick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14193,
   "name": "heli_stick_dirs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14194,
   "name": "gunship_stick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14195,
   "name": "heli_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14196,
   "name": "gunship_frame_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14197,
   "name": "heli_objects_place",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14227,
   "name": "heli_part2_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14239,
   "name": "heli_part2_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14251,
   "name": "heli_part2_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14263,
   "name": "heli_stage_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14335,
   "name": "b_37FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14343,
   "name": "b_3807",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14373,
   "name": "gunship_pursues",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14374,
   "name": "rotor_toggle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14375,
   "name": "heli_sprites_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14397,
   "name": "b_383D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14412,
   "name": "j_384C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14439,
   "name": "b_3867",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14450,
   "name": "b_3872",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14452,
   "name": "b_3874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14472,
   "name": "rotor_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14473,
   "name": "rotor_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14474,
   "name": "rotor_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14478,
   "name": "rotor_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14482,
   "name": "rotor_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14487,
   "name": "heli_box_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14552,
   "name": "b_38D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14554,
   "name": "heli_box_ax",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14555,
   "name": "heli_box_ax_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14556,
   "name": "heli_box_bx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14557,
   "name": "heli_box_bx_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14558,
   "name": "heli_box_ay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14559,
   "name": "heli_box_by",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14560,
   "name": "heli_box_w",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14561,
   "name": "heli_box_h",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14720,
   "name": "digit_font",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14848,
   "name": "unused_glyphs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15872,
   "name": "unused_glyphs_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16297,
   "name": "a_3FA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "f_4000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16385,
   "name": "f_4001",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16424,
   "name": "f_4028",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16425,
   "name": "f_4029",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16464,
   "name": "f_4050",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16465,
   "name": "f_4051",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16504,
   "name": "f_4078",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16505,
   "name": "f_4079",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16544,
   "name": "f_40A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16545,
   "name": "f_40A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16584,
   "name": "f_40C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16585,
   "name": "f_40C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16624,
   "name": "f_40F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16625,
   "name": "f_40F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16664,
   "name": "f_4118",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16665,
   "name": "f_4119",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16704,
   "name": "f_4140",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16705,
   "name": "f_4141",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16744,
   "name": "f_4168",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16745,
   "name": "f_4169",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16784,
   "name": "f_4190",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16785,
   "name": "f_4191",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16800,
   "name": "a_41A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16824,
   "name": "f_41B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16825,
   "name": "f_41B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16864,
   "name": "f_41E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16865,
   "name": "f_41E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16904,
   "name": "f_4208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16905,
   "name": "f_4209",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16944,
   "name": "f_4230",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16945,
   "name": "f_4231",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16984,
   "name": "f_4258",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16985,
   "name": "f_4259",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17024,
   "name": "f_4280",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17025,
   "name": "f_4281",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17064,
   "name": "f_42A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17065,
   "name": "f_42A9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17104,
   "name": "f_42D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17105,
   "name": "f_42D1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17144,
   "name": "f_42F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17145,
   "name": "f_42F9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17184,
   "name": "f_4320",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17185,
   "name": "f_4321",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17224,
   "name": "f_4348",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17225,
   "name": "f_4349",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17264,
   "name": "f_4370",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17265,
   "name": "f_4371",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17304,
   "name": "f_4398",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17305,
   "name": "f_4399",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17344,
   "name": "f_43C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17345,
   "name": "f_43C1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17400,
   "name": "a_43F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17401,
   "name": "a_43F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17402,
   "name": "f_43FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17408,
   "name": "panel_sprites",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17450,
   "name": "score_sprite_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17472,
   "name": "panel_sprite_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17536,
   "name": "sprites_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18336,
   "name": "a_47A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18496,
   "name": "energy_bar_full",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18517,
   "name": "energy_bar_full_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18560,
   "name": "sprites_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19584,
   "name": "sprites_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20608,
   "name": "sprites_42",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21632,
   "name": "sprites_52",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22656,
   "name": "sprites_62",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23680,
   "name": "sprites_72",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24704,
   "name": "sprites_82",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25728,
   "name": "sprites_92",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26752,
   "name": "sprites_A2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27776,
   "name": "sprites_B2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28800,
   "name": "sprites_C2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29824,
   "name": "sprites_D2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30720,
   "name": "frontend_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "frontend_font_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32472,
   "name": "char_DB_glyph",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32760,
   "name": "char_FF_glyph",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "arc_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32796,
   "name": "end_marker_8000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32802,
   "name": "arc_heights_long",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33024,
   "name": "sound_command",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33038,
   "name": "a_810E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33039,
   "name": "a_810F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33040,
   "name": "v1_slide_reset",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33052,
   "name": "v1_slide_counts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33076,
   "name": "f_8134",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33077,
   "name": "v1_instr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33090,
   "name": "v1_instr_effect",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33091,
   "name": "v1_instr_pulse",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33094,
   "name": "v1_instr_pulse_on",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33099,
   "name": "f_814B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33100,
   "name": "f_814C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33101,
   "name": "v1_instr_ctrl",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33104,
   "name": "a_8150",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33105,
   "name": "v1_lengths",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33122,
   "name": "v1_stack_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33130,
   "name": "v1_stack_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33138,
   "name": "v1_stack_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33139,
   "name": "f_8173",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33146,
   "name": "v2_instr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33159,
   "name": "a_8187",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33160,
   "name": "v2_instr_pulse",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33163,
   "name": "v2_instr_pulse_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33168,
   "name": "v2_instr_regs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33170,
   "name": "v2_instr_ctrl",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33173,
   "name": "a_8195",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33174,
   "name": "v2_lengths",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33184,
   "name": "voice_state_part3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33191,
   "name": "v2_stack_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33199,
   "name": "v2_stack_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33207,
   "name": "v2_stack_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33208,
   "name": "f_81B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33215,
   "name": "v3_instr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33228,
   "name": "a_81CC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33229,
   "name": "v3_instr_pulse",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33232,
   "name": "v3_instr_pulse_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33237,
   "name": "v3_instr_regs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33239,
   "name": "v3_instr_ctrl",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33242,
   "name": "a_81DA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33243,
   "name": "v3_lengths",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33260,
   "name": "v3_stack_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33268,
   "name": "v3_stack_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33276,
   "name": "v3_stack_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33277,
   "name": "f_81FD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33284,
   "name": "transposes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33285,
   "name": "a_8205",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33286,
   "name": "a_8206",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33288,
   "name": "filter_regs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33289,
   "name": "a_8209",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33290,
   "name": "a_820A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33291,
   "name": "a_820B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33292,
   "name": "a_820C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33293,
   "name": "a_820D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33294,
   "name": "volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33301,
   "name": "v1_work",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33302,
   "name": "f_8216",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33303,
   "name": "f_8217",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33304,
   "name": "f_8218",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33305,
   "name": "f_8219",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33306,
   "name": "f_821A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33307,
   "name": "a_821B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33308,
   "name": "a_821C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33309,
   "name": "a_821D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33310,
   "name": "a_821E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33311,
   "name": "a_821F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33312,
   "name": "a_8220",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33313,
   "name": "a_8221",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33314,
   "name": "a_8222",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33315,
   "name": "a_8223",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33316,
   "name": "a_8224",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33317,
   "name": "a_8225",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33318,
   "name": "a_8226",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33319,
   "name": "a_8227",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33320,
   "name": "a_8228",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33321,
   "name": "a_8229",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33322,
   "name": "a_822A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33323,
   "name": "a_822B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33324,
   "name": "a_822C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33325,
   "name": "a_822D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33326,
   "name": "a_822E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33327,
   "name": "a_822F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33328,
   "name": "a_8230",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33329,
   "name": "a_8231",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33330,
   "name": "a_8232",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33331,
   "name": "a_8233",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33332,
   "name": "a_8234",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33333,
   "name": "a_8235",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33334,
   "name": "a_8236",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33335,
   "name": "a_8237",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33336,
   "name": "a_8238",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33337,
   "name": "a_8239",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33338,
   "name": "a_823A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33339,
   "name": "a_823B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33340,
   "name": "v2_work",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33341,
   "name": "a_823D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33342,
   "name": "a_823E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33343,
   "name": "a_823F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33344,
   "name": "a_8240",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33345,
   "name": "a_8241",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33346,
   "name": "a_8242",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33347,
   "name": "a_8243",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33348,
   "name": "a_8244",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33349,
   "name": "a_8245",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33350,
   "name": "a_8246",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33351,
   "name": "a_8247",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33352,
   "name": "a_8248",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33353,
   "name": "a_8249",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33354,
   "name": "a_824A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33355,
   "name": "a_824B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33356,
   "name": "a_824C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33357,
   "name": "a_824D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33358,
   "name": "a_824E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33359,
   "name": "a_824F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33360,
   "name": "a_8250",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33361,
   "name": "a_8251",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33362,
   "name": "a_8252",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33363,
   "name": "a_8253",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33364,
   "name": "a_8254",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33365,
   "name": "a_8255",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33366,
   "name": "a_8256",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33367,
   "name": "a_8257",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33368,
   "name": "a_8258",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33369,
   "name": "a_8259",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33370,
   "name": "a_825A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33371,
   "name": "a_825B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33372,
   "name": "a_825C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33373,
   "name": "a_825D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33374,
   "name": "a_825E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33375,
   "name": "a_825F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33376,
   "name": "a_8260",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33377,
   "name": "a_8261",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33378,
   "name": "a_8262",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33379,
   "name": "v3_work",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33380,
   "name": "a_8264",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33381,
   "name": "a_8265",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33382,
   "name": "a_8266",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33383,
   "name": "a_8267",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33384,
   "name": "a_8268",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33385,
   "name": "a_8269",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33386,
   "name": "a_826A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33387,
   "name": "a_826B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33388,
   "name": "a_826C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33389,
   "name": "a_826D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33390,
   "name": "a_826E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33391,
   "name": "a_826F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33392,
   "name": "a_8270",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33393,
   "name": "a_8271",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33394,
   "name": "a_8272",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33395,
   "name": "a_8273",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33396,
   "name": "a_8274",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33397,
   "name": "a_8275",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33398,
   "name": "a_8276",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33399,
   "name": "a_8277",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33400,
   "name": "a_8278",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33401,
   "name": "a_8279",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33402,
   "name": "a_827A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33403,
   "name": "a_827B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33404,
   "name": "a_827C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33405,
   "name": "a_827D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33406,
   "name": "a_827E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33407,
   "name": "a_827F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33408,
   "name": "a_8280",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33409,
   "name": "a_8281",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33410,
   "name": "a_8282",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33411,
   "name": "a_8283",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33412,
   "name": "a_8284",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33413,
   "name": "a_8285",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33414,
   "name": "a_8286",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33415,
   "name": "a_8287",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33416,
   "name": "a_8288",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33417,
   "name": "a_8289",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33418,
   "name": "voice_mask",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33419,
   "name": "tune_instr_reload",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33472,
   "name": "tune_reload_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33526,
   "name": "tune_reload_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33579,
   "name": "tune_reload_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33630,
   "name": "tune_ptr_reload",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33646,
   "name": "sound_command_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33677,
   "name": "sound_command_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33708,
   "name": "cmd_effect_rand",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33724,
   "name": "cmd_effect_chain",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33750,
   "name": "b_83D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33759,
   "name": "cmd_effect_next",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33772,
   "name": "cmd_loop_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33784,
   "name": "cmd_loop_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33794,
   "name": "b_8402",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33805,
   "name": "cmd_loop_a_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33816,
   "name": "cmd_loop_b_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33827,
   "name": "loop_tick",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33858,
   "name": "b_8442",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33882,
   "name": "r_845A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33883,
   "name": "loop_a_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33884,
   "name": "loop_b_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33885,
   "name": "b_845D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33894,
   "name": "cmd_status",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33908,
   "name": "cmd_silence",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33928,
   "name": "b_8488",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33947,
   "name": "cmd_tune_chain",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33976,
   "name": "cmd_tune_chain2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33986,
   "name": "b_84C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33997,
   "name": "b_84CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34013,
   "name": "tune_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34019,
   "name": "b_84E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34030,
   "name": "b_84EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34061,
   "name": "cmd_voice_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34065,
   "name": "volume_sweep",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34093,
   "name": "b_852D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34100,
   "name": "b_8534",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34103,
   "name": "b_8537",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34131,
   "name": "cmd_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34154,
   "name": "b_856A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34159,
   "name": "b_856F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34161,
   "name": "b_8571",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34190,
   "name": "b_858E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34199,
   "name": "loop_hook",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34205,
   "name": "b_859D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34206,
   "name": "loop_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34207,
   "name": "a_859F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34208,
   "name": "v1_pulse_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34220,
   "name": "v1_pulse_counts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34233,
   "name": "v2_pulse_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34245,
   "name": "v2_pulse_counts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34258,
   "name": "v3_pulse_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34270,
   "name": "v3_pulse_counts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34283,
   "name": "effect_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34284,
   "name": "effect_step_len",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34285,
   "name": "effect_seq_step",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 34319,
   "name": "b_860F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34321,
   "name": "effect_seq_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34334,
   "name": "r_861E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34335,
   "name": "effect_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34359,
   "name": "b_8637",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34362,
   "name": "a_863A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34432,
   "name": "b_8680",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34448,
   "name": "b_8690",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34456,
   "name": "b_8698",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34472,
   "name": "b_86A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34477,
   "name": "v2_slide_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34489,
   "name": "v2_slide_counts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34513,
   "name": "r_86D1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34514,
   "name": "b_86D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34530,
   "name": "b_86E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34535,
   "name": "v3_slide_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34547,
   "name": "v3_slide_counts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34571,
   "name": "r_870B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34572,
   "name": "v1_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34581,
   "name": "b_8715",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34584,
   "name": "j_8718",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34586,
   "name": "j_871A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34595,
   "name": "b_8723",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34630,
   "name": "a_8746",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34631,
   "name": "a_8747",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34632,
   "name": "b_8748",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34640,
   "name": "b_8750",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34651,
   "name": "b_875B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34658,
   "name": "b_8762",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34661,
   "name": "b_8765",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34669,
   "name": "b_876D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34683,
   "name": "b_877B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34723,
   "name": "b_87A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34735,
   "name": "b_87AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34745,
   "name": "b_87B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34768,
   "name": "b_87D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34779,
   "name": "b_87DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34791,
   "name": "b_87E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34803,
   "name": "j_87F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34817,
   "name": "b_8801",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34830,
   "name": "b_880E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34833,
   "name": "v1_cmd_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34841,
   "name": "b_8819",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34850,
   "name": "b_8822",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34857,
   "name": "v1_cmd_repeat",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34884,
   "name": "v1_cmd_repeat_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34896,
   "name": "b_8850",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34903,
   "name": "v1_cmd_instr5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34907,
   "name": "b_885B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34919,
   "name": "v1_cmd_instr14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34924,
   "name": "b_886C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34935,
   "name": "v1_cmd_instr_part",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34948,
   "name": "b_8884",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34962,
   "name": "v1_cmd_transpose_goto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34968,
   "name": "j_8898",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34970,
   "name": "v1_cmd_jump",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34977,
   "name": "v1_cmd_native",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34986,
   "name": "v1_cmd_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34988,
   "name": "b_88AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35008,
   "name": "v1_cmd_transpose_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35018,
   "name": "v1_cmd_transpose_x",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35025,
   "name": "v1_cmd_set_param",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35031,
   "name": "v1_cmd_set_work",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35037,
   "name": "r_88DD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35038,
   "name": "v1_effects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35072,
   "name": "b_8900",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35084,
   "name": "b_890C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35097,
   "name": "b_8919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35107,
   "name": "b_8923",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35110,
   "name": "b_8926",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35126,
   "name": "b_8936",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35154,
   "name": "b_8952",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35175,
   "name": "b_8967",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35190,
   "name": "b_8976",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35196,
   "name": "j_897C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35208,
   "name": "b_8988",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35244,
   "name": "b_89AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35251,
   "name": "r_89B3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35252,
   "name": "b_89B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35260,
   "name": "b_89BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35285,
   "name": "j_89D5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35286,
   "name": "b_89D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35306,
   "name": "b_89EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35326,
   "name": "b_89FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35346,
   "name": "b_8A12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35354,
   "name": "b_8A1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35363,
   "name": "j_8A23",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35364,
   "name": "b_8A24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35377,
   "name": "b_8A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35392,
   "name": "b_8A40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35398,
   "name": "v2_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35408,
   "name": "b_8A50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35411,
   "name": "j_8A53",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35413,
   "name": "j_8A55",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35422,
   "name": "b_8A5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35457,
   "name": "a_8A81",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35458,
   "name": "a_8A82",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35459,
   "name": "b_8A83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35467,
   "name": "b_8A8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35478,
   "name": "b_8A96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35486,
   "name": "b_8A9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35489,
   "name": "b_8AA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35497,
   "name": "b_8AA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35511,
   "name": "b_8AB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35551,
   "name": "b_8ADF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35563,
   "name": "b_8AEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35573,
   "name": "b_8AF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35596,
   "name": "b_8B0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35607,
   "name": "b_8B17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35619,
   "name": "b_8B23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35631,
   "name": "j_8B2F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35645,
   "name": "b_8B3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35658,
   "name": "b_8B4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35661,
   "name": "v2_cmd_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35669,
   "name": "b_8B55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35678,
   "name": "b_8B5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35685,
   "name": "v2_cmd_repeat",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35712,
   "name": "v2_cmd_repeat_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35724,
   "name": "b_8B8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35731,
   "name": "v2_cmd_instr5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35735,
   "name": "b_8B97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35747,
   "name": "v2_cmd_instr14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35752,
   "name": "b_8BA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35763,
   "name": "v2_cmd_instr_part",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35776,
   "name": "b_8BC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35790,
   "name": "v2_cmd_transpose_goto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35796,
   "name": "j_8BD4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35798,
   "name": "v2_cmd_jump",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35805,
   "name": "v2_cmd_native",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35814,
   "name": "v2_cmd_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35816,
   "name": "b_8BE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35836,
   "name": "v2_cmd_transpose_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35846,
   "name": "v2_cmd_transpose_x",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35853,
   "name": "v2_cmd_set_param",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35859,
   "name": "v2_cmd_set_work",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35865,
   "name": "r_8C19",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35866,
   "name": "v2_effects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35900,
   "name": "b_8C3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35912,
   "name": "b_8C48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35925,
   "name": "b_8C55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35935,
   "name": "b_8C5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35938,
   "name": "b_8C62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35954,
   "name": "b_8C72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35982,
   "name": "b_8C8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36003,
   "name": "b_8CA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36018,
   "name": "b_8CB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36024,
   "name": "j_8CB8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36036,
   "name": "b_8CC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36072,
   "name": "b_8CE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36079,
   "name": "r_8CEF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36080,
   "name": "b_8CF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36088,
   "name": "b_8CF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36113,
   "name": "j_8D11",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36114,
   "name": "b_8D12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36134,
   "name": "b_8D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36154,
   "name": "b_8D3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36174,
   "name": "b_8D4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36182,
   "name": "b_8D56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36191,
   "name": "j_8D5F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36192,
   "name": "b_8D60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36205,
   "name": "b_8D6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36220,
   "name": "b_8D7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36226,
   "name": "v3_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36236,
   "name": "b_8D8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36239,
   "name": "j_8D8F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36241,
   "name": "j_8D91",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36250,
   "name": "b_8D9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36285,
   "name": "a_8DBD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36286,
   "name": "a_8DBE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36287,
   "name": "b_8DBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36295,
   "name": "b_8DC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36306,
   "name": "b_8DD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36314,
   "name": "b_8DDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36317,
   "name": "b_8DDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36325,
   "name": "b_8DE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36334,
   "name": "b_8DEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36374,
   "name": "b_8E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36386,
   "name": "b_8E22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36396,
   "name": "b_8E2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36419,
   "name": "b_8E43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36430,
   "name": "b_8E4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36442,
   "name": "b_8E5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36454,
   "name": "j_8E66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36468,
   "name": "b_8E74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36481,
   "name": "b_8E81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36484,
   "name": "v3_cmd_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36492,
   "name": "b_8E8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36501,
   "name": "b_8E95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36508,
   "name": "v3_cmd_repeat",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36535,
   "name": "v3_cmd_repeat_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36547,
   "name": "b_8EC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36554,
   "name": "v3_cmd_instr5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36558,
   "name": "b_8ECE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36570,
   "name": "v3_cmd_instr14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36575,
   "name": "b_8EDF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36586,
   "name": "v3_cmd_instr_part",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36599,
   "name": "b_8EF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36613,
   "name": "v3_cmd_transpose_goto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36619,
   "name": "j_8F0B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36621,
   "name": "v3_cmd_jump",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36628,
   "name": "v3_cmd_native",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36637,
   "name": "v3_cmd_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36639,
   "name": "b_8F1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36659,
   "name": "v3_cmd_transpose_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36669,
   "name": "v3_cmd_transpose_x",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36676,
   "name": "v3_cmd_set_param",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36682,
   "name": "v3_cmd_set_work",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36688,
   "name": "r_8F50",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36689,
   "name": "v3_effects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36723,
   "name": "b_8F73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36735,
   "name": "b_8F7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36748,
   "name": "b_8F8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36758,
   "name": "b_8F96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36761,
   "name": "b_8F99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36777,
   "name": "b_8FA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36805,
   "name": "b_8FC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36826,
   "name": "b_8FDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36841,
   "name": "b_8FE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36847,
   "name": "j_8FEF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36859,
   "name": "b_8FFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36895,
   "name": "b_901F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36902,
   "name": "r_9026",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36903,
   "name": "b_9027",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36911,
   "name": "b_902F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36936,
   "name": "j_9048",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36937,
   "name": "b_9049",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36957,
   "name": "b_905D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36977,
   "name": "b_9071",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36997,
   "name": "b_9085",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37005,
   "name": "b_908D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37014,
   "name": "j_9096",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37015,
   "name": "b_9097",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37028,
   "name": "b_90A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37043,
   "name": "b_90B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37049,
   "name": "effect_next_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37052,
   "name": "voice_work_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37055,
   "name": "voice_reg_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37058,
   "name": "voice_instr_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37064,
   "name": "voice_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37067,
   "name": "note_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37162,
   "name": "note_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37257,
   "name": "v1_cmd_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37258,
   "name": "f_918A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37287,
   "name": "v2_cmd_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37288,
   "name": "f_91A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37317,
   "name": "v3_cmd_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37318,
   "name": "f_91C6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37347,
   "name": "tune_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37419,
   "name": "galway_credit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37441,
   "name": "effect_step_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37465,
   "name": "effect_record_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37489,
   "name": "effect_record_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37513,
   "name": "effect_voice",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37521,
   "name": "effect_list_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37529,
   "name": "effect_next_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37530,
   "name": "effect_next_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37594,
   "name": "tune_data_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38618,
   "name": "tune_data_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39642,
   "name": "tune_data_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39934,
   "name": "tune_native_code",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39956,
   "name": "b_9C14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40001,
   "name": "tune_data_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40525,
   "name": "tune_native_value",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "tune_data_5b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41025,
   "name": "tune_data_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42049,
   "name": "tune_data_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43073,
   "name": "tune_data_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44097,
   "name": "tune_data_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45056,
   "name": "heroes_scores",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45057,
   "name": "f_B001",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 45296,
   "name": "heroes_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46096,
   "name": "heroes_name_blank",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46106,
   "name": "order_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46107,
   "name": "f_B41B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46185,
   "name": "player_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46843,
   "name": "orphan_sequences",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47867,
   "name": "orphan_sequences_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48891,
   "name": "orphan_sequences_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "print_text_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49155,
   "name": "swap_charset_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49158,
   "name": "frontend_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49161,
   "name": "swap_charset",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49199,
   "name": "b_C02F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49225,
   "name": "b_C049",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49234,
   "name": "b_C052",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49250,
   "name": "a_C062",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49253,
   "name": "b_C065",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49258,
   "name": "swap_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49259,
   "name": "f_C06B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49260,
   "name": "f_C06C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49261,
   "name": "f_C06D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49262,
   "name": "f_C06E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49263,
   "name": "f_C06F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49264,
   "name": "swap_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49265,
   "name": "print_text_entry2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49271,
   "name": "print_text",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49309,
   "name": "j_C09D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49322,
   "name": "b_C0AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49332,
   "name": "b_C0B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49339,
   "name": "b_C0BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49349,
   "name": "b_C0C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49364,
   "name": "j_C0D4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49370,
   "name": "put_glyph",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49391,
   "name": "j_C0EF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49401,
   "name": "cursor_advance",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49416,
   "name": "print_command",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49430,
   "name": "big_letter_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49434,
   "name": "print_command_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49435,
   "name": "f_C11B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49446,
   "name": "print_cmd_large",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49452,
   "name": "print_cmd_normal",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49458,
   "name": "letter_width",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49459,
   "name": "print_cmd_fill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49469,
   "name": "b_C13D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49509,
   "name": "print_cmd_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49561,
   "name": "print_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49562,
   "name": "print_temp2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49563,
   "name": "print_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49564,
   "name": "script_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49574,
   "name": "script_advance",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49580,
   "name": "r_C1AC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49581,
   "name": "print_cmd_colour",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49588,
   "name": "print_cmd_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49591,
   "name": "frontend_init",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49645,
   "name": "frontend_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49683,
   "name": "b_C213",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49776,
   "name": "show_rank",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49785,
   "name": "b_C279",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49800,
   "name": "b_C288",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49808,
   "name": "b_C290",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49832,
   "name": "b_C2A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49867,
   "name": "rank_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49868,
   "name": "wait_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49869,
   "name": "frontend_frame",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 49883,
   "name": "score_to_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49897,
   "name": "b_C2E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49910,
   "name": "table_sort",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49920,
   "name": "b_C300",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49955,
   "name": "b_C323",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49977,
   "name": "j_C339",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49988,
   "name": "score_compare",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49990,
   "name": "b_C346",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50008,
   "name": "b_C358",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50021,
   "name": "sort_swapped",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50022,
   "name": "sort_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50023,
   "name": "name_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50092,
   "name": "b_C3AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50105,
   "name": "b_C3B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50135,
   "name": "wait_line_f8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50137,
   "name": "b_C3D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50143,
   "name": "order_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50145,
   "name": "b_C3E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50155,
   "name": "name_entry_loop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50193,
   "name": "name_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50218,
   "name": "name_colour_script",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50220,
   "name": "a_C42C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50224,
   "name": "a_C430",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50229,
   "name": "table_defaults",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50236,
   "name": "b_C43C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50270,
   "name": "idle_timer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50306,
   "name": "name_default",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50308,
   "name": "b_C484",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50317,
   "name": "idle_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50325,
   "name": "r_C495",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50326,
   "name": "idle_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50327,
   "name": "idle_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50328,
   "name": "default_name",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50338,
   "name": "name_show",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50340,
   "name": "b_C4A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50354,
   "name": "name_entry_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50363,
   "name": "name_field",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50375,
   "name": "letter_pick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50381,
   "name": "b_C4CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50402,
   "name": "r_C4E2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50403,
   "name": "letter_special",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50420,
   "name": "b_C4F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50423,
   "name": "b_C4F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50430,
   "name": "b_C4FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50437,
   "name": "b_C505",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50460,
   "name": "b_C51C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50464,
   "name": "r_C520",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50465,
   "name": "name_length",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50466,
   "name": "colour_cycle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50475,
   "name": "b_C52B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50491,
   "name": "b_C53B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50495,
   "name": "colour_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50496,
   "name": "colour_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50498,
   "name": "cycle_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50506,
   "name": "cycle_colours_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50514,
   "name": "name_page_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50525,
   "name": "name_page_script",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50562,
   "name": "stick_edge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50566,
   "name": "b_C586",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50617,
   "name": "b_C5B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50624,
   "name": "fire_last",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50625,
   "name": "stick_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50626,
   "name": "stick_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50627,
   "name": "stick_down",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50628,
   "name": "stick_up",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50629,
   "name": "fire_new",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50630,
   "name": "stick_all",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50631,
   "name": "wheel_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50665,
   "name": "b_C5E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50675,
   "name": "wheel_turn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50686,
   "name": "b_C5FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50697,
   "name": "b_C609",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50703,
   "name": "b_C60F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50712,
   "name": "b_C618",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50718,
   "name": "wheel_pointer_pos",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50762,
   "name": "wheel_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50763,
   "name": "pointer_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50764,
   "name": "pointer_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50765,
   "name": "pointer_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50766,
   "name": "wheel_rotate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50775,
   "name": "wheel_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50776,
   "name": "b_C658",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50789,
   "name": "b_C665",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50838,
   "name": "wheel_colour_rotate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50844,
   "name": "b_C69C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50858,
   "name": "wheel_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50859,
   "name": "wheel_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50866,
   "name": "a_C6B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50867,
   "name": "rank_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50880,
   "name": "row_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 50913,
   "name": "row_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50914,
   "name": "compare_index_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50915,
   "name": "compare_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50917,
   "name": "wheel_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50949,
   "name": "wheel_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50981,
   "name": "wheel_letters",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51013,
   "name": "rank_page_print",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51019,
   "name": "a_C74B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51020,
   "name": "frontend_scripts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51025,
   "name": "a_C751",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51111,
   "name": "a_C7A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51239,
   "name": "attract_pages",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 51256,
   "name": "j_C838",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51276,
   "name": "b_C84C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51292,
   "name": "b_C85C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51303,
   "name": "attract_scroll_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 51325,
   "name": "r_C87D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51326,
   "name": "b_C87E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51329,
   "name": "b_C881",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51355,
   "name": "b_C89B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51364,
   "name": "b_C8A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51408,
   "name": "instructions_scroll",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51421,
   "name": "j_C8DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51423,
   "name": "j_C8DF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51434,
   "name": "b_C8EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51453,
   "name": "b_C8FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51467,
   "name": "b_C90B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51474,
   "name": "b_C912",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51507,
   "name": "instructions_wait",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 51530,
   "name": "b_C94A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51540,
   "name": "b_C954",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51551,
   "name": "b_C95F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51557,
   "name": "instructions_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52307,
   "name": "heroes_header_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52336,
   "name": "a_CC70",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52341,
   "name": "heroes_line_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52344,
   "name": "line_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52345,
   "name": "line_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52346,
   "name": "f_CC7A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 52393,
   "name": "title_script",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52401,
   "name": "a_CCB1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52407,
   "name": "heroes_line_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52408,
   "name": "heroes_rank_tens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52409,
   "name": "heroes_rank_digits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52411,
   "name": "heroes_name_field",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52422,
   "name": "heroes_score_first",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52423,
   "name": "heroes_score_field",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52430,
   "name": "line_colour_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52431,
   "name": "line_length",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52432,
   "name": "heroes_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52444,
   "name": "b_CCDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52460,
   "name": "b_CCEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52468,
   "name": "b_CCF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52488,
   "name": "b_CD08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52495,
   "name": "j_CD0F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52522,
   "name": "b_CD2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52535,
   "name": "b_CD37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52555,
   "name": "b_CD4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52589,
   "name": "heroes_line_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52590,
   "name": "heroes_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52596,
   "name": "b_CD74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52598,
   "name": "j_CD76",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52774,
   "name": "r_CE26",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52775,
   "name": "frontend_irq_install",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52822,
   "name": "nmi_to_basic",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52840,
   "name": "irq_frontend",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52862,
   "name": "a_CE7E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52863,
   "name": "a_CE7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52876,
   "name": "b_CE8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52896,
   "name": "f_CEA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 52897,
   "name": "frontend_irq_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52904,
   "name": "irq_fe_top",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 52984,
   "name": "a_CEF8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52994,
   "name": "r_CF02",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52995,
   "name": "fe_frame_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52996,
   "name": "fe_soft_scroll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52997,
   "name": "fe_row_move",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52998,
   "name": "end_marker_cf06",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53005,
   "name": "tod_clock_set",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53247,
   "name": "fe_hold",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "game_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54270,
   "name": "f_D3FE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 54271,
   "name": "f_D3FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 54272,
   "name": "game_charset_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54527,
   "name": "f_D4FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55301,
   "name": "f_D805",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55341,
   "name": "f_D82D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55496,
   "name": "f_D8C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55696,
   "name": "f_D990",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55736,
   "name": "f_D9B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55776,
   "name": "f_D9E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55816,
   "name": "f_DA08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55856,
   "name": "f_DA30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55896,
   "name": "f_DA58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55936,
   "name": "f_DA80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55976,
   "name": "f_DAA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56016,
   "name": "f_DAD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56056,
   "name": "f_DAF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56096,
   "name": "f_DB20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56136,
   "name": "f_DB48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56176,
   "name": "f_DB70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56216,
   "name": "f_DB98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56256,
   "name": "f_DBC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57344,
   "name": "f_E000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59136,
   "name": "f_E700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59248,
   "name": "map_clean",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60272,
   "name": "map_clean_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61040,
   "name": "f_EE70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61184,
   "name": "tiles_00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62208,
   "name": "tiles_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63232,
   "name": "tiles_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64256,
   "name": "tiles_30",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65280,
   "name": "tiles_40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65528,
   "name": "vectors",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 162,
   "type": "line",
   "text": "Bytes left in zero page by the loader's stack-overwrite stage; the game's own start-up (game_init at $1695) clears $02-$FF, so nothing of the game runs or reads them here."
  },
  {
   "address": 255,
   "type": "line",
   "text": "Remains of the loader's $0100 stub (copies the $FF00 page to $0200, sets $01 to $E7 and returns); a loader leftover that the game never calls."
  },
  {
   "address": 823,
   "type": "line",
   "text": "Jump table of entry points used by the helicopter engine at $3000: each entry JMPs to a routine of the jungle engine (sort objects, read stick, weapon switch, coarse scroll, scroll redraw, music tick, score draw, score add, damage, play sound, add score, frame wait, main start, map cell address)."
  },
  {
   "address": 826,
   "type": "line",
   "text": "Jump table entry: read the stick ($1CD0)."
  },
  {
   "address": 829,
   "type": "line",
   "text": "Jump table entry: the weapon key ($19BD)."
  },
  {
   "address": 832,
   "type": "line",
   "text": "Jump table entry: coarse scroll ($1D0C)."
  },
  {
   "address": 835,
   "type": "line",
   "text": "Jump table entry: draw the exposed edge ($0D13)."
  },
  {
   "address": 838,
   "type": "line",
   "text": "Jump table entry: wait for the interrupt's frame count ($1D66); no code calls it through the table."
  },
  {
   "address": 841,
   "type": "line",
   "text": "Jump table entry: wait for the second count ($2112); not called through the table."
  },
  {
   "address": 844,
   "type": "line",
   "text": "Jump table entry: one frame of music ($1159)."
  },
  {
   "address": 847,
   "type": "line",
   "text": "Jump table entry: draw the score ($241F)."
  },
  {
   "address": 850,
   "type": "line",
   "text": "Jump table entry: add the pending score ($2462)."
  },
  {
   "address": 853,
   "type": "line",
   "text": "Jump table entry: move the bullets with the scroll ($1214); not called through the table."
  },
  {
   "address": 856,
   "type": "line",
   "text": "Jump table entry: take damage ($0C89)."
  },
  {
   "address": 859,
   "type": "line",
   "text": "Jump table entry: two score digits as BCD ($07B9)."
  },
  {
   "address": 862,
   "type": "line",
   "text": "Jump table entry: the game's start ($0382); not called through the table."
  },
  {
   "address": 865,
   "type": "line",
   "text": "Jump table entry: play a sound effect ($0CFA)."
  },
  {
   "address": 868,
   "type": "line",
   "text": "Jump table entry: wait for the frame ($07B0)."
  },
  {
   "address": 871,
   "type": "line",
   "text": "Jump table entry: start a game ($0382); the front end's way in."
  },
  {
   "address": 874,
   "type": "line",
   "text": "Jump table entry: the screen cell under an object ($1601)."
  },
  {
   "address": 877,
   "type": "line",
   "text": "Jump table entry: place the item ($0B01); not called through the table."
  },
  {
   "address": 880,
   "type": "line",
   "text": "Jump table entries: lock ($07A4) and unlock ($07AA) the stick; nothing in this build jumps through them."
  },
  {
   "address": 886,
   "type": "line",
   "text": "Jump table entry: restart after a message ($0430)."
  },
  {
   "address": 889,
   "type": "line",
   "text": "Jump table entry: clear the score ($0410)."
  },
  {
   "address": 892,
   "type": "line",
   "text": "Jump table entry: add A to score digit X ($040C)."
  },
  {
   "address": 895,
   "type": "line",
   "text": "Jump table entry: show a message and restart ($0423)."
  },
  {
   "address": 898,
   "type": "line",
   "text": "Starts a game: game_init ($1695), restores the map ($09CC), plays tune $0C, enables all sprites, then the main loop at $0393: frame wait, scroll redraw, coarse scroll, stick-driven direction, items, enemies, the hut-door test, panel weapons, music tick, collisions, score draw and add, firing, enemy bullets, projectiles, enemy spawns, energy, the end-of-task test and the sort, every pass."
  },
  {
   "address": 928,
   "type": "line",
   "text": "An address named only by the BIT $03A0 skip in the music driver at $83D3 (no code reads it); the main loop continues here."
  },
  {
   "address": 1002,
   "type": "line",
   "text": "Plays tune 4 once when the map row $FE/$FF enters rows $88-$EF of the first 256 ; $040B remembers it has been started and is cleared when the row leaves the band."
  },
  {
   "address": 1035,
   "type": "line",
   "text": "Set while the map row is in the band where music_zone_check ($03EA) has started tune 4."
  },
  {
   "address": 1036,
   "type": "line",
   "text": "Adds A to score digit X ($248F,x), from the jump table at $037C."
  },
  {
   "address": 1040,
   "type": "line",
   "text": "Clears the six score digits ($2483) and the six pending additions ($248F)."
  },
  {
   "address": 1054,
   "type": "line",
   "text": "If $0F (the end-of-life or end-of-task flag) is set, falls into the task-end screen; otherwise returns."
  },
  {
   "address": 1059,
   "type": "line",
   "text": "Shows message screen 3 via $044D, decrements $0F and restarts the game at game_start."
  },
  {
   "address": 1067,
   "type": "line",
   "text": "Sets $0F and shows the message whose number is in A, then falls into $0430, which shows message 3."
  },
  {
   "address": 1077,
   "type": "line",
   "text": "Picks the next mission message: with $0AFF clear it shows message A; otherwise message A plus $08EB (whether the hut rescue has begun), or message 3 with $0F set to 3 when $E6 is set and the rescue has not begun."
  },
  {
   "address": 1101,
   "type": "line",
   "text": "Shows a full-screen mission message: blanks sprites, stops sound (command 1), saves zero page $E0-$FF, prints the screen layout with the text printer ($C000, inline script $106A), swaps in the front-end graphics ($C003), selects tune and text by A from tables $0565 (tune) and $056F (text pointer), waits until the tune ends (driver command 2 returns zero while a tune plays), restores zero page, and either resumes the jungle ($04F2) or returns to the caller's caller when $0F is set."
  },
  {
   "address": 1143,
   "type": "line",
   "text": "The inline script address after the JSR $C000 at $0474: the six-byte script at $106A."
  },
  {
   "address": 1145,
   "type": "line",
   "text": "message_screen continues after the frame script: swaps the font in, picks the message's tune and text."
  },
  {
   "address": 1181,
   "type": "line",
   "text": "The inline script address after the JSR $C000 at $049A; message_screen writes it from the message table $056F before printing."
  },
  {
   "address": 1182,
   "type": "line",
   "text": "The high byte of the message script address at $049D."
  },
  {
   "address": 1183,
   "type": "line",
   "text": "message_screen continues: waits each frame on raster $C8, plays music, and polls driver command 2 until the tune ends; then restores the screen, the font, the sprites and the music."
  },
  {
   "address": 1241,
   "type": "line",
   "text": "The inline script address after the JSR $C000 at $04D6: the closing script ($055F)."
  },
  {
   "address": 1243,
   "type": "line",
   "text": "message_screen continues after the closing script: restores zero page and returns or resumes."
  },
  {
   "address": 1266,
   "type": "line",
   "text": "After a message, re-enters the map: X = $0537 selects a restart position from tables $0538 (row lo), $053A (row hi), $053C (column), then scrolls $28 times to rebuild the screen, sets the screen registers and returns; with $0537 = 0 it sets $0F to 1 and unwinds the stack to end the game."
  },
  {
   "address": 1335,
   "type": "line",
   "text": "The restart position message_screen saves (A of $044D): 0 ends the game, 1 and 2 pick a position from the tables below."
  },
  {
   "address": 1336,
   "type": "line",
   "text": "Low bytes of the map row for restart positions 1 and 2."
  },
  {
   "address": 1338,
   "type": "line",
   "text": "High bytes of the map row for restart positions 1 and 2."
  },
  {
   "address": 1340,
   "type": "line",
   "text": "Map columns for restart positions 1 and 2."
  },
  {
   "address": 1342,
   "type": "line",
   "text": "Counts the 40 scroll steps resume_after_message uses to redraw the screen."
  },
  {
   "address": 1343,
   "type": "line",
   "text": "The 32 bytes of zero page $E0-$FF that message_screen saves while the front end's printer uses them, and puts back after."
  },
  {
   "address": 1375,
   "type": "line",
   "text": "Printer script printed by message_screen as it closes (inline at $04D6)."
  },
  {
   "address": 1381,
   "type": "line",
   "text": "The tune command for each message, at the even bytes (message_screen indexes it by twice the message number): $0B, $06, $07, $0B, $0A."
  },
  {
   "address": 1391,
   "type": "line",
   "text": "Addresses of the five messages' printer scripts: $0579, $05D5, $0651, $06C5, $06D9."
  },
  {
   "address": 1392,
   "type": "line",
   "text": "The message script table continues."
  },
  {
   "address": 1401,
   "type": "line",
   "text": "The mission messages as printer scripts: TASK ONE COMPLETED. YOUR DATA REVEALS AMERICAN P.O.W.S TO BE RESCUED; NOW RESCUE THE P.O.W.S FROM THE CAMP. USE ANY ENEMY EQUIPMENT NECESSARY; YOUR PRESENCE HAS BEEN RELAYED TO ENEMY H.Q. A GUNSHIP IS NOW ON COURSE AND IN PURSUIT; GAME OVER; CONGRATULATIONS. THANKS TO YOU TEN P.O.W.S HAVE BEEN RETURNED TO THE HOMELAND; and YOU KNOW YOU MUST NOW RETURN TO GET MORE UNFORTUNATE SOLDIERS TRAPPED BY ENEMY FORCES. $5B is a space and $FF starts a printer command."
  },
  {
   "address": 1440,
   "type": "line",
   "text": "Named only by the BIT $05A0 skip in the music driver ($84B2); message 0's script continues here (YOUR DATA REVEALS ...), up to $05D4."
  },
  {
   "address": 1696,
   "type": "line",
   "text": "Named only by the BIT $06A0 skip in the music driver ($83C1); message 2's script continues here (it runs from $0651 to $06C4)."
  },
  {
   "address": 1952,
   "type": "line",
   "text": "Named only by the BIT $07A0 skip in the music driver ($83D0); the last message script ends here."
  },
  {
   "address": 1956,
   "type": "line",
   "text": "Locks the stick (input_locked at $1CE4 = 1), so read_stick returns nothing; reached through the jump table at $0370."
  },
  {
   "address": 1962,
   "type": "line",
   "text": "Unlocks the stick ($1CE4 = 0); reached through the jump table at $0373."
  },
  {
   "address": 1968,
   "type": "line",
   "text": "Waits for the next frame: the interrupt's flag at $2334 (frame_wait_irq at $1D66), then copies object state for the multiplexer ($1D33), then waits for the second interrupt flag at $22C4 ($2112)."
  },
  {
   "address": 1977,
   "type": "line",
   "text": "Returns in A the two score digits at $2483,x*2 packed as a BCD byte (high digit in the top nibble); used to copy the score into the heroes table."
  },
  {
   "address": 2006,
   "type": "line",
   "text": "Moves the freed POWs: for each of four slots ($0847,x) calls pow_walk ($084B) or pow_spawn ($0803); when all are out ($0846 = 0) and none walks, clears the rescue flags $093F, $0940 and $0B00."
  },
  {
   "address": 2050,
   "type": "line",
   "text": "Counts down the POW slots handled this frame; negative when none is still walking."
  },
  {
   "address": 2051,
   "type": "line",
   "text": "Starts one POW leaving the hut: on a 1-in-50 chance, while POWs remain ($0846), places object X at the hut ($0941/$0942), sprite $CF, colour 12, sets a walk count of 20 in $0847,x and the score award 2."
  },
  {
   "address": 2118,
   "type": "line",
   "text": "POWs still to leave the hut (ten at the start of the rescue)."
  },
  {
   "address": 2119,
   "type": "line",
   "text": "Each walking POW's step count: 20 down to 2 while it walks south, 1 while it walks east until its X reaches $AA, 0 when the slot is free."
  },
  {
   "address": 2123,
   "type": "line",
   "text": "Walks a freed POW: state 1 moves it right (X to $AA) with frames $D3-$D6, otherwise it walks down $0847,x steps with frames $CF-$D2; the frame advances every third call (pow_anim_tick at $0897)."
  },
  {
   "address": 2199,
   "type": "line",
   "text": "Animation divider per POW: counts $08A8,x down from 2 and returns carry set on the frame the animation should advance."
  },
  {
   "address": 2216,
   "type": "line",
   "text": "Animation dividers of the four POWs."
  },
  {
   "address": 2221,
   "type": "line",
   "text": "While the rescue runs ($093F), moves the hut position with the vertical scroll and forces the stick variables: to \"down\" while $093F is above 1, so the screen scrolls, and to nothing once it reaches 1; then runs pow_run_update."
  },
  {
   "address": 2265,
   "type": "line",
   "text": "When Rambo stands on the hut-door character ($15F8 = $E0) with weapon 0 selected and the rescue has not started ($08EB), starts it: sets $093F to $28, records the hut's map position, frees ten POWs ($0846), replaces the hut tile ($1340), plays sound $1B and clears the objects (object_reset at $0A8B)."
  },
  {
   "address": 2283,
   "type": "line",
   "text": "Set once the hut has been opened; picks the later messages."
  },
  {
   "address": 2284,
   "type": "line",
   "text": "hut_door_check continues: the rescue can start only once the item for it has been taken ($0B00) and none is running ($093F)."
  },
  {
   "address": 2367,
   "type": "line",
   "text": "The rescue sequence's state: $28 counted down to 1 while the screen scrolls, then held at 1 until every POW is out, then cleared."
  },
  {
   "address": 2368,
   "type": "line",
   "text": "Set while the POWs come out; pauses the enemies and the marker scans."
  },
  {
   "address": 2369,
   "type": "line",
   "text": "Screen row of the opened hut's door, where POWs appear."
  },
  {
   "address": 2370,
   "type": "line",
   "text": "Screen column of the opened hut's door."
  },
  {
   "address": 2371,
   "type": "line",
   "text": "Clears the five enemy slots ($11E5, $45) and the seven slots of $1919/$4A: the four enemy bullets and Rambo's three shots."
  },
  {
   "address": 2394,
   "type": "line",
   "text": "The stick reading stick_changed compares against."
  },
  {
   "address": 2395,
   "type": "line",
   "text": "The stick reading just taken by stick_changed."
  },
  {
   "address": 2396,
   "type": "line",
   "text": "Shows the opening briefing: swaps in the front-end graphics, plays tune 9, prints the briefing text (inline script $1056), waits on raster $64 each frame until the stick is pushed, then shows the second page (script $106A) and swaps back."
  },
  {
   "address": 2435,
   "type": "line",
   "text": "The inline script address after the JSR $C000 at $0980: the briefing's first page ($1056)."
  },
  {
   "address": 2437,
   "type": "line",
   "text": "mission_briefing continues after its first page: waits for the stick or the end of the tune."
  },
  {
   "address": 2464,
   "type": "line",
   "text": "Named only by the BIT $09A0 skips in the driver's three voice copies ($8869, $8BA5, $8EDC); mission_briefing continues here, leaving its wait loop."
  },
  {
   "address": 2467,
   "type": "line",
   "text": "Reads the stick; returns Z clear and A = fire bit when the reading differs from the last one in $095A."
  },
  {
   "address": 2473,
   "type": "line",
   "text": "Named only by a BIT $09A9 skip in the tune data's native code ($9C36); stick_changed continues here."
  },
  {
   "address": 2501,
   "type": "line",
   "text": "The inline script address after the JSR $C000 at $09C2: the six-byte script at $106A, which prints no text."
  },
  {
   "address": 2503,
   "type": "line",
   "text": "mission_briefing ends: swaps the game's font back."
  },
  {
   "address": 2508,
   "type": "line",
   "text": "Copies the clean map ($E770-$EEDF) over the working map ($E000-$E76F), undoing every tile the last game destroyed."
  },
  {
   "address": 2524,
   "type": "line",
   "text": "The source page in the LDA $E770,y at $09DA, stepped by map_restore."
  },
  {
   "address": 2527,
   "type": "line",
   "text": "The destination page in the STA $E000,y at $09DD, stepped by map_restore."
  },
  {
   "address": 2552,
   "type": "line",
   "text": "Tests key code $3F (RUN/STOP) with key_test ($2631) and toggles $0A19 on each new press; the interrupt stops the game while $0A19 is set."
  },
  {
   "address": 2584,
   "type": "line",
   "text": "Set while RUN/STOP is held, so one press toggles once."
  },
  {
   "address": 2585,
   "type": "line",
   "text": "Set while the game is paused; the interrupt then freezes play and silences the SID."
  },
  {
   "address": 2586,
   "type": "line",
   "text": "Tests Rambo (object 13) against the item in object 12 with a 12-by-10 box (box_hit at $2496). A weapon item ($0BC3,x >= 0) adds its bit to $19ED, updates the panel and scores 3; taking slot 3 ends the jungle stage ($0AB2); an item with bit 7 set counts into $0AFF and scores 5."
  },
  {
   "address": 2699,
   "type": "line",
   "text": "Clears the enemy, bullet and item state: positions to $0A, the active and timer arrays to zero."
  },
  {
   "address": 2738,
   "type": "line",
   "text": "Item slot 3 taken: resets the objects, shows message 0 ($0435), runs the helicopter stage ($3003) with $08EB, and on return places Rambo at the column and row the helicopter stage left in X and Y and redraws the screen."
  },
  {
   "address": 2815,
   "type": "line",
   "text": "Counts the items with bit 7 taken (item_pickup_check); once non-zero enemies spawn without a budget and the messages change."
  },
  {
   "address": 2816,
   "type": "line",
   "text": "Set when Rambo comes back from the helicopter stage (item3_taken at $0AC6) and cleared when the POWs are out (pow_run_update); hut_door_check needs it."
  },
  {
   "address": 2817,
   "type": "line",
   "text": "Places the item sprite (object 12) for the first of the four map items ($0BB7 column, $0BBB/$0BBF row) that is within the visible window, converting its map position to screen coordinates; slot 3 sets up a second sprite (object 4) beside it."
  },
  {
   "address": 2976,
   "type": "line",
   "text": "Named only by the BIT $0BA0 skips in the music driver at $83C4 and $84AF; item_place continues here (no item on screen: clears $CF and hides object 12)."
  },
  {
   "address": 2985,
   "type": "line",
   "text": "Named only by the BIT $0BA9 skip in the tune data's native code ($9C33); item_place continues: hides object 4 unless it is in use ($11E9)."
  },
  {
   "address": 2998,
   "type": "line",
   "text": "The item slot item_place found on screen."
  },
  {
   "address": 2999,
   "type": "line",
   "text": "Map column of each of the four items."
  },
  {
   "address": 3002,
   "type": "line",
   "text": "Map column of item 3 (the helicopter), which item3_taken and game_init rewrite."
  },
  {
   "address": 3003,
   "type": "line",
   "text": "Low byte of the map row of each item."
  },
  {
   "address": 3006,
   "type": "line",
   "text": "Low byte of item 3's map row."
  },
  {
   "address": 3007,
   "type": "line",
   "text": "High byte of the map row of each item."
  },
  {
   "address": 3010,
   "type": "line",
   "text": "High byte of item 3's map row."
  },
  {
   "address": 3011,
   "type": "line",
   "text": "What each item gives: a weapon bit for $19ED, bit 7 for the POW count, 0 once taken; slot 3 starts the helicopter."
  },
  {
   "address": 3015,
   "type": "line",
   "text": "The values item_kind starts each game with (slots 0-2; game_init copies them)."
  },
  {
   "address": 3019,
   "type": "line",
   "text": "Sprite frame of each item."
  },
  {
   "address": 3023,
   "type": "line",
   "text": "One enemy per frame, round robin over slots 0-3: if it is walking (state 1), tests it against Rambo (enemy_touch at $0BE6)."
  },
  {
   "address": 3045,
   "type": "line",
   "text": "Round-robin slot for enemy_hit_check."
  },
  {
   "address": 3046,
   "type": "line",
   "text": "Box test of enemy X against Rambo (12 by 10); on a hit adds 4 to the damage counter $0B and kills the enemy (enemy_kill at $15A0)."
  },
  {
   "address": 3103,
   "type": "line",
   "text": "One bullet per frame, round robin over slots 0-3: tests an active bullet against Rambo (bullet_touch at $0C33)."
  },
  {
   "address": 3123,
   "type": "line",
   "text": "Box test of bullet X against Rambo; on a hit adds 7 to the damage counter $0B, plays sound $18 and removes the bullet ($24FD)."
  },
  {
   "address": 3185,
   "type": "line",
   "text": "Round-robin slot for bullet_hit_check."
  },
  {
   "address": 3186,
   "type": "line",
   "text": "Draws the full energy bar from the template at $4840/$4855 into the panel at $4400/$4440 and sets the energy to $30."
  },
  {
   "address": 3209,
   "type": "line",
   "text": "Takes one unit of damage a frame from $0B: decrements the energy $0CC3, clears the matching pixels of the bar (masks at $0CC4), and sets $0F to 1 when the energy runs out."
  },
  {
   "address": 3267,
   "type": "line",
   "text": "Rambo's energy, $30 when full; each unit is one step of the panel bar."
  },
  {
   "address": 3268,
   "type": "line",
   "text": "The eight bit masks energy_tick uses to clear the bar a pixel at a time."
  },
  {
   "address": 3276,
   "type": "line",
   "text": "Tests the S key (code $0D); on each new press toggles sound effects ($0D11) and switches which voices the music may use between 7 (all, music on) and 0 (none, music off) through command $1A, value in $0CF9."
  },
  {
   "address": 3320,
   "type": "line",
   "text": "Set while S is held."
  },
  {
   "address": 3321,
   "type": "line",
   "text": "The voices the music may use, 7 or 0, which music_toggle_key alternates and sends with command $1A."
  },
  {
   "address": 3322,
   "type": "line",
   "text": "Plays sound effect A through the driver ($8100) unless effects are switched off ($0D11), keeping X and Y."
  },
  {
   "address": 3345,
   "type": "line",
   "text": "Set when the S key has switched sound effects off."
  },
  {
   "address": 3346,
   "type": "line",
   "text": "The effect play_effect was asked for."
  },
  {
   "address": 3347,
   "type": "line",
   "text": "After a coarse scroll ($1D30 set by the scroll code), draws the newly exposed edge: bit 0 the top row ($279E), bit 1 the bottom row ($2769), bit 2 the left column ($26B1), bit 3 the right column ($2681)."
  },
  {
   "address": 3379,
   "type": "line",
   "text": "Animates an enemy in state 5 (rising): counts $0D5E,x down, nudging it up by the table at $0D60; when done gives it a random type ($120B) and makes it walk."
  },
  {
   "address": 3422,
   "type": "line",
   "text": "Frames each rising enemy has left (state 5)."
  },
  {
   "address": 3424,
   "type": "line",
   "text": "Row steps of the rising animation, read from the end of rise_count."
  },
  {
   "address": 3439,
   "type": "line",
   "text": "Scans eight characters a frame of the visible screen ($32/$33 walk through rows $402C onward) for character $93; for each, may start an enemy rising there (hole_spawn at $0DB7)."
  },
  {
   "address": 3511,
   "type": "line",
   "text": "On a 1-in-4 chance, if that enemy slot is free, starts an enemy rising from the hole just found: state 5, colour 9, frame $76 (type $0B) when the character below is $67, else frame $78 (type $0C), position from the scan row and column."
  },
  {
   "address": 3631,
   "type": "line",
   "text": "Character index within the row hole_scan has reached."
  },
  {
   "address": 3632,
   "type": "line",
   "text": "Row counter for hole_scan (17 rows)."
  },
  {
   "address": 3633,
   "type": "line",
   "text": "While no rescue runs, looks along screen row $42D0 for the marker character $FD, eight cells a frame; when found places object 4 there with state 2 and colour $0B."
  },
  {
   "address": 3721,
   "type": "line",
   "text": "Position of marker_scan along its row; negative when finished."
  },
  {
   "address": 3722,
   "type": "line",
   "text": "Each frame clears one byte of the sprite data at $7ED8-$7EDF and sets a bit from $19EF in another, walking two indices round the eight bytes: an animated pattern in that sprite."
  },
  {
   "address": 3760,
   "type": "line",
   "text": "Index into $19EF for sprite_bit_cycle."
  },
  {
   "address": 3761,
   "type": "line",
   "text": "Byte index into $7ED8 for sprite_bit_cycle."
  },
  {
   "address": 3762,
   "type": "line",
   "text": "Called by the column drawer when it meets marker tile $FD: places object 4 at the left or right edge, row from X."
  },
  {
   "address": 3822,
   "type": "line",
   "text": "Called by the row drawer when it meets marker tile $FD: places object 4 at the top edge, column from $267E."
  },
  {
   "address": 3906,
   "type": "line",
   "text": "Updates the five enemy slots: moves the active ones (enemy_step at $0F68), may spawn new ones in free slots ($118B), and on a 1-in-200 chance adds one to the spawn budget $119B."
  },
  {
   "address": 3944,
   "type": "line",
   "text": "Moves enemy X by its state: 5 rising, 4 dying (advances the frame every 4 calls, removes it at frame $82), 2 and 3 the object-4 sequence (2 waits for $0FF6, 3 moves it by $0FEA for $0FF5 frames, then kills it), otherwise walking: picks a direction ($100A), checks the ground, animates and moves."
  },
  {
   "address": 4000,
   "type": "line",
   "text": "Named only by the BIT $0FA0 skip in the music driver at $83C7; enemy_step continues here (state 2: starts object 4's climb)."
  },
  {
   "address": 4074,
   "type": "line",
   "text": "Step sizes added to object 4's Y in state 3, indexed by its timer $0FF5 divided by 4."
  },
  {
   "address": 4085,
   "type": "line",
   "text": "Frames of object 4's state-3 movement left."
  },
  {
   "address": 4086,
   "type": "line",
   "text": "Counts destroyed tiles of kind $30; object 4 leaves state 2 when it is non-zero."
  },
  {
   "address": 4087,
   "type": "line",
   "text": "The walking enemy's frame: steers ($100A), keeps it inside the window ($115E), sometimes picks a new direction (random under 10, $1039), then animates ($1070)."
  },
  {
   "address": 4106,
   "type": "line",
   "text": "Reads the character under enemy X ($1601); characters $1B-$29 are open ground and let it move; anything else counts $1046,x up and after 10 frames removes the enemy."
  },
  {
   "address": 4153,
   "type": "line",
   "text": "Gives enemy X a random walking type from the eight in $120B."
  },
  {
   "address": 4166,
   "type": "line",
   "text": "Frames each enemy has stood on ground it cannot walk on; at 10 it is removed."
  },
  {
   "address": 4170,
   "type": "line",
   "text": "Object 4's entry in enemy_blocked, set when it is placed."
  },
  {
   "address": 4171,
   "type": "line",
   "text": "Screen offset, by enemy type, of the character enemy_steer reads in front of the enemy."
  },
  {
   "address": 4182,
   "type": "line",
   "text": "The briefing's first page as a printer script."
  },
  {
   "address": 4202,
   "type": "line",
   "text": "A six-byte printer script with no text, printed first on every message screen (inline at $0474) and at the end of the briefing (at $09C2), while the screen is off."
  },
  {
   "address": 4205,
   "type": "line",
   "text": "Colour byte in the message frame script, set before printing."
  },
  {
   "address": 4208,
   "type": "line",
   "text": "Advances enemy X's walk animation: waits $10DA,x frames (2, or 20 in state 2), then steps through the frame list at $10BC from the start $10B1 gives for its type $11EA,x, a zero ending the list; sets the sprite pointer $8B,x."
  },
  {
   "address": 4273,
   "type": "line",
   "text": "Start of each enemy type's frame list in $10BC."
  },
  {
   "address": 4284,
   "type": "line",
   "text": "The enemies' walk frame lists, each ended by 0."
  },
  {
   "address": 4309,
   "type": "line",
   "text": "Each enemy's position in its frame list."
  },
  {
   "address": 4314,
   "type": "line",
   "text": "Each enemy's frames until its next animation step."
  },
  {
   "address": 4319,
   "type": "line",
   "text": "Moves enemy X by its type's step ($113F X step, $114C Y step) plus the scroll deltas $0C and $0D; a blocked enemy ($1046,x) moves only with the scroll. X is nine bits ($7D,x and bit 0 of $61,x)."
  },
  {
   "address": 4413,
   "type": "line",
   "text": "The X step enemy_move works out this frame."
  },
  {
   "address": 4414,
   "type": "line",
   "text": "The Y step enemy_move works out this frame."
  },
  {
   "address": 4415,
   "type": "line",
   "text": "X step per frame for each enemy type."
  },
  {
   "address": 4428,
   "type": "line",
   "text": "Y step per frame for each enemy type."
  },
  {
   "address": 4441,
   "type": "line",
   "text": "Calls the music driver's play routine (command 0 of $8100), once a pass of the main loop."
  },
  {
   "address": 4446,
   "type": "line",
   "text": "Removes enemy X ($116B: state 0, position $0A, one fewer active) when it leaves rows $0A-$C4 or columns 2-$A8 (half-pixel units); otherwise moves it ($10DF)."
  },
  {
   "address": 4491,
   "type": "line",
   "text": "For a free slot other than 4, while the spawn budget $119B lasts (or always once $0AFF is set), places a new enemy at a random point of one of seven entry zones ($11EF/$11F6 X base and range, $11FD/$1204 Y base and range) with the zone's type ($120B) and a random colour from $11E1."
  },
  {
   "address": 4507,
   "type": "line",
   "text": "How many enemies may still be spawned; explosions and shots add to it, a 1-in-200 chance a frame adds one."
  },
  {
   "address": 4508,
   "type": "line",
   "text": "enemy_spawn continues: uses one unit of the spawn budget $119B."
  },
  {
   "address": 4512,
   "type": "line",
   "text": "Named only by the BIT $11A0 skip in the music driver at $849D; enemy_spawn continues here, choosing the entry zone."
  },
  {
   "address": 4577,
   "type": "line",
   "text": "The four colours a new enemy may be given."
  },
  {
   "address": 4581,
   "type": "line",
   "text": "Each enemy slot's state: 0 free, 1 walking, 2 and 3 object 4's sequence, 4 dying, 5 rising."
  },
  {
   "address": 4585,
   "type": "line",
   "text": "Object 4's state (2 waiting, 3 moving)."
  },
  {
   "address": 4586,
   "type": "line",
   "text": "Each enemy's type (direction of walk), index to the step and frame tables."
  },
  {
   "address": 4590,
   "type": "line",
   "text": "Object 4's type."
  },
  {
   "address": 4591,
   "type": "line",
   "text": "X position base of each of the seven entry zones."
  },
  {
   "address": 4598,
   "type": "line",
   "text": "X position range of each entry zone."
  },
  {
   "address": 4605,
   "type": "line",
   "text": "Y position base of each entry zone."
  },
  {
   "address": 4612,
   "type": "line",
   "text": "Y position range of each entry zone."
  },
  {
   "address": 4619,
   "type": "line",
   "text": "The walking type an enemy entering at each zone is given."
  },
  {
   "address": 4628,
   "type": "line",
   "text": "Moves the seven slots of $1919 (the four enemy bullets and Rambo's three shots) with the scroll: Y by $0D every frame, X by $0C every other frame (X is in two-pixel units)."
  },
  {
   "address": 4672,
   "type": "line",
   "text": "Alternates so bullets move with the horizontal scroll every other frame."
  },
  {
   "address": 4673,
   "type": "line",
   "text": "For each map tile, the tile it becomes when an explosion hits it (itself when it cannot be damaged)."
  },
  {
   "address": 4723,
   "type": "line",
   "text": "An entry of tile_damage that hut_door_check and game_init rewrite ($33 or $32): what the hut's tile turns into."
  },
  {
   "address": 4737,
   "type": "line",
   "text": "Animates Rambo: when the stick direction ($1D06 low nibble) changes, restarts the walk cycle from $12CD for that direction; otherwise every fourth call steps through the frame list $12D8, setting the sprite pointer $D1 and $98 (frame plus 4)."
  },
  {
   "address": 4809,
   "type": "line",
   "text": "Rambo's position in his frame list."
  },
  {
   "address": 4810,
   "type": "line",
   "text": "The stick direction Rambo last walked in."
  },
  {
   "address": 4811,
   "type": "line",
   "text": "Mask of directions kept for the next frame by map_edge_limits."
  },
  {
   "address": 4812,
   "type": "line",
   "text": "Frames until Rambo's next step of animation."
  },
  {
   "address": 4813,
   "type": "line",
   "text": "Start of Rambo's frame list for each stick direction."
  },
  {
   "address": 4824,
   "type": "line",
   "text": "Rambo's walk frames, each list ended by 0."
  },
  {
   "address": 4844,
   "type": "line",
   "text": "Stops scrolling past the map's edges: clears bits of the allowed-direction mask $1D07 at column 0 ($F8), column $5A, row 0-$18 and rows $3B8 and up ($FE/$FF)."
  },
  {
   "address": 4928,
   "type": "line",
   "text": "Replaces the map tile under a point ($18E9 Y, $18EA/$18EB X) by its damaged form from table $1241 in the working map at $E000 (tile $30 also counts $0FF6), then redraws the part of that tile's 8-by-8 characters that is on screen at $4000."
  },
  {
   "address": 5256,
   "type": "line",
   "text": "Screen address tile_destroy writes into (the operand of $1487)."
  },
  {
   "address": 5257,
   "type": "line",
   "text": "High byte of the screen address at $1488. From here tile_destroy copies each visible row of the tile's characters to the screen."
  },
  {
   "address": 5316,
   "type": "line",
   "text": "Column within the tile where tile_destroy's copy starts."
  },
  {
   "address": 5317,
   "type": "line",
   "text": "Row within the tile where tile_destroy's copy starts (from the scroll)."
  },
  {
   "address": 5318,
   "type": "line",
   "text": "Characters left to copy in tile_destroy's row."
  },
  {
   "address": 5319,
   "type": "line",
   "text": "Tile rows left to copy."
  },
  {
   "address": 5320,
   "type": "line",
   "text": "Screen column of tile_destroy's copy."
  },
  {
   "address": 5321,
   "type": "line",
   "text": "First screen column of the tile."
  },
  {
   "address": 5322,
   "type": "line",
   "text": "One of Rambo's three shots a frame: for a shot of type 5 or 8 (the explosive ones), checks the character under it; off open ground ($1B-$29) it explodes there ($189C)."
  },
  {
   "address": 5383,
   "type": "line",
   "text": "Round-robin shot slot for grenade_landing."
  },
  {
   "address": 5384,
   "type": "line",
   "text": "One of Rambo's three shots a frame (round robin over $1528): for an active shot that is not type 9, tests it against the four enemies (shot_hit at $1539)."
  },
  {
   "address": 5416,
   "type": "line",
   "text": "Round-robin shot slot for shots_vs_enemies."
  },
  {
   "address": 5417,
   "type": "line",
   "text": "Half-width of the hit box for each shot type."
  },
  {
   "address": 5425,
   "type": "line",
   "text": "Half-height of the hit box for each shot type."
  },
  {
   "address": 5433,
   "type": "line",
   "text": "Tests shot X (type in A) against enemies 3 to 0 with a box from tables $1529/$1531 by type; on a hit, explosive types 5 and 8 explode ($18EC), type $0A passes through, others end ($17EF); the enemy dies ($15A0): frame $7E, state 4, colour 1, award 1 to score digit $2492 and sound $12."
  },
  {
   "address": 5579,
   "type": "line",
   "text": "Reads the four characters around Rambo's feet (offsets $15F9) and clears the matching stick bits ($15FD masks) for any that is not open ground ($1B-$29), so he cannot walk into scenery; keeps the last character read in $15F8."
  },
  {
   "address": 5624,
   "type": "line",
   "text": "The last character rambo_ground_check read; $E0 is the hut door."
  },
  {
   "address": 5625,
   "type": "line",
   "text": "Screen offsets of the four characters round Rambo's feet that rambo_ground_check reads."
  },
  {
   "address": 5629,
   "type": "line",
   "text": "Stick masks cleared when the matching foot character is not open ground."
  },
  {
   "address": 5633,
   "type": "line",
   "text": "Returns in $30/$31 the screen address ($4000 based) of the character under object X, from its position less the fine scroll ($E3, $E4); X position nine bits."
  },
  {
   "address": 5709,
   "type": "line",
   "text": "As $1601 for a shot, whose X is eight bits in two-pixel units."
  },
  {
   "address": 5781,
   "type": "line",
   "text": "Sets up a new game: clears zero page, sorts the object list, installs the game interrupt ($211B), clears enemies, places the four items, sets energy, scroll, weapons owned (7: the first three), video bank 1 (screen $4000, characters $7800), colours and sprite modes, shows the briefing ($095C), draws the first screen by scrolling 25 rows, and draws the panel."
  },
  {
   "address": 6048,
   "type": "line",
   "text": "Named only by the BIT $17A0 skips in the music driver at $83CD and $84A9; game_init continues here, drawing 25 rows."
  },
  {
   "address": 6085,
   "type": "line",
   "text": "Blanks the screen ($D011 = 0)."
  },
  {
   "address": 6091,
   "type": "line",
   "text": "Turns the screen back on ($D011 = $10, fine scroll 0); callers then set the fine scroll."
  },
  {
   "address": 6097,
   "type": "line",
   "text": "Moves Rambo's three shots ($191D type), each by shot_step ($17DF)."
  },
  {
   "address": 6111,
   "type": "line",
   "text": "Moves shot X: type 9 follows a thrown arc ($183D); others end at the window's edges (rows $0A-$C4, columns 4-$AC); type $0A animates an explosion ($1920); others move by their steps $1AFC (Y) and $1AF9 (X); type 4 animates its frame up to $40."
  },
  {
   "address": 6127,
   "type": "line",
   "text": "Frees shot X: type 0, row $0A, one fewer active ($CC,x)."
  },
  {
   "address": 6205,
   "type": "line",
   "text": "The type 9 shot (thrown): counts $190D,x and adds the height table at $8000 to its row, with the per-throw steps $1907/$190A, until it lands or leaves the window; on landing it explodes ($189C)."
  },
  {
   "address": 6300,
   "type": "line",
   "text": "Plays the shot type's sound ($18DF), turns it into an explosion ($18EC), and if the character beneath is not open ground destroys that map tile ($1340)."
  },
  {
   "address": 6367,
   "type": "line",
   "text": "The sound effect for each shot type when it explodes."
  },
  {
   "address": 6377,
   "type": "line",
   "text": "Row of the point tile_destroy damages."
  },
  {
   "address": 6378,
   "type": "line",
   "text": "Column of the point tile_destroy damages."
  },
  {
   "address": 6379,
   "type": "line",
   "text": "Bit 8 of hit_x."
  },
  {
   "address": 6380,
   "type": "line",
   "text": "Turns shot X into an explosion: frame $41, type $0A, colour 5, and adds 5 to the enemy spawn budget $119B."
  },
  {
   "address": 6407,
   "type": "line",
   "text": "Vertical step of each thrown shot."
  },
  {
   "address": 6410,
   "type": "line",
   "text": "Horizontal step of each thrown shot."
  },
  {
   "address": 6413,
   "type": "line",
   "text": "Position of each thrown shot along the arc table at $8000; bit 7 while climbing."
  },
  {
   "address": 6416,
   "type": "line",
   "text": "Base row of each thrown shot, to which the arc height is added."
  },
  {
   "address": 6419,
   "type": "line",
   "text": "X saved by random_below."
  },
  {
   "address": 6420,
   "type": "line",
   "text": "Sets shot X's frame to $39."
  },
  {
   "address": 6425,
   "type": "line",
   "text": "Which of the seven slots are in flight: 0-3 the enemies' bullets, 4-6 Rambo's shots (shot_type at $191D)."
  },
  {
   "address": 6427,
   "type": "line",
   "text": "Bullet slots 2-6 of bullet_active."
  },
  {
   "address": 6429,
   "type": "line",
   "text": "The type of each of Rambo's three shots, 0 when free."
  },
  {
   "address": 6432,
   "type": "line",
   "text": "Steps the explosion frame every third call up to $45, then ends the shot."
  },
  {
   "address": 6455,
   "type": "line",
   "text": "Frames until each explosion's next step."
  },
  {
   "address": 6458,
   "type": "line",
   "text": "explosion_animate's end: frees the shot ($17EF)."
  },
  {
   "address": 6461,
   "type": "line",
   "text": "Sets the panel's weapon icons (sprite pointers $225E, $2261, $2262/$2263) from the weapons owned ($19ED): bits 0 and 3 show or blank two icons, bits 4-5 pick a pair from $1975."
  },
  {
   "address": 6517,
   "type": "line",
   "text": "Sprite pointer pairs for the panel's third weapon icon, by the weapons owned."
  },
  {
   "address": 6518,
   "type": "line",
   "text": "The panel icon pairs continue."
  },
  {
   "address": 6525,
   "type": "line",
   "text": "Copies the eight panel icon colours from $226D to $2265."
  },
  {
   "address": 6537,
   "type": "line",
   "text": "Each frame sets the selected weapon's icon colour ($2265 + weapon $0E, or two cells for weapons 4 and 5) to the flashing colour $1B17 indexed by $1B16; the energy icon uses it too, and turns to colour 7 when energy is $0A or more."
  },
  {
   "address": 6589,
   "type": "line",
   "text": "On each new press of the space bar (key $3C) steps $0E down to the previous owned weapon ($19ED masks $19EE), wrapping from 0 to 5, and toggles music ($0CCC) on the same key test; repeats after $0A frames while held."
  },
  {
   "address": 6635,
   "type": "line",
   "text": "Frames before a held space bar selects again."
  },
  {
   "address": 6636,
   "type": "line",
   "text": "Character row of the damaged point, worked out by tile_destroy."
  },
  {
   "address": 6637,
   "type": "line",
   "text": "One bit per weapon Rambo carries; starts as 7 (weapons 0-2)."
  },
  {
   "address": 6638,
   "type": "line",
   "text": "The bit of each weapon in weapons_owned."
  },
  {
   "address": 6639,
   "type": "line",
   "text": "The bit patterns sprite_bit_cycle writes."
  },
  {
   "address": 6646,
   "type": "line",
   "text": "Character column of the damaged point."
  },
  {
   "address": 6647,
   "type": "line",
   "text": "On a new press of fire ($1D06 bit 4) starts a shot in a free slot of three: type $1AA0 and sound $1A9A for the weapon $0E, launched from Rambo's position with the frame and steps of the weapon and the last stick direction ($1D0B); weapon 4 adds 5 to the spawn budget, weapon 3 throws (type 9 with an arc)."
  },
  {
   "address": 6810,
   "type": "line",
   "text": "The sound each weapon makes when fired."
  },
  {
   "address": 6816,
   "type": "line",
   "text": "The shot type each weapon fires."
  },
  {
   "address": 6822,
   "type": "line",
   "text": "The colour of each weapon's shot."
  },
  {
   "address": 6828,
   "type": "line",
   "text": "Shot frames by direction, for weapons without their own."
  },
  {
   "address": 6839,
   "type": "line",
   "text": "Shot frames by direction for weapons 1 and 2."
  },
  {
   "address": 6850,
   "type": "line",
   "text": "Shot frames by direction for weapon 5."
  },
  {
   "address": 6861,
   "type": "line",
   "text": "Horizontal step of a shot for each stick direction."
  },
  {
   "address": 6872,
   "type": "line",
   "text": "Vertical step of a shot for each stick direction."
  },
  {
   "address": 6883,
   "type": "line",
   "text": "Horizontal step of a thrown shot for each direction."
  },
  {
   "address": 6894,
   "type": "line",
   "text": "Vertical step of a thrown shot for each direction."
  },
  {
   "address": 6905,
   "type": "line",
   "text": "Horizontal step of each of Rambo's three shots."
  },
  {
   "address": 6908,
   "type": "line",
   "text": "Vertical step of each of Rambo's three shots."
  },
  {
   "address": 6911,
   "type": "line",
   "text": "The fire bit as last read, so one press fires once."
  },
  {
   "address": 6912,
   "type": "line",
   "text": "Steps the flash colour index $1B16 down from 7 every third frame."
  },
  {
   "address": 6933,
   "type": "line",
   "text": "Frames until the flash colour steps."
  },
  {
   "address": 6934,
   "type": "line",
   "text": "Index of the flash colour in $1B17."
  },
  {
   "address": 6935,
   "type": "line",
   "text": "The eight colours the selected weapon's icon cycles through."
  },
  {
   "address": 6943,
   "type": "line",
   "text": "Moves Rambo's sprite down one line, to row $AF at most, when the screen cannot scroll down ($1BCE)."
  },
  {
   "address": 6958,
   "type": "line",
   "text": "Moves Rambo up one line, to row $7D at least, when the screen cannot scroll."
  },
  {
   "address": 6973,
   "type": "line",
   "text": "Moves Rambo right one pixel, to $DE at most, when the screen cannot scroll right."
  },
  {
   "address": 6988,
   "type": "line",
   "text": "Moves Rambo left one pixel, to $7A at least, when the screen cannot scroll left."
  },
  {
   "address": 7003,
   "type": "line",
   "text": "Decides for left and right whether Rambo moves on screen or the screen scrolls: Rambo walks within columns $7A-$DE and the map scrolls when he presses against them; sets the bits of $1BCE."
  },
  {
   "address": 7034,
   "type": "line",
   "text": "Moves Rambo by the stick: each direction pressed moves his sprite (the four routines above) where he is inside the box, and the bits that moved him are cleared from the scroll mask $1D07."
  },
  {
   "address": 7117,
   "type": "line",
   "text": "The stick bits rambo_move still has to handle."
  },
  {
   "address": 7118,
   "type": "line",
   "text": "Which directions have Rambo at the edge of his box, so the screen scrolls instead."
  },
  {
   "address": 7119,
   "type": "line",
   "text": "Builds the scroll mask $1D07 for the jungle: diagonals are allowed only when the fine scrolls agree (so the screen scrolls one axis at a time), otherwise the stick bits pass."
  },
  {
   "address": 7190,
   "type": "line",
   "text": "The same for the helicopter stage, where the scroll moves two pixels a step."
  },
  {
   "address": 7270,
   "type": "line",
   "text": "The fine scroll the diagonal test compares against."
  },
  {
   "address": 7271,
   "type": "line",
   "text": "Scrolls one pixel a frame in each direction the mask $1D07 allows ($1F29 north, $2036 south, $1D6F west, $1E50 east), recording the scroll deltas $0C and $0D and coarse-scroll requests in $0A."
  },
  {
   "address": 7324,
   "type": "line",
   "text": "The same at two pixels a step for the helicopter stage ($1F4B, $204E, $1D91, $1E68)."
  },
  {
   "address": 7376,
   "type": "line",
   "text": "Reads both joystick ports ($DC00 and $DC01, active low) into $1D06 and $1D0A, keeps the last direction in $1D0B, and returns all zero while input is locked ($1CE4); during the rescue it calls $08AD instead."
  },
  {
   "address": 7396,
   "type": "line",
   "text": "While set, read_stick returns nothing."
  },
  {
   "address": 7397,
   "type": "line",
   "text": "read_stick continues: during the rescue the stick is replaced ($08AD); otherwise reads the ports."
  },
  {
   "address": 7430,
   "type": "line",
   "text": "The stick this frame: bit 0 up, 1 down, 2 left, 3 right, 4 fire, set when pressed."
  },
  {
   "address": 7431,
   "type": "line",
   "text": "Directions the screen may scroll this frame."
  },
  {
   "address": 7432,
   "type": "line",
   "text": "Written with the other stick bytes by pow_scroll_lock during the rescue."
  },
  {
   "address": 7433,
   "type": "line",
   "text": "The second of the two stick bytes pow_scroll_lock writes during the rescue."
  },
  {
   "address": 7434,
   "type": "line",
   "text": "The stick as read, before this frame's masks."
  },
  {
   "address": 7435,
   "type": "line",
   "text": "The last direction pressed; shots fly this way."
  },
  {
   "address": 7436,
   "type": "line",
   "text": "If the fine scroll wrapped ($0A), sets $1D30 and moves the screen one character: bit 0 down ($1F67), bit 1 up ($206A), bit 2 right ($1DAD), bit 3 left ($1E82)."
  },
  {
   "address": 7451,
   "type": "line",
   "text": "Calls the screen shift for the lowest set bit of A: 0 north ($1F67), 1 south ($206A), 2 west ($1DAD), 3 east ($1E82)."
  },
  {
   "address": 7472,
   "type": "line",
   "text": "The coarse scroll done this frame, for scroll_redraw."
  },
  {
   "address": 7474,
   "type": "line",
   "text": "Set to 4 by game_init; nothing reads it as far as the references search shows."
  },
  {
   "address": 7475,
   "type": "line",
   "text": "Copies the object table into the multiplexer's copy (Y $37, X $6F, X bit 8 $53, order $A7) once a frame, so the interrupt draws a consistent frame; Rambo's frame $D1 goes to $D2."
  },
  {
   "address": 7526,
   "type": "line",
   "text": "Waits for the interrupt's frame count $2334 and takes one from it."
  },
  {
   "address": 7535,
   "type": "line",
   "text": "Moves the view one pixel west ($E4 up, the picture moves right); at 7 wraps to 0 and requests a coarse scroll (bit 2 of $0A); sets $D016."
  },
  {
   "address": 7545,
   "type": "line",
   "text": "Writes the horizontal fine scroll $E4 to $D016 with multicolour on."
  },
  {
   "address": 7569,
   "type": "line",
   "text": "Two pixels west, for the helicopter stage."
  },
  {
   "address": 7597,
   "type": "line",
   "text": "Moves the 25 rows of the screen at $4000 one character right and decrements the map column $F8; the left column is redrawn after."
  },
  {
   "address": 7760,
   "type": "line",
   "text": "One pixel east ($E4 down), wrapping to 7 with a coarse request in bit 3."
  },
  {
   "address": 7784,
   "type": "line",
   "text": "Two pixels east, for the helicopter stage."
  },
  {
   "address": 7810,
   "type": "line",
   "text": "Moves the screen one character left and increments $F8."
  },
  {
   "address": 7977,
   "type": "line",
   "text": "Moves the view one line north ($E3 up, the picture moves down), wrapping at 7 with a coarse request in bit 0; sets $D011 ($1F33)."
  },
  {
   "address": 7987,
   "type": "line",
   "text": "Writes the vertical fine scroll $E3 to $D011 with the screen on."
  },
  {
   "address": 8011,
   "type": "line",
   "text": "Two lines north, for the helicopter stage."
  },
  {
   "address": 8039,
   "type": "line",
   "text": "The view moves north a character: increments the map row $FE/$FF (the row shown at the top, counting northward) and moves the 25 screen rows down one row (the bottom row goes through the buffer at $200E)."
  },
  {
   "address": 8206,
   "type": "line",
   "text": "One screen row, saved while shift_screen_down moves the rows."
  },
  {
   "address": 8246,
   "type": "line",
   "text": "One line south, wrapping with a coarse request in bit 1."
  },
  {
   "address": 8270,
   "type": "line",
   "text": "Two lines south, for the helicopter stage."
  },
  {
   "address": 8298,
   "type": "line",
   "text": "The view moves south a character: decrements the map row and moves the screen up one row."
  },
  {
   "address": 8466,
   "type": "line",
   "text": "Waits for the second interrupt count $22C4 and takes one from it."
  },
  {
   "address": 8475,
   "type": "line",
   "text": "Installs the game's raster interrupt at $214B through the RAM vector $FFFE, enables the raster interrupt only, banks the ROMs out ($01 = $35) and starts the multiplexer."
  },
  {
   "address": 8523,
   "type": "line",
   "text": "The game's raster interrupt: acknowledges it, calls the handler whose address the JSR at $2155 holds, then alternates that address between the two handlers in $2178: the panel and game-logic handler ($217C) and the sprite multiplexer ($22C5)."
  },
  {
   "address": 8534,
   "type": "line",
   "text": "The address in the JSR at $2155, written by irq_game each interrupt from $2178 (alternately $217C and $22C5)."
  },
  {
   "address": 8535,
   "type": "line",
   "text": "High byte of the handler address at $2156. From here irq_game steps its handler index and leaves the interrupt."
  },
  {
   "address": 8568,
   "type": "line",
   "text": "The two handler addresses irq_game alternates between: $22C5 and $217C."
  },
  {
   "address": 8569,
   "type": "line",
   "text": "The second handler address of irq_game's table."
  },
  {
   "address": 8572,
   "type": "line",
   "text": "At the bottom of the screen: draws the panel's eight sprites (energy bar, weapons), then runs the frame's input work: Rambo's ground test ($15CB, or $3006 in the helicopter), the flash counter, the scroll mask, the map edges, the pause key (stops the game and silences the SID), Rambo's movement or the helicopter's, the animated sprite bits and the scroll ($2275)."
  },
  {
   "address": 8792,
   "type": "line",
   "text": "X positions of the six panel sprites drawn by irq_panel."
  },
  {
   "address": 8798,
   "type": "line",
   "text": "Sprite pointers of the six panel sprites (the weapon icons, set by panel_weapons)."
  },
  {
   "address": 8801,
   "type": "line",
   "text": "The second weapon icon's sprite pointer."
  },
  {
   "address": 8802,
   "type": "line",
   "text": "The third weapon icon's sprite pointer."
  },
  {
   "address": 8803,
   "type": "line",
   "text": "The sixth panel sprite's pointer, which irq_panel writes to $43FF (hardware sprite 7)."
  },
  {
   "address": 8804,
   "type": "line",
   "text": "The flashing colour irq_panel gives the first two panel sprites."
  },
  {
   "address": 8805,
   "type": "line",
   "text": "Colours of the panel's weapon icons."
  },
  {
   "address": 8809,
   "type": "line",
   "text": "Colour of panel icon 4 (weapon 4)."
  },
  {
   "address": 8810,
   "type": "line",
   "text": "Colour of panel icon 5."
  },
  {
   "address": 8811,
   "type": "line",
   "text": "Colour of panel icons 6 and 7 (weapon 5), written to $D02D and $D02E."
  },
  {
   "address": 8812,
   "type": "line",
   "text": "Colour of the last panel icon."
  },
  {
   "address": 8813,
   "type": "line",
   "text": "The panel colours panel_colours_reset copies."
  },
  {
   "address": 8821,
   "type": "line",
   "text": "Sets the next interrupt at line 0, updates the panel flash, scrolls, and draws Rambo as hardware sprite 0 from his object (13)."
  },
  {
   "address": 8898,
   "type": "line",
   "text": "Set during the helicopter stage; the interrupt runs the helicopter's steering and scroll instead of Rambo's."
  },
  {
   "address": 8900,
   "type": "line",
   "text": "Counted up by the panel interrupt each frame; frame_wait_irq2 waits for it."
  },
  {
   "address": 8901,
   "type": "line",
   "text": "The sprite multiplexer: walks the objects in Y order ($A7), and for each active one ($C3) reuses hardware sprites 1-7 in turn, setting position, colour and frame; when the next object is further down than the raster it sets the next interrupt 12 lines above it ($2335) and returns; at the end resets for the next frame and sets the panel interrupt at line $DB."
  },
  {
   "address": 9012,
   "type": "line",
   "text": "Counted up by the multiplexer at the end of each frame; frame_wait_irq waits for it."
  },
  {
   "address": 9013,
   "type": "line",
   "text": "Schedules the multiplexer's next interrupt above the next object and leaves the interrupt."
  },
  {
   "address": 9037,
   "type": "line",
   "text": "For each hardware sprite, $D010 with that sprite's bit clear."
  },
  {
   "address": 9045,
   "type": "line",
   "text": "For each hardware sprite, its bit in $D010."
  },
  {
   "address": 9053,
   "type": "line",
   "text": "A scratch byte used by many routines."
  },
  {
   "address": 9054,
   "type": "line",
   "text": "Sets the object order list ($B5) to 0-13, parks every object at row $14, enables all sprites and sorts."
  },
  {
   "address": 9086,
   "type": "line",
   "text": "Steps the random number generator ($23BE-$23C1, a 32-bit shift register mixed with CIA 1's timer $DC04) and returns the new byte."
  },
  {
   "address": 9117,
   "type": "line",
   "text": "Returns a random number from 0 to A-1 (the random byte times A, high byte), keeping X."
  },
  {
   "address": 9120,
   "type": "line",
   "text": "Named only by the BIT $23A0 skip in the music driver at $84A0; random_below continues here, multiplying the random byte by A."
  },
  {
   "address": 9150,
   "type": "line",
   "text": "The four bytes of the random number generator."
  },
  {
   "address": 9151,
   "type": "line",
   "text": "Byte 1 of the random state."
  },
  {
   "address": 9152,
   "type": "line",
   "text": "Byte 2 of the random state."
  },
  {
   "address": 9153,
   "type": "line",
   "text": "Byte 3 of the random state."
  },
  {
   "address": 9154,
   "type": "line",
   "text": "Sorts the object order list $B5 by Y ($45) with a Shell sort, so the multiplexer meets them top to bottom."
  },
  {
   "address": 9233,
   "type": "line",
   "text": "Fourteen zero bytes between objects_sort and score_draw; nothing reads them."
  },
  {
   "address": 9247,
   "type": "line",
   "text": "Draws each score digit that changed since the last frame ($2483 against $2489), as three characters from the digit font at $3980 into the panel at $442A."
  },
  {
   "address": 9276,
   "type": "line",
   "text": "Draws score digit A at position X: copies its seven bytes from the digit font at $3980 into every third byte of the panel sprite at $442A (positions 3-5 into the second sprite, $442A + $3C)."
  },
  {
   "address": 9314,
   "type": "line",
   "text": "Adds the pending amounts $248F to the six decimal score digits $2483, carrying, and clears them."
  },
  {
   "address": 9347,
   "type": "line",
   "text": "The six score digits, most significant first."
  },
  {
   "address": 9348,
   "type": "line",
   "text": "The score digits continue."
  },
  {
   "address": 9353,
   "type": "line",
   "text": "The digits last drawn, so only changed ones are redrawn."
  },
  {
   "address": 9358,
   "type": "line",
   "text": "One before score_pending, where score_add carries into the next digit."
  },
  {
   "address": 9359,
   "type": "line",
   "text": "Amounts to add to each score digit this frame."
  },
  {
   "address": 9361,
   "type": "line",
   "text": "Score digit 3's pending amount (the hundreds), where POWs and pick-ups score."
  },
  {
   "address": 9362,
   "type": "line",
   "text": "Score digit 4's pending amount, where killed enemies score."
  },
  {
   "address": 9366,
   "type": "line",
   "text": "Box overlap test: carry set when the points ($24D9/$24DA, $24DD) and ($24DB/$24DC, $24DE) are within $24DF horizontally and $24E0 vertically; X positions are halved first."
  },
  {
   "address": 9433,
   "type": "line",
   "text": "First point's X (two bytes) for box_hit."
  },
  {
   "address": 9434,
   "type": "line",
   "text": "Bit 8 of the first point's X for box_hit."
  },
  {
   "address": 9435,
   "type": "line",
   "text": "Second point's X (two bytes) for box_hit."
  },
  {
   "address": 9436,
   "type": "line",
   "text": "Bit 8 of the second point's X for box_hit."
  },
  {
   "address": 9437,
   "type": "line",
   "text": "First point's Y for box_hit."
  },
  {
   "address": 9438,
   "type": "line",
   "text": "Second point's Y for box_hit."
  },
  {
   "address": 9439,
   "type": "line",
   "text": "Half-width of the box for box_hit."
  },
  {
   "address": 9440,
   "type": "line",
   "text": "Half-height of the box for box_hit."
  },
  {
   "address": 9441,
   "type": "line",
   "text": "One bullet slot a frame: moves an active bullet ($24F7) or tries to fire a new one ($2586)."
  },
  {
   "address": 9462,
   "type": "line",
   "text": "The bullet slot enemy_fire handles next."
  },
  {
   "address": 9463,
   "type": "line",
   "text": "Moves bullet X along its line (Bresenham steps: $2621 directions and major axis, $2625/$262D counts, $2629 error), two lines a step vertically; frees it at the window's edges."
  },
  {
   "address": 9469,
   "type": "line",
   "text": "Frees bullet X: inactive, row $0A, one fewer active."
  },
  {
   "address": 9606,
   "type": "line",
   "text": "Picks a random enemy; if it is walking, with a chance of one in ((255 - row/4)/4), which grows as Rambo goes north (the map row $FE/$FF increases), fires a bullet from it aimed at Rambo: sets up the line from the enemy to Rambo ($2621-$262D), frame $12, colour $0F, and adds one to the spawn budget."
  },
  {
   "address": 9761,
   "type": "line",
   "text": "Each bullet's directions (bit 0 down, bit 1 right) and whether X is the major axis (bit 7)."
  },
  {
   "address": 9765,
   "type": "line",
   "text": "Each bullet's minor-axis distance."
  },
  {
   "address": 9769,
   "type": "line",
   "text": "Each bullet's line-drawing error term."
  },
  {
   "address": 9773,
   "type": "line",
   "text": "Each bullet's major-axis distance."
  },
  {
   "address": 9777,
   "type": "line",
   "text": "Tests the key whose code is in A (row = A/8, column = A and 7) by driving CIA 1's port A; returns carry set when that key is down and the joystick is not pressing the same line."
  },
  {
   "address": 9835,
   "type": "line",
   "text": "Y saved by key_test."
  },
  {
   "address": 9836,
   "type": "line",
   "text": "CIA 1 port A values that select each keyboard row."
  },
  {
   "address": 9844,
   "type": "line",
   "text": "The bit of each keyboard column in port B."
  },
  {
   "address": 9852,
   "type": "line",
   "text": "A second scratch byte."
  },
  {
   "address": 9853,
   "type": "line",
   "text": "A third scratch byte (the multiplier of random_below)."
  },
  {
   "address": 9854,
   "type": "line",
   "text": "Column where a marker was found, for marker_place_row."
  },
  {
   "address": 9857,
   "type": "line",
   "text": "Draws the screen's right column from the map: for each of the 25 rows reads the map tile ($E000 + row/8*16 + column/8) and the character within that 8-by-8 tile (tile data at $EF00 + tile*64); a marker $FD calls $0EB2."
  },
  {
   "address": 9905,
   "type": "line",
   "text": "The same for the left column."
  },
  {
   "address": 10022,
   "type": "line",
   "text": "The screen address the column drawers write (operand at $2725)."
  },
  {
   "address": 10023,
   "type": "line",
   "text": "High byte of the screen address at $2726. From here the column drawers step down the rows, moving to the next tile row every eight characters."
  },
  {
   "address": 10089,
   "type": "line",
   "text": "Draws the bottom screen row from the map ($27B4, starting $18 rows below $FE)."
  },
  {
   "address": 10142,
   "type": "line",
   "text": "Draws the top screen row from the map."
  },
  {
   "address": 10164,
   "type": "line",
   "text": "Draws one screen row of 40 characters at the address in $281D/$281E from the map row $FE, five tiles across starting at column $F8; a marker $FD calls $0EEE."
  },
  {
   "address": 10269,
   "type": "line",
   "text": "The address in the STA $4000,x at $281C, set by the row drawers to the top or bottom row."
  },
  {
   "address": 10270,
   "type": "line",
   "text": "High byte of the screen address at $281D."
  },
  {
   "address": 10274,
   "type": "line",
   "text": "The limit in the CPY at $2821, set to the end of the tile row being copied."
  },
  {
   "address": 10291,
   "type": "line",
   "text": "An unused copy of the row drawer (draw_bottom_row and draw_map_row), assembled for working bytes at $28E0/$28E1, after the \"END\" marker $C5 $CE $C4; nothing calls it."
  },
  {
   "address": 12288,
   "type": "line",
   "text": "Entry points of the helicopter stage: $3000 places the enemy gunship's four sprites ($35C3, called from the interrupt), $3003 starts the stage ($37B7), $3006 the per-frame helicopter steering ($36C6, called from the interrupt)."
  },
  {
   "address": 12291,
   "type": "line",
   "text": "Jump table entry: start the helicopter stage ($37B7)."
  },
  {
   "address": 12294,
   "type": "line",
   "text": "Jump table entry: steer the helicopter ($36C6)."
  },
  {
   "address": 12297,
   "type": "line",
   "text": "The helicopter stage's main loop: frame wait, scroll redraw, coarse scroll, music, stick, landing check ($356E), gunship ($3066), Rambo's rocket ($3210, $3140, $3272), weapon key, shot collisions ($319D), the stage-end test ($303F), the gunship's fire timer ($304E), score draw and add, and the sort; then again."
  },
  {
   "address": 12351,
   "type": "line",
   "text": "Applies damage ($0C89 through the jump table); when the energy is gone ($0F) unwinds the stack and leaves to the jungle engine's $0376."
  },
  {
   "address": 12366,
   "type": "line",
   "text": "The helicopter's fuel: counts $3063 down and at zero reloads it from $3064 (indexed by whether the gunship pursues, $3825) and adds one to the damage counter $0B, so the energy bar drains steadily while flying."
  },
  {
   "address": 12387,
   "type": "line",
   "text": "Frames until the helicopter's fuel next costs a unit of energy."
  },
  {
   "address": 12388,
   "type": "line",
   "text": "The fuel timer's reload, without and with the gunship pursuing."
  },
  {
   "address": 12390,
   "type": "line",
   "text": "While the gunship flies ($30C3 clear) steers it toward the helicopter ($3484, $3373), sets its frame ($32D9) and screen position ($3316), then tests its body against the helicopter ($30C4); once downed ($30C3 set) it drifts away for three steps a frame and climbs out, and when it is off screen resets for another pass with $3127 at 4 again."
  },
  {
   "address": 12466,
   "type": "line",
   "text": "Steps the gunship's frame counter $3774 from 0 to $0B and round again."
  },
  {
   "address": 12483,
   "type": "line",
   "text": "Set on a rocket hit that comes when gunship_hits_left is already 0, so on the fifth hit; the gunship then drifts away."
  },
  {
   "address": 12484,
   "type": "line",
   "text": "When Rambo's rocket is in flight ($32D7 = 1) and the gunship is on screen ($3315), tests the rocket (shot slot 1, object 10) against the gunship, half-height from $3128 and half-width from $3134 by its frame ($3897); on a hit explodes the rocket, adds 2 to score digit 2 and counts $3127 down, the gunship being downed ($30C3) by the hit that finds it at 0, the fifth."
  },
  {
   "address": 12583,
   "type": "line",
   "text": "Hits left before the gunship is downed, from 4: the hit that finds it at 0 downs it, the fifth."
  },
  {
   "address": 12584,
   "type": "line",
   "text": "Half-height of the gunship's hit box for each of its 12 frames (heli_box_hit compares it on Y)."
  },
  {
   "address": 12596,
   "type": "line",
   "text": "Half-width of the gunship's hit box for each frame."
  },
  {
   "address": 12608,
   "type": "line",
   "text": "With weapon 5 selected and fire pressed ($3770 bit 4), launches Rambo's rocket (shot slot 1) from the helicopter's position if none is in flight ($32D7)."
  },
  {
   "address": 12650,
   "type": "line",
   "text": "Turns shot X into an explosion: frame $41, colour 5, sound $0E."
  },
  {
   "address": 12673,
   "type": "line",
   "text": "Steps the explosion frame every third call up to $45, then ends it ($32C8)."
  },
  {
   "address": 12699,
   "type": "line",
   "text": "Frames until each helicopter-stage explosion's next step."
  },
  {
   "address": 12701,
   "type": "line",
   "text": "When the gunship's shot (shot slot 0, object 9; $32D6 = 1) is in flight, tests it against the helicopter's two halves (objects 12 and 4); a hit adds 5 to the damage counter $0B and explodes the shot."
  },
  {
   "address": 12816,
   "type": "line",
   "text": "When the fire count $32D8 allows and the gunship pursues ($3825) and is on screen, fires its shot from its position in the direction of its frame ($324C)."
  },
  {
   "address": 12876,
   "type": "line",
   "text": "The direction (gunship frame) the gunship's shot was fired in."
  },
  {
   "address": 12877,
   "type": "line",
   "text": "The helicopter's heading when the rocket was fired."
  },
  {
   "address": 12878,
   "type": "line",
   "text": "Vertical step of a shot for each of the 12 directions."
  },
  {
   "address": 12890,
   "type": "line",
   "text": "Horizontal step of a shot for each direction."
  },
  {
   "address": 12902,
   "type": "line",
   "text": "Sprite frame of a shot for each direction."
  },
  {
   "address": 12914,
   "type": "line",
   "text": "Moves the two helicopter-stage shots: an exploding one ($3181) or a flying one ($3288)."
  },
  {
   "address": 12936,
   "type": "line",
   "text": "Moves shot X by the step for its direction ($325A X, $324E Y, frame $3266) plus the scroll, and ends it at the window's edges."
  },
  {
   "address": 13012,
   "type": "line",
   "text": "The shot's vertical step this frame."
  },
  {
   "address": 13013,
   "type": "line",
   "text": "The shot's horizontal step this frame."
  },
  {
   "address": 13014,
   "type": "line",
   "text": "State of the two shots (0 free, 1 flying, 2 exploding): the gunship's and the rocket."
  },
  {
   "address": 13015,
   "type": "line",
   "text": "State of Rambo's rocket."
  },
  {
   "address": 13016,
   "type": "line",
   "text": "Shots the gunship may fire, counted up when it lines up with the helicopter."
  },
  {
   "address": 13017,
   "type": "line",
   "text": "Converts the gunship's heading into its frame (the steering routine $36CE with Y = 1)."
  },
  {
   "address": 13022,
   "type": "line",
   "text": "Marks the gunship's four parts (objects 5-8) active when they are on screen and the gunship pursues; sets $3315 when it is visible."
  },
  {
   "address": 13077,
   "type": "line",
   "text": "Set while the gunship is on screen."
  },
  {
   "address": 13078,
   "type": "line",
   "text": "Converts the gunship's position to screen coordinates ($362E X, $362F Y) when it is within the visible window, from its column $3568, its row $347F/$3480 and the low bytes $3564 and $3566."
  },
  {
   "address": 13165,
   "type": "line",
   "text": "Scratch byte of the helicopter stage."
  },
  {
   "address": 13166,
   "type": "line",
   "text": "Second scratch byte."
  },
  {
   "address": 13171,
   "type": "line",
   "text": "Moves the gunship vertically toward the helicopter's map row with an accelerating speed ($3481, up to $1F) and a fractional accumulator ($3482); reverses through zero speed when it overshoots ($340F, $3444)."
  },
  {
   "address": 13201,
   "type": "line",
   "text": "Works out whether the gunship is north or south of the helicopter ($356A/$356B is the helicopter's row plus $0F); when level it counts a shot ($32D8) and keeps only the horizontal heading."
  },
  {
   "address": 13326,
   "type": "line",
   "text": "The gunship's vertical step this frame."
  },
  {
   "address": 13327,
   "type": "line",
   "text": "gunship_compare_y continues: the gunship is south of the helicopter; accelerates north, or reverses through zero speed."
  },
  {
   "address": 13439,
   "type": "line",
   "text": "The gunship's map row (low byte), worked out for the comparison."
  },
  {
   "address": 13440,
   "type": "line",
   "text": "High byte of the gunship's map row."
  },
  {
   "address": 13441,
   "type": "line",
   "text": "The gunship's vertical speed (0-$1F)."
  },
  {
   "address": 13442,
   "type": "line",
   "text": "Fractional accumulator of the vertical speed."
  },
  {
   "address": 13443,
   "type": "line",
   "text": "The gunship's vertical direction (1 south)."
  },
  {
   "address": 13444,
   "type": "line",
   "text": "The same horizontally ($355F speed, $3560 accumulator), toward the helicopter's column."
  },
  {
   "address": 13474,
   "type": "line",
   "text": "Works out whether the gunship is east or west of the helicopter."
  },
  {
   "address": 13534,
   "type": "line",
   "text": "A zero byte between gunship_compare_x and gunship_x_inc; nothing reads it."
  },
  {
   "address": 13535,
   "type": "line",
   "text": "Moves the gunship one unit east."
  },
  {
   "address": 13553,
   "type": "line",
   "text": "Moves the gunship one unit west."
  },
  {
   "address": 13663,
   "type": "line",
   "text": "The gunship's horizontal speed (0-$1F)."
  },
  {
   "address": 13664,
   "type": "line",
   "text": "Fractional accumulator of the horizontal speed."
  },
  {
   "address": 13665,
   "type": "line",
   "text": "The gunship's horizontal direction."
  },
  {
   "address": 13668,
   "type": "line",
   "text": "The gunship's map X, low byte."
  },
  {
   "address": 13669,
   "type": "line",
   "text": "The gunship's map X, high byte."
  },
  {
   "address": 13670,
   "type": "line",
   "text": "The gunship's map Y, low byte."
  },
  {
   "address": 13671,
   "type": "line",
   "text": "The gunship's map Y, high byte."
  },
  {
   "address": 13672,
   "type": "line",
   "text": "The gunship's map column, for the comparison."
  },
  {
   "address": 13673,
   "type": "line",
   "text": "The helicopter's map column plus $16."
  },
  {
   "address": 13674,
   "type": "line",
   "text": "The helicopter's map row plus $0F, low byte."
  },
  {
   "address": 13675,
   "type": "line",
   "text": "High byte of the helicopter's row."
  },
  {
   "address": 13678,
   "type": "line",
   "text": "Checks the map character under the helicopter (object 12); characters $1B-$1D are a landing site. Once $E6 is set it can land only from map row $300 northward. Landing plays sounds 8 and $15; with $E6 set it awards score digit 0, shows message 4 through $037F and restarts the game; otherwise it sets $E6 and returns to the jungle with Rambo's position in X and Y."
  },
  {
   "address": 13763,
   "type": "line",
   "text": "Places the gunship's four sprites (objects 5-8) around its screen position with the offsets for its frame ($3684/$3690 and the three pairs after), frames $3630+0..3 and colour $0F, marks them visible ($32DE), and plays the engine sound for whether it is visible."
  },
  {
   "address": 13868,
   "type": "line",
   "text": "The engine sound for the gunship hidden and visible."
  },
  {
   "address": 13870,
   "type": "line",
   "text": "The gunship's screen X."
  },
  {
   "address": 13871,
   "type": "line",
   "text": "The gunship's screen Y."
  },
  {
   "address": 13872,
   "type": "line",
   "text": "First sprite frame of the gunship for each of its 12 headings (four sprites from there)."
  },
  {
   "address": 13884,
   "type": "line",
   "text": "X offset of the gunship's second sprite, by heading."
  },
  {
   "address": 13896,
   "type": "line",
   "text": "Y offset of the second sprite."
  },
  {
   "address": 13908,
   "type": "line",
   "text": "X offset of the third sprite."
  },
  {
   "address": 13920,
   "type": "line",
   "text": "Y offset of the third sprite."
  },
  {
   "address": 13932,
   "type": "line",
   "text": "X offset of the fourth sprite."
  },
  {
   "address": 13944,
   "type": "line",
   "text": "Y offset of the fourth sprite."
  },
  {
   "address": 13956,
   "type": "line",
   "text": "X offset of the first sprite from the gunship's position."
  },
  {
   "address": 13968,
   "type": "line",
   "text": "Y offset of the first sprite."
  },
  {
   "address": 13980,
   "type": "line",
   "text": "Two animation timers ($36C0/$36C2 delays, $36C4 four-step counters), one for the helicopter's rotor and one for the gunship's."
  },
  {
   "address": 14016,
   "type": "line",
   "text": "Frames until each rotor's next step."
  },
  {
   "address": 14018,
   "type": "line",
   "text": "The two rotors' step delays."
  },
  {
   "address": 14020,
   "type": "line",
   "text": "The helicopter's rotor step (0-3)."
  },
  {
   "address": 14021,
   "type": "line",
   "text": "The gunship's rotor step."
  },
  {
   "address": 14022,
   "type": "line",
   "text": "The helicopter's frame-by-frame steering, then its rotor timers ($369C), its sprite positions ($3827) and its object positions ($3775)."
  },
  {
   "address": 14030,
   "type": "line",
   "text": "Turns a heading toward the stick: the new direction $3771,y replaces the heading $375A,y only along an axis it is not already moving on, so the craft turns through the eight directions; the heading picks a frame base from $3751, plus the stick's other axis."
  },
  {
   "address": 14143,
   "type": "line",
   "text": "Rotor timers, sprite positions and object positions after the heading."
  },
  {
   "address": 14152,
   "type": "line",
   "text": "Masks of the stick axes each heading allows turning along."
  },
  {
   "address": 14161,
   "type": "line",
   "text": "The first frame of each heading."
  },
  {
   "address": 14170,
   "type": "line",
   "text": "The helicopter's and the gunship's headings."
  },
  {
   "address": 14172,
   "type": "line",
   "text": "The direction each craft was last asked to turn to."
  },
  {
   "address": 14174,
   "type": "line",
   "text": "The frame base worked out for each craft."
  },
  {
   "address": 14180,
   "type": "line",
   "text": "Reads the stick (through the jungle engine's jump table) into $3770 and its directions into $3771."
  },
  {
   "address": 14192,
   "type": "line",
   "text": "The stick in the helicopter stage."
  },
  {
   "address": 14193,
   "type": "line",
   "text": "Its four direction bits."
  },
  {
   "address": 14194,
   "type": "line",
   "text": "The gunship's own direction bits, set by its steering."
  },
  {
   "address": 14195,
   "type": "line",
   "text": "The helicopter's frame (0-11)."
  },
  {
   "address": 14196,
   "type": "line",
   "text": "The gunship's frame (0-11)."
  },
  {
   "address": 14197,
   "type": "line",
   "text": "Places the helicopter's second sprite (object 4) beside the first using the offsets for the heading ($3793 X, $379F Y) and its frames ($37AB)."
  },
  {
   "address": 14227,
   "type": "line",
   "text": "X offset of the helicopter's second sprite, by frame."
  },
  {
   "address": 14239,
   "type": "line",
   "text": "Y offset of the helicopter's second sprite, by frame."
  },
  {
   "address": 14251,
   "type": "line",
   "text": "Sprite frame of the second sprite."
  },
  {
   "address": 14263,
   "type": "line",
   "text": "Starts the helicopter stage with A saying whether the gunship pursues ($3825): sets the heading, the helicopter at $AC,$8C, the gunship's start position, clears the sprites, places the gunship, plays tune $19 and effect $14, and enters the stage loop."
  },
  {
   "address": 14373,
   "type": "line",
   "text": "Set when the gunship pursues (the second flight, after the hut)."
  },
  {
   "address": 14374,
   "type": "line",
   "text": "Alternates each frame between the helicopter's and the gunship's rotor."
  },
  {
   "address": 14375,
   "type": "line",
   "text": "On alternate frames places the helicopter's or the gunship's rotor sprite (Rambo's sprite 0 and object 13) over the craft, using the rotor timer for the offsets ($388E, $388A) and frame ($3892)."
  },
  {
   "address": 14472,
   "type": "line",
   "text": "The rotor sprite's Y this frame."
  },
  {
   "address": 14473,
   "type": "line",
   "text": "The rotor sprite's X this frame."
  },
  {
   "address": 14474,
   "type": "line",
   "text": "Rotor Y offset by step."
  },
  {
   "address": 14478,
   "type": "line",
   "text": "Rotor X offset by step."
  },
  {
   "address": 14482,
   "type": "line",
   "text": "The rotor's frames by step."
  },
  {
   "address": 14487,
   "type": "line",
   "text": "The helicopter stage's copy of the box overlap test, on $38DA-$38E1."
  },
  {
   "address": 14554,
   "type": "line",
   "text": "First point's X (two bytes) for heli_box_hit."
  },
  {
   "address": 14555,
   "type": "line",
   "text": "Bit 8 of the first point's X."
  },
  {
   "address": 14556,
   "type": "line",
   "text": "Second point's X for heli_box_hit."
  },
  {
   "address": 14557,
   "type": "line",
   "text": "Bit 8 of the second point's X."
  },
  {
   "address": 14558,
   "type": "line",
   "text": "First point's Y."
  },
  {
   "address": 14559,
   "type": "line",
   "text": "Second point's Y."
  },
  {
   "address": 14560,
   "type": "line",
   "text": "Half-width of the box."
  },
  {
   "address": 14561,
   "type": "line",
   "text": "Half-height of the box; the bytes after it to $3FFF are unread glyphs and filler."
  },
  {
   "address": 14720,
   "type": "line",
   "text": "The panel's score digits, seven bytes each, which score_digit_draw copies into the panel sprite."
  },
  {
   "address": 14848,
   "type": "line",
   "text": "Character-shaped bytes that no instruction reads and that lie outside the video bank the game uses ($4000-$7FFF); purpose not found."
  },
  {
   "address": 15872,
   "type": "line",
   "text": "The rest of the unread character-shaped bytes."
  },
  {
   "address": 17408,
   "type": "line",
   "text": "The two panel sprites (pointers $10 and $11): the words ENERGY and SCORE, the energy bar (redrawn by energy_bar_reset and energy_tick) and the score digits (score_digit_draw)."
  },
  {
   "address": 17450,
   "type": "line",
   "text": "Where score_digit_draw writes the first score digit into the panel sprite."
  },
  {
   "address": 17472,
   "type": "line",
   "text": "The second panel sprite (pointer $11), whose energy bar part energy_bar_reset redraws."
  },
  {
   "address": 17536,
   "type": "line",
   "text": "Sprite shapes for pointers $12-$21 (64 bytes each, in video bank 1). Frames here are used for: enemy bullet, panel icons, shots."
  },
  {
   "address": 18336,
   "type": "line",
   "text": "Named only by the BIT $47A0 skip in the music driver ($84BA); the sprite shapes continue."
  },
  {
   "address": 18400,
   "type": "line",
   "text": "Sprite shapes continue (pointer $1F)."
  },
  {
   "address": 18496,
   "type": "line",
   "text": "The full energy bar, copied into the panel sprite by energy_bar_reset."
  },
  {
   "address": 18517,
   "type": "line",
   "text": "The second half of the full energy bar."
  },
  {
   "address": 18560,
   "type": "line",
   "text": "Sprite shapes for pointers $22-$31 (64 bytes each, in video bank 1). Frames here are used for: items, panel icons, shots."
  },
  {
   "address": 19584,
   "type": "line",
   "text": "Sprite shapes for pointers $32-$41 (64 bytes each, in video bank 1). Frames here are used for: explosions, shots."
  },
  {
   "address": 20608,
   "type": "line",
   "text": "Sprite shapes for pointers $42-$51 (64 bytes each, in video bank 1). Frames here are used for: Rambo's walk, explosions."
  },
  {
   "address": 21632,
   "type": "line",
   "text": "Sprite shapes for pointers $52-$61 (64 bytes each, in video bank 1). Frames here are used for: Rambo's walk, helicopter rotor."
  },
  {
   "address": 22656,
   "type": "line",
   "text": "Sprite shapes for pointers $62-$71 (64 bytes each, in video bank 1). Frames here are used for: enemies' walk."
  },
  {
   "address": 23680,
   "type": "line",
   "text": "Sprite shapes for pointers $72-$81 (64 bytes each, in video bank 1). Frames here are used for: dying enemy, enemies' walk, rising enemy."
  },
  {
   "address": 24704,
   "type": "line",
   "text": "Sprite shapes for pointers $82-$91 (64 bytes each, in video bank 1). Frames here are used for: gunship."
  },
  {
   "address": 25728,
   "type": "line",
   "text": "Sprite shapes for pointers $92-$A1 (64 bytes each, in video bank 1). Frames here are used for: gunship."
  },
  {
   "address": 26752,
   "type": "line",
   "text": "Sprite shapes for pointers $A2-$B1 (64 bytes each, in video bank 1). Frames here are used for: gunship."
  },
  {
   "address": 27776,
   "type": "line",
   "text": "Sprite shapes for pointers $B2-$C1 (64 bytes each, in video bank 1). Frames here are used for: gunship, helicopter, items."
  },
  {
   "address": 28800,
   "type": "line",
   "text": "Sprite shapes for pointers $C2-$D1 (64 bytes each, in video bank 1). Frames here are used for: POWs, helicopter, helicopter rotor."
  },
  {
   "address": 29824,
   "type": "line",
   "text": "Sprite shapes for pointers $D2-$DF (64 bytes each, in video bank 1). Frames here are used for: POWs, items, name wheel pointer."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "At the hand-over, the front end's character set (letters, digits and the 2-by-2 large letters from $3C); swap_charset exchanges it with the game's set at $D000 for every message and front-end page."
  },
  {
   "address": 31744,
   "type": "line",
   "text": "The second half of the front end's character set (characters $80-$FF)."
  },
  {
   "address": 32472,
   "type": "line",
   "text": "In play, the eight bytes of character $DB of the game's character set, which sprite_bit_cycle animates each frame. At the hand-over this page holds the front-end font instead."
  },
  {
   "address": 32760,
   "type": "line",
   "text": "In play, the glyph of character $FF, which game_init clears to a blank."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "Heights of a thrown shot's arc, 28 steps, added to its base row by shot_arc."
  },
  {
   "address": 32796,
   "type": "line",
   "text": "The bytes $C5 $CE $C4 (\"END\" in shifted PETSCII) and padding: a marker left between the original modules, as at $2833 and $CF06."
  },
  {
   "address": 32802,
   "type": "line",
   "text": "A longer rising table of 53 values; the arc reader's index could reach it but the arc never passes step $1A."
  },
  {
   "address": 33024,
   "type": "line",
   "text": "The driver's single entry: A is a command number 0-30; the routine's address comes from the split table at $836E (low) and $838D (high) and is written into the JMP at $810D. 0 plays one frame, 1 silences everything, 2 returns non-zero while a tune plays, 3-7, 9-12, 27-29 start a tune, 13-19, 23, 24 and 30 start a sound effect, 20 and 22 start a repeating sound and 21 and 8 stop it, 25 rewrites the volume and filter, 26 sets which voices the tune may use (X)."
  },
  {
   "address": 33038,
   "type": "line",
   "text": "The routine address in the JMP at $810D, written by sound_command from its tables."
  },
  {
   "address": 33039,
   "type": "line",
   "text": "High byte of the command routine's address at $810E."
  },
  {
   "address": 33040,
   "type": "line",
   "text": "Voice 1: restarts the frequency slide from the note's base frequency ($822D/$822E into $8232/$8233) and reloads its four segment counters ($811C)."
  },
  {
   "address": 33052,
   "type": "line",
   "text": "Voice 1: reloads the four slide segment counters $8234-$8237 from the instrument ($821D-$8220)."
  },
  {
   "address": 33076,
   "type": "line",
   "text": "The end of v1_slide_counts."
  },
  {
   "address": 33077,
   "type": "line",
   "text": "Voice 1's current instrument's frequency-effect part: the arpeggio or slide parameters and the effect byte at $8142, loaded by the sequence commands; the pulse parameters are at $8143-$8146 and the bytes written to the SID at $814B-$814F."
  },
  {
   "address": 33090,
   "type": "line",
   "text": "The frequency-effect byte of voice 1's instrument."
  },
  {
   "address": 33091,
   "type": "line",
   "text": "The pulse-sweep parameters of voice 1's instrument."
  },
  {
   "address": 33094,
   "type": "line",
   "text": "Whether voice 1's instrument sweeps the pulse width."
  },
  {
   "address": 33101,
   "type": "line",
   "text": "Voice 1's instrument's waveform control byte."
  },
  {
   "address": 33105,
   "type": "line",
   "text": "Voice 1's table of note lengths, indexed by the length byte of a note below $60."
  },
  {
   "address": 33122,
   "type": "line",
   "text": "Voice 1's sequence return stack, low bytes."
  },
  {
   "address": 33130,
   "type": "line",
   "text": "Voice 1's sequence return stack, high bytes."
  },
  {
   "address": 33138,
   "type": "line",
   "text": "Voice 1's repeat counts."
  },
  {
   "address": 33146,
   "type": "line",
   "text": "Voice 2's current instrument."
  },
  {
   "address": 33160,
   "type": "line",
   "text": "Voice 2's pulse-sweep parameters."
  },
  {
   "address": 33163,
   "type": "line",
   "text": "Whether voice 2's instrument sweeps the pulse width."
  },
  {
   "address": 33168,
   "type": "line",
   "text": "Voice 2's instrument bytes written to the SID."
  },
  {
   "address": 33170,
   "type": "line",
   "text": "Voice 2's waveform control byte."
  },
  {
   "address": 33174,
   "type": "line",
   "text": "Voice 2's table of note lengths."
  },
  {
   "address": 33184,
   "type": "line",
   "text": "Where the third 53-byte piece of the voice state ($81A0-$81D4) starts; tune_instr_reload refills it from $82F6 when a looping tune restarts."
  },
  {
   "address": 33191,
   "type": "line",
   "text": "Voice 2's sequence return stack, low bytes."
  },
  {
   "address": 33199,
   "type": "line",
   "text": "Voice 2's sequence return stack, high bytes."
  },
  {
   "address": 33207,
   "type": "line",
   "text": "Voice 2's repeat counts."
  },
  {
   "address": 33215,
   "type": "line",
   "text": "Voice 3's current instrument."
  },
  {
   "address": 33229,
   "type": "line",
   "text": "Voice 3's pulse-sweep parameters."
  },
  {
   "address": 33232,
   "type": "line",
   "text": "Whether voice 3's instrument sweeps the pulse width."
  },
  {
   "address": 33237,
   "type": "line",
   "text": "Voice 3's instrument bytes written to the SID."
  },
  {
   "address": 33239,
   "type": "line",
   "text": "Voice 3's waveform control byte."
  },
  {
   "address": 33243,
   "type": "line",
   "text": "Voice 3's table of note lengths."
  },
  {
   "address": 33260,
   "type": "line",
   "text": "Voice 3's sequence return stack, low bytes."
  },
  {
   "address": 33268,
   "type": "line",
   "text": "Voice 3's sequence return stack, high bytes."
  },
  {
   "address": 33276,
   "type": "line",
   "text": "Voice 3's repeat counts."
  },
  {
   "address": 33284,
   "type": "line",
   "text": "The three voices' transposes, added to every note."
  },
  {
   "address": 33288,
   "type": "line",
   "text": "Filter cutoff, resonance, mode and volume as volume_sweep writes them to $D415-$D418."
  },
  {
   "address": 33294,
   "type": "line",
   "text": "The current master volume, stepped toward its target."
  },
  {
   "address": 33301,
   "type": "line",
   "text": "Voice 1's working copy of its effect parameters: the arpeggio or slide steps, counts and the current frequency."
  },
  {
   "address": 33340,
   "type": "line",
   "text": "Voice 2's working effect parameters."
  },
  {
   "address": 33379,
   "type": "line",
   "text": "Voice 3's working effect parameters."
  },
  {
   "address": 33418,
   "type": "line",
   "text": "Which voices the tune may sound on (command 26)."
  },
  {
   "address": 33419,
   "type": "line",
   "text": "The instruments reloaded into the three voices when a looping tune starts again: four tables of 53 bytes copied to $8135, $816A, $81A0 and $81D5, which together refill the whole voice state $8135-$8209."
  },
  {
   "address": 33472,
   "type": "line",
   "text": "The second of the four reload tables."
  },
  {
   "address": 33526,
   "type": "line",
   "text": "The third reload table."
  },
  {
   "address": 33579,
   "type": "line",
   "text": "The fourth reload table."
  },
  {
   "address": 33630,
   "type": "line",
   "text": "The sequence pointers ($20-$2F) reloaded when a looping tune starts again."
  },
  {
   "address": 33646,
   "type": "line",
   "text": "Low bytes of the 31 command routines; the high bytes follow at $838D."
  },
  {
   "address": 33677,
   "type": "line",
   "text": "High bytes of the 31 command routines."
  },
  {
   "address": 33708,
   "type": "line",
   "text": "Command 24: picks the next of a short list through $9291/$90B9 and plays it as effect 17."
  },
  {
   "address": 33724,
   "type": "line",
   "text": "Commands 13-18, 23 and 30 enter this run of BIT instructions part way (command 24 falls in from $83AC with Y = $11): each entry is a hidden LDY #n inside a BIT operand, so Y becomes the effect number ($02, $06, $0B, $0F, $0D, $07, $03 and $17) and $83D6 starts the effect sequence there."
  },
  {
   "address": 33759,
   "type": "line",
   "text": "Command 19: steps $9291 through the list at $90B9 and starts effect 8."
  },
  {
   "address": 33772,
   "type": "line",
   "text": "Command 20: starts repeating sound A ($845B) unless it runs, by pointing the per-frame hook ($859E/$859F) at $8423; the helicopter stage starts it."
  },
  {
   "address": 33784,
   "type": "line",
   "text": "Command 22: the same for repeating sound B ($845C), which the gunship's engine uses."
  },
  {
   "address": 33805,
   "type": "line",
   "text": "Command 21: ends repeating sound A; when neither runs, removes the hook."
  },
  {
   "address": 33816,
   "type": "line",
   "text": "Command 8: ends repeating sound B the same way."
  },
  {
   "address": 33827,
   "type": "line",
   "text": "The repeating sounds (through the per-frame hook): only while the music has no voices ($828A and 7 is 0), every $30 frames restarts sound record $A242 on voice 0 for sound A, and every $2D frames record $A223 on voice 1 for sound B."
  },
  {
   "address": 33882,
   "type": "line",
   "text": "The end of the stop commands; leaves the hook in place while the other sound still repeats."
  },
  {
   "address": 33883,
   "type": "line",
   "text": "Frames to repeating sound A's next restart; 0 when it is off."
  },
  {
   "address": 33884,
   "type": "line",
   "text": "Frames to repeating sound B's next restart."
  },
  {
   "address": 33885,
   "type": "line",
   "text": "The tail shared by commands 21 (from $8415) and 8 (from $8420): with both loops ended, removes the per-frame hook."
  },
  {
   "address": 33894,
   "type": "line",
   "text": "Command 2: returns non-zero while any voice still plays a tune or effect (the low bits of $29 and the three voices' activity)."
  },
  {
   "address": 33908,
   "type": "line",
   "text": "Command 1: stops the tune, the effects and the repeating sounds and clears all 21 SID registers."
  },
  {
   "address": 33947,
   "type": "line",
   "text": "Commands 3, 5-7, 9-12 and 29 enter this run of BIT instructions part way: each hidden LDY #n picks the tune's six-byte entry in $91E3, which $84DD starts."
  },
  {
   "address": 33976,
   "type": "line",
   "text": "Commands 4, 27 and 28 enter here (Y = $3B, $47 or $41) for three more tunes."
  },
  {
   "address": 34013,
   "type": "line",
   "text": "Starts the tune whose entry ends at $91E3+Y: copies the three voices' sequence pointers into $20-$25, marks all three voices playing ($29 = $3F), and resets each voice's duration, stack and transpose."
  },
  {
   "address": 34061,
   "type": "line",
   "text": "Command 26: X says which voices the tune may sound on ($828A, one bit per voice); the others stay free for effects."
  },
  {
   "address": 34065,
   "type": "line",
   "text": "Steps the master volume $820E toward its target by $820D each frame and writes the volume, filter mode, resonance and cutoff ($820B, $820A, $8209, $8208) to $D415-$D418; command 25 enters at $8534."
  },
  {
   "address": 34131,
   "type": "line",
   "text": "Command 0, once a frame: the per-frame hook ($8597), the volume sweep, the effect sequence ($8611) and the three voices ($870C, $8A46, $8D82); when a looping tune ($29 bit 7) has finished on every voice, reloads its instruments from $828B and pointers from $835E to play it again."
  },
  {
   "address": 34199,
   "type": "line",
   "text": "Jumps to the repeating-sound routine in $859E/$859F when one is set."
  },
  {
   "address": 34206,
   "type": "line",
   "text": "The repeating-sound routine's address in the JMP at $859D."
  },
  {
   "address": 34207,
   "type": "line",
   "text": "High byte of that address; zero means none."
  },
  {
   "address": 34208,
   "type": "line",
   "text": "Voice 1: restarts the pulse-width sweep from its start ($822B/$822C) and reloads its counters ($85AC)."
  },
  {
   "address": 34220,
   "type": "line",
   "text": "Voice 1: reloads the two pulse sweep counters from $8223/$8224."
  },
  {
   "address": 34233,
   "type": "line",
   "text": "Voice 2's copy of $85A0."
  },
  {
   "address": 34245,
   "type": "line",
   "text": "Voice 2's copy of $85AC."
  },
  {
   "address": 34258,
   "type": "line",
   "text": "Voice 3's copy of $85A0."
  },
  {
   "address": 34270,
   "type": "line",
   "text": "Voice 3's copy of $85AC."
  },
  {
   "address": 34283,
   "type": "line",
   "text": "The current step of the effect sequence; negative when none plays."
  },
  {
   "address": 34284,
   "type": "line",
   "text": "Frames left in the current effect step."
  },
  {
   "address": 34285,
   "type": "line",
   "text": "Plays the next step of an effect sequence: record pointer from $9259/$9271 and voice from $9289 for step $85EB, started by $861F; the step's length comes from $9241, and a negative length ends the sequence."
  },
  {
   "address": 34321,
   "type": "line",
   "text": "Counts the current effect step's length $85EC down and moves to the next step at zero."
  },
  {
   "address": 34335,
   "type": "line",
   "text": "Starts the sound record at X/Y on voice A (0-2): takes that voice from the tune ($29), writes the record's control, envelope and pulse bytes to the voice's SID registers and copies its slide and pulse parameters into the voice's work area ($8215, $823C or $8263)."
  },
  {
   "address": 34362,
   "type": "line",
   "text": "The register offset in the STA $D4FF,x at $8639 and $D3FE,x below, written by effect_start for the chosen voice ($90BF)."
  },
  {
   "address": 34477,
   "type": "line",
   "text": "Voice 2's copy of v1_slide_reset ($8110)."
  },
  {
   "address": 34489,
   "type": "line",
   "text": "Voice 2's copy of v1_slide_counts ($811C)."
  },
  {
   "address": 34535,
   "type": "line",
   "text": "Voice 3's copy of v1_slide_reset ($8110)."
  },
  {
   "address": 34547,
   "type": "line",
   "text": "Voice 3's copy of v1_slide_counts ($811C)."
  },
  {
   "address": 34572,
   "type": "line",
   "text": "Voice 1's frame: counts the note length $2A down; at zero reads the voice's sequence at $20/$21. Bytes $C0 and up are commands: the byte less $C0 indexes the word table at $9189, and the two bytes after it are the argument in $26/$27. Other bytes are notes (from $60 up, the same note without retriggering; $5E and $5F rests): adds the transpose $8204, sets the frequency from the note tables $912A (low) and $90CB (high), restarts the pulse sweep and the arpeggio or slide from the current instrument, and takes the length from the next byte. Then $88DE runs the effects."
  },
  {
   "address": 34630,
   "type": "line",
   "text": "The address in the JMP at $8745, written by v1_tick from the command table $9189."
  },
  {
   "address": 34631,
   "type": "line",
   "text": "High byte of the command routine's address at $8746. From here v1_tick reads a note: the transpose, the voice mask, the gate restart, the instrument's pulse and frequency effects, and the length from the next byte."
  },
  {
   "address": 34833,
   "type": "line",
   "text": "Sequence command $C0: returns from a sequence subroutine (the voice's stack at $8162/$816A, depth $2D); at the bottom of the stack the voice stops."
  },
  {
   "address": 34857,
   "type": "line",
   "text": "Sequence command $D8: marks the start of a repeat and stores its count."
  },
  {
   "address": 34884,
   "type": "line",
   "text": "Sequence command $DA: counts the repeat down and goes back to its start until done."
  },
  {
   "address": 34903,
   "type": "line",
   "text": "Sequence command $DC: copies five bytes of instrument from the argument pointer."
  },
  {
   "address": 34919,
   "type": "line",
   "text": "Sequence command $C4 ($D6 enters part way, copying fewer bytes): copies a 14-byte instrument from the argument pointer into $8135."
  },
  {
   "address": 34935,
   "type": "line",
   "text": "Sequence command $C2: copies part of an instrument: the second byte gives where the copy lands, the third the last index (so one byte more than its value is copied), bytes 4 and 5 the source; the command is five bytes long."
  },
  {
   "address": 34962,
   "type": "line",
   "text": "Sequence command $D0: sets the transpose $8204 from the third byte and jumps to the argument address."
  },
  {
   "address": 34970,
   "type": "line",
   "text": "Sequence command $C6: continues the sequence at the argument address."
  },
  {
   "address": 34977,
   "type": "line",
   "text": "Sequence command $D2: runs machine code at the argument address, returning to the sequence reader."
  },
  {
   "address": 34986,
   "type": "line",
   "text": "Sequence command $C8: calls a sequence subroutine at the argument address, pushing the return point."
  },
  {
   "address": 35008,
   "type": "line",
   "text": "Sequence command $CC: sets the transpose $8204 from the third byte and calls the sequence subroutine at the argument address."
  },
  {
   "address": 35018,
   "type": "line",
   "text": "Sequence command $CA: sets the transpose $8204 from the argument's first byte."
  },
  {
   "address": 35025,
   "type": "line",
   "text": "Sequence command $CE: writes one instrument parameter ($8135,x)."
  },
  {
   "address": 35031,
   "type": "line",
   "text": "Sequence command $D4: writes one byte of the voice's work area ($8215,x)."
  },
  {
   "address": 35038,
   "type": "line",
   "text": "Voice 1's per-frame effects: the gate's release time ($8230/$8231), the pulse-width sweep in segments ($8226, written to $D402/$D403), and the frequency effect ($8222): an arpeggio stepping through the instrument's note offsets, or a four-segment slide, written to $D400/$D401."
  },
  {
   "address": 35398,
   "type": "line",
   "text": "Voice 2's copy of $870C: sequence at $22/$23, commands from $91A7, transpose $8205, SID registers $D407-$D40D."
  },
  {
   "address": 35457,
   "type": "line",
   "text": "The address in the JMP at $8A80, written by v2_tick from $91A7."
  },
  {
   "address": 35458,
   "type": "line",
   "text": "High byte of the command routine's address at $8A81. From here v2_tick reads a note, as v1_tick does from $8747."
  },
  {
   "address": 35661,
   "type": "line",
   "text": "Voice 2's copy of $8811."
  },
  {
   "address": 35685,
   "type": "line",
   "text": "Voice 2's copy of $8829."
  },
  {
   "address": 35712,
   "type": "line",
   "text": "Voice 2's copy of $8844."
  },
  {
   "address": 35731,
   "type": "line",
   "text": "Voice 2's copy of $8857."
  },
  {
   "address": 35747,
   "type": "line",
   "text": "Voice 2's copy of $8867."
  },
  {
   "address": 35763,
   "type": "line",
   "text": "Voice 2's copy of $8877."
  },
  {
   "address": 35790,
   "type": "line",
   "text": "Voice 2's copy of $8892."
  },
  {
   "address": 35798,
   "type": "line",
   "text": "Voice 2's copy of $889A."
  },
  {
   "address": 35805,
   "type": "line",
   "text": "Voice 2's copy of $88A1."
  },
  {
   "address": 35814,
   "type": "line",
   "text": "Voice 2's copy of $88AA."
  },
  {
   "address": 35836,
   "type": "line",
   "text": "Voice 2's copy of $88C0."
  },
  {
   "address": 35846,
   "type": "line",
   "text": "Voice 2's copy of $88CA."
  },
  {
   "address": 35853,
   "type": "line",
   "text": "Voice 2's copy of $88D1."
  },
  {
   "address": 35859,
   "type": "line",
   "text": "Voice 2's copy of $88D7."
  },
  {
   "address": 35866,
   "type": "line",
   "text": "Voice 2's copy of $88DE, on $D407-$D40B."
  },
  {
   "address": 36226,
   "type": "line",
   "text": "Voice 3's copy of $870C: sequence at $24/$25, commands from $91C5, transpose $8206, SID registers $D40E-$D414."
  },
  {
   "address": 36285,
   "type": "line",
   "text": "The address in the JMP at $8DBC, written by v3_tick from $91C5."
  },
  {
   "address": 36286,
   "type": "line",
   "text": "High byte of the command routine's address at $8DBD. From here v3_tick reads a note, as v1_tick does from $8747."
  },
  {
   "address": 36484,
   "type": "line",
   "text": "Voice 3's copy of $8811."
  },
  {
   "address": 36508,
   "type": "line",
   "text": "Voice 3's copy of $8829."
  },
  {
   "address": 36535,
   "type": "line",
   "text": "Voice 3's copy of $8844."
  },
  {
   "address": 36554,
   "type": "line",
   "text": "Voice 3's copy of $8857."
  },
  {
   "address": 36570,
   "type": "line",
   "text": "Voice 3's copy of $8867."
  },
  {
   "address": 36586,
   "type": "line",
   "text": "Voice 3's copy of $8877."
  },
  {
   "address": 36613,
   "type": "line",
   "text": "Voice 3's copy of $8892."
  },
  {
   "address": 36621,
   "type": "line",
   "text": "Voice 3's copy of $889A."
  },
  {
   "address": 36628,
   "type": "line",
   "text": "Voice 3's copy of $88A1."
  },
  {
   "address": 36637,
   "type": "line",
   "text": "Voice 3's copy of $88AA."
  },
  {
   "address": 36659,
   "type": "line",
   "text": "Voice 3's copy of $88C0."
  },
  {
   "address": 36669,
   "type": "line",
   "text": "Voice 3's copy of $88CA."
  },
  {
   "address": 36676,
   "type": "line",
   "text": "Voice 3's copy of $88D1."
  },
  {
   "address": 36682,
   "type": "line",
   "text": "Voice 3's copy of $88D7."
  },
  {
   "address": 36689,
   "type": "line",
   "text": "Voice 3's copy of $88DE, on $D40E-$D412."
  },
  {
   "address": 37049,
   "type": "line",
   "text": "The list command 19 and command 24 step through."
  },
  {
   "address": 37052,
   "type": "line",
   "text": "Offset of each voice's work area from $8215."
  },
  {
   "address": 37055,
   "type": "line",
   "text": "Offset of each voice's SID registers."
  },
  {
   "address": 37058,
   "type": "line",
   "text": "Offset of each voice's instrument from $8135."
  },
  {
   "address": 37064,
   "type": "line",
   "text": "The mask that takes a voice from the tune ($29)."
  },
  {
   "address": 37067,
   "type": "line",
   "text": "High bytes of the SID frequency for 95 notes."
  },
  {
   "address": 37162,
   "type": "line",
   "text": "Low bytes of the SID frequency for the 95 notes."
  },
  {
   "address": 37257,
   "type": "line",
   "text": "Voice 1's sequence command routines, 15 words for the bytes $C0, $C2 ... $DC."
  },
  {
   "address": 37258,
   "type": "line",
   "text": "The high bytes of voice 1's command table."
  },
  {
   "address": 37287,
   "type": "line",
   "text": "Voice 2's sequence command routines."
  },
  {
   "address": 37288,
   "type": "line",
   "text": "The high bytes of voice 2's command table."
  },
  {
   "address": 37317,
   "type": "line",
   "text": "Voice 3's sequence command routines."
  },
  {
   "address": 37318,
   "type": "line",
   "text": "The high bytes of voice 3's command table."
  },
  {
   "address": 37347,
   "type": "line",
   "text": "Twelve tunes, six bytes each: the start of voice 1's, 2's and 3's sequences. The tune commands' Y values point at the last byte of an entry."
  },
  {
   "address": 37419,
   "type": "line",
   "text": "The text MUSIC BY MARTIN GALWAY, in ASCII, inside the driver's tables; nothing prints it."
  },
  {
   "address": 37441,
   "type": "line",
   "text": "Frames each effect sequence step lasts; negative ends the sequence."
  },
  {
   "address": 37465,
   "type": "line",
   "text": "Low bytes of each effect step's sound record."
  },
  {
   "address": 37489,
   "type": "line",
   "text": "High bytes of each effect step's sound record."
  },
  {
   "address": 37513,
   "type": "line",
   "text": "The voice each effect step plays on."
  },
  {
   "address": 37521,
   "type": "line",
   "text": "Position in effect_next_list."
  },
  {
   "address": 37529,
   "type": "line",
   "text": "A second effect number command 24 stores."
  },
  {
   "address": 37530,
   "type": "line",
   "text": "An effect number commands 19 and 24 store."
  },
  {
   "address": 37594,
   "type": "line",
   "text": "The tunes' data in the driver's sequence format (notes with lengths, commands $C0-$DC with their arguments) and sound records; reached from tune_table and from the command arguments."
  },
  {
   "address": 38618,
   "type": "line",
   "text": "Tune sequences, continued."
  },
  {
   "address": 39642,
   "type": "line",
   "text": "Tune sequences, continued up to the native code at $9BFE."
  },
  {
   "address": 39934,
   "type": "line",
   "text": "Machine code inside the tune data, run by the sequences' native-code command: starts sound records at $9D75-$9E10 on the three voices ($861F), and sets a value in $9E4D before starting effect $14."
  },
  {
   "address": 40001,
   "type": "line",
   "text": "Tune sequences and sound records after the native code."
  },
  {
   "address": 40525,
   "type": "line",
   "text": "A byte of tune data that the native code at $9C39 rewrites."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The tune data continues across $A000 (a fixed edge of the memory map, where BASIC's ROM would sit)."
  },
  {
   "address": 41025,
   "type": "line",
   "text": "Sound records of the effects ($A169-$A432 from effect_record) and tune sequences."
  },
  {
   "address": 42049,
   "type": "line",
   "text": "Tune sequences between $A441 and $A840 (the effect records end at $A432 just before)."
  },
  {
   "address": 43073,
   "type": "line",
   "text": "Tune sequences between $A841 and $AC40."
  },
  {
   "address": 44097,
   "type": "line",
   "text": "Tune sequences, ending at $AFB3."
  },
  {
   "address": 45056,
   "type": "line",
   "text": "The 80 heroes scores, three BCD bytes each (six digits), filled with 080000 down to 001000 by table_defaults."
  },
  {
   "address": 45057,
   "type": "line",
   "text": "The middle bytes of the heroes scores, where table_defaults writes the low digit pairs; part of heroes_scores ($B000)."
  },
  {
   "address": 45121,
   "type": "line",
   "text": "The heroes scores continue (entries 21-79)."
  },
  {
   "address": 45296,
   "type": "line",
   "text": "The 80 heroes names, ten characters each in the front-end font ($5B a space); the first entries hold the game's credits (CODING BY TONY, DAVE, BILL, MARTIN; GRAPHICS BY STEVE, TONY, DAVE; MUSIC AND SOUND FX BY MARTIN; TAPE LOADER BY BILL; DRINKS BY BREWS LEE; ASSISTED BY ...), then the authors' friends."
  },
  {
   "address": 46096,
   "type": "line",
   "text": "Ten spaces after the names."
  },
  {
   "address": 46106,
   "type": "line",
   "text": "The heroes table's order: 80 slot numbers sorted by score."
  },
  {
   "address": 46107,
   "type": "line",
   "text": "The second entry of the order list; table_sort swaps neighbouring entries through here and $B41A."
  },
  {
   "address": 46185,
   "type": "line",
   "text": "The table slot of the score being played for."
  },
  {
   "address": 46843,
   "type": "line",
   "text": "Data in the music driver's sequence format (note and length pairs, commands $C0-$DC) that no tune pointer, command argument or effect record found in this run reaches: an unused or older tune."
  },
  {
   "address": 47867,
   "type": "line",
   "text": "More of the same unreached sequence data."
  },
  {
   "address": 48891,
   "type": "line",
   "text": "The end of the unreached sequence data."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Entry to the text printer ($C077): JSR $C000 followed by the two-byte address of a text script."
  },
  {
   "address": 49155,
   "type": "line",
   "text": "Entry to swap_charset ($C009)."
  },
  {
   "address": 49158,
   "type": "line",
   "text": "The game's first instruction after the load: jumps to frontend_init ($C1B7)."
  },
  {
   "address": 49161,
   "type": "line",
   "text": "Exchanges two memory blocks with the ROMs and I/O banked out ($01 = $30): A picks a six-byte entry at $C06A (source, destination, extra bytes, pages). The one entry exchanges $D000-$D7FF, the RAM under the I/O area, with the game's character set at $7800-$7FFF, so the front end and the message screens bring in their own font and put the game's back."
  },
  {
   "address": 49250,
   "type": "line",
   "text": "The extra-page flag, written by swap_charset from its table before the copy."
  },
  {
   "address": 49258,
   "type": "line",
   "text": "The block-swap entry: $D000, $7800, extra-page flag $FF, 7 whole pages (swap_charset at $C009)."
  },
  {
   "address": 49259,
   "type": "line",
   "text": "The swap entry's source high byte."
  },
  {
   "address": 49260,
   "type": "line",
   "text": "The swap entry's destination low byte."
  },
  {
   "address": 49261,
   "type": "line",
   "text": "The swap entry's destination high byte."
  },
  {
   "address": 49262,
   "type": "line",
   "text": "The swap entry's extra-page flag."
  },
  {
   "address": 49263,
   "type": "line",
   "text": "The swap entry's page count."
  },
  {
   "address": 49264,
   "type": "line",
   "text": "The byte swap_charset holds while exchanging."
  },
  {
   "address": 49265,
   "type": "line",
   "text": "A second entry to the text printer ($C077), unused by the game's code as far as a byte search shows."
  },
  {
   "address": 49271,
   "type": "line",
   "text": "The text printer. Takes the two bytes after its caller's JSR as the address of a script and returns past them. A script is a list of characters, or $FF followed by a command number (table $C11A: 0 end, 1 move the cursor to the column and row in the next two bytes, 2 set the colour from the next byte, 3 fill the screen, 4 large letters, 5 normal letters). Large letters are 2 by 2 characters: the code becomes four glyphs from $3C up placed at the offsets in $C116."
  },
  {
   "address": 49370,
   "type": "line",
   "text": "Stores A at the cursor ($FC/$FD) plus Y, and the current colour $C19B at the same place in colour RAM."
  },
  {
   "address": 49401,
   "type": "line",
   "text": "Moves the cursor right by the letter width $C132 (1 or 2)."
  },
  {
   "address": 49416,
   "type": "line",
   "text": "Reads a command number from the script and runs it through the table at $C11A (an RTS jump)."
  },
  {
   "address": 49430,
   "type": "line",
   "text": "Screen offsets of the four quarters of a large letter: $29, $28, 1, 0."
  },
  {
   "address": 49434,
   "type": "line",
   "text": "Addresses minus one of the printer's commands: end, move, colour, fill, large, normal."
  },
  {
   "address": 49435,
   "type": "line",
   "text": "The high bytes in the printer's command table."
  },
  {
   "address": 49446,
   "type": "line",
   "text": "Command 4: large letters (width 2)."
  },
  {
   "address": 49452,
   "type": "line",
   "text": "Command 5: normal letters (width 1)."
  },
  {
   "address": 49458,
   "type": "line",
   "text": "The printer's letter width: 1 normal, 2 large."
  },
  {
   "address": 49459,
   "type": "line",
   "text": "Command 3: fills the screen at $4000 and colour RAM with the next two script bytes (character and colour)."
  },
  {
   "address": 49509,
   "type": "line",
   "text": "Command 1: moves the cursor to the column and row in the next two bytes ($4000 + row*40 + column)."
  },
  {
   "address": 49561,
   "type": "line",
   "text": "The printer's scratch byte."
  },
  {
   "address": 49562,
   "type": "line",
   "text": "The printer's second scratch byte (row times 8)."
  },
  {
   "address": 49563,
   "type": "line",
   "text": "The printer's current colour."
  },
  {
   "address": 49564,
   "type": "line",
   "text": "Reads the next script byte through $FA/$FB."
  },
  {
   "address": 49574,
   "type": "line",
   "text": "Steps the script pointer $FA/$FB."
  },
  {
   "address": 49581,
   "type": "line",
   "text": "Command 2: sets the colour $C19B from the next byte."
  },
  {
   "address": 49588,
   "type": "line",
   "text": "Command 0: drops the printer's own return and returns to the code after the inline address."
  },
  {
   "address": 49591,
   "type": "line",
   "text": "Sets up the front end once after the load: fills the heroes table with its default scores ($C435), starts tune $19, blacks out the screen colours and sprites, banks the ROMs out, swaps the front-end font in, selects video bank 1 (screen $4000, characters $7800) and falls into the front-end loop."
  },
  {
   "address": 49645,
   "type": "line",
   "text": "The front end's loop: prints the title, installs the front-end interrupt ($CE27), clears the order list ($C3DF), sorts the table ($C2F6), shows the instructions and heroes pages ($C827), clears the player's score slot, plays tune $1E and takes the player's name ($C367), swaps the game's font back and plays a game ($0367, game_start); afterwards swaps the front-end font in, records the score ($C2DB), sorts, and shows where it ranked ($C270) before starting over."
  },
  {
   "address": 49648,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C1ED: the title page."
  },
  {
   "address": 49650,
   "type": "line",
   "text": "frontend_loop continues after the title script: the front-end interrupt, the table, the attract pages, the name and the game."
  },
  {
   "address": 49776,
   "type": "line",
   "text": "If the new score has entered the table (the sorted position differs from the slot), finds its rank, prints the congratulations page and scrolls the table to it."
  },
  {
   "address": 49788,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C279: the rank page's text."
  },
  {
   "address": 49790,
   "type": "line",
   "text": "show_rank continues: prints the rank page and finds the new score's place."
  },
  {
   "address": 49793,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C27E."
  },
  {
   "address": 49795,
   "type": "line",
   "text": "show_rank continues after the rank page's script: scrolls the table to the new entry."
  },
  {
   "address": 49822,
   "type": "line",
   "text": "show_rank continues after the rank text: waits, then returns to the loop."
  },
  {
   "address": 49824,
   "type": "line",
   "text": "show_rank starts tune 5 and waits five frames once, then every two frames reads the stick, until fire."
  },
  {
   "address": 49856,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C2BD: the line under the rank page."
  },
  {
   "address": 49858,
   "type": "line",
   "text": "show_rank's last step: reads the stick and repeats the wait until fire."
  },
  {
   "address": 49867,
   "type": "line",
   "text": "The player's slot when the table was last sorted, to find whether it moved."
  },
  {
   "address": 49868,
   "type": "line",
   "text": "Frames left in the rank page's wait."
  },
  {
   "address": 49869,
   "type": "line",
   "text": "Waits for the front-end interrupt's frame flag $CF03, clears it and plays one frame of music."
  },
  {
   "address": 49883,
   "type": "line",
   "text": "Copies the game's score (six digits as three BCD bytes, $07B9) into the player's slot of the heroes table ($B000 + slot*3, slot $B469)."
  },
  {
   "address": 49910,
   "type": "line",
   "text": "Bubble-sorts the order list $B41A (80 slot numbers) so the scores ($B000, three bytes each) descend; repeats until a pass swaps nothing."
  },
  {
   "address": 49988,
   "type": "line",
   "text": "Compares two three-byte scores in $B000; returns carry set when the score at Y is greater than or equal to the one at index $C6E2."
  },
  {
   "address": 50021,
   "type": "line",
   "text": "Set when a pass of table_sort swapped entries."
  },
  {
   "address": 50022,
   "type": "line",
   "text": "The entry table_sort compares."
  },
  {
   "address": 50023,
   "type": "line",
   "text": "The name-entry page: sprites and screen off, the pointer sprite on, fills the name with spaces ($5B in the front-end font), draws the page, then loops ($C3EB) until END is chosen or the stick is left alone; then clears the game's score through $0379 and returns."
  },
  {
   "address": 50135,
   "type": "line",
   "text": "Waits for raster line $F8."
  },
  {
   "address": 50143,
   "type": "line",
   "text": "Sets the order list $B41A to 0-79."
  },
  {
   "address": 50155,
   "type": "line",
   "text": "One frame of name entry: music, colour cycle ($C522), stick ($C582), wheel sprite ($C5C7), wheel rotation ($C64E), name display ($C4A2), cursor position ($C61E), letter choice ($C4C7), name colours ($C411), the idle timer ($C45E)."
  },
  {
   "address": 50193,
   "type": "line",
   "text": "Prints the name with the cycling colour ($C540, $C542) at the cursor column."
  },
  {
   "address": 50215,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C424: the name line ($C42A)."
  },
  {
   "address": 50217,
   "type": "line",
   "text": "name_colour ends."
  },
  {
   "address": 50218,
   "type": "line",
   "text": "Printer script for the name line: move to column (written by $C411 into $C42C) and row $16, colour (written into $C430), then the ten letters of the name are expected at the cursor; ends with $FF 0."
  },
  {
   "address": 50220,
   "type": "line",
   "text": "The column byte of the name script, written by name_colour."
  },
  {
   "address": 50224,
   "type": "line",
   "text": "The colour byte of the name script, written by name_colour."
  },
  {
   "address": 50229,
   "type": "line",
   "text": "Fills the 80 heroes scores with 080000 down to 001000 in BCD."
  },
  {
   "address": 50270,
   "type": "line",
   "text": "Counts frames with no fire or turn; after 512 it fills the name with the default ($C482) and leaves name entry."
  },
  {
   "address": 50306,
   "type": "line",
   "text": "Copies the default name at $C498 (TROOPER) into the player's name."
  },
  {
   "address": 50317,
   "type": "line",
   "text": "Clears the idle counter."
  },
  {
   "address": 50326,
   "type": "line",
   "text": "Low byte of the name page's idle counter."
  },
  {
   "address": 50327,
   "type": "line",
   "text": "High byte of the idle counter (leaves at 2)."
  },
  {
   "address": 50328,
   "type": "line",
   "text": "The default name, TROOPER and three spaces, in the front-end font."
  },
  {
   "address": 50338,
   "type": "line",
   "text": "Copies the name being entered into the page's script and prints it."
  },
  {
   "address": 50351,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C4AC: the name being entered ($C4B2)."
  },
  {
   "address": 50353,
   "type": "line",
   "text": "name_show ends."
  },
  {
   "address": 50354,
   "type": "line",
   "text": "The script that prints the name being entered: its ten letters at $C4BB."
  },
  {
   "address": 50363,
   "type": "line",
   "text": "The ten letters of the name being entered, copied here by name_show."
  },
  {
   "address": 50375,
   "type": "line",
   "text": "On fire, adds the letter under the wheel's pointer ($C725 by position $C64A) to the name, up to ten letters, through $C4E3."
  },
  {
   "address": 50403,
   "type": "line",
   "text": "The wheel's special positions: $1B rubs out the last letter, $1C a heart, $1A a space, $1D END (screen off, sound off, default name if none was entered, and leaves)."
  },
  {
   "address": 50465,
   "type": "line",
   "text": "Letters entered so far (up to ten)."
  },
  {
   "address": 50466,
   "type": "line",
   "text": "Every third frame steps the colour index $C540 down from 7."
  },
  {
   "address": 50495,
   "type": "line",
   "text": "Frames until the colour cycle steps."
  },
  {
   "address": 50496,
   "type": "line",
   "text": "The cycling colour's index for the name page."
  },
  {
   "address": 50498,
   "type": "line",
   "text": "The eight colours of the name page's cycle."
  },
  {
   "address": 50506,
   "type": "line",
   "text": "A second colour list stepped with the first."
  },
  {
   "address": 50514,
   "type": "line",
   "text": "Sets sprite 1's pointer ($43F9; sprite 1 is off) and prints the name-entry page. The pointer sprite is sprite 0, set by wheel_sprite."
  },
  {
   "address": 50522,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C557: the name-entry page ($C55D)."
  },
  {
   "address": 50524,
   "type": "line",
   "text": "name_page_draw ends."
  },
  {
   "address": 50525,
   "type": "line",
   "text": "Printer script for the name-entry page: large letters, the default name TROOPER at column $0D row $13 in colour 5, then ENTER YOUR NAME at column 5 row 0, in the front-end font where $5B is a space."
  },
  {
   "address": 50562,
   "type": "line",
   "text": "Reads both joystick ports into $C5C1-$C5C5 (right, left, down, up, fire) and $C5C6; the fire bit counts only on the frame it changes."
  },
  {
   "address": 50624,
   "type": "line",
   "text": "The fire bit last read, so fire counts once."
  },
  {
   "address": 50625,
   "type": "line",
   "text": "Set while the stick is pushed right."
  },
  {
   "address": 50626,
   "type": "line",
   "text": "Set while the stick is pushed left."
  },
  {
   "address": 50627,
   "type": "line",
   "text": "Set while the stick is pushed down."
  },
  {
   "address": 50628,
   "type": "line",
   "text": "Set while the stick is pushed up."
  },
  {
   "address": 50629,
   "type": "line",
   "text": "Set on the frame fire is pressed."
  },
  {
   "address": 50630,
   "type": "line",
   "text": "All five stick bits as read."
  },
  {
   "address": 50631,
   "type": "line",
   "text": "Puts the wheel's pointer sprite at its position ($C64B, $C64D, $C64C) with the cycling colour, and colours two rows of the page."
  },
  {
   "address": 50675,
   "type": "line",
   "text": "Left and right turn the wheel's position $C64A through 30 places ($00-$1D), wrapping."
  },
  {
   "address": 50718,
   "type": "line",
   "text": "Works out the pointer sprite's screen position from the position's column $C6E5 and row $C705."
  },
  {
   "address": 50762,
   "type": "line",
   "text": "The wheel's position under the pointer (0-$1D)."
  },
  {
   "address": 50763,
   "type": "line",
   "text": "The pointer sprite's X."
  },
  {
   "address": 50764,
   "type": "line",
   "text": "Bit 8 of the pointer's X."
  },
  {
   "address": 50765,
   "type": "line",
   "text": "The pointer sprite's Y."
  },
  {
   "address": 50766,
   "type": "line",
   "text": "Every fourth frame turns the wheel ($C5F3) and redraws its 32 letters ($C665) at their columns and rows with the cycling colours."
  },
  {
   "address": 50775,
   "type": "line",
   "text": "Frames until the wheel's next turn."
  },
  {
   "address": 50776,
   "type": "line",
   "text": "wheel_rotate continues: every fourth frame, turns and redraws the wheel."
  },
  {
   "address": 50838,
   "type": "line",
   "text": "Rotates the eight wheel colours $C6AB one place."
  },
  {
   "address": 50858,
   "type": "line",
   "text": "The wheel loop's saved index."
  },
  {
   "address": 50859,
   "type": "line",
   "text": "The eight colours the wheel's letters rotate through."
  },
  {
   "address": 50866,
   "type": "line",
   "text": "The last of the wheel's eight colours."
  },
  {
   "address": 50867,
   "type": "line",
   "text": "Colours for the heroes table's lines, by line."
  },
  {
   "address": 50880,
   "type": "line",
   "text": "Sets $FB/$FC to the screen address of row A ($4000 + A*40)."
  },
  {
   "address": 50913,
   "type": "line",
   "text": "row_address's scratch byte."
  },
  {
   "address": 50914,
   "type": "line",
   "text": "Index into the first score of score_compare."
  },
  {
   "address": 50915,
   "type": "line",
   "text": "Index into the second score of score_compare."
  },
  {
   "address": 50917,
   "type": "line",
   "text": "Screen column of each of the 32 wheel positions."
  },
  {
   "address": 50949,
   "type": "line",
   "text": "Screen row of each wheel position."
  },
  {
   "address": 50981,
   "type": "line",
   "text": "The letter (or special: $1A space, $1B rub out, $1C heart, $1D end) at each wheel position."
  },
  {
   "address": 51013,
   "type": "line",
   "text": "Prints the congratulations page shown when a score enters the heroes table."
  },
  {
   "address": 51016,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C745: the congratulations page."
  },
  {
   "address": 51018,
   "type": "line",
   "text": "rank_page_print ends."
  },
  {
   "address": 51019,
   "type": "line",
   "text": "The byte after the congratulations script's call."
  },
  {
   "address": 51020,
   "type": "line",
   "text": "The front end's printer scripts, from $C74B: the heroes page title (RAMBO FIRST BLOOD PART II, ALL TIME HEROES) and the congratulations page (CONGRATULATIONS YOU ARE NOW AMONG OTHER GREAT BATTLE HEROES IN THE RAMBO HIGH SCORE RANKS)."
  },
  {
   "address": 51025,
   "type": "line",
   "text": "The heroes page's script continues: RAMBO, FIRST BLOOD and PART II in large letters."
  },
  {
   "address": 51089,
   "type": "line",
   "text": "The heroes page's script continues: ALL TIME HEROES."
  },
  {
   "address": 51111,
   "type": "line",
   "text": "The congratulations page's script."
  },
  {
   "address": 51175,
   "type": "line",
   "text": "The congratulations page's script continues."
  },
  {
   "address": 51239,
   "type": "line",
   "text": "Silences the effects, plays tune 3, clears the bottom rows and prints the heroes title, then scrolls the heroes table up a line at a time ($CD6E), printing each new line ($CCD0), through all 80 entries or until the stick is moved; then shows the instructions ($C8D0)."
  },
  {
   "address": 51288,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C855: the heroes page's header."
  },
  {
   "address": 51290,
   "type": "line",
   "text": "attract_pages continues: scrolls the heroes table line by line; fire ends it, and after the 80 lines it scrolls four more steps before going on."
  },
  {
   "address": 51301,
   "type": "line",
   "text": "attract_pages continues after the header script: the scroll loop proper, a line every eight frames."
  },
  {
   "address": 51303,
   "type": "line",
   "text": "The heroes table's scroll loop: each frame waits for the interrupt, moves the rows when asked, reads the stick; after eight steps prints the next line, and leaves on fire or after the last line."
  },
  {
   "address": 51406,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C8CB: the instruction page header."
  },
  {
   "address": 51408,
   "type": "line",
   "text": "Scrolls the instruction text at $C965 in line by line: each line is copied into the script at $CC79 up to a byte with bit 7 set, whose next byte gives the colour and, by bit 4, the letter size; $FF holds the page still and $FE returns to the heroes table ($C838)."
  },
  {
   "address": 51505,
   "type": "line",
   "text": "The inline script address after the JSR $C077 at $C92E: the instruction line just built ($CC75)."
  },
  {
   "address": 51507,
   "type": "line",
   "text": "Waits for the next scroll step; a held page waits for the stick, and fire leaves the front end's attract pages."
  },
  {
   "address": 51557,
   "type": "line",
   "text": "The instruction pages' text, line by line for instructions_scroll: each line ends with $80 and a byte of colour and letter size; $FF holds the page, $FE returns to the heroes table. $5B is a space."
  },
  {
   "address": 52307,
   "type": "line",
   "text": "The heroes page's header script."
  },
  {
   "address": 52336,
   "type": "line",
   "text": "The end of the header script."
  },
  {
   "address": 52340,
   "type": "line",
   "text": "The last byte of the header script."
  },
  {
   "address": 52341,
   "type": "line",
   "text": "The printer script heroes_line fills in for each table line: size, colour, then the rank, name and score."
  },
  {
   "address": 52344,
   "type": "line",
   "text": "The instruction line's colour byte, inside its script."
  },
  {
   "address": 52345,
   "type": "line",
   "text": "Where instructions_scroll copies the line's text."
  },
  {
   "address": 52346,
   "type": "line",
   "text": "The instruction line copied here by instructions_scroll, inside heroes_line_script's text."
  },
  {
   "address": 52393,
   "type": "line",
   "text": "The title page's printer script."
  },
  {
   "address": 52401,
   "type": "line",
   "text": "The title script continues."
  },
  {
   "address": 52407,
   "type": "line",
   "text": "The table line's colour, set by heroes_line."
  },
  {
   "address": 52408,
   "type": "line",
   "text": "The rank's tens digit ($5B for none)."
  },
  {
   "address": 52409,
   "type": "line",
   "text": "The rank number's two digits in the line script, written by heroes_line."
  },
  {
   "address": 52411,
   "type": "line",
   "text": "The name field (ten characters) of the line script."
  },
  {
   "address": 52422,
   "type": "line",
   "text": "The first score digit in the line script."
  },
  {
   "address": 52423,
   "type": "line",
   "text": "The score field (six digits) of the line script."
  },
  {
   "address": 52430,
   "type": "line",
   "text": "Index into rank_colours, counting down."
  },
  {
   "address": 52431,
   "type": "line",
   "text": "Length of the instruction line just copied."
  },
  {
   "address": 52432,
   "type": "line",
   "text": "Formats heroes table line $CD6D: rank number, the name from $B0F0 + slot*10 and the score from $B000 + slot*3 as digits, into the line script at $CCB7."
  },
  {
   "address": 52589,
   "type": "line",
   "text": "The table line heroes_line prints next."
  },
  {
   "address": 52590,
   "type": "line",
   "text": "When the interrupt asks ($CF05), moves screen rows 11-24 and their colours up one row."
  },
  {
   "address": 52775,
   "type": "line",
   "text": "Installs the front-end raster interrupt at $CE68 (RAM vector $FFFE), first line $C8."
  },
  {
   "address": 52822,
   "type": "line",
   "text": "Unused code: banks the KERNAL in and jumps to its $FE66 (the BRK and RESTORE return to BASIC); $CE5D would point the NMI vector at it. Nothing calls either."
  },
  {
   "address": 52840,
   "type": "line",
   "text": "The front end's interrupt: four handlers in turn from $CEA0, each setting the scroll and the next line: $CEA8 (top, line $81), $CEB8 (soft-scrolled band from $89), $CECB (line $E9), $CEDE (bottom: frame flag $CF03, steps the soft-scroll offset $CF04 and asks for a row move at $CF05)."
  },
  {
   "address": 52862,
   "type": "line",
   "text": "The address in the JSR at $CE7D, written by irq_frontend from $CEA0 for the next interrupt."
  },
  {
   "address": 52863,
   "type": "line",
   "text": "High byte of the handler address at $CE7E. From here irq_frontend steps its handler index (0-3) and leaves the interrupt."
  },
  {
   "address": 52896,
   "type": "line",
   "text": "The first front-end interrupt handler's address."
  },
  {
   "address": 52897,
   "type": "line",
   "text": "The four front-end interrupt handlers ($CEA8, $CEB8, $CECB, $CEDE)."
  },
  {
   "address": 52904,
   "type": "line",
   "text": "Top band: normal scroll; next interrupt at line $81."
  },
  {
   "address": 52984,
   "type": "line",
   "text": "The opcode at $CEF8 is rewritten: $8D (STA) lets the soft scroll advance, $2C (BIT) holds the page still; the instructions and the name entry switch it."
  },
  {
   "address": 52995,
   "type": "line",
   "text": "Set by the front-end interrupt each frame; frontend_frame waits for it."
  },
  {
   "address": 52996,
   "type": "line",
   "text": "The soft-scroll offset of the front end's moving band."
  },
  {
   "address": 52997,
   "type": "line",
   "text": "Set when the soft scroll wraps: the table moves up a whole row."
  },
  {
   "address": 52998,
   "type": "line",
   "text": "The \"END\" marker ($C5 $CE $C4) and two bytes before unused code."
  },
  {
   "address": 53005,
   "type": "line",
   "text": "Unused code: sets CIA 2's time-of-day clock and its alarm from $CF05 and $CF09. Nothing calls it."
  },
  {
   "address": 53247,
   "type": "line",
   "text": "Holds the instruction page when set."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "The jungle's character set, kept in the RAM under the I/O area at the hand-over; swap_charset brings it to $7800 for play. In the code's tests characters $1B-$29 are open ground, $93 is where enemies rise (hole_scan), $E0 is the hut door and $DB is animated."
  },
  {
   "address": 54270,
   "type": "line",
   "text": "The address effect_start's STA $D3FE,x names for the SID; here in RAM it is part of the jungle's character set."
  },
  {
   "address": 54271,
   "type": "line",
   "text": "The address effect_start's STA $D3FF,x names for the SID; here in RAM it is part of the jungle's character set."
  },
  {
   "address": 54272,
   "type": "line",
   "text": "The second half of the jungle's character set (characters $80-$FF)."
  },
  {
   "address": 54527,
   "type": "line",
   "text": "The address effect_start's STA $D4FF,x names for the SID's registers (with the I/O in); here in the RAM beneath it is part of the jungle's character set."
  },
  {
   "address": 54591,
   "type": "line",
   "text": "The jungle's character set continues (characters $A8-$FF)."
  },
  {
   "address": 59248,
   "type": "line",
   "text": "The jungle map as loaded: 119 rows of 16 tiles, row 0 at the bottom (south) end; map_restore copies it to the working map at $E000 before every game."
  },
  {
   "address": 60272,
   "type": "line",
   "text": "The northern rows of the clean map."
  },
  {
   "address": 61040,
   "type": "line",
   "text": "The last 112 bytes of the clean map, which map_restore copies to $E700 separately."
  },
  {
   "address": 61104,
   "type": "line",
   "text": "The clean map's last rows."
  },
  {
   "address": 61184,
   "type": "line",
   "text": "The map's tiles, 64 bytes each: an 8-by-8 block of characters per tile, read by the column and row drawers and tile_destroy. Tiles $00-$0F."
  },
  {
   "address": 62208,
   "type": "line",
   "text": "Tiles $10-$1F."
  },
  {
   "address": 63232,
   "type": "line",
   "text": "Tiles $20-$2F."
  },
  {
   "address": 64256,
   "type": "line",
   "text": "Tiles $30-$3F; the tiles $40-$42 after them are only the damaged forms tile_damage gives."
  },
  {
   "address": 65280,
   "type": "line",
   "text": "Tiles $40-$42, the damaged forms."
  },
  {
   "address": 65528,
   "type": "line",
   "text": "NOP and RTI at $FFF8, then the RAM vectors the game uses with the KERNAL banked out: NMI $FFF9 (the RTI, so RESTORE does nothing), reset $FCE2, interrupt (set by irq_install and frontend_irq_install)."
  }
 ]
}