{
 "schema": 1,
 "platform": "c64",
 "game": "chiller",
 "build": "",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    1024,
    2047,
    "screen RAM"
   ],
   [
    59953,
    59953,
    "KERNAL ROM interrupt exit the music IRQ and end_game use; the RAM beneath is part of the stored ghetto screen (store_ghetto)"
   ],
   [
    53248,
    57343,
    "RAM under the I/O chips: loaded with the game and unchanged at play, but the only bank switch ($72A4, $01 = $34) reads $E028-$EFEF, so the game never sees these bytes"
   ],
   [
    61440,
    65535,
    "RAM under the KERNAL above the screen store: a loaded copy of much of $C000-$CDFF (facts.md, Twin copies) that no copy reads, since copy_under_kernal only reads $E028-$EFEF; the CPU runs the KERNAL ROM here"
   ],
   [
    42926,
    42928,
    "BASIC ROM, entered only by the loader's stub at $033C; not the game's"
   ]
  ],
  "extra": [
   [
    12288,
    14335,
    "character set"
   ]
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2048,
   "type": "Undefined"
  },
  {
   "start": 2049,
   "end": 2720,
   "type": "Byte"
  },
  {
   "start": 2721,
   "end": 2738,
   "type": "Screencode Text"
  },
  {
   "start": 2739,
   "end": 10751,
   "type": "Byte"
  },
  {
   "start": 10752,
   "end": 10864,
   "type": "Code"
  },
  {
   "start": 10865,
   "end": 10865,
   "type": "Undefined"
  },
  {
   "start": 10866,
   "end": 10877,
   "type": "Code"
  },
  {
   "start": 10878,
   "end": 10879,
   "type": "Undefined"
  },
  {
   "start": 10880,
   "end": 10924,
   "type": "Code"
  },
  {
   "start": 10925,
   "end": 10955,
   "type": "Byte"
  },
  {
   "start": 10956,
   "end": 10996,
   "type": "Code"
  },
  {
   "start": 10997,
   "end": 11004,
   "type": "Byte"
  },
  {
   "start": 11005,
   "end": 11070,
   "type": "Undefined"
  },
  {
   "start": 11071,
   "end": 11232,
   "type": "Byte"
  },
  {
   "start": 11233,
   "end": 11248,
   "type": "Code"
  },
  {
   "start": 11249,
   "end": 11249,
   "type": "Undefined"
  },
  {
   "start": 11250,
   "end": 11261,
   "type": "Code"
  },
  {
   "start": 11262,
   "end": 11263,
   "type": "Undefined"
  },
  {
   "start": 11264,
   "end": 11280,
   "type": "Code"
  },
  {
   "start": 11281,
   "end": 11288,
   "type": "Byte"
  },
  {
   "start": 11289,
   "end": 11316,
   "type": "Code"
  },
  {
   "start": 11317,
   "end": 11331,
   "type": "Byte"
  },
  {
   "start": 11332,
   "end": 11517,
   "type": "Code"
  },
  {
   "start": 11518,
   "end": 11519,
   "type": "Undefined"
  },
  {
   "start": 11520,
   "end": 11562,
   "type": "Code"
  },
  {
   "start": 11563,
   "end": 11594,
   "type": "Byte"
  },
  {
   "start": 11595,
   "end": 11638,
   "type": "Code"
  },
  {
   "start": 11639,
   "end": 11642,
   "type": "Undefined"
  },
  {
   "start": 11643,
   "end": 11658,
   "type": "Code"
  },
  {
   "start": 11659,
   "end": 11660,
   "type": "Undefined"
  },
  {
   "start": 11661,
   "end": 11669,
   "type": "Code"
  },
  {
   "start": 11670,
   "end": 11670,
   "type": "Undefined"
  },
  {
   "start": 11671,
   "end": 11733,
   "type": "Code"
  },
  {
   "start": 11734,
   "end": 11769,
   "type": "Undefined"
  },
  {
   "start": 11770,
   "end": 11775,
   "type": "Code"
  },
  {
   "start": 11776,
   "end": 11873,
   "type": "Undefined"
  },
  {
   "start": 11874,
   "end": 11890,
   "type": "Code"
  },
  {
   "start": 11891,
   "end": 11904,
   "type": "Byte"
  },
  {
   "start": 11905,
   "end": 11914,
   "type": "Undefined"
  },
  {
   "start": 11915,
   "end": 11933,
   "type": "Code"
  },
  {
   "start": 11934,
   "end": 11954,
   "type": "Byte"
  },
  {
   "start": 11955,
   "end": 11957,
   "type": "Code"
  },
  {
   "start": 11958,
   "end": 11958,
   "type": "Undefined"
  },
  {
   "start": 11959,
   "end": 11982,
   "type": "Code"
  },
  {
   "start": 11983,
   "end": 11983,
   "type": "Undefined"
  },
  {
   "start": 11984,
   "end": 12011,
   "type": "Code"
  },
  {
   "start": 12012,
   "end": 12031,
   "type": "Byte"
  },
  {
   "start": 12032,
   "end": 12053,
   "type": "Code"
  },
  {
   "start": 12054,
   "end": 12087,
   "type": "Byte"
  },
  {
   "start": 12088,
   "end": 12112,
   "type": "Code"
  },
  {
   "start": 12113,
   "end": 12154,
   "type": "Byte"
  },
  {
   "start": 12155,
   "end": 12282,
   "type": "Code"
  },
  {
   "start": 12283,
   "end": 13823,
   "type": "Undefined"
  },
  {
   "start": 13824,
   "end": 16383,
   "type": "Byte"
  },
  {
   "start": 16384,
   "end": 16447,
   "type": "Undefined"
  },
  {
   "start": 16448,
   "end": 16639,
   "type": "Byte"
  },
  {
   "start": 16640,
   "end": 17640,
   "type": "PETSCII Text"
  },
  {
   "start": 17641,
   "end": 17663,
   "type": "Byte"
  },
  {
   "start": 17664,
   "end": 17982,
   "type": "Undefined"
  },
  {
   "start": 17983,
   "end": 20733,
   "type": "Byte"
  },
  {
   "start": 20734,
   "end": 20735,
   "type": "Undefined"
  },
  {
   "start": 20736,
   "end": 20785,
   "type": "Word"
  },
  {
   "start": 20786,
   "end": 20804,
   "type": "Undefined"
  },
  {
   "start": 20805,
   "end": 20808,
   "type": "Byte"
  },
  {
   "start": 20809,
   "end": 20815,
   "type": "Undefined"
  },
  {
   "start": 20816,
   "end": 20885,
   "type": "Byte"
  },
  {
   "start": 20886,
   "end": 20887,
   "type": "Undefined"
  },
  {
   "start": 20888,
   "end": 20946,
   "type": "Code"
  },
  {
   "start": 20947,
   "end": 20947,
   "type": "Undefined"
  },
  {
   "start": 20948,
   "end": 20975,
   "type": "Code"
  },
  {
   "start": 20976,
   "end": 21321,
   "type": "Byte"
  },
  {
   "start": 21322,
   "end": 21327,
   "type": "Undefined"
  },
  {
   "start": 21328,
   "end": 21338,
   "type": "Code"
  },
  {
   "start": 21339,
   "end": 21340,
   "type": "Undefined"
  },
  {
   "start": 21341,
   "end": 21370,
   "type": "Code"
  },
  {
   "start": 21371,
   "end": 21373,
   "type": "Undefined"
  },
  {
   "start": 21374,
   "end": 21388,
   "type": "Code"
  },
  {
   "start": 21389,
   "end": 21389,
   "type": "Undefined"
  },
  {
   "start": 21390,
   "end": 21403,
   "type": "Code"
  },
  {
   "start": 21404,
   "end": 21405,
   "type": "Undefined"
  },
  {
   "start": 21406,
   "end": 21443,
   "type": "Code"
  },
  {
   "start": 21444,
   "end": 21445,
   "type": "Undefined"
  },
  {
   "start": 21446,
   "end": 21472,
   "type": "Code"
  },
  {
   "start": 21473,
   "end": 21473,
   "type": "Undefined"
  },
  {
   "start": 21474,
   "end": 21484,
   "type": "Code"
  },
  {
   "start": 21485,
   "end": 21486,
   "type": "Undefined"
  },
  {
   "start": 21487,
   "end": 21515,
   "type": "Code"
  },
  {
   "start": 21516,
   "end": 21527,
   "type": "Byte"
  },
  {
   "start": 21528,
   "end": 21543,
   "type": "Code"
  },
  {
   "start": 21544,
   "end": 21546,
   "type": "Undefined"
  },
  {
   "start": 21547,
   "end": 21556,
   "type": "Code"
  },
  {
   "start": 21557,
   "end": 21558,
   "type": "Undefined"
  },
  {
   "start": 21559,
   "end": 21575,
   "type": "Code"
  },
  {
   "start": 21576,
   "end": 21577,
   "type": "Undefined"
  },
  {
   "start": 21578,
   "end": 21602,
   "type": "Byte"
  },
  {
   "start": 21603,
   "end": 21606,
   "type": "Undefined"
  },
  {
   "start": 21607,
   "end": 21632,
   "type": "Code"
  },
  {
   "start": 21633,
   "end": 21634,
   "type": "Undefined"
  },
  {
   "start": 21635,
   "end": 21662,
   "type": "Code"
  },
  {
   "start": 21663,
   "end": 21663,
   "type": "Undefined"
  },
  {
   "start": 21664,
   "end": 21674,
   "type": "Code"
  },
  {
   "start": 21675,
   "end": 21675,
   "type": "Undefined"
  },
  {
   "start": 21676,
   "end": 21694,
   "type": "Code"
  },
  {
   "start": 21695,
   "end": 21696,
   "type": "Undefined"
  },
  {
   "start": 21697,
   "end": 21720,
   "type": "Code"
  },
  {
   "start": 21721,
   "end": 21723,
   "type": "Undefined"
  },
  {
   "start": 21724,
   "end": 21732,
   "type": "Code"
  },
  {
   "start": 21733,
   "end": 21737,
   "type": "Undefined"
  },
  {
   "start": 21738,
   "end": 21750,
   "type": "Code"
  },
  {
   "start": 21751,
   "end": 21755,
   "type": "Undefined"
  },
  {
   "start": 21756,
   "end": 21779,
   "type": "Code"
  },
  {
   "start": 21780,
   "end": 21783,
   "type": "Undefined"
  },
  {
   "start": 21784,
   "end": 21807,
   "type": "Code"
  },
  {
   "start": 21808,
   "end": 22096,
   "type": "Byte"
  },
  {
   "start": 22097,
   "end": 22112,
   "type": "Code"
  },
  {
   "start": 22113,
   "end": 22113,
   "type": "Undefined"
  },
  {
   "start": 22114,
   "end": 22207,
   "type": "Code"
  },
  {
   "start": 22208,
   "end": 22281,
   "type": "Byte"
  },
  {
   "start": 22282,
   "end": 22345,
   "type": "Code"
  },
  {
   "start": 22346,
   "end": 22364,
   "type": "Screencode Text"
  },
  {
   "start": 22365,
   "end": 22375,
   "type": "Undefined"
  },
  {
   "start": 22376,
   "end": 22518,
   "type": "Code"
  },
  {
   "start": 22519,
   "end": 22527,
   "type": "Byte"
  },
  {
   "start": 22528,
   "end": 22584,
   "type": "Code"
  },
  {
   "start": 22585,
   "end": 22595,
   "type": "Byte"
  },
  {
   "start": 22596,
   "end": 22712,
   "type": "Code"
  },
  {
   "start": 22713,
   "end": 22714,
   "type": "Undefined"
  },
  {
   "start": 22715,
   "end": 22780,
   "type": "Code"
  },
  {
   "start": 22781,
   "end": 22783,
   "type": "Undefined"
  },
  {
   "start": 22784,
   "end": 22806,
   "type": "Code"
  },
  {
   "start": 22807,
   "end": 22808,
   "type": "Undefined"
  },
  {
   "start": 22809,
   "end": 22909,
   "type": "Code"
  },
  {
   "start": 22910,
   "end": 22911,
   "type": "Undefined"
  },
  {
   "start": 22912,
   "end": 22960,
   "type": "Code"
  },
  {
   "start": 22961,
   "end": 22962,
   "type": "Undefined"
  },
  {
   "start": 22963,
   "end": 22973,
   "type": "Code"
  },
  {
   "start": 22974,
   "end": 22975,
   "type": "Undefined"
  },
  {
   "start": 22976,
   "end": 22989,
   "type": "Code"
  },
  {
   "start": 22990,
   "end": 22991,
   "type": "Undefined"
  },
  {
   "start": 22992,
   "end": 23010,
   "type": "Code"
  },
  {
   "start": 23011,
   "end": 23013,
   "type": "Undefined"
  },
  {
   "start": 23014,
   "end": 23035,
   "type": "Code"
  },
  {
   "start": 23036,
   "end": 23071,
   "type": "Undefined"
  },
  {
   "start": 23072,
   "end": 23100,
   "type": "Code"
  },
  {
   "start": 23101,
   "end": 23104,
   "type": "Undefined"
  },
  {
   "start": 23105,
   "end": 23124,
   "type": "Code"
  },
  {
   "start": 23125,
   "end": 23135,
   "type": "Undefined"
  },
  {
   "start": 23136,
   "end": 23148,
   "type": "Code"
  },
  {
   "start": 23149,
   "end": 23151,
   "type": "Undefined"
  },
  {
   "start": 23152,
   "end": 23172,
   "type": "Code"
  },
  {
   "start": 23173,
   "end": 23175,
   "type": "Undefined"
  },
  {
   "start": 23176,
   "end": 23191,
   "type": "Code"
  },
  {
   "start": 23192,
   "end": 23193,
   "type": "Undefined"
  },
  {
   "start": 23194,
   "end": 23210,
   "type": "Code"
  },
  {
   "start": 23211,
   "end": 23212,
   "type": "Undefined"
  },
  {
   "start": 23213,
   "end": 23227,
   "type": "Code"
  },
  {
   "start": 23228,
   "end": 23230,
   "type": "Undefined"
  },
  {
   "start": 23231,
   "end": 23293,
   "type": "Code"
  },
  {
   "start": 23294,
   "end": 23295,
   "type": "Undefined"
  },
  {
   "start": 23296,
   "end": 23336,
   "type": "Code"
  },
  {
   "start": 23337,
   "end": 23339,
   "type": "Undefined"
  },
  {
   "start": 23340,
   "end": 23361,
   "type": "Code"
  },
  {
   "start": 23362,
   "end": 23363,
   "type": "Undefined"
  },
  {
   "start": 23364,
   "end": 23380,
   "type": "Code"
  },
  {
   "start": 23381,
   "end": 23382,
   "type": "Undefined"
  },
  {
   "start": 23383,
   "end": 23486,
   "type": "Code"
  },
  {
   "start": 23487,
   "end": 23492,
   "type": "Byte"
  },
  {
   "start": 23493,
   "end": 23494,
   "type": "Undefined"
  },
  {
   "start": 23495,
   "end": 23539,
   "type": "Code"
  },
  {
   "start": 23540,
   "end": 23551,
   "type": "Undefined"
  },
  {
   "start": 23552,
   "end": 23629,
   "type": "Code"
  },
  {
   "start": 23630,
   "end": 23630,
   "type": "Undefined"
  },
  {
   "start": 23631,
   "end": 23684,
   "type": "Code"
  },
  {
   "start": 23685,
   "end": 23686,
   "type": "Undefined"
  },
  {
   "start": 23687,
   "end": 23763,
   "type": "Code"
  },
  {
   "start": 23764,
   "end": 23767,
   "type": "Undefined"
  },
  {
   "start": 23768,
   "end": 23805,
   "type": "Code"
  },
  {
   "start": 23806,
   "end": 23807,
   "type": "Undefined"
  },
  {
   "start": 23808,
   "end": 23820,
   "type": "Screencode Text"
  },
  {
   "start": 23821,
   "end": 23836,
   "type": "PETSCII Text"
  },
  {
   "start": 23837,
   "end": 23839,
   "type": "Undefined"
  },
  {
   "start": 23840,
   "end": 23899,
   "type": "Code"
  },
  {
   "start": 23900,
   "end": 23903,
   "type": "Undefined"
  },
  {
   "start": 23904,
   "end": 23912,
   "type": "Code"
  },
  {
   "start": 23913,
   "end": 23935,
   "type": "Undefined"
  },
  {
   "start": 23936,
   "end": 23975,
   "type": "Code"
  },
  {
   "start": 23976,
   "end": 23976,
   "type": "Undefined"
  },
  {
   "start": 23977,
   "end": 23995,
   "type": "Code"
  },
  {
   "start": 23996,
   "end": 23999,
   "type": "Undefined"
  },
  {
   "start": 24000,
   "end": 24054,
   "type": "Byte"
  },
  {
   "start": 24055,
   "end": 24063,
   "type": "Undefined"
  },
  {
   "start": 24064,
   "end": 24071,
   "type": "Code"
  },
  {
   "start": 24072,
   "end": 24073,
   "type": "Undefined"
  },
  {
   "start": 24074,
   "end": 24086,
   "type": "Code"
  },
  {
   "start": 24087,
   "end": 24088,
   "type": "Undefined"
  },
  {
   "start": 24089,
   "end": 24510,
   "type": "Code"
  },
  {
   "start": 24511,
   "end": 24511,
   "type": "Undefined"
  },
  {
   "start": 24512,
   "end": 24550,
   "type": "Code"
  },
  {
   "start": 24551,
   "end": 24735,
   "type": "Byte"
  },
  {
   "start": 24736,
   "end": 25073,
   "type": "Code"
  },
  {
   "start": 25074,
   "end": 25079,
   "type": "Undefined"
  },
  {
   "start": 25080,
   "end": 28669,
   "type": "Byte"
  },
  {
   "start": 28670,
   "end": 29311,
   "type": "Undefined"
  },
  {
   "start": 29312,
   "end": 29323,
   "type": "Code"
  },
  {
   "start": 29324,
   "end": 29327,
   "type": "Undefined"
  },
  {
   "start": 29328,
   "end": 29347,
   "type": "Word"
  },
  {
   "start": 29348,
   "end": 29367,
   "type": "Code"
  },
  {
   "start": 29368,
   "end": 29369,
   "type": "Undefined"
  },
  {
   "start": 29370,
   "end": 29405,
   "type": "Code"
  },
  {
   "start": 29406,
   "end": 29407,
   "type": "Undefined"
  },
  {
   "start": 29408,
   "end": 29439,
   "type": "Code"
  },
  {
   "start": 29440,
   "end": 30050,
   "type": "Undefined"
  },
  {
   "start": 30051,
   "end": 30069,
   "type": "Byte"
  },
  {
   "start": 30070,
   "end": 30079,
   "type": "Undefined"
  },
  {
   "start": 30080,
   "end": 30116,
   "type": "Code"
  },
  {
   "start": 30117,
   "end": 30118,
   "type": "Undefined"
  },
  {
   "start": 30119,
   "end": 30126,
   "type": "Code"
  },
  {
   "start": 30127,
   "end": 30127,
   "type": "Undefined"
  },
  {
   "start": 30128,
   "end": 30153,
   "type": "Code"
  },
  {
   "start": 30154,
   "end": 30175,
   "type": "Undefined"
  },
  {
   "start": 30176,
   "end": 30188,
   "type": "Code"
  },
  {
   "start": 30189,
   "end": 30207,
   "type": "Undefined"
  },
  {
   "start": 30208,
   "end": 30219,
   "type": "Code"
  },
  {
   "start": 30220,
   "end": 30223,
   "type": "Undefined"
  },
  {
   "start": 30224,
   "end": 30268,
   "type": "Code"
  },
  {
   "start": 30269,
   "end": 30270,
   "type": "Undefined"
  },
  {
   "start": 30271,
   "end": 30293,
   "type": "Code"
  },
  {
   "start": 30294,
   "end": 30296,
   "type": "Undefined"
  },
  {
   "start": 30297,
   "end": 30320,
   "type": "Code"
  },
  {
   "start": 30321,
   "end": 30322,
   "type": "Undefined"
  },
  {
   "start": 30323,
   "end": 30330,
   "type": "Code"
  },
  {
   "start": 30331,
   "end": 30335,
   "type": "Undefined"
  },
  {
   "start": 30336,
   "end": 30418,
   "type": "Code"
  },
  {
   "start": 30419,
   "end": 30420,
   "type": "Undefined"
  },
  {
   "start": 30421,
   "end": 30426,
   "type": "Code"
  },
  {
   "start": 30427,
   "end": 30464,
   "type": "Byte"
  },
  {
   "start": 30465,
   "end": 30494,
   "type": "Undefined"
  },
  {
   "start": 30495,
   "end": 30570,
   "type": "Code"
  },
  {
   "start": 30571,
   "end": 30572,
   "type": "Undefined"
  },
  {
   "start": 30573,
   "end": 30576,
   "type": "Code"
  },
  {
   "start": 30577,
   "end": 30591,
   "type": "Undefined"
  },
  {
   "start": 30592,
   "end": 30642,
   "type": "Code"
  },
  {
   "start": 30643,
   "end": 30655,
   "type": "Undefined"
  },
  {
   "start": 30656,
   "end": 30695,
   "type": "Screencode Text"
  },
  {
   "start": 30696,
   "end": 30719,
   "type": "Undefined"
  },
  {
   "start": 30720,
   "end": 31727,
   "type": "Byte"
  },
  {
   "start": 31728,
   "end": 31743,
   "type": "Undefined"
  },
  {
   "start": 31744,
   "end": 31935,
   "type": "Byte"
  },
  {
   "start": 31936,
   "end": 32496,
   "type": "Undefined"
  },
  {
   "start": 32497,
   "end": 32539,
   "type": "Code"
  },
  {
   "start": 32540,
   "end": 32543,
   "type": "Undefined"
  },
  {
   "start": 32544,
   "end": 32564,
   "type": "Code"
  },
  {
   "start": 32565,
   "end": 32591,
   "type": "Undefined"
  },
  {
   "start": 32592,
   "end": 32633,
   "type": "Code"
  },
  {
   "start": 32634,
   "end": 32639,
   "type": "Undefined"
  },
  {
   "start": 32640,
   "end": 32692,
   "type": "Code"
  },
  {
   "start": 32693,
   "end": 32735,
   "type": "Undefined"
  },
  {
   "start": 32736,
   "end": 32741,
   "type": "Byte"
  },
  {
   "start": 32742,
   "end": 32743,
   "type": "Undefined"
  },
  {
   "start": 32744,
   "end": 32755,
   "type": "Word"
  },
  {
   "start": 32756,
   "end": 32759,
   "type": "Undefined"
  },
  {
   "start": 32760,
   "end": 33790,
   "type": "Byte"
  },
  {
   "start": 33791,
   "end": 33871,
   "type": "Undefined"
  },
  {
   "start": 33872,
   "end": 35319,
   "type": "Byte"
  },
  {
   "start": 35320,
   "end": 35327,
   "type": "Undefined"
  },
  {
   "start": 35328,
   "end": 36350,
   "type": "Byte"
  },
  {
   "start": 36351,
   "end": 36351,
   "type": "Undefined"
  },
  {
   "start": 36352,
   "end": 37879,
   "type": "Byte"
  },
  {
   "start": 37880,
   "end": 37887,
   "type": "Undefined"
  },
  {
   "start": 37888,
   "end": 38910,
   "type": "Byte"
  },
  {
   "start": 38911,
   "end": 38911,
   "type": "Undefined"
  },
  {
   "start": 38912,
   "end": 40439,
   "type": "Byte"
  },
  {
   "start": 40440,
   "end": 40447,
   "type": "Undefined"
  },
  {
   "start": 40448,
   "end": 42999,
   "type": "Byte"
  },
  {
   "start": 43000,
   "end": 43007,
   "type": "Undefined"
  },
  {
   "start": 43008,
   "end": 44030,
   "type": "Byte"
  },
  {
   "start": 44031,
   "end": 44031,
   "type": "Undefined"
  },
  {
   "start": 44032,
   "end": 45559,
   "type": "Byte"
  },
  {
   "start": 45560,
   "end": 45567,
   "type": "Undefined"
  },
  {
   "start": 45568,
   "end": 46590,
   "type": "Byte"
  },
  {
   "start": 46591,
   "end": 48910,
   "type": "Undefined"
  },
  {
   "start": 48911,
   "end": 49088,
   "type": "Byte"
  },
  {
   "start": 49089,
   "end": 49151,
   "type": "Undefined"
  },
  {
   "start": 49152,
   "end": 49255,
   "type": "Code"
  },
  {
   "start": 49256,
   "end": 49378,
   "type": "Byte"
  },
  {
   "start": 49379,
   "end": 49379,
   "type": "Undefined"
  },
  {
   "start": 49380,
   "end": 49407,
   "type": "Code"
  },
  {
   "start": 49408,
   "end": 49475,
   "type": "Byte"
  },
  {
   "start": 49476,
   "end": 49487,
   "type": "Code"
  },
  {
   "start": 49488,
   "end": 49562,
   "type": "Byte"
  },
  {
   "start": 49563,
   "end": 49564,
   "type": "Undefined"
  },
  {
   "start": 49565,
   "end": 49586,
   "type": "Code"
  },
  {
   "start": 49587,
   "end": 49587,
   "type": "Undefined"
  },
  {
   "start": 49588,
   "end": 49596,
   "type": "Code"
  },
  {
   "start": 49597,
   "end": 49599,
   "type": "Undefined"
  },
  {
   "start": 49600,
   "end": 49643,
   "type": "Code"
  },
  {
   "start": 49644,
   "end": 49646,
   "type": "Undefined"
  },
  {
   "start": 49647,
   "end": 49729,
   "type": "Code"
  },
  {
   "start": 49730,
   "end": 49820,
   "type": "Byte"
  },
  {
   "start": 49821,
   "end": 49879,
   "type": "Code"
  },
  {
   "start": 49880,
   "end": 50047,
   "type": "Byte"
  },
  {
   "start": 50048,
   "end": 50085,
   "type": "Code"
  },
  {
   "start": 50086,
   "end": 50088,
   "type": "Undefined"
  },
  {
   "start": 50089,
   "end": 50119,
   "type": "Code"
  },
  {
   "start": 50120,
   "end": 50182,
   "type": "Byte"
  },
  {
   "start": 50183,
   "end": 50191,
   "type": "Code"
  },
  {
   "start": 50192,
   "end": 50193,
   "type": "Undefined"
  },
  {
   "start": 50194,
   "end": 50295,
   "type": "Code"
  },
  {
   "start": 50296,
   "end": 50302,
   "type": "Undefined"
  },
  {
   "start": 50303,
   "end": 50378,
   "type": "Code"
  },
  {
   "start": 50379,
   "end": 50426,
   "type": "Byte"
  },
  {
   "start": 50427,
   "end": 50491,
   "type": "Code"
  },
  {
   "start": 50492,
   "end": 50563,
   "type": "Undefined"
  },
  {
   "start": 50564,
   "end": 50693,
   "type": "Byte"
  },
  {
   "start": 50694,
   "end": 50694,
   "type": "Undefined"
  },
  {
   "start": 50695,
   "end": 50917,
   "type": "Code"
  },
  {
   "start": 50918,
   "end": 50918,
   "type": "Undefined"
  },
  {
   "start": 50919,
   "end": 50959,
   "type": "Code"
  },
  {
   "start": 50960,
   "end": 50966,
   "type": "Undefined"
  },
  {
   "start": 50967,
   "end": 50968,
   "type": "Code"
  },
  {
   "start": 50969,
   "end": 50970,
   "type": "Undefined"
  },
  {
   "start": 50971,
   "end": 51257,
   "type": "Code"
  },
  {
   "start": 51258,
   "end": 51262,
   "type": "Undefined"
  },
  {
   "start": 51263,
   "end": 51263,
   "type": "Code"
  },
  {
   "start": 51264,
   "end": 51276,
   "type": "Byte"
  },
  {
   "start": 51277,
   "end": 51439,
   "type": "Code"
  },
  {
   "start": 51440,
   "end": 51440,
   "type": "Undefined"
  },
  {
   "start": 51441,
   "end": 51453,
   "type": "Byte"
  },
  {
   "start": 51454,
   "end": 51455,
   "type": "Undefined"
  },
  {
   "start": 51456,
   "end": 51609,
   "type": "Code"
  },
  {
   "start": 51610,
   "end": 51651,
   "type": "Byte"
  },
  {
   "start": 51652,
   "end": 51678,
   "type": "Code"
  },
  {
   "start": 51679,
   "end": 51680,
   "type": "Undefined"
  },
  {
   "start": 51681,
   "end": 51696,
   "type": "Byte"
  },
  {
   "start": 51697,
   "end": 51947,
   "type": "Code"
  },
  {
   "start": 51948,
   "end": 51948,
   "type": "Undefined"
  },
  {
   "start": 51949,
   "end": 51966,
   "type": "Code"
  },
  {
   "start": 51967,
   "end": 52002,
   "type": "Byte"
  },
  {
   "start": 52003,
   "end": 52003,
   "type": "Undefined"
  },
  {
   "start": 52004,
   "end": 52237,
   "type": "Code"
  },
  {
   "start": 52238,
   "end": 52241,
   "type": "Undefined"
  },
  {
   "start": 52242,
   "end": 52350,
   "type": "Code"
  },
  {
   "start": 52351,
   "end": 52352,
   "type": "Undefined"
  },
  {
   "start": 52353,
   "end": 52390,
   "type": "Code"
  },
  {
   "start": 52391,
   "end": 52394,
   "type": "Undefined"
  },
  {
   "start": 52395,
   "end": 52466,
   "type": "Code"
  },
  {
   "start": 52467,
   "end": 52468,
   "type": "Undefined"
  },
  {
   "start": 52469,
   "end": 52601,
   "type": "Code"
  },
  {
   "start": 52602,
   "end": 52602,
   "type": "Undefined"
  },
  {
   "start": 52603,
   "end": 52630,
   "type": "Code"
  },
  {
   "start": 52631,
   "end": 52636,
   "type": "Undefined"
  },
  {
   "start": 52637,
   "end": 52675,
   "type": "Code"
  },
  {
   "start": 52676,
   "end": 52678,
   "type": "Undefined"
  },
  {
   "start": 52679,
   "end": 52707,
   "type": "Code"
  },
  {
   "start": 52708,
   "end": 52711,
   "type": "Undefined"
  },
  {
   "start": 52712,
   "end": 52726,
   "type": "Code"
  },
  {
   "start": 52727,
   "end": 52729,
   "type": "Undefined"
  },
  {
   "start": 52730,
   "end": 52737,
   "type": "Code"
  },
  {
   "start": 52738,
   "end": 52752,
   "type": "Undefined"
  },
  {
   "start": 52753,
   "end": 52867,
   "type": "Code"
  },
  {
   "start": 52868,
   "end": 52870,
   "type": "Undefined"
  },
  {
   "start": 52871,
   "end": 52940,
   "type": "Code"
  },
  {
   "start": 52941,
   "end": 52953,
   "type": "Undefined"
  },
  {
   "start": 52954,
   "end": 52980,
   "type": "Code"
  },
  {
   "start": 52981,
   "end": 52981,
   "type": "Undefined"
  },
  {
   "start": 52982,
   "end": 52990,
   "type": "Code"
  },
  {
   "start": 52991,
   "end": 52999,
   "type": "Undefined"
  },
  {
   "start": 53000,
   "end": 53009,
   "type": "Byte"
  },
  {
   "start": 53010,
   "end": 53012,
   "type": "Undefined"
  },
  {
   "start": 53013,
   "end": 53022,
   "type": "Byte"
  },
  {
   "start": 53023,
   "end": 53027,
   "type": "Undefined"
  },
  {
   "start": 53028,
   "end": 53057,
   "type": "Byte"
  },
  {
   "start": 53058,
   "end": 53061,
   "type": "Undefined"
  },
  {
   "start": 53062,
   "end": 53067,
   "type": "Byte"
  },
  {
   "start": 53068,
   "end": 53070,
   "type": "Undefined"
  },
  {
   "start": 53071,
   "end": 53080,
   "type": "Byte"
  },
  {
   "start": 53081,
   "end": 53095,
   "type": "Undefined"
  },
  {
   "start": 53096,
   "end": 53100,
   "type": "Byte"
  },
  {
   "start": 53101,
   "end": 53109,
   "type": "Undefined"
  },
  {
   "start": 53110,
   "end": 53114,
   "type": "Byte"
  },
  {
   "start": 53115,
   "end": 53121,
   "type": "Undefined"
  },
  {
   "start": 53122,
   "end": 53126,
   "type": "Byte"
  },
  {
   "start": 53127,
   "end": 53142,
   "type": "Undefined"
  },
  {
   "start": 53143,
   "end": 53170,
   "type": "Byte"
  },
  {
   "start": 53171,
   "end": 53183,
   "type": "Undefined"
  },
  {
   "start": 53184,
   "end": 53215,
   "type": "Code"
  },
  {
   "start": 53216,
   "end": 57343,
   "type": "Undefined"
  },
  {
   "start": 57344,
   "end": 61423,
   "type": "Byte"
  },
  {
   "start": 61424,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "zpa_00",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpa_02",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpp_11",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "zpa_A2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 197,
   "name": "zpa_C5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "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": 512,
   "name": "f_0200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 653,
   "name": "a_028D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 682,
   "name": "a_02AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 684,
   "name": "a_02AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 685,
   "name": "a_02AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 767,
   "name": "a_02FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 788,
   "name": "a_0314",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 808,
   "name": "a_0328",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 837,
   "name": "f_0345",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 846,
   "name": "f_034E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 896,
   "name": "a_0380",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 900,
   "name": "a_0384",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 912,
   "name": "a_0390",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 913,
   "name": "a_0391",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1029,
   "name": "f_0405",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1030,
   "name": "f_0406",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1050,
   "name": "a_041A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1052,
   "name": "a_041C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1053,
   "name": "a_041D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1064,
   "name": "a_0428",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1065,
   "name": "f_0429",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1070,
   "name": "f_042E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1072,
   "name": "a_0430",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1080,
   "name": "f_0438",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1103,
   "name": "a_044F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1210,
   "name": "a_04BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1238,
   "name": "f_04D6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1273,
   "name": "f_04F9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1274,
   "name": "f_04FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1519,
   "name": "f_05EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1523,
   "name": "f_05F3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1524,
   "name": "f_05F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1559,
   "name": "f_0617",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1773,
   "name": "f_06ED",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1774,
   "name": "f_06EE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1994,
   "name": "f_07CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2040,
   "name": "a_07F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2041,
   "name": "a_07F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2042,
   "name": "f_07FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2047,
   "name": "a_07FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2049,
   "name": "loader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2721,
   "name": "txt_level_game_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2739,
   "name": "unread_0AB3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2816,
   "name": "sprites_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3841,
   "name": "sprites_low_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4096,
   "name": "unread_1000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5120,
   "name": "unread_1400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6144,
   "name": "unread_1800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7168,
   "name": "unread_1C00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8192,
   "name": "sprites_enemies",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9216,
   "name": "sprites_enemies_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10240,
   "name": "sprites_enemies_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10752,
   "name": "b_2A00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10756,
   "name": "try_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10764,
   "name": "a_2A0C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10790,
   "name": "b_2A26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10793,
   "name": "b_2A29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10819,
   "name": "b_2A43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10839,
   "name": "j_2A57",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10848,
   "name": "b_2A60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10855,
   "name": "b_2A67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10862,
   "name": "b_2A6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10866,
   "name": "jump_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10878,
   "name": "a_2A7E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10879,
   "name": "a_2A7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10880,
   "name": "copy_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10925,
   "name": "unreached_2AAD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10956,
   "name": "unused_tile_scan",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10973,
   "name": "b_2ADD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10984,
   "name": "b_2AE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10988,
   "name": "j_2AEC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10997,
   "name": "unreached_2AF5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11005,
   "name": "a_2AFD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11006,
   "name": "a_2AFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11007,
   "name": "a_2AFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11071,
   "name": "unused_2B3F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11233,
   "name": "silence_voice3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11250,
   "name": "j_2BF2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11264,
   "name": "hud_reset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11266,
   "name": "b_2C02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11281,
   "name": "unreached_2C11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11289,
   "name": "level_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11291,
   "name": "b_2C1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11311,
   "name": "b_2C2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11317,
   "name": "unused_sound_call",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11332,
   "name": "level_banner",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11339,
   "name": "b_2C4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11385,
   "name": "b_2C79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11408,
   "name": "b_2C90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11428,
   "name": "score_reset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11444,
   "name": "end_game",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11492,
   "name": "title_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11507,
   "name": "s_2CF3",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 11517,
   "name": "r_2CFD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11520,
   "name": "enemy_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11522,
   "name": "b_2D02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11563,
   "name": "unreached_2D2B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11595,
   "name": "collect_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11597,
   "name": "j_2D4D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11602,
   "name": "j_2D52",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11610,
   "name": "b_2D5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11613,
   "name": "b_2D5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11616,
   "name": "j_2D60",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11642,
   "name": "a_2D7A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11643,
   "name": "b_2D7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11653,
   "name": "b_2D85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11661,
   "name": "s_2D8D",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 11671,
   "name": "wait_fire",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11680,
   "name": "game_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11702,
   "name": "b_2DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11712,
   "name": "b_2DC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11721,
   "name": "b_2DC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11731,
   "name": "b_2DD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11770,
   "name": "game_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11783,
   "name": "a_2E07",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11809,
   "name": "a_2E21",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11874,
   "name": "hud_and_music",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11891,
   "name": "unreached_2E73",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11905,
   "name": "a_2E81",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11915,
   "name": "j_2E8B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11934,
   "name": "unreached_2E9E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11955,
   "name": "j_2EB3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11959,
   "name": "respawn_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11972,
   "name": "j_2EC4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11980,
   "name": "b_2ECC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11984,
   "name": "screen_exit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12003,
   "name": "j_2EE3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12012,
   "name": "unreached_2EEC",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12032,
   "name": "second_player_in",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12042,
   "name": "b_2F0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12054,
   "name": "unreached_2F16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12088,
   "name": "set_enemy_colour",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12103,
   "name": "s_2F47",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 12109,
   "name": "s_2F4D",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 12113,
   "name": "unreached_2F51",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12155,
   "name": "unused_kill_enemy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12171,
   "name": "b_2F8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12199,
   "name": "unused_end_sound",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12210,
   "name": "respawn_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12221,
   "name": "b_2FBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12228,
   "name": "b_2FC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12277,
   "name": "b_2FF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12288,
   "name": "font_scenery",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12544,
   "name": "f_3100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12608,
   "name": "font_open_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12624,
   "name": "font_solid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12800,
   "name": "f_3200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 12864,
   "name": "font_solid_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12869,
   "name": "a_3245",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12904,
   "name": "font_crumble",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12960,
   "name": "font_pickups",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12992,
   "name": "font_floors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13056,
   "name": "f_3300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13120,
   "name": "font_floors_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13312,
   "name": "font_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13544,
   "name": "f_34E8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 13608,
   "name": "font_bar",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13696,
   "name": "font_digits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13824,
   "name": "sprites_boy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14848,
   "name": "sprites_girl",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15872,
   "name": "sprites_extra",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "f_4000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16448,
   "name": "unread_4040",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16640,
   "name": "card_out_forest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16760,
   "name": "card_out_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16824,
   "name": "card_out_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16904,
   "name": "card_out_graveyard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17032,
   "name": "card_haunted_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17176,
   "name": "card_back_haunted_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17288,
   "name": "card_back_graveyard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17392,
   "name": "card_back_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17496,
   "name": "card_back_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17584,
   "name": "card_back_forest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17641,
   "name": "card_back_forest_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17664,
   "name": "a_4500",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17665,
   "name": "a_4501",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17666,
   "name": "a_4502",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17667,
   "name": "a_4503",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17668,
   "name": "a_4504",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17669,
   "name": "a_4505",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17670,
   "name": "a_4506",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17671,
   "name": "a_4507",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17672,
   "name": "f_4508",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17676,
   "name": "a_450C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17677,
   "name": "a_450D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17678,
   "name": "a_450E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17679,
   "name": "a_450F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17680,
   "name": "a_4510",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17681,
   "name": "a_4511",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17682,
   "name": "a_4512",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17683,
   "name": "a_4513",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17684,
   "name": "a_4514",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17685,
   "name": "a_4515",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17686,
   "name": "a_4516",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17687,
   "name": "a_4517",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17688,
   "name": "a_4518",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17689,
   "name": "f_4519",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17690,
   "name": "f_451A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17691,
   "name": "f_451B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17692,
   "name": "f_451C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17693,
   "name": "f_451D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17703,
   "name": "path_table_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17720,
   "name": "f_4538",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17725,
   "name": "f_453D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17730,
   "name": "f_4542",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17736,
   "name": "f_4548",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17741,
   "name": "a_454D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17742,
   "name": "f_454E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17747,
   "name": "a_4553",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17748,
   "name": "a_4554",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17749,
   "name": "a_4555",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17750,
   "name": "f_4556",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17755,
   "name": "f_455B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17760,
   "name": "f_4560",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17765,
   "name": "f_4565",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17770,
   "name": "f_456A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17786,
   "name": "a_457A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17800,
   "name": "a_4588",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17801,
   "name": "a_4589",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17802,
   "name": "a_458A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17803,
   "name": "f_458B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17835,
   "name": "a_45AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17836,
   "name": "a_45AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17837,
   "name": "a_45AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17838,
   "name": "a_45AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17839,
   "name": "a_45AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17840,
   "name": "a_45B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17841,
   "name": "a_45B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17842,
   "name": "a_45B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17843,
   "name": "f_45B3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17847,
   "name": "a_45B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17890,
   "name": "f_45E2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17891,
   "name": "a_45E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17892,
   "name": "a_45E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17893,
   "name": "a_45E5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17894,
   "name": "a_45E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17895,
   "name": "f_45E7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17900,
   "name": "a_45EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17901,
   "name": "a_45ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17902,
   "name": "a_45EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17903,
   "name": "a_45EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17905,
   "name": "a_45F1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17908,
   "name": "a_45F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17909,
   "name": "a_45F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17910,
   "name": "a_45F6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17911,
   "name": "f_45F7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17916,
   "name": "a_45FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17917,
   "name": "a_45FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17918,
   "name": "a_45FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17919,
   "name": "a_45FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17983,
   "name": "unread_463F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18944,
   "name": "path_scripts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19088,
   "name": "unread_4A90",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20112,
   "name": "unread_4E90",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20736,
   "name": "row_offsets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20737,
   "name": "f_5101",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20805,
   "name": "probe_offset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20816,
   "name": "unreached_5150",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20888,
   "name": "unused_editor_tools",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20898,
   "name": "b_51A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20900,
   "name": "b_51A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20938,
   "name": "b_51CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20947,
   "name": "a_51D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20948,
   "name": "s_51D4",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 20976,
   "name": "unused_editor_tools_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21322,
   "name": "a_534A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21323,
   "name": "a_534B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21324,
   "name": "a_534C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21326,
   "name": "a_534E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21328,
   "name": "fall_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21338,
   "name": "r_535A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 21341,
   "name": "b_535D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21374,
   "name": "b_537E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21390,
   "name": "jump_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21406,
   "name": "b_539E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21429,
   "name": "b_53B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21438,
   "name": "j_53BE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21446,
   "name": "b_53C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21464,
   "name": "b_53D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21474,
   "name": "j_53E2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21487,
   "name": "land",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21503,
   "name": "b_53FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21516,
   "name": "unreached_540C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21528,
   "name": "start_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21541,
   "name": "b_5425",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21546,
   "name": "a_542A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21547,
   "name": "remember_y",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21559,
   "name": "rise_blocked",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21572,
   "name": "b_5444",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21578,
   "name": "jump_speeds",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21606,
   "name": "a_5466",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21607,
   "name": "fall_blocked",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21627,
   "name": "b_547B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21635,
   "name": "jump_sound",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21663,
   "name": "a_549F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21664,
   "name": "fall_sound_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21676,
   "name": "fall_sound",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21682,
   "name": "b_54B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21695,
   "name": "a_54BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21696,
   "name": "a_54C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21697,
   "name": "j_54C1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21714,
   "name": "b_54D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21724,
   "name": "j_54DC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21733,
   "name": "f_54E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21734,
   "name": "a_54E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21735,
   "name": "a_54E7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21736,
   "name": "a_54E8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21737,
   "name": "a_54E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21738,
   "name": "jump_sound_freq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21753,
   "name": "a_54F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21754,
   "name": "a_54FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21756,
   "name": "jump_pitch_rise",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21773,
   "name": "b_550D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21784,
   "name": "jump_pitch_fall",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21798,
   "name": "b_5526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21808,
   "name": "unused_5530",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22097,
   "name": "gravity_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22110,
   "name": "b_565E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22114,
   "name": "mark_moving",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22125,
   "name": "enemy_lives_reset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22127,
   "name": "b_566F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22145,
   "name": "speed_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22147,
   "name": "b_5683",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22172,
   "name": "b_569C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22188,
   "name": "b_56AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22194,
   "name": "set_enemy_speed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22204,
   "name": "enemy_lives",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22208,
   "name": "hud_descriptor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22214,
   "name": "unreached_56C6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22282,
   "name": "j_570A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22294,
   "name": "j_5716",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22303,
   "name": "clear_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22307,
   "name": "b_5723",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22323,
   "name": "s_5733",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 22326,
   "name": "show_press_ctrl",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22328,
   "name": "b_5738",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22346,
   "name": "txt_press_ctrl",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22366,
   "name": "f_575E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22367,
   "name": "a_575F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22368,
   "name": "a_5760",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22369,
   "name": "a_5761",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22370,
   "name": "a_5762",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22376,
   "name": "to_switch_allowed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22379,
   "name": "player_swap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22403,
   "name": "b_5783",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22461,
   "name": "j_57BD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22519,
   "name": "unreached_57F7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "player_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22552,
   "name": "b_5818",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22573,
   "name": "a_582D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22578,
   "name": "a_5832",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22582,
   "name": "b_5836",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22585,
   "name": "unreached_5839",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22596,
   "name": "idle_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22600,
   "name": "a_5848",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22604,
   "name": "a_584C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22608,
   "name": "b_5850",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22627,
   "name": "r_5863",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22628,
   "name": "b_5864",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22646,
   "name": "a_5876",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22650,
   "name": "b_587A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22651,
   "name": "a_587B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22652,
   "name": "j_587C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22656,
   "name": "jump_lockout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22683,
   "name": "a_589B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22691,
   "name": "b_58A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22692,
   "name": "a_58A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22696,
   "name": "j_58A8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22697,
   "name": "a_58A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22707,
   "name": "switch_request",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22715,
   "name": "b_58BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22727,
   "name": "b_58C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22735,
   "name": "b_58CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22747,
   "name": "b_58DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22755,
   "name": "b_58E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22758,
   "name": "swap_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22784,
   "name": "reset_players",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22809,
   "name": "j_5919",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22850,
   "name": "b_5942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22862,
   "name": "b_594E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22881,
   "name": "bar_speed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22899,
   "name": "b_5973",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22907,
   "name": "b_597B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22912,
   "name": "frame_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22927,
   "name": "b_598F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22935,
   "name": "r_5997",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22936,
   "name": "find_bar_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22938,
   "name": "b_599A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22947,
   "name": "energy_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22963,
   "name": "b_59B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22976,
   "name": "b_59C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22979,
   "name": "energy_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22992,
   "name": "b_59D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23014,
   "name": "drain_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23032,
   "name": "r_59F8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23033,
   "name": "b_59F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23040,
   "name": "a_5A00",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23041,
   "name": "a_5A01",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23042,
   "name": "a_5A02",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23043,
   "name": "a_5A03",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23046,
   "name": "a_5A06",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23047,
   "name": "a_5A07",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23048,
   "name": "a_5A08",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23049,
   "name": "a_5A09",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23050,
   "name": "a_5A0A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23051,
   "name": "a_5A0B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23053,
   "name": "a_5A0D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23054,
   "name": "a_5A0E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23055,
   "name": "a_5A0F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23056,
   "name": "a_5A10",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23057,
   "name": "a_5A11",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23058,
   "name": "a_5A12",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23059,
   "name": "a_5A13",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23060,
   "name": "a_5A14",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23061,
   "name": "a_5A15",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23062,
   "name": "a_5A16",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23072,
   "name": "walk_drain",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23100,
   "name": "r_5A3C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23105,
   "name": "card_and_border",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23119,
   "name": "b_5A4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23136,
   "name": "first_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23152,
   "name": "out_of_energy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23176,
   "name": "j_5A88",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23194,
   "name": "tile_touch_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23205,
   "name": "b_5AA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23210,
   "name": "r_5AAA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23213,
   "name": "b_5AAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23231,
   "name": "b_5ABF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23239,
   "name": "tile_touch_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23253,
   "name": "b_5AD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23267,
   "name": "b_5AE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23296,
   "name": "energy_tick",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23317,
   "name": "b_5B15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23320,
   "name": "energy_add_slow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23323,
   "name": "j_5B1B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23336,
   "name": "r_5B28",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23340,
   "name": "poison_tick",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23361,
   "name": "r_5B41",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23364,
   "name": "poison_add",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23367,
   "name": "j_5B47",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23380,
   "name": "r_5B54",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23383,
   "name": "b_5B57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23390,
   "name": "cross_count",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23404,
   "name": "b_5B6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23422,
   "name": "b_5B7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23430,
   "name": "j_5B86",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23433,
   "name": "b_5B89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23437,
   "name": "j_5B8D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23444,
   "name": "r_5B94",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23445,
   "name": "b_5B95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23456,
   "name": "b_5BA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23469,
   "name": "b_5BAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23472,
   "name": "wait_line16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23487,
   "name": "title_font_descriptor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23495,
   "name": "show_level_card",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23547,
   "name": "a_5BFB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23548,
   "name": "a_5BFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23549,
   "name": "a_5BFD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23550,
   "name": "a_5BFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23551,
   "name": "a_5BFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23552,
   "name": "draw_logo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23579,
   "name": "j_5C1B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23585,
   "name": "j_5C21",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23604,
   "name": "b_5C34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23627,
   "name": "b_5C4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23631,
   "name": "show_card",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23665,
   "name": "b_5C71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23687,
   "name": "logo_next_glyph",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23712,
   "name": "b_5CA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23722,
   "name": "j_5CAA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23738,
   "name": "b_5CBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23749,
   "name": "logo_reset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23768,
   "name": "print_card",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 23792,
   "name": "j_5CF0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 23805,
   "name": "r_5CFD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 23808,
   "name": "txt_mastertronics",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23821,
   "name": "card_forest_title",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23840,
   "name": "unpack_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23841,
   "name": "a_5D21",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23843,
   "name": "a_5D23",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23856,
   "name": "b_5D30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23875,
   "name": "b_5D43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23881,
   "name": "b_5D49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23887,
   "name": "b_5D4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 23904,
   "name": "boy_first",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23936,
   "name": "video_setup",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23960,
   "name": "screen_done",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23977,
   "name": "j_5DA9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 24000,
   "name": "unreached_5DC0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24064,
   "name": "show_forest_card",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24074,
   "name": "bank_basic_out",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24089,
   "name": "setup_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24481,
   "name": "b_5FA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24512,
   "name": "place_crosses",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24514,
   "name": "b_5FC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24540,
   "name": "a_5FDC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24551,
   "name": "unused_5FE7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24736,
   "name": "music_init_filter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24757,
   "name": "music_irq_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24775,
   "name": "b_60C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24778,
   "name": "music_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 24787,
   "name": "b_60D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24821,
   "name": "music_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24832,
   "name": "music_next_command",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 24838,
   "name": "b_6106",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 24843,
   "name": "music_dispatch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24844,
   "name": "a_610C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24846,
   "name": "mcmd_note_v1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24870,
   "name": "mcmd_note_v2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24894,
   "name": "mcmd_note_both",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24918,
   "name": "mcmd_retrigger_both",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24939,
   "name": "mcmd_set_tempo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24948,
   "name": "mcmd_rest",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24956,
   "name": "mcmd_count",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24962,
   "name": "mcmd_set_waveforms",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24977,
   "name": "mcmd_set_envelopes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25004,
   "name": "mcmd_set_pulse",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25031,
   "name": "mcmd_loop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25042,
   "name": "music_stop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25046,
   "name": "b_61D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25065,
   "name": "music_fetch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 25071,
   "name": "b_61EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25080,
   "name": "tune_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26104,
   "name": "tune_data_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27128,
   "name": "tune_data_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27158,
   "name": "tune_card",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27408,
   "name": "tune_jingle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27597,
   "name": "unread_6BCD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28621,
   "name": "unread_6FCD",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28672,
   "name": "level_record_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28800,
   "name": "level_record_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28928,
   "name": "level_record_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29056,
   "name": "level_record_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29184,
   "name": "level_record_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29312,
   "name": "switch_allowed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29323,
   "name": "r_728B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 29328,
   "name": "level_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29329,
   "name": "f_7291",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29348,
   "name": "copy_under_kernal",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29369,
   "name": "a_72B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29370,
   "name": "flash_border",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29383,
   "name": "b_72C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29405,
   "name": "r_72DD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 29408,
   "name": "card_apostrophe",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29421,
   "name": "show_programmed_by",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29423,
   "name": "b_72EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29440,
   "name": "level_record_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29568,
   "name": "level_record_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29696,
   "name": "level_record_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29824,
   "name": "level_record_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29952,
   "name": "level_record_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29987,
   "name": "a_7523",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30051,
   "name": "level_record_9_crosses",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30080,
   "name": "title_flicker",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30105,
   "name": "b_7599",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30116,
   "name": "r_75A4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30119,
   "name": "init_irq_vector",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30128,
   "name": "tick_border",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30146,
   "name": "b_75C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30151,
   "name": "b_75C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30176,
   "name": "j_75E0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30188,
   "name": "r_75EC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30208,
   "name": "set_crosses_needed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30224,
   "name": "card_wait",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30254,
   "name": "b_762E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30265,
   "name": "b_7639",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30271,
   "name": "hud_save",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30281,
   "name": "b_7649",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30297,
   "name": "hud_restore",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30310,
   "name": "b_7666",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30323,
   "name": "j_7673",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30330,
   "name": "r_767A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30335,
   "name": "a_767F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30336,
   "name": "next_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30362,
   "name": "b_769A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30395,
   "name": "b_76BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30400,
   "name": "j_76C0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30421,
   "name": "b_76D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30427,
   "name": "unreached_76DB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30492,
   "name": "a_771C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30493,
   "name": "a_771D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30494,
   "name": "a_771E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30495,
   "name": "r_771F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30496,
   "name": "game_over_wait",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30573,
   "name": "b_776D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30592,
   "name": "check_hiscore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30605,
   "name": "b_778D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30610,
   "name": "b_7792",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30613,
   "name": "j_7795",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30615,
   "name": "b_7797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30629,
   "name": "j_77A5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30656,
   "name": "txt_programmed_by",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30720,
   "name": "store_forest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "card_title_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31746,
   "name": "card_title_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32496,
   "name": "a_7EF0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32497,
   "name": "set_boy_msb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32512,
   "name": "crosses_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32518,
   "name": "b_7F06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32537,
   "name": "b_7F19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32544,
   "name": "set_boy_x",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32551,
   "name": "set_boy_y",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32558,
   "name": "set_boy_xmsb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32592,
   "name": "cross_touch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32615,
   "name": "b_7F67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32620,
   "name": "b_7F6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32640,
   "name": "colour_cycle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32654,
   "name": "b_7F8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32685,
   "name": "r_7FAD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 32686,
   "name": "jump_colour_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32736,
   "name": "store_descriptor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32740,
   "name": "a_7FE4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32741,
   "name": "a_7FE5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32744,
   "name": "screen_store",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32745,
   "name": "f_7FE9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32760,
   "name": "unreached_7FF8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "charset_forest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33792,
   "name": "hud_template",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33826,
   "name": "hiscore_digits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33872,
   "name": "screen_forest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34800,
   "name": "screen_tail_87F0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34816,
   "name": "colours_forest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35328,
   "name": "charset_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36352,
   "name": "hud_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36432,
   "name": "screen_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37360,
   "name": "screen_tail_91F0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37376,
   "name": "colours_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37888,
   "name": "charset_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38912,
   "name": "hud_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38992,
   "name": "screen_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39920,
   "name": "screen_tail_9BF0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39936,
   "name": "colours_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40448,
   "name": "charset_graveyard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40976,
   "name": "charset_graveyard_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41552,
   "name": "screen_graveyard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42480,
   "name": "screen_tail_A5F0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42496,
   "name": "colours_graveyard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43008,
   "name": "charset_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44032,
   "name": "hud_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44112,
   "name": "screen_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45040,
   "name": "screen_tail_AFF0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45056,
   "name": "colours_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45568,
   "name": "font_title",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48911,
   "name": "unread_BF0F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "launch_extra",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49166,
   "name": "b_C00E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49169,
   "name": "scroll_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49201,
   "name": "r_C031",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49202,
   "name": "place_boy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49208,
   "name": "unused_screen_tools",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49220,
   "name": "b_C044",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49222,
   "name": "b_C046",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49236,
   "name": "b_C054",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49240,
   "name": "b_C058",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49246,
   "name": "b_C05E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49256,
   "name": "random_table_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49379,
   "name": "a_C0E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49380,
   "name": "spawn_enemy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49408,
   "name": "unused_C100",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49476,
   "name": "j_C144",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49488,
   "name": "unreached_C150",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49563,
   "name": "a_C19B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49564,
   "name": "a_C19C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49565,
   "name": "fire_pressed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49576,
   "name": "b_C1A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49584,
   "name": "b_C1B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49588,
   "name": "j_C1B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49600,
   "name": "unused_stick_reader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49611,
   "name": "b_C1CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49615,
   "name": "b_C1CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49619,
   "name": "b_C1D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49623,
   "name": "b_C1D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49633,
   "name": "j_C1E1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49644,
   "name": "a_C1EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49645,
   "name": "a_C1ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49646,
   "name": "a_C1EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49647,
   "name": "unused_key_reader",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49670,
   "name": "b_C206",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49680,
   "name": "b_C210",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49685,
   "name": "r_C215",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49686,
   "name": "b_C216",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49696,
   "name": "b_C220",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49701,
   "name": "r_C225",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49702,
   "name": "j_C226",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49712,
   "name": "j_C230",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49722,
   "name": "b_C23A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49730,
   "name": "unreached_C242",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49821,
   "name": "block_copy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49822,
   "name": "a_C29E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49826,
   "name": "a_C2A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49830,
   "name": "a_C2A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49834,
   "name": "a_C2AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49838,
   "name": "a_C2AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49843,
   "name": "a_C2B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49849,
   "name": "b_C2B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49859,
   "name": "b_C2C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49865,
   "name": "b_C2C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49880,
   "name": "unreached_C2D8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49920,
   "name": "freq_lo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49984,
   "name": "freq_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50042,
   "name": "s_C37A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 50048,
   "name": "unused_note_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50077,
   "name": "b_C39D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50085,
   "name": "r_C3A5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50086,
   "name": "a_C3A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50089,
   "name": "b_C3A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50120,
   "name": "unreached_C3C8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50183,
   "name": "j_C407",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50192,
   "name": "a_C410",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50193,
   "name": "a_C411",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50194,
   "name": "scroll_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50208,
   "name": "b_C420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50227,
   "name": "b_C433",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50246,
   "name": "b_C446",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50265,
   "name": "b_C459",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50283,
   "name": "scroll_wait",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50303,
   "name": "scroll_rows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50319,
   "name": "b_C48F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50344,
   "name": "b_C4A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50366,
   "name": "b_C4BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50379,
   "name": "unused_C4CB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50427,
   "name": "sprite1_hit_scenery",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50431,
   "name": "j_C4FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50440,
   "name": "b_C508",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50468,
   "name": "r_C524",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50469,
   "name": "scroll_nudge",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50488,
   "name": "b_C538",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50500,
   "name": "a_C544",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50564,
   "name": "unreached_C584",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50695,
   "name": "enemy_dying",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50751,
   "name": "b_C63F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50757,
   "name": "r_C645",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 50758,
   "name": "start_game",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50836,
   "name": "restart_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50846,
   "name": "b_C69E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50860,
   "name": "b_C6AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50889,
   "name": "b_C6C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50912,
   "name": "j_C6E0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 50919,
   "name": "delay",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50923,
   "name": "b_C6EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50929,
   "name": "b_C6F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50944,
   "name": "joy_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50967,
   "name": "b_C717",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 50971,
   "name": "player_input",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51020,
   "name": "b_C74C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51062,
   "name": "b_C776",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51100,
   "name": "a_C79C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51104,
   "name": "b_C7A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51142,
   "name": "a_C7C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51146,
   "name": "b_C7CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51156,
   "name": "switch_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51225,
   "name": "walk_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51239,
   "name": "b_C827",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51263,
   "name": "r_C83F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51264,
   "name": "walk_frame_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51277,
   "name": "read_controls",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51297,
   "name": "b_C861",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51323,
   "name": "b_C87B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51335,
   "name": "b_C887",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51347,
   "name": "b_C893",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51359,
   "name": "b_C89F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51371,
   "name": "b_C8AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51383,
   "name": "b_C8B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51397,
   "name": "b_C8C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51411,
   "name": "b_C8D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51425,
   "name": "b_C8E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51439,
   "name": "r_C8EF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51441,
   "name": "unreached_C8F1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51454,
   "name": "a_C8FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51455,
   "name": "a_C8FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51456,
   "name": "move_sprite",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51488,
   "name": "b_C920",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51500,
   "name": "r_C92C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51501,
   "name": "b_C92D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51513,
   "name": "r_C939",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51514,
   "name": "b_C93A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51537,
   "name": "b_C951",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51559,
   "name": "b_C967",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51562,
   "name": "b_C96A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51585,
   "name": "b_C981",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51607,
   "name": "b_C997",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51610,
   "name": "unreached_C99A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51652,
   "name": "read_stick",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51675,
   "name": "b_C9DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51681,
   "name": "bit_clear_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51689,
   "name": "bit_set_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51697,
   "name": "random",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51712,
   "name": "main_loop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51719,
   "name": "a_CA07",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51730,
   "name": "b_CA12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51737,
   "name": "a_CA19",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51748,
   "name": "b_CA24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51751,
   "name": "enemy_pass",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51756,
   "name": "b_CA2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51793,
   "name": "b_CA51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51809,
   "name": "b_CA61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51812,
   "name": "enemy_move_if_on",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51823,
   "name": "r_CA6F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 51824,
   "name": "j_CA70",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51837,
   "name": "b_CA7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51840,
   "name": "unused_sound_player",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51874,
   "name": "j_CAA2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51879,
   "name": "j_CAA7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51928,
   "name": "b_CAD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51941,
   "name": "b_CAE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 51949,
   "name": "new_life",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51961,
   "name": "j_CAF9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 51967,
   "name": "unreached_CAFF",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52003,
   "name": "a_CB23",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52004,
   "name": "enemy_to_path",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52060,
   "name": "j_CB5C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52065,
   "name": "j_CB61",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52107,
   "name": "b_CB8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52155,
   "name": "b_CBBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52165,
   "name": "j_CBC5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52170,
   "name": "j_CBCA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52212,
   "name": "b_CBF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52237,
   "name": "r_CC0D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52241,
   "name": "a_CC11",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52242,
   "name": "path_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52255,
   "name": "j_CC1F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52269,
   "name": "b_CC2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52284,
   "name": "b_CC3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52321,
   "name": "b_CC61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52325,
   "name": "j_CC65",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52353,
   "name": "j_CC81",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52388,
   "name": "b_CCA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52395,
   "name": "enemy_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52415,
   "name": "b_CCBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52466,
   "name": "r_CCF2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52469,
   "name": "extra_enemy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52481,
   "name": "b_CD01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52489,
   "name": "b_CD09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52503,
   "name": "extra_launch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52565,
   "name": "extra_move",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52601,
   "name": "r_CD79",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52603,
   "name": "extra_roll",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52627,
   "name": "b_CD93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52630,
   "name": "r_CD96",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52637,
   "name": "girl_touch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52646,
   "name": "b_CDA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52650,
   "name": "b_CDAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52658,
   "name": "b_CDB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52670,
   "name": "b_CDBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52679,
   "name": "unused_shot_hit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52682,
   "name": "j_CDCA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52691,
   "name": "b_CDD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52702,
   "name": "b_CDDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52712,
   "name": "r_CDE8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52713,
   "name": "enemy_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52724,
   "name": "b_CDF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52730,
   "name": "j_CDFA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52753,
   "name": "score_inc",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52755,
   "name": "b_CE13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52775,
   "name": "r_CE27",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52776,
   "name": "score_dec",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52778,
   "name": "b_CE2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52801,
   "name": "r_CE41",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52802,
   "name": "add_score",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52808,
   "name": "j_CE48",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52818,
   "name": "j_CE52",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52819,
   "name": "a_CE53",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52824,
   "name": "b_CE58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52842,
   "name": "r_CE6A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 52843,
   "name": "add_score_for",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52846,
   "name": "s_CE6E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 52871,
   "name": "sprite_touch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52883,
   "name": "b_CE93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52890,
   "name": "b_CE9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52894,
   "name": "b_CE9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52902,
   "name": "b_CEA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52912,
   "name": "b_CEB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52921,
   "name": "j_CEB9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52930,
   "name": "b_CEC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52954,
   "name": "lose_life",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52968,
   "name": "b_CEE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52974,
   "name": "enemy_gone",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52982,
   "name": "j_CEF6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52991,
   "name": "a_CEFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52994,
   "name": "a_CF02",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52995,
   "name": "a_CF03",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52998,
   "name": "a_CF06",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52999,
   "name": "a_CF07",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53000,
   "name": "enemy_bits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53005,
   "name": "enemy_path_offset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53010,
   "name": "a_CF12",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53011,
   "name": "a_CF13",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53012,
   "name": "a_CF14",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53013,
   "name": "enemy_dir",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53018,
   "name": "enemy_step_count",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53028,
   "name": "enemy_script_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53029,
   "name": "a_CF25",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53030,
   "name": "a_CF26",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53031,
   "name": "a_CF27",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53032,
   "name": "a_CF28",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53033,
   "name": "enemy_script_pos",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53038,
   "name": "enemy_move_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53043,
   "name": "enemy_frame_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53048,
   "name": "enemy_last_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53049,
   "name": "a_CF39",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53050,
   "name": "a_CF3A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53051,
   "name": "a_CF3B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53052,
   "name": "a_CF3C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53053,
   "name": "enemy_first_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53054,
   "name": "a_CF3E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53055,
   "name": "a_CF3F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53056,
   "name": "a_CF40",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53057,
   "name": "a_CF41",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53059,
   "name": "a_CF43",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53060,
   "name": "a_CF44",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53061,
   "name": "a_CF45",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53062,
   "name": "sprite_bits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53068,
   "name": "a_CF4C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53069,
   "name": "a_CF4D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53070,
   "name": "a_CF4E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53071,
   "name": "enemy_dying_flag",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53076,
   "name": "enemy_death_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53082,
   "name": "a_CF5A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53083,
   "name": "a_CF5B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53084,
   "name": "a_CF5C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53086,
   "name": "a_CF5E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53087,
   "name": "a_CF5F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53088,
   "name": "a_CF60",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53091,
   "name": "a_CF63",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53093,
   "name": "a_CF65",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53094,
   "name": "a_CF66",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53095,
   "name": "a_CF67",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53096,
   "name": "enemy_spawn_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53097,
   "name": "a_CF69",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53098,
   "name": "a_CF6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53099,
   "name": "a_CF6B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53100,
   "name": "a_CF6C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53101,
   "name": "f_CF6D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53107,
   "name": "a_CF73",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53108,
   "name": "a_CF74",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53109,
   "name": "a_CF75",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53110,
   "name": "enemy_lives_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53116,
   "name": "a_CF7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53117,
   "name": "a_CF7D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53119,
   "name": "a_CF7F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53121,
   "name": "a_CF81",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53122,
   "name": "enemy_death_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53143,
   "name": "enemy_anim_count",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53148,
   "name": "enemy_move_delay",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53149,
   "name": "a_CF9D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53150,
   "name": "a_CF9E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53151,
   "name": "a_CF9F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53152,
   "name": "a_CFA0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53153,
   "name": "txt_level",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53158,
   "name": "f_CFA6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53159,
   "name": "a_CFA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53160,
   "name": "a_CFA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53161,
   "name": "a_CFA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53162,
   "name": "txt_game_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53184,
   "name": "show_game_over",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53189,
   "name": "b_CFC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55301,
   "name": "a_D805",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55322,
   "name": "a_D81A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55336,
   "name": "a_D828",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55337,
   "name": "f_D829",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55352,
   "name": "f_D838",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55375,
   "name": "a_D84F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55482,
   "name": "a_D8BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55510,
   "name": "f_D8D6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55545,
   "name": "f_D8F9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55546,
   "name": "f_D8FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55791,
   "name": "f_D9EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55795,
   "name": "f_D9F3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55796,
   "name": "f_D9F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55900,
   "name": "a_DA5C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56045,
   "name": "f_DAED",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56046,
   "name": "f_DAEE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56266,
   "name": "f_DBCA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57344,
   "name": "store_cinema",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58368,
   "name": "store_ghetto",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59392,
   "name": "store_graveyard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59953,
   "name": "j_EA31",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 60416,
   "name": "store_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65490,
   "name": "s_FFD2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 65520,
   "name": "s_FFF0",
   "type": "Subroutine",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The 6510's data-direction register. copy_under_kernal sets bit 1 to output before banking the KERNAL out."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The processor port: $36 in play (BASIC out, KERNAL and I/O in), $34 while copy_under_kernal reads the RAM under the KERNAL. bank_basic_out clears bit 0 at start-up."
  },
  {
   "address": 2,
   "type": "line",
   "text": "Music step timer: music_irq counts it down each interrupt; mcmd_rest reloads it from the tempo $02AA."
  },
  {
   "address": 17,
   "type": "line",
   "text": "Pointer to the current level record ($7000 + $80n), set by setup_screen from level_records; every per-screen routine reads its fields through (zp $11),Y. High byte at $12."
  },
  {
   "address": 18,
   "type": "line",
   "text": "High byte of the level-record pointer (zp $11)."
  },
  {
   "address": 161,
   "type": "line",
   "text": "The KERNAL's jiffy clock, middle byte: level_banner waits for it to count to 6 (about four seconds) while LEVEL nnn is shown."
  },
  {
   "address": 162,
   "type": "line",
   "text": "The KERNAL's jiffy clock, low byte, ticking 60 times a second: random mixes it into each number."
  },
  {
   "address": 183,
   "type": "line",
   "text": "Music play position, low byte (high at $B8); music_fetch pre-increments it. music_start points it at the tune, screen_done and show_level_card at the jingles."
  },
  {
   "address": 184,
   "type": "line",
   "text": "Music play position, high byte."
  },
  {
   "address": 185,
   "type": "line",
   "text": "Music loop point, low byte (high at $BA): mcmd_loop copies it back to the play position."
  },
  {
   "address": 186,
   "type": "line",
   "text": "Music loop point, high byte."
  },
  {
   "address": 197,
   "type": "line",
   "text": "The KERNAL's matrix code of the key held ($40 for none): read_controls compares it with the level's key table; $37 is '?' (switch players)."
  },
  {
   "address": 198,
   "type": "line",
   "text": "The KERNAL's keyboard buffer count: end_game empties it."
  },
  {
   "address": 251,
   "type": "line",
   "text": "Scratch pointer, low byte (high at $FC): the source in block_copy and unpack_colours, the screen cell in try_move, the cell being changed in the tile handlers."
  },
  {
   "address": 252,
   "type": "line",
   "text": "Scratch pointer high byte (with $FB). Adding $D4 turns a screen address ($04xx-$07xx) into its colour-RAM address ($D8xx-$DBxx)."
  },
  {
   "address": 253,
   "type": "line",
   "text": "Second scratch pointer, low byte: the destination in block_copy and unpack_colours; sprite_touch keeps the collision bits of $D01E here."
  },
  {
   "address": 254,
   "type": "line",
   "text": "Second scratch pointer, high byte (with $FD)."
  },
  {
   "address": 512,
   "type": "line",
   "text": "The KERNAL's input buffer, reused by hud_save to keep screen rows 0-1 (80 bytes) while the card is shown."
  },
  {
   "address": 653,
   "type": "line",
   "text": "The KERNAL's shift flag: bit 0 SHIFT (jump or fire in read_controls), bit 2 CTRL."
  },
  {
   "address": 682,
   "type": "line",
   "text": "Music tempo: interrupts per step (6 in the tune), set by mcmd_set_tempo."
  },
  {
   "address": 684,
   "type": "line",
   "text": "Voice 1's waveform and gate byte for notes ($41 pulse, $21 sawtooth), set by mcmd_set_waveforms."
  },
  {
   "address": 685,
   "type": "line",
   "text": "Voice 2's waveform and gate byte, set by mcmd_set_waveforms."
  },
  {
   "address": 767,
   "type": "line",
   "text": "The tune's count: mcmd_count increments it and music_start clears it. card_wait and screen_done wait for it to leave zero, which is how a jingle tells the game it has finished."
  },
  {
   "address": 788,
   "type": "line",
   "text": "The KERNAL's IRQ vector, low byte: music_irq ($60F5) in play, $EA31 after music_stop and end_game."
  },
  {
   "address": 789,
   "type": "line",
   "text": "The KERNAL's IRQ vector, high byte."
  },
  {
   "address": 808,
   "type": "line",
   "text": "The KERNAL's STOP vector, low byte: init_irq_vector sets it to $EA so that RUN/STOP does not stop the game."
  },
  {
   "address": 837,
   "type": "line",
   "text": "Nine bytes: the screen cells level_banner covers with LEVEL nnn, kept to put back."
  },
  {
   "address": 846,
   "type": "line",
   "text": "Nine bytes: the colours level_banner covers, kept to put back."
  },
  {
   "address": 896,
   "type": "line",
   "text": "Index into the note list at $4000 for unused_note_step."
  },
  {
   "address": 900,
   "type": "line",
   "text": "Cleared by screen_exit; nothing reads it."
  },
  {
   "address": 912,
   "type": "line",
   "text": "block_copy's end address, low byte."
  },
  {
   "address": 913,
   "type": "line",
   "text": "block_copy's end address, high byte."
  },
  {
   "address": 1029,
   "type": "line",
   "text": "The cell before the score digits: score_inc counts X from 6 down to 1 and addresses $0405,X, so the digits are $0406-$040B."
  },
  {
   "address": 1030,
   "type": "line",
   "text": "The six score digits on screen row 0 ($0406-$040B, glyphs $B0-$B9), compared with the high score by check_hiscore."
  },
  {
   "address": 1050,
   "type": "line",
   "text": "A digit on the HUD row that lose_life would count down; unused."
  },
  {
   "address": 1052,
   "type": "line",
   "text": "MAGIC CROSSES, tens digit (glyph $B0-$B9), counted by cross_count."
  },
  {
   "address": 1053,
   "type": "line",
   "text": "MAGIC CROSSES, units digit."
  },
  {
   "address": 1070,
   "type": "line",
   "text": "The energy bar: 33 cells of screen row 1 from $042E, each $A1 (empty) to $A9 (full), managed by energy_down and energy_up."
  },
  {
   "address": 1072,
   "type": "line",
   "text": "The energy bar's third cell (column 8 of row 1): while it is full the boy keeps his speed (bar_speed); below that he slows."
  },
  {
   "address": 1080,
   "type": "line",
   "text": "Screen row 1, column 16: where show_game_over writes GAME OVER."
  },
  {
   "address": 1210,
   "type": "line",
   "text": "Screen row 4, column 26: card_apostrophe ($72E0) puts glyph $AC there in red, the apostrophe of MASTERTRONIC'S above the line it stamps."
  },
  {
   "address": 1238,
   "type": "line",
   "text": "Screen row 5, column 14: where show_card puts MASTERTRONIC'S."
  },
  {
   "address": 1519,
   "type": "line",
   "text": "Screen row 12, column 15: where level_banner writes LEVEL nnn."
  },
  {
   "address": 2040,
   "type": "line",
   "text": "Sprite 0's pointer: the frame of the character under control ($D8-$E6 the boy, $E8-$F6 the girl)."
  },
  {
   "address": 2041,
   "type": "line",
   "text": "Sprite 1's pointer: the other character's frame."
  },
  {
   "address": 2042,
   "type": "line",
   "text": "Sprites 2-6's pointers: the five enemy slots' frames."
  },
  {
   "address": 2047,
   "type": "line",
   "text": "Sprite 7's pointer: the thrown extra enemy ($F8)."
  },
  {
   "address": 2049,
   "type": "line",
   "text": "The loader as loaded: the BASIC stub (rewritten to SYS 2072 (ANTISOFT)) and the copier at $0818 that hands over to game_entry. Not annotated further, by policy (orientation.md)."
  },
  {
   "address": 2721,
   "type": "line",
   "text": "\"LEVEL 001\" and \"GAME OVER\", screen codes + $80. A copy is at $CFA1; which one the code\nreads is not yet established."
  },
  {
   "address": 2739,
   "type": "line",
   "text": "Loaded and the same at the hand-over, but no simulator run on any screen read it and nothing names it: bytes left before the sprite shapes at $0B00."
  },
  {
   "address": 2816,
   "type": "line",
   "text": "Sprite shapes for pointers $2C-$3F (VIC bank 0, pointer x 64): enemy frames named by the frame tables of records 1, 2, 5, 6, 7, 8 and 9 (the cinema, the ghetto, and three screens of the way back) (work/sprites_used.py)."
  },
  {
   "address": 3841,
   "type": "line",
   "text": "Sprite shapes for pointers $3C-$3F, the end of the low sprite blocks."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "Loaded with the game, unread in every simulator run and named by no instruction or pointer. Pages of near-identical 256-byte rows from here to $1FFF; their use is not established. Part 1 of 4."
  },
  {
   "address": 5120,
   "type": "line",
   "text": "The same unread block, $1400-$17FF. Part 2 of 4."
  },
  {
   "address": 6144,
   "type": "line",
   "text": "The same unread block, $1800-$1BFF. Part 3 of 4."
  },
  {
   "address": 7168,
   "type": "line",
   "text": "The same unread block, $1C00-$1FFF. Part 4 of 4."
  },
  {
   "address": 8192,
   "type": "line",
   "text": "Sprite shapes for pointers $80-$8F: enemy frames, four per animation (first to last frame in the records' tables +$1D and +$22)."
  },
  {
   "address": 9216,
   "type": "line",
   "text": "Sprite shapes for pointers $90-$9F: more enemy animations, four frames each."
  },
  {
   "address": 10240,
   "type": "line",
   "text": "Sprite shapes for pointers $A0-$A7: the last two enemy animations."
  },
  {
   "address": 10752,
   "type": "line",
   "text": "try_move when X is below $0C: the MSB half, then on."
  },
  {
   "address": 10756,
   "type": "line",
   "text": "Try to move the boy (sprite 0) one pixel in direction A (0 up, 1 down, 2 left, 3 right). Turns his position into a screen cell: row (Y - $2C) / 8, column (X - $0C) / 8 with the X MSB, then row_offsets gives the row and probe_offset the cell to look at for that direction. A space ($A0) or a tile below $2A (open scenery) moves him (move_sprite). Tiles $2A-$53 go to tile_touch_a $5A9A and $54 up to tile_touch_b $5AC7: the pick-ups and the things that stop him."
  },
  {
   "address": 10764,
   "type": "line",
   "text": "The row offset try_move subtracts from Y ($2C with gravity, $30 without; gravity_setup writes it), then the cell look-up and the tile tests."
  },
  {
   "address": 10866,
   "type": "line",
   "text": "Keep the rising flag ($C19B = 0 from start_jump), take the first step time from jump_speeds into the step timer $2A7F, then jump_lockout."
  },
  {
   "address": 10878,
   "type": "line",
   "text": "jump_counter: steps of the current jump, 0-24, up while rising and down while falling; indexes jump_speeds."
  },
  {
   "address": 10879,
   "type": "line",
   "text": "Jump step timer: passes until the next pixel of the jump, loaded from jump_speeds."
  },
  {
   "address": 10880,
   "type": "line",
   "text": "Copy the block that six bytes at X/Y describe (source, end exclusive, destination, lo/hi each): write them into block_copy's operands and run it."
  },
  {
   "address": 10925,
   "type": "line",
   "text": "Unreached, 31 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as noop ldy jsr ldx ldy ...: code or data left over from development."
  },
  {
   "address": 10956,
   "type": "line",
   "text": "Reached only from unused_screen_tools: step a glyph counter ($2AFD) and move zp $FB by a row at glyphs $2A and $54, then end a jump ($2AEC). Development code."
  },
  {
   "address": 10997,
   "type": "line",
   "text": "Unreached, 8 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop nop nop ...: code or data left over from development."
  },
  {
   "address": 11005,
   "type": "line",
   "text": "Written only by unused code ($2ACF); nothing reads it."
  },
  {
   "address": 11006,
   "type": "line",
   "text": "try_move's direction (0-3) for this call."
  },
  {
   "address": 11007,
   "type": "line",
   "text": "try_move's working X / 2 before the MSB is added."
  },
  {
   "address": 11071,
   "type": "line",
   "text": "Bytes between copy_block's variables and silence_voice3. Not reached in play: no simulator run on any of the ten screens read or ran it, and the only instructions that name it are the card text read as code ($41xx-$43xx), the unused tools, or the RAM under the KERNAL."
  },
  {
   "address": 11233,
   "type": "line",
   "text": "Silence SID voice 3 for the silenced player, then end a jump ($2AEC)."
  },
  {
   "address": 11250,
   "type": "line",
   "text": "end_game's last step: sprites as A, the 40-column bit on."
  },
  {
   "address": 11264,
   "type": "line",
   "text": "Reset each enemy slot's animation speed ($4542 into $CF9C, $4548 into $54E5, set_enemy_speed $56B2), then hud_and_music."
  },
  {
   "address": 11281,
   "type": "line",
   "text": "Eight NOPs between hud_reset and level_up; nothing reaches them."
  },
  {
   "address": 11289,
   "type": "line",
   "text": "All of a slot's enemies are gone (from respawn_check): count the LEVEL counter up (three digits at $CFA7-$CFA9, glyphs $B0-$B9), speed the enemies up (speed_up $5681), then show LEVEL nnn over the play area (level_banner $2C44)."
  },
  {
   "address": 11317,
   "type": "line",
   "text": "Called only from the card text read as code ($7C8B): make new_life's JMP an RTS, run the silenced player (unused_sound_player), put the JMP back."
  },
  {
   "address": 11332,
   "type": "line",
   "text": "Show the LEVEL counter over the play area: save screen row 11 (9 cells at $05EF and their colours), write LEVEL nnn there (txt_level $CFA1) in the colour of $D81A, only the boy's sprite on, wait until zp $A1 counts to 6, put the row back and restart the screen (restart_screen)."
  },
  {
   "address": 11428,
   "type": "line",
   "text": "Set the LEVEL counter's three digits to 001 ($CFA7-$CFA9) before hud_reset."
  },
  {
   "address": 11444,
   "type": "line",
   "text": "The game is over (RUN/STOP, or after a win): IRQ back to the KERNAL ($EA31), border green, background light grey, the ROM font ($D018 = $15), clear the screen, empty the keyboard buffer, then sprites off and the 38-column bit set ($2BF2). What follows on screen is the KERNAL's."
  },
  {
   "address": 11492,
   "type": "line",
   "text": "Set main_loop's two timing compares from the level settings ($45FC into $CA19, $45FD into $CA07), then $2EE3: straight to start_game $C646."
  },
  {
   "address": 11507,
   "type": "line",
   "text": "Keep the music setting in $2E81; a non-zero one also writes 0 to $FFFF (a silenced store)."
  },
  {
   "address": 11520,
   "type": "line",
   "text": "Per-screen enemy settings: each slot's lives from $45E7 into $CF76, the sprite multicolours ($45F5, $45F6), which sprites are multicolour ($45F4) and double width ($45F1), then main_loop."
  },
  {
   "address": 11563,
   "type": "line",
   "text": "Unreached, 32 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as ldy ldx tya sta clc ...: code or data left over from development."
  },
  {
   "address": 11595,
   "type": "line",
   "text": "For each enemy slot 0-4 with lives left ($CF76,x) whose sprite the level lets hit the scenery ($45F7,x): read the sprite-background collision register $D01F; bit 1 set (sprite 1) with $45FE set calls sprite1_hit_scenery $C4FB. Then, when the screen-clear flag $CF7D is 1, play the jingle and wait for it (screen_done $5D98, $5DA9); otherwise go on to enemy_pass. A slot with no lives left goes to respawn_check $2EB7."
  },
  {
   "address": 11642,
   "type": "line",
   "text": "The last $D01F value collect_check read; kept, never used."
  },
  {
   "address": 11643,
   "type": "line",
   "text": "collect_check's end: energy gone ($CF7D = 1) plays the jingle and waits (screen_done); otherwise enemy_pass."
  },
  {
   "address": 11661,
   "type": "line",
   "text": "Sprite 1's pointer (A) for switch_check, and $C544 cleared."
  },
  {
   "address": 11671,
   "type": "line",
   "text": "After the end jingle: wait for fire, or a key other than none ($C5), flickering the title ($7580 via game_over_wait) meanwhile; the high score is checked when the border is not black. Then start_game."
  },
  {
   "address": 11680,
   "type": "line",
   "text": "Out of energy: sprites off, the death tune (music_setting $45EE via $2CF3), a pause ($C6E7 with $CF65/$CF66 = $FF), then wait_fire unless RUN/STOP ended the game ($CF7F)."
  },
  {
   "address": 11770,
   "type": "line",
   "text": "Where the loader's last copier at $0818 hands over (JMP $2DFA at $0834): the game's own first instruction. init_irq_vector $75A7, then title_start $2CE4."
  },
  {
   "address": 11783,
   "type": "line",
   "text": "A byte inside a run of NOPs that level_banner writes 3 and 5 to: the operand of code since removed, now write-only."
  },
  {
   "address": 11809,
   "type": "line",
   "text": "Like $2E07: level_banner writes 4 and 7, nothing reads it."
  },
  {
   "address": 11874,
   "type": "line",
   "text": "Lives from $45ED into $CF7C, the screen-over flag $CF7D cleared, then music on ($2E8B: music_setting $45EF, music_start) and sprite priority from $45F1."
  },
  {
   "address": 11891,
   "type": "line",
   "text": "Unreached, 14 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop lda and beq lda ...: code or data left over from development."
  },
  {
   "address": 11905,
   "type": "line",
   "text": "The music setting last given to $2CF3; kept, never read."
  },
  {
   "address": 11915,
   "type": "line",
   "text": "hud_and_music's music: the play setting ($45EF) via $2CF3, music_start, sprite priority from $45F1."
  },
  {
   "address": 11934,
   "type": "line",
   "text": "Unreached: no call or jump in the game names it (the only hit is $FF1F in the RAM under the KERNAL). Moves sprite 0 down a pixel at Y = $B0: development code."
  },
  {
   "address": 11955,
   "type": "line",
   "text": "collect_check's jump to enemy_pass."
  },
  {
   "address": 11959,
   "type": "line",
   "text": "A slot with no lives left: if its sprite is still on, keep checking; when all five are off, level_up."
  },
  {
   "address": 11984,
   "type": "line",
   "text": "Leaving the screen sets $CF81, which enemy_pass turns into restart_screen."
  },
  {
   "address": 12012,
   "type": "line",
   "text": "Unreached, 20 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as lda sta jsr lda sta ...: code or data left over from development."
  },
  {
   "address": 12032,
   "type": "line",
   "text": "switch_check's end: sprite 1's MSB into $D010, voice 3 silenced, then its seven settings from $45B3."
  },
  {
   "address": 12054,
   "type": "line",
   "text": "Unreached, 34 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as sta lda sta txa pha ...: code or data left over from development."
  },
  {
   "address": 12088,
   "type": "line",
   "text": "Enemy slot X's colour (A) into $D029,x, and its first direction from its path script (pointer $575E,x / $CF24,x) into $CF15,x."
  },
  {
   "address": 12103,
   "type": "line",
   "text": "set_enemy_colour's end: the slot's first path direction."
  },
  {
   "address": 12109,
   "type": "line",
   "text": "Start the music (music_start), for hud_and_music."
  },
  {
   "address": 12113,
   "type": "line",
   "text": "Unreached, 42 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop nop nop ...: code or data left over from development."
  },
  {
   "address": 12155,
   "type": "line",
   "text": "Reached only from jump tables in unused code ($09D4, $CED4): silence (to $FFFF), copy seven bytes of sound settings from $45xx to $FFFF, switch the hit enemy off and add its points (add_score_for). The kill half of the unused enemy-hit code; the enemy is the one from the boy's last collision ($CF5E, $CF5F)."
  },
  {
   "address": 12199,
   "type": "line",
   "text": "Unreached (from $5412 among NOPs, $09D7, $CED7): silence ($FFFF), the silenced player, then screen_exit."
  },
  {
   "address": 12210,
   "type": "line",
   "text": "Every 255th call: for each slot whose sprite is off and which has lives left, respawn it with probability $45E2,x/128 (random below it): spawn_enemy, one life fewer, reset its path position and frame."
  },
  {
   "address": 12288,
   "type": "line",
   "text": "The character set the video chip reads during play ($D018 = $1C), 2 KB, copied here for each screen from its level record (+6; this snapshot holds the forest's). Glyphs 0-$29 ($3000-$314F): scenery the boy walks in front of, which try_move treats as open."
  },
  {
   "address": 12544,
   "type": "line",
   "text": "Glyphs $20-$29 of the play set ($3100-$314F), the last open scenery; clear_charset's second page starts here."
  },
  {
   "address": 12608,
   "type": "line",
   "text": "Glyphs $28-$29, the last two open-scenery tiles."
  },
  {
   "address": 12624,
   "type": "line",
   "text": "Glyphs $2A-$4C ($3150-$3267): scenery try_move treats as solid; the boy stops at them."
  },
  {
   "address": 12800,
   "type": "line",
   "text": "Glyphs $40-$4C of the play set ($3200-$3267), the last solid scenery; clear_charset's third page."
  },
  {
   "address": 12864,
   "type": "line",
   "text": "Glyphs $48-$4C, the last solid tiles before the crumbling ledge."
  },
  {
   "address": 12869,
   "type": "line",
   "text": "A byte inside the character set that unused_key_reader loads and ignores."
  },
  {
   "address": 12904,
   "type": "line",
   "text": "Glyphs $4D-$53 ($3268-$329F): seven stages of a crumbling ledge; tile_touch_a steps it on every 8th step on it, and $53 gives way."
  },
  {
   "address": 12960,
   "type": "line",
   "text": "Glyphs $54-$57 ($32A0-$32BF), the pick-ups by tile_touch_b: $54 edible mushroom, $55 poisonous toadstool, $56 100-point bonus, $57 magic cross (its colour says whose)."
  },
  {
   "address": 12992,
   "type": "line",
   "text": "Glyphs $58-$7F ($32C0-$33FF): tiles tile_touch_b treats as holding the boy up ($58-$61, $66 up) or letting him sink slowly ($62-$65). What each depicts varies with the screen's set."
  },
  {
   "address": 13056,
   "type": "line",
   "text": "Glyphs $60-$7F of the play set ($3300-$33FF): the last floor and wall tiles; clear_charset's fourth page."
  },
  {
   "address": 13120,
   "type": "line",
   "text": "Glyphs $68-$7F of the play set ($3340-$33FF): floor, wall and platform tiles tile_touch_b treats as solid underfoot (from $66)."
  },
  {
   "address": 13312,
   "type": "line",
   "text": "Glyphs $80-$BF ($3400-$35FF): letters, digits and punctuation in screen-code order + $80, for the HUD (SCORE, MAGIC CROSSES, digits $B0-$B9, bar cells $A1-$A9) and LEVEL / GAME OVER. Rendered in work/charset-play.png."
  },
  {
   "address": 13544,
   "type": "line",
   "text": "Five bytes of glyph $9D in the character set ($20, $20, $08, $08, $10) that speed_up compares the enemies' move delays with: the table that used to be there was overwritten by the font, so the speed limits are pixel rows."
  },
  {
   "address": 13608,
   "type": "line",
   "text": "Glyphs $A5-$AF of the play set ($3528-$357F): the energy bar's partial cells ($A5-$A8, the full cell $A9), then punctuation."
  },
  {
   "address": 13696,
   "type": "line",
   "text": "Glyphs $B0-$BF of the play set ($3580-$35FF): the digits 0-9 used by the score, crosses and LEVEL counters, then punctuation."
  },
  {
   "address": 13824,
   "type": "line",
   "text": "Sprite shapes for pointers $D8-$E7: the boy's frames, walking left and right ($D8, $DC), jumping ($E0, $E1) and standing ($E2, $E6). These blocks lie above the play character set's text glyphs, which is why only 1 KB of each set is copied to $3000."
  },
  {
   "address": 14848,
   "type": "line",
   "text": "Sprite shapes for pointers $E8-$F7: the girl's frames in the same order, patched in by player_swap."
  },
  {
   "address": 15872,
   "type": "line",
   "text": "Sprite shapes for pointers $F8-$FF: $F8 the thrown extra enemy, $F9-$FC the frames enemy_dying steps through before an enemy vanishes."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Where unused_note_step would read notes: the first bytes of the card area; nothing plays it."
  },
  {
   "address": 16448,
   "type": "line",
   "text": "Bytes after the first note-like run at $4000, before the cards; unread in every simulator run and named by nothing."
  },
  {
   "address": 16640,
   "type": "line",
   "text": "The ten level cards, one per screen: out through forest, cinema, ghetto, graveyard and\nhaunted house, then back the other way. Each is row, column, PETSCII, $01. Each level's\nrecord at $7000 + $80 * n holds its card's address at +$74 ($5BDB reads it via zp $11)."
  },
  {
   "address": 16760,
   "type": "line",
   "text": "The cinema's card on the way out: row 15, column 15; THE CINEMA in red, then in blue THERE'S A MESSAGE SCRAWLED IN BLOOD..."
  },
  {
   "address": 16824,
   "type": "line",
   "text": "The ghetto's card on the way out: THE GHETTO; SAVE YOUR ENERGY, YOU'LL NEED IT."
  },
  {
   "address": 16904,
   "type": "line",
   "text": "The graveyard's card on the way out: THE GRAVEYARD; THE MIDNIGHT HOUR IS CLOSE AT HAND, YOUR DEATH AWAITS IN THIS EVIL LAND."
  },
  {
   "address": 17032,
   "type": "line",
   "text": "The haunted house's card on the way out: THE HAUNTED HOUSE; YOUR GIRLFRIEND YOU ARE SEARCHING FOR, WHEN YOU HAVE THE CROSSES SHE'LL APPEAR BY THE DOOR."
  },
  {
   "address": 17176,
   "type": "line",
   "text": "The haunted house's card on the way back: BOTH BOY AND GIRL MUST TURN AROUND, BECAUSE YOUR QUEST IS HOMEWARD BOUND."
  },
  {
   "address": 17288,
   "type": "line",
   "text": "The graveyard's card on the way back: BY NOW YOUR ENERGY MUST BE LOW, SO FIND A MUSHROOM BEFORE YOU SLOW."
  },
  {
   "address": 17392,
   "type": "line",
   "text": "The ghetto's card on the way back: THE GHETTO IS A LONELY PLACE, SO GET YOUR CROSSES WITH GREAT HASTE."
  },
  {
   "address": 17496,
   "type": "line",
   "text": "The cinema's card on the way back: THE FINAL MINUTES ARE WITH YOU, USE THEM WELL."
  },
  {
   "address": 17584,
   "type": "line",
   "text": "The forest's card on the way back, the last: THE END IS NIGH, YOU'RE GOING TO DIE."
  },
  {
   "address": 17641,
   "type": "line",
   "text": "The end of the last card (THE END IS NIGH, YOU'RE GOING TO DIE.), its $01 terminator, then $FF fill and spaces."
  },
  {
   "address": 17664,
   "type": "line",
   "text": "Start of the level settings block ($4500-$45FF). $4500-$4503: whether the boy may move up, down, left, right; up and down are switched off while he falls (fall_step)."
  },
  {
   "address": 17665,
   "type": "line",
   "text": "Whether the boy may move down (0 on gravity screens, set by gravity_setup)."
  },
  {
   "address": 17666,
   "type": "line",
   "text": "Whether the boy may move left and right ($4502, $4503); fall_step also clears them."
  },
  {
   "address": 17667,
   "type": "line",
   "text": "Whether the boy may move right; also whether switch_request listens."
  },
  {
   "address": 17668,
   "type": "line",
   "text": "$4504-$4507: whether moving up, down, left and right changes sprite 0's frame (player_input)."
  },
  {
   "address": 17669,
   "type": "line",
   "text": "Whether moving down, left and right animate ($4505-$4507)."
  },
  {
   "address": 17670,
   "type": "line",
   "text": "Whether moving left and right animate."
  },
  {
   "address": 17671,
   "type": "line",
   "text": "Whether moving right animates."
  },
  {
   "address": 17672,
   "type": "line",
   "text": "Frame offsets (0-3) by facing, for the character switch_check brings in."
  },
  {
   "address": 17676,
   "type": "line",
   "text": "Walking-frame period: frame_step every $450C calls of walk_frame (2, or 4 when tired)."
  },
  {
   "address": 17677,
   "type": "line",
   "text": "1 animates the walk even without movement; 0 in this image."
  },
  {
   "address": 17678,
   "type": "line",
   "text": "A colour ($F6) that hud_and_music returns and $C4CD passes on."
  },
  {
   "address": 17679,
   "type": "line",
   "text": "The play background colour (black), set by start_game."
  },
  {
   "address": 17680,
   "type": "line",
   "text": "The boy's sprite colour ($0A), set by place_boy."
  },
  {
   "address": 17681,
   "type": "line",
   "text": "1 keeps the last direction while no key is held; 0 here, so the boy stops on release."
  },
  {
   "address": 17682,
   "type": "line",
   "text": "The level's key codes for read_controls ($4512-$4515): $3C twice for up, $0C (Z) left, $14 (C) right."
  },
  {
   "address": 17683,
   "type": "line",
   "text": "The second up key and the left and right keys ($4513-$4515)."
  },
  {
   "address": 17684,
   "type": "line",
   "text": "The left and right key codes ($0C Z, $14 C)."
  },
  {
   "address": 17685,
   "type": "line",
   "text": "The right key code ($14, C)."
  },
  {
   "address": 17686,
   "type": "line",
   "text": "The boy's start X; place_boy puts him back there."
  },
  {
   "address": 17687,
   "type": "line",
   "text": "The boy's start Y."
  },
  {
   "address": 17688,
   "type": "line",
   "text": "The boy's start X MSB bit."
  },
  {
   "address": 17689,
   "type": "line",
   "text": "The enemy path table: five blocks of five bytes (X, Y, MSB bit, count right, count down), one per slot, from the level record's +$45; read by enemy_to_path."
  },
  {
   "address": 17690,
   "type": "line",
   "text": "The rest of the enemy path table (bytes 1-24 from $4519): slot 0's Y, MSB and counts, then slots 1-4."
  },
  {
   "address": 17691,
   "type": "line",
   "text": "Path table entries for slots 0-4 continued (from $4519): the MSB bits and counts."
  },
  {
   "address": 17692,
   "type": "line",
   "text": "Path table: slot 0's counts and slots 1-4 (from $4519)."
  },
  {
   "address": 17693,
   "type": "line",
   "text": "Path table: slots 1-4 continued (from $4519)."
  },
  {
   "address": 17703,
   "type": "line",
   "text": "Path table bytes 14-24 (slots 2-4 from $4519)."
  },
  {
   "address": 17720,
   "type": "line",
   "text": "Per enemy slot: 1 lets it stop at an edge, 0 removes it there (path_step)."
  },
  {
   "address": 17725,
   "type": "line",
   "text": "Per enemy slot: 1 picks directions at random instead of following its script."
  },
  {
   "address": 17730,
   "type": "line",
   "text": "Per enemy slot: its move delay at the start of a game ($20), before speed_up halves it."
  },
  {
   "address": 17736,
   "type": "line",
   "text": "Per enemy slot: its frame delay at the start of a game."
  },
  {
   "address": 17741,
   "type": "line",
   "text": "Sprite 7's colour for the thrown extra enemy."
  },
  {
   "address": 17742,
   "type": "line",
   "text": "Per enemy slot: the direction its thrown extra enemy flies, 4 for none."
  },
  {
   "address": 17747,
   "type": "line",
   "text": "The extra enemy's launch chance: extra_roll must be below it (16 of 128)."
  },
  {
   "address": 17748,
   "type": "line",
   "text": "The extra enemy's move delay, passes per pixel."
  },
  {
   "address": 17749,
   "type": "line",
   "text": "The period of the scroll routine $C011; $FF switches it off, as on every screen here."
  },
  {
   "address": 17750,
   "type": "line",
   "text": "Per enemy slot: whether unused_shot_hit may kill it."
  },
  {
   "address": 17755,
   "type": "line",
   "text": "Per enemy slot: its death animation's frame delay."
  },
  {
   "address": 17760,
   "type": "line",
   "text": "Per enemy slot: kill points, units (add_score_for, unused)."
  },
  {
   "address": 17765,
   "type": "line",
   "text": "Per enemy slot: kill points, times 255."
  },
  {
   "address": 17770,
   "type": "line",
   "text": "Per enemy slot: the add_score call target's low byte."
  },
  {
   "address": 17786,
   "type": "line",
   "text": "The fall length land compares with: $FF, and the compare leads nowhere."
  },
  {
   "address": 17800,
   "type": "line",
   "text": "Three settings unused_sound_player writes to $FFFF."
  },
  {
   "address": 17801,
   "type": "line",
   "text": "Second of the silenced player's settings."
  },
  {
   "address": 17802,
   "type": "line",
   "text": "Third of the silenced player's settings."
  },
  {
   "address": 17803,
   "type": "line",
   "text": "The silenced player's 32 notes: indexes into freq_lo/freq_hi, falling in pairs."
  },
  {
   "address": 17835,
   "type": "line",
   "text": "0 spawns the enemies as a screen starts (restart_screen); 1 here, so they come in only through respawn_timer."
  },
  {
   "address": 17836,
   "type": "line",
   "text": "How many slots restart_screen spawns (5)."
  },
  {
   "address": 17837,
   "type": "line",
   "text": "Per enemy slot: its sprite colour."
  },
  {
   "address": 17838,
   "type": "line",
   "text": "Slots 1-4's sprite colours (with $45AD)."
  },
  {
   "address": 17839,
   "type": "line",
   "text": "Slots 2-4's sprite colours."
  },
  {
   "address": 17840,
   "type": "line",
   "text": "Slots 3 and 4's sprite colours."
  },
  {
   "address": 17841,
   "type": "line",
   "text": "Slot 4's sprite colour."
  },
  {
   "address": 17842,
   "type": "line",
   "text": "Sprite 1's colour, the second character."
  },
  {
   "address": 17843,
   "type": "line",
   "text": "Seven SID voice-3 settings switch_check loads when the second character comes in."
  },
  {
   "address": 17847,
   "type": "line",
   "text": "The jump sound's waveform ($11, triangle with the gate on)."
  },
  {
   "address": 17890,
   "type": "line",
   "text": "Per enemy slot: its respawn chance out of 128 (respawn_timer)."
  },
  {
   "address": 17891,
   "type": "line",
   "text": "Slots 1-4's respawn chances (with $45E2)."
  },
  {
   "address": 17892,
   "type": "line",
   "text": "Slots 2-4's respawn chances."
  },
  {
   "address": 17893,
   "type": "line",
   "text": "Slots 3 and 4's respawn chances."
  },
  {
   "address": 17894,
   "type": "line",
   "text": "Slot 4's respawn chance."
  },
  {
   "address": 17895,
   "type": "line",
   "text": "Per enemy slot: lives, reloaded by enemy_lives_reset."
  },
  {
   "address": 17900,
   "type": "line",
   "text": "Sprite 0's frame at the start."
  },
  {
   "address": 17901,
   "type": "line",
   "text": "Lives at the start of a game (into $CF7C)."
  },
  {
   "address": 17902,
   "type": "line",
   "text": "The music setting for game over."
  },
  {
   "address": 17903,
   "type": "line",
   "text": "The music setting for play."
  },
  {
   "address": 17905,
   "type": "line",
   "text": "Sprite priority and double width (both 0)."
  },
  {
   "address": 17908,
   "type": "line",
   "text": "Which sprites are multicolour ($FF, all)."
  },
  {
   "address": 17909,
   "type": "line",
   "text": "Sprite multicolour 1."
  },
  {
   "address": 17910,
   "type": "line",
   "text": "Sprite multicolour 2."
  },
  {
   "address": 17911,
   "type": "line",
   "text": "Per enemy slot: whether collect_check tests it against the scenery."
  },
  {
   "address": 17916,
   "type": "line",
   "text": "The input period title_start patches into main_loop ($20 passes)."
  },
  {
   "address": 17917,
   "type": "line",
   "text": "The joy_move period title_start patches into main_loop."
  },
  {
   "address": 17918,
   "type": "line",
   "text": "1 lets sprite1_hit_scenery act; 0 on every screen."
  },
  {
   "address": 17919,
   "type": "line",
   "text": "1: gravity and jumping on this screen; 0: fire brings in the second character instead."
  },
  {
   "address": 17983,
   "type": "line",
   "text": "Loaded after the level settings, unread in every simulator run and named by nothing; purpose not established."
  },
  {
   "address": 18944,
   "type": "line",
   "text": "The enemies' path scripts: direction bytes (0 up, 1 down, 2 left, 3 right) ended by $FF, named by each record's +$3B-+$44. $4A00, $4A26, $4A46: runs down, then up; $4A1E, $4A20, $4A22, $4A24: one direction for ever; $4A6B, $4A70, $4A73: long runs down, with a stray $50 that move_sprite ignores."
  },
  {
   "address": 19088,
   "type": "line",
   "text": "Loaded after the path scripts, unread in every simulator run and named by nothing; purpose not established."
  },
  {
   "address": 20112,
   "type": "line",
   "text": "Unread and unnamed like $4A90; bytes such as $7E $C3 $81 $C3 $7E look like glyph bitmaps, which is not established."
  },
  {
   "address": 20736,
   "type": "line",
   "text": "Screen row offsets 0, 40, 80 ... 960 (25 words): row n starts at $0400 + row_offsets[n]."
  },
  {
   "address": 20737,
   "type": "line",
   "text": "The rest of row_offsets (words from $5100)."
  },
  {
   "address": 20805,
   "type": "line",
   "text": "Where try_move looks, by direction: 0 up (the cell itself), $50 down (two rows below), $27 left (the next row, one to the left), $29 right (the next row, one to the right)."
  },
  {
   "address": 20816,
   "type": "line",
   "text": "Unreached, 70 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as lda and tax lda sta ...: code or data left over from development."
  },
  {
   "address": 20888,
   "type": "line",
   "text": "Code nothing in play reaches (no call, no pointer; the simulator never ran it on any screen): a box drawer that writes glyph $80 in colour 5 into a 9-wide frame from $0467, a character plotter ($51D3), a cell-to-bitmap multiplier ($5200) and callers of unused_screen_tools. Tools of a screen editor, left in memory with the game."
  },
  {
   "address": 20947,
   "type": "line",
   "text": "A variable of unused_editor_tools, patched by its own code."
  },
  {
   "address": 20948,
   "type": "line",
   "text": "Part of unused_editor_tools: plot a glyph and its colour through zp $FB."
  },
  {
   "address": 20976,
   "type": "line",
   "text": "More of unused_editor_tools ($5198). Not reached in play: no simulator run on any of the ten screens read or ran it, and the only instructions that name it are the card text read as code ($41xx-$43xx), the unused tools, or the RAM under the KERNAL."
  },
  {
   "address": 21322,
   "type": "line",
   "text": "fall_step's Y before the step, to see whether he moved."
  },
  {
   "address": 21323,
   "type": "line",
   "text": "Gravity period: passes between falling steps (12)."
  },
  {
   "address": 21324,
   "type": "line",
   "text": "fall_step's countdown to the next falling step."
  },
  {
   "address": 21326,
   "type": "line",
   "text": "Pixels fallen so far; start_jump refuses while it is not 0."
  },
  {
   "address": 21328,
   "type": "line",
   "text": "Gravity when not jumping, on screens that have it ($45FF): every $534B (12) calls try to move the boy down a pixel. If he moved he is falling: count it ($534E), play the fall whistle (fall_sound) and lock up and down ($4502/$4503 = 0). If not, he stands: silence and land."
  },
  {
   "address": 21341,
   "type": "line",
   "text": "fall_step's gravity step: reload the period, remember Y, try down; unchanged Y means he stands (fall_sound_off, land), else he falls."
  },
  {
   "address": 21374,
   "type": "line",
   "text": "fall_step: he moved down, so he is falling: the whistle, the fall count, up and down locked."
  },
  {
   "address": 21390,
   "type": "line",
   "text": "The boy's vertical motion, called every pass from tick_border. Not jumping ($C19C = 0): gravity (fall_step). Jumping: when the step timer $2A7F runs out move one pixel, up while rising ($C19B = 0) and down while falling. Rising, jump_counter $2A7E counts up and each step waits jump_speeds[counter], so the rise slows; after 24 steps, or when a ceiling stops him, he falls. Falling, the counter counts back down the same table, so the fall speeds up, until it reaches 0 or the ground stops him. The sound's pitch follows ($54FC, $5518)."
  },
  {
   "address": 21406,
   "type": "line",
   "text": "jump_step's timer ran out: a rising step (remember_y, up one pixel, rise_blocked, the next time from jump_speeds, the pitch) or, when falling, $53C6."
  },
  {
   "address": 21446,
   "type": "line",
   "text": "jump_step falling: fall_blocked, the counter down; at 0 the jump ends ($53E2), else the next time from jump_speeds and the pitch."
  },
  {
   "address": 21474,
   "type": "line",
   "text": "The jump is over: $C19C = 0, fall count $18, so start_jump waits for land."
  },
  {
   "address": 21487,
   "type": "line",
   "text": "Standing: allow up and down again ($4502/$4503 = 1) and clear the fall count $534E. A compare of the fall with $457A is followed only by NOPs, so there is no fall damage (and $457A is $FF)."
  },
  {
   "address": 21516,
   "type": "line",
   "text": "Unreached, 12 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop lda sta jsr rts ...: code or data left over from development."
  },
  {
   "address": 21528,
   "type": "line",
   "text": "Start a jump only when the boy is not falling ($534E = 0): $C19C = 1 (in the air), jump_counter $2A7E = 0, then jump_setup."
  },
  {
   "address": 21546,
   "type": "line",
   "text": "Sprite 0's Y before a rising step (remember_y)."
  },
  {
   "address": 21547,
   "type": "line",
   "text": "Keep sprite 0's Y in $542A before a step, and return the rising/falling flag $C19B."
  },
  {
   "address": 21559,
   "type": "line",
   "text": "After a rising step: an unchanged Y means a ceiling stopped him, so he falls from here ($C19B = 1). Count the step (jump_counter)."
  },
  {
   "address": 21578,
   "type": "line",
   "text": "Passes between steps of a jump, by jump_counter 0-24: 5, 5, 6, 6, 7, 8, 9, 9, 10, 11, 12, 14, 15, 16, 18, 20, 22, 24, 26, 28, 31, 34, 37, 41, 45. Read forwards rising and backwards falling: a slowing rise and a quickening fall."
  },
  {
   "address": 21606,
   "type": "line",
   "text": "Sprite 0's Y before a falling step (fall_blocked)."
  },
  {
   "address": 21607,
   "type": "line",
   "text": "One falling step; an unchanged Y means he has landed: the jump is over ($C19C = 0)."
  },
  {
   "address": 21635,
   "type": "line",
   "text": "Start the jump sound on SID voice 3: attack/decay $0D, sustain/release 0, waveform $45B7 ($11: triangle, gate on), frequency $0800 ($54EA); then walk_frame."
  },
  {
   "address": 21663,
   "type": "line",
   "text": "1 while the falling whistle is playing."
  },
  {
   "address": 21664,
   "type": "line",
   "text": "Silence voice 3, forget the whistle ($549F = 0), then land."
  },
  {
   "address": 21676,
   "type": "line",
   "text": "The falling whistle on voice 3: the first call starts it at $8080, each later call lowers the frequency by $80 ($54C1)."
  },
  {
   "address": 21695,
   "type": "line",
   "text": "The falling whistle's frequency, high byte."
  },
  {
   "address": 21696,
   "type": "line",
   "text": "The falling whistle's frequency, low byte."
  },
  {
   "address": 21697,
   "type": "line",
   "text": "The falling whistle's next step: frequency down by $80."
  },
  {
   "address": 21724,
   "type": "line",
   "text": "fall_sound's first call: the whistle starts at $8080."
  },
  {
   "address": 21733,
   "type": "line",
   "text": "Per enemy slot: its frame delay, from the record; speed_up halves it."
  },
  {
   "address": 21734,
   "type": "line",
   "text": "Slots 1-4's frame delays, from the record."
  },
  {
   "address": 21735,
   "type": "line",
   "text": "Slots 2-4's frame delays (with $54E5)."
  },
  {
   "address": 21736,
   "type": "line",
   "text": "Slots 3 and 4's frame delays."
  },
  {
   "address": 21737,
   "type": "line",
   "text": "Slot 4's frame delay."
  },
  {
   "address": 21738,
   "type": "line",
   "text": "The jump sound's starting frequency, $0800, then walk_frame."
  },
  {
   "address": 21753,
   "type": "line",
   "text": "The jump sound's frequency, low byte."
  },
  {
   "address": 21754,
   "type": "line",
   "text": "The jump sound's frequency, high byte."
  },
  {
   "address": 21756,
   "type": "line",
   "text": "A rising step: the jump sound's frequency ($54F9/$54FA) drops by 5."
  },
  {
   "address": 21784,
   "type": "line",
   "text": "A falling step: the frequency's low byte rises by 5, but the BCS at $5524 branches to the next instruction, so the high byte is decremented every time: the pitch falls by about 256 per step instead of rising. A slip in the code."
  },
  {
   "address": 21808,
   "type": "line",
   "text": "Code that would reset sprites 0 and 1 to the stored start and draw a box of glyphs; called only from the card text read as code ($4345, $43B4, $4278). Not reached in play: no simulator run on any of the ten screens read or ran it, and the only instructions that name it are the card text read as code ($41xx-$43xx), the unused tools, or the RAM under the KERNAL."
  },
  {
   "address": 22097,
   "type": "line",
   "text": "Set try_move's row offset (the SBC operand at $2A0C) for the current screen: with gravity ($45FF = 1) $2C and down blocked from above ($4500 = 0, via $570A), without it $30. Then reload the enemy frames ($2F47)."
  },
  {
   "address": 22114,
   "type": "line",
   "text": "Keep the slot being spawned in $C0E3 and set its moving flag $CF33,x = 1."
  },
  {
   "address": 22125,
   "type": "line",
   "text": "Each slot's lives from $45E7 into $CF76, and sprite 0's pointer from $45EC."
  },
  {
   "address": 22145,
   "type": "line",
   "text": "Each LEVEL makes the enemies faster: for each slot whose move delay ($CF9C) is not already the value at $34E8, halve it (to at least 1) and halve its frame delay ($54E5, to at least 2)."
  },
  {
   "address": 22194,
   "type": "line",
   "text": "Enemy slot X's move delay (A) into $CF9C,x and its frame delay from $4548,x into $54E5,x."
  },
  {
   "address": 22204,
   "type": "line",
   "text": "enemy_lives_reset, from new_life."
  },
  {
   "address": 22208,
   "type": "line",
   "text": "copy_block descriptor: the HUD rows $8400-$844F to $0400, used when a new game starts (start_game $C672)."
  },
  {
   "address": 22214,
   "type": "line",
   "text": "Unreached, 68 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as rts rts rts rts rts ...: code or data left over from development."
  },
  {
   "address": 22282,
   "type": "line",
   "text": "gravity_setup's two branches. With gravity: $4501 (down allowed) = 0 and try_move subtracts $2C; without: $30. Both reload the first path direction ($2F47)."
  },
  {
   "address": 22303,
   "type": "line",
   "text": "Clear the first 1 KB of the character set ($3000-$33FF). Called by nothing in play."
  },
  {
   "address": 22323,
   "type": "line",
   "text": "Three NOPs where show_game_over's call lands, then show_press_ctrl."
  },
  {
   "address": 22326,
   "type": "line",
   "text": "show_press_ctrl: loads PRESS CTRL FOR MENU and screen/colour bytes for row 23 but stores nothing (every access is LDA): the message never appears. Called only through $5733."
  },
  {
   "address": 22346,
   "type": "line",
   "text": "\"PRESS CTRL FOR MENU\", screen codes + $80. Copied to screen row 23 by show_press_ctrl;\nno JSR to that routine was found, so where it is used is open."
  },
  {
   "address": 22366,
   "type": "line",
   "text": "Per enemy slot: low byte of its path script's address (high byte at $CF24,x), from the record."
  },
  {
   "address": 22367,
   "type": "line",
   "text": "Slots 1-4's path script low bytes (with $575E)."
  },
  {
   "address": 22368,
   "type": "line",
   "text": "Slots 2-4's path script low bytes (with $575E)."
  },
  {
   "address": 22369,
   "type": "line",
   "text": "Slots 3 and 4's path script low bytes."
  },
  {
   "address": 22370,
   "type": "line",
   "text": "Slot 4's path script low byte."
  },
  {
   "address": 22376,
   "type": "line",
   "text": "A JMP to switch_allowed, for switch_request."
  },
  {
   "address": 22379,
   "type": "line",
   "text": "Swap the boy and the girl: wait for raster line 16, swap the two sprites (swap_sprites), both on; patch the frame numbers in read_controls, walk_frame and jump_lockout to the other character's sprites ($E8-$F6 for the girl, $D8-$E6 for the boy); flip $5A08 and set the border, 10 (light red) for the girl, 6 (blue) for the boy."
  },
  {
   "address": 22519,
   "type": "line",
   "text": "Unreached, 9 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop nop nop ...: code or data left over from development."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "Once per main-loop pass: count the pass ($CF02), the energy-bar speed check (bar_speed), the energy and poison timers (energy_tick). In a jump, put the take-off direction back ($5A01 -> $C1ED). On the ground, switch read_controls and frame_step back on, check fire for a player switch (switch_request) and reset the jump frames. Then drain_step. Returns $CF02 for main_loop."
  },
  {
   "address": 22573,
   "type": "line",
   "text": "player_step's frame numbers for the ground, patched by player_swap ($D8/$DC boy, $E8/$EC girl)."
  },
  {
   "address": 22578,
   "type": "line",
   "text": "player_step's ground frame for walking right (patched), then drain_step."
  },
  {
   "address": 22585,
   "type": "line",
   "text": "Unreached, 11 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop nop nop ...: code or data left over from development."
  },
  {
   "address": 22596,
   "type": "line",
   "text": "When sprite 0's X has not changed for $90 passes ($5A03), show the standing frame for the facing ($E2 or $E6; patched by player_swap)."
  },
  {
   "address": 22600,
   "type": "line",
   "text": "idle_frame's frame numbers ($E1/$E6 for the boy, $F1/$F6 for the girl, patched by player_swap), then the stand-still counter."
  },
  {
   "address": 22604,
   "type": "line",
   "text": "idle_frame's first frame number (patched)."
  },
  {
   "address": 22608,
   "type": "line",
   "text": "idle_frame's stand-still test: X unchanged for $90 passes shows the standing frame."
  },
  {
   "address": 22646,
   "type": "line",
   "text": "idle_frame's standing frames (patched by player_swap), stored into sprite 0."
  },
  {
   "address": 22651,
   "type": "line",
   "text": "idle_frame's second standing frame (patched)."
  },
  {
   "address": 22656,
   "type": "line",
   "text": "While in the air: read_controls and frame_step are switched off (their first bytes become RTS, $60), the horizontal direction held at take-off is kept ($5A01, put back each pass by player_step), the jumping frame is shown ($E0 or $E1 by facing) and the jump sound starts (jump_sound)."
  },
  {
   "address": 22683,
   "type": "line",
   "text": "jump_lockout's frame numbers ($E0/$E1 for the boy, $F0/$F1 for the girl), then the jump sound."
  },
  {
   "address": 22692,
   "type": "line",
   "text": "jump_lockout's second frame number (patched), then the jump sound."
  },
  {
   "address": 22697,
   "type": "line",
   "text": "jump_lockout's frame bases for player_input (patched), then the jump sound."
  },
  {
   "address": 22707,
   "type": "line",
   "text": "Switch players: X = 1 for the stick's fire bit or key code $37 ('/', the ? key; live: $C5 = $37 swapped to the girl, border 6 -> 10, on the way back and did nothing in the forest)."
  },
  {
   "address": 22715,
   "type": "line",
   "text": "switch_request continued: fire (bit 4 of $DC00) or '?' ($C5 = $37); the first press after a release goes to switch_allowed."
  },
  {
   "address": 22758,
   "type": "line",
   "text": "Swap sprite 0 and sprite 1: X, Y, their X MSB bits and their pointers ($07F8/$07F9). The character under control is always sprite 0."
  },
  {
   "address": 22784,
   "type": "line",
   "text": "For a new game: reset the score line (hud_reset $2CA4), put sprite 1 off-screen at $E0,$E0, the border blue and sprite 1's pointer $EE."
  },
  {
   "address": 22809,
   "type": "line",
   "text": "swap_sprites continued: sprite 1's old Y to sprite 0, the X MSB bits exchanged, then the two pointers."
  },
  {
   "address": 22881,
   "type": "line",
   "text": "The boy slows down as his energy goes. While the bar's seventh cell ($0430) is full: input every $20 passes and a frame step every 2 ($5A88). Once it is not: input only every $80 passes ($CA19 patches main_loop's compare) and a frame step every 4 ($450C)."
  },
  {
   "address": 22912,
   "type": "line",
   "text": "Step sprite 0's pointer $07F8 to the next of its four frames (the low two bits wrap from 3 to 0)."
  },
  {
   "address": 22936,
   "type": "line",
   "text": "Find the end of the energy bar: the first cell from $042E (screen row 1, column 6) that is not a full block ($A9). Returns its index in X."
  },
  {
   "address": 22947,
   "type": "line",
   "text": "Take one eighth-cell off the energy bar: step the last partial cell's glyph down ($A8 ... $A1); when it is empty move to the cell before. When the bar is gone (index 0, glyph $A1) the boy has no energy: out_of_energy $5A70."
  },
  {
   "address": 22963,
   "type": "line",
   "text": "energy_down at an empty cell: step back a cell, or with none left out_of_energy."
  },
  {
   "address": 22976,
   "type": "line",
   "text": "energy_down: the bar is gone, out_of_energy."
  },
  {
   "address": 22979,
   "type": "line",
   "text": "Add one step to the energy bar, up to 33 cells ($21); when the bar is already full, score 10 instead ($CF5A = $0A, add_score)."
  },
  {
   "address": 22992,
   "type": "line",
   "text": "energy_up with a full bar: 10 points instead."
  },
  {
   "address": 23014,
   "type": "line",
   "text": "The energy cost of moving: in a jump, one step off the bar when $5A09 counts to zero; walking, walk_drain. Standing still costs nothing."
  },
  {
   "address": 23040,
   "type": "line",
   "text": "1 while a jump holds the take-off direction; player_step then puts $5A01 back into $C1ED each pass."
  },
  {
   "address": 23041,
   "type": "line",
   "text": "The horizontal direction at take-off, kept for the whole jump."
  },
  {
   "address": 23042,
   "type": "line",
   "text": "Sprite 0's X on the last pass, for idle_frame."
  },
  {
   "address": 23043,
   "type": "line",
   "text": "Passes the boy has stood still; at $90 idle_frame shows the standing frame."
  },
  {
   "address": 23046,
   "type": "line",
   "text": "1 once a switch has been asked for, until fire and '?' are released (switch_request)."
  },
  {
   "address": 23047,
   "type": "line",
   "text": "Working copy of $D010 while swap_sprites exchanges sprites 0's and 1's MSB bits."
  },
  {
   "address": 23048,
   "type": "line",
   "text": "Who is being controlled: 0 the boy, 1 the girl. Sets the border colour (6 or 10) and which crosses may be taken (cross_touch)."
  },
  {
   "address": 23049,
   "type": "line",
   "text": "Energy cost counter while in the air (drain_step)."
  },
  {
   "address": 23050,
   "type": "line",
   "text": "Walking cost counter, inner (walk_drain)."
  },
  {
   "address": 23051,
   "type": "line",
   "text": "Walking cost counter, outer (every 3 of the inner)."
  },
  {
   "address": 23053,
   "type": "line",
   "text": "Energy still to be added, one bar step per 16 calls (energy_tick): a mushroom adds 23."
  },
  {
   "address": 23054,
   "type": "line",
   "text": "energy_tick's 16-call timer."
  },
  {
   "address": 23055,
   "type": "line",
   "text": "tile_touch_a's crumble timer: every 8th step on a crumbling ledge changes its glyph."
  },
  {
   "address": 23056,
   "type": "line",
   "text": "energy_add_slow's loop count."
  },
  {
   "address": 23057,
   "type": "line",
   "text": "Poison still to be spent, one bar step per 18 calls (poison_tick): a toadstool adds 24, an enemy touch 1."
  },
  {
   "address": 23058,
   "type": "line",
   "text": "poison_tick's 18-call timer."
  },
  {
   "address": 23059,
   "type": "line",
   "text": "poison_add's loop count."
  },
  {
   "address": 23060,
   "type": "line",
   "text": "Sinking timer for tiles $62-$65: he falls through them on every 3rd try."
  },
  {
   "address": 23061,
   "type": "line",
   "text": "Crosses still needed on this screen (crosses_left); from +$72 of the record."
  },
  {
   "address": 23062,
   "type": "line",
   "text": "colour_cycle's 40-call timer."
  },
  {
   "address": 23072,
   "type": "line",
   "text": "While a horizontal direction is held ($C1ED), count $5A0A down from 255 and $5A0B from 3; at zero take one step off the bar (energy_down): about one step per 765 passes of walking."
  },
  {
   "address": 23105,
   "type": "line",
   "text": "Between screens: keep the HUD across the card (hud_restore $7659), then set the border to the current player's colour (6 the boy, 10 the girl)."
  },
  {
   "address": 23136,
   "type": "line",
   "text": "One-off setup after loading: walking frame every 2nd call ($450C = 2), then the screen setup at $5D80."
  },
  {
   "address": 23152,
   "type": "line",
   "text": "The energy is gone: set the screen-over flag $CF7D (read by collect_check, which plays the end jingle and goes to game over), and slow the walking animation ($450C = 2, $CA19 = $20)."
  },
  {
   "address": 23176,
   "type": "line",
   "text": "bar_speed with a full bar: frame every 2nd call, input every $20 passes."
  },
  {
   "address": 23194,
   "type": "line",
   "text": "Tiles $2A-$53 in the probed cell. Below $4D: solid, he does not move (the RTS at $5AAA). $4D-$53 with the probe to the side: he moves. $4D-$53 below his feet (Y = $50): every 8th try ($5A0F) the tile steps to the next glyph, and $53 becomes a space: a crumbling ledge that gives way under him after seven steps."
  },
  {
   "address": 23213,
   "type": "line",
   "text": "tile_touch_a on a crumbling ledge: reset the 8-step timer; $53 becomes a space, other stages step on ($5ABF)."
  },
  {
   "address": 23231,
   "type": "line",
   "text": "tile_touch_a: a crumbling ledge steps to its next glyph."
  },
  {
   "address": 23239,
   "type": "line",
   "text": "Tiles $54 and up under the boy. $54: an edible mushroom: add 24 to the energy-drain counter's opposite, energy_add_slow $5B18 (X = $18), and remove the tile. $55: a poisonous toadstool: poison_add $5B44 (X = $19) and remove it. $56: a bonus: score +100 ($CF5A = $64, add_score $CE42) and remove it. $57: a magic cross (cross_touch $7F50). The rest decide whether he may move: $58-$61 and $66 up (via $7673 for $70 up) are solid underfoot, so with the probe below (Y = $50) he does not move and otherwise he does; $62-$65 are solid from the side and give way below only on every 3rd try ($5A14), so he sinks through them slowly."
  },
  {
   "address": 23296,
   "type": "line",
   "text": "Every 16th call while energy is pending ($5A0D > 0): take one unit and grow the energy bar by one step (energy_up $59C3). Then poison_tick."
  },
  {
   "address": 23320,
   "type": "line",
   "text": "Add X-1 to the pending energy gain $5A0D (stopping at 255). energy_tick $5B00 later turns each unit into one step of the energy bar, one every 16 calls."
  },
  {
   "address": 23340,
   "type": "line",
   "text": "Every 18th call while poison is pending ($5A11 > 0): take one unit and run flash_border $72BA, which also takes a step off the energy bar."
  },
  {
   "address": 23364,
   "type": "line",
   "text": "Add X-1 to the pending poison $5A11 (stopping at 255). poison_tick $5B2C later spends it, one unit every 18 calls, each one flashing the border (flash_border $72BA). Called by the toadstool, by an enemy touching the boy ($CDC0) and by the girl touching one ($CEC7)."
  },
  {
   "address": 23383,
   "type": "line",
   "text": "tile_touch_b's cross test ($57, cross_touch), then the floor tests."
  },
  {
   "address": 23390,
   "type": "line",
   "text": "One more cross: step the two-digit MAGIC CROSSES counter on screen ($041C tens, $041D units, glyphs $B0-$B9), then crosses_left $7F00."
  },
  {
   "address": 23472,
   "type": "line",
   "text": "Wait for raster line 16 ($D012 = $10 with bit 8 clear), above the visible screen."
  },
  {
   "address": 23487,
   "type": "line",
   "text": "copy_block descriptor: $B200-$B5FE to $3000, the font the cards and the title use."
  },
  {
   "address": 23495,
   "type": "line",
   "text": "Show this screen's card: the title font back (copy_block $5BBF: $B200-$B5FE to $3000), sprites off, multicolours black, the card named by +$74 of the level record (show_card), then the card tune from $6A18 until it signals (card_wait $7610)."
  },
  {
   "address": 23547,
   "type": "line",
   "text": "The logo drawer's column counter: show_card's $5C00 draws the big CHILLER letters in 5-row strips until it reaches $6A."
  },
  {
   "address": 23548,
   "type": "line",
   "text": "Cleared by the logo drawer; nothing reads it."
  },
  {
   "address": 23549,
   "type": "line",
   "text": "The logo drawer's letter step: after every 5 strips the glyph jumps back by $63."
  },
  {
   "address": 23550,
   "type": "line",
   "text": "The logo drawer's column within a letter (0-2)."
  },
  {
   "address": 23551,
   "type": "line",
   "text": "The glyph the logo drawer puts next, starting at $E7."
  },
  {
   "address": 23552,
   "type": "line",
   "text": "Draw the big CHILLER logo on a card: glyphs from $E7 upward, five rows deep, from screen row 1 ($0545) with colour $0A (red) in colour RAM ($D945), three columns per letter; the letter shapes are glyphs of the title font."
  },
  {
   "address": 23631,
   "type": "line",
   "text": "Show a card: print it, black border and background, multicolour text on, charset at $3000\n($D018 = $1C), then stamp \"MASTERTRONIC'S\" (screen codes + $80, 14 bytes) at $04D6, which is\nscreen row 5, column 14, in red."
  },
  {
   "address": 23687,
   "type": "line",
   "text": "The next glyph for draw_logo: +$19 within a letter's strip, back $63 at a new letter (every 5)."
  },
  {
   "address": 23722,
   "type": "line",
   "text": "Count the logo's columns and stop at $6A; the last cell gets glyph $32 in colour $0A."
  },
  {
   "address": 23749,
   "type": "line",
   "text": "Clear draw_logo's counters before a card."
  },
  {
   "address": 23768,
   "type": "line",
   "text": "Print a text card. X/Y = card address. Clears the screen (CHR$(147)), puts the cursor at\nthe card's first two bytes (row, column) through KERNAL PLOT, then prints PETSCII through\nCHROUT up to a $01 terminator. Colour and cursor control codes lay the card out."
  },
  {
   "address": 23808,
   "type": "line",
   "text": "MASTERTRONIC'S (without the apostrophe, which card_apostrophe adds a row higher), screen codes + $80, 13 bytes; show_card copies 14."
  },
  {
   "address": 23821,
   "type": "line",
   "text": "An older forest card: clear screen, reverse on, red, upper case, THE FOREST; show_forest_card prints it, and nothing calls that."
  },
  {
   "address": 23840,
   "type": "line",
   "text": "Unpack a screen's colour map into colour RAM $D800-$DBEF, two cells per source byte (low nibble, then high nibble). The source ($8800 as written) is patched by setup_screen from +$0C/+$0D."
  },
  {
   "address": 23841,
   "type": "line",
   "text": "unpack_colours' source operand (patched from +$0C of the level record), then the unpacking loop."
  },
  {
   "address": 23843,
   "type": "line",
   "text": "unpack_colours' source high byte (patched), then the loop."
  },
  {
   "address": 23856,
   "type": "line",
   "text": "unpack_colours' loop: two cells per byte until $DBF0."
  },
  {
   "address": 23904,
   "type": "line",
   "text": "A new game starts with the boy: $5A08 = 1 then player_swap, which flips it to 0 and sets his frames and the blue border."
  },
  {
   "address": 23936,
   "type": "line",
   "text": "Multicolour text on ($D016 bit 4), the third and fourth background colours ($D023 = 11 grey, $D024 = 1 white), then wait_ram $5E0A and gravity_setup $5651."
  },
  {
   "address": 23960,
   "type": "line",
   "text": "The energy is gone (out_of_energy set $CF7D): GAME OVER on row 1 (show_game_over), then the jingle at $6B10 (play position and loop point in zp $B7-$BA). $5DA9 waits for its count, stops the music, clears pending energy and poison, and game_over."
  },
  {
   "address": 23977,
   "type": "line",
   "text": "Wait for the jingle's count ($02FF), stop the music, clear pending energy and poison, then game_over."
  },
  {
   "address": 24000,
   "type": "line",
   "text": "Unreached, 55 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as cmp cmp cmp cmp cmp ...: code or data left over from development."
  },
  {
   "address": 24064,
   "type": "line",
   "text": "Print the short forest card at $5D0D. Nothing calls it: the forest's card is at $4100 like the others."
  },
  {
   "address": 24074,
   "type": "line",
   "text": "Clear bit 0 of the processor port $01 until it reads back clear: BASIC ROM out, so the RAM at $A000-$BFFF (the graphics and level data) is visible. From here on $01 = $36."
  },
  {
   "address": 24089,
   "type": "line",
   "text": "Build screen X/2 (X = 0, 2 ... $12) from its level record: zp $11/$12 = level_records[X]. Shows the card first (save_hud $5A41), then copies the play area with the KERNAL banked out ($72A4, the record's +0 descriptor) and the character set (+6), unpacks the colour map (+$0C, unpack_colours), sets the two multicolours (+$0E, +$0F), places the boy and the girl (sprites 0 and 1, +$10-+$17), loads each enemy table (five bytes each, +$18-+$44, into $CF68, $CF3D, $CF38, $45AD, $CF9C, $54E5, $45E2, $575E, $CF24) and the path table $4519 (+$45-+$5D). Then place_crosses twice (blue $0E, then red $0A; ten addresses from +$5E) and set_crosses_needed (+$72)."
  },
  {
   "address": 24512,
   "type": "line",
   "text": "Place five crosses: for each of five screen addresses from the level record, write the cross tile $57 and its colour ($5FDC, patched to $0E for blue, $0A for red) into colour RAM, $D4 pages above."
  },
  {
   "address": 24540,
   "type": "line",
   "text": "place_crosses' colour operand ($0E blue, $0A red), then the colour-RAM store."
  },
  {
   "address": 24551,
   "type": "line",
   "text": "NOPs and bytes after place_crosses, up to the music player at $60A0. Not reached in play: no simulator run on any of the ten screens read or ran it, and the only instructions that name it are the card text read as code ($41xx-$43xx), the unused tools, or the RAM under the KERNAL."
  },
  {
   "address": 24736,
   "type": "line",
   "text": "The SID filter and volume for the music: cutoff $45/$05, resonance 15 with voice 1 filtered, low-pass and band-pass, volume 15."
  },
  {
   "address": 24778,
   "type": "line",
   "text": "Start the music: silence the SID, point the play position zp $B7/$B8 and the loop point\nzp $B9/$BA at the tune, set the filter and volume, and install music_irq in $0314."
  },
  {
   "address": 24821,
   "type": "line",
   "text": "The IRQ ($0314): count the step timer zp $02 down; at zero play the next command. Exits\nthrough the KERNAL's $EA31 via music_irq_exit."
  },
  {
   "address": 24843,
   "type": "line",
   "text": "Self-modified: music_next_command stores the command byte into $610C, so this JMP goes\nto $61xx, the handler for that byte."
  },
  {
   "address": 24844,
   "type": "line",
   "text": "The operand music_next_command writes: the handler's low byte. The note handlers follow."
  },
  {
   "address": 24846,
   "type": "line",
   "text": "Voice 1's note: frequency high and low from the tune, gate off and on with voice 1's waveform."
  },
  {
   "address": 24870,
   "type": "line",
   "text": "Voice 2's note: frequency high and low from the tune, gate off and on with voice 2's waveform."
  },
  {
   "address": 24894,
   "type": "line",
   "text": "Both voices' notes: four tune bytes, then retrigger both."
  },
  {
   "address": 24918,
   "type": "line",
   "text": "Gate both voices off and on again with their waveforms: a repeated chord."
  },
  {
   "address": 24939,
   "type": "line",
   "text": "Set the tempo from the next tune byte, then end the step."
  },
  {
   "address": 24948,
   "type": "line",
   "text": "A rest: the step timer reloads from the tempo, nothing new sounds."
  },
  {
   "address": 24956,
   "type": "line",
   "text": "Count: INC $02FF, which the game polls ($5DAD, $7614) to learn how far the tune has got."
  },
  {
   "address": 24962,
   "type": "line",
   "text": "Voices 1 and 2's waveform bytes ($02AC, $02AD) from the next two tune bytes, then the next command."
  },
  {
   "address": 24977,
   "type": "line",
   "text": "Attack/decay for voices 1 and 2, then sustain/release for 1 and 2: four tune bytes."
  },
  {
   "address": 25004,
   "type": "line",
   "text": "Pulse widths for voices 1 and 2 (four tune bytes: lo, hi, lo, hi)."
  },
  {
   "address": 25031,
   "type": "line",
   "text": "Loop: the play position goes back to the loop point."
  },
  {
   "address": 25042,
   "type": "line",
   "text": "Stop the music: silence the SID and give $0314 back to the KERNAL's $EA31."
  },
  {
   "address": 25065,
   "type": "line",
   "text": "Advance the play position and return the byte there in A."
  },
  {
   "address": 25080,
   "type": "line",
   "text": "The tune: command bytes, each the low byte of its handler's address in page $61, each\nfollowed by its operands (see music_dispatch). Played from $61F9 (music_fetch pre-increments)\nto the loop command $C7 at $6A15. Pitches are computed for the NTSC clock."
  },
  {
   "address": 26104,
   "type": "line",
   "text": "The tune continued from tune_data ($61F8), to its loop command at $6A15."
  },
  {
   "address": 27128,
   "type": "line",
   "text": "The last bytes of the play tune, up to its loop command at $6A15."
  },
  {
   "address": 27158,
   "type": "line",
   "text": "The card tune, played from $6A19 (show_level_card points the player at $6A18); it ends with the count command card_wait waits for."
  },
  {
   "address": 27408,
   "type": "line",
   "text": "The end-of-screen jingle, played from $6B11 (screen_done points the player at $6B10); its count ends the wait at $5DA9."
  },
  {
   "address": 27597,
   "type": "line",
   "text": "Loaded after the jingle; no simulator run played or read it and no pointer names it. More music, perhaps; not established."
  },
  {
   "address": 28621,
   "type": "line",
   "text": "The end of the unread block after the jingle."
  },
  {
   "address": 28672,
   "type": "line",
   "text": "Level record 0, the forest going out. A record: +0 play-area descriptor (here $8450 to $0450), +6 character-set descriptor ($8000 to $3000), +$0C colour map ($8800), +$0E/+$0F multicolours, +$10-+$17 the two players' start, +$18-+$44 the enemy tables, +$45-+$5D enemy paths, +$5E-+$71 ten cross addresses (five blue, five red), +$72 crosses needed, +$73 level byte, +$74 the card."
  },
  {
   "address": 28800,
   "type": "line",
   "text": "Level record 1, the cinema going out: play area $8E50, character set $8A00, colours $9200, 5 crosses."
  },
  {
   "address": 28928,
   "type": "line",
   "text": "Level record 2, the ghetto going out: play area $9850, character set $9400, colours $9C00, 5 crosses."
  },
  {
   "address": 29056,
   "type": "line",
   "text": "Level record 3, the graveyard going out: play area $A250, character set $9E00, colours $A600, 5 crosses."
  },
  {
   "address": 29184,
   "type": "line",
   "text": "Level record 4, the haunted house going out: play area $AC50, character set $A800, colours $B000, 5 crosses."
  },
  {
   "address": 29312,
   "type": "line",
   "text": "A switch is allowed only from level byte 10 on (+$73 of the record), the way back. So the manual's 'You can only SWITCH PLAYERS on the Return journey'. Then player_swap."
  },
  {
   "address": 29328,
   "type": "line",
   "text": "The ten level records' addresses by level byte (0, 2 ... $12): $7000, $7080, $7100, $7180, $7200 on the way to the haunted house, $7300, $7380, $7400, $7480, $7500 on the way back."
  },
  {
   "address": 29329,
   "type": "line",
   "text": "High bytes of level_records (the table is words from $7290)."
  },
  {
   "address": 29348,
   "type": "line",
   "text": "copy_block with interrupts off and $01 = $34 (KERNAL and I/O banked out), so a return screen can come from the RAM under the KERNAL; then $01 = $36."
  },
  {
   "address": 29369,
   "type": "line",
   "text": "flash_border's 4-call timer."
  },
  {
   "address": 29370,
   "type": "line",
   "text": "Take one step off the energy bar (energy_down $59A3); every 4th call wait for raster line 16 and toggle bit 3 of the border colour, the flicker while poison or a touch drains energy."
  },
  {
   "address": 29408,
   "type": "line",
   "text": "Put glyph $AC above MASTERTRONIC'S (row 4, column 26) in red, then, when the colour at $DA5C is white, stamp the PROGRAMMED BY line on row 0 ($75E0 -> show_programmed_by): that is the title card, the only one printed in white there."
  },
  {
   "address": 29440,
   "type": "line",
   "text": "Level record 5, the haunted house on the way back: play area from $EC28 under the KERNAL (as the player left it), the house's graphics ($A800, $B000), 10 crosses: five for each player."
  },
  {
   "address": 29568,
   "type": "line",
   "text": "Level record 6, the graveyard on the way back: play area from $E828, graveyard graphics, 10 crosses."
  },
  {
   "address": 29696,
   "type": "line",
   "text": "Level record 7, the ghetto on the way back: play area from $E428, ghetto graphics, 10 crosses."
  },
  {
   "address": 29824,
   "type": "line",
   "text": "Level record 8, the cinema on the way back: play area from $E028, cinema graphics, 10 crosses."
  },
  {
   "address": 29952,
   "type": "line",
   "text": "Level record 9, the forest on the way back: play area from $7828, forest graphics, 10 crosses."
  },
  {
   "address": 29987,
   "type": "line",
   "text": "Level record 9's last frame for enemy slot 1 (+$23), which title_flicker overwrites by mistake (its STA should have been to $D023). It holds $F2 where the outward forest has $8B, so that enemy steps through 107 frames, $88-$F2."
  },
  {
   "address": 30051,
   "type": "line",
   "text": "Level record 9's cross addresses (+$5E-+$71) continued, the crosses needed (+$72 = 10) and the level byte (+$73 = $12); colour_cycle and place_crosses read them."
  },
  {
   "address": 30080,
   "type": "line",
   "text": "One step of the card_wait flicker for the title screen after a game (from game_over_wait). Its second branch stores to $7523 instead of $D023, so only $D022 ever flickers here: a slip in the copy."
  },
  {
   "address": 30119,
   "type": "line",
   "text": "Point the KERNAL's STOP vector low byte ($0328) at $EA, which disables the RUN/STOP check, then the first-time setup $5A60."
  },
  {
   "address": 30128,
   "type": "line",
   "text": "While no energy-refill countdown runs ($5A11 = 0), set the border to the current player's colour: 6 (blue) for the boy ($5A08 = 0), 10 (light red) for the girl ($5A08 = 1). This is the manual's 'current player is indicated by the border colour'. Then jump_colour_step $7FAE."
  },
  {
   "address": 30176,
   "type": "line",
   "text": "When the colour at $DA5C is white (the title card), show_programmed_by."
  },
  {
   "address": 30208,
   "type": "line",
   "text": "Crosses needed on this screen, from +$72 of the record, into $5A15; sprites 0 and 1 on."
  },
  {
   "address": 30224,
   "type": "line",
   "text": "Wait on the card until the card tune's count command sets $02FF; meanwhile, when random gives 0, toggle bit 1 of $D022 or $D023 (a flicker in the card's colours). Then start the play music (music_start)."
  },
  {
   "address": 30271,
   "type": "line",
   "text": "Copy screen rows 0-1 (80 bytes from $0400) to $0200, then show_level_card."
  },
  {
   "address": 30297,
   "type": "line",
   "text": "Save screen rows 0-1 and show the card (hud_save $763F), then copy the 80 saved bytes from $0200 back to $0400: the score line and energy bar survive the card, which clears the screen."
  },
  {
   "address": 30323,
   "type": "line",
   "text": "tile_touch_b for tiles $70 up: below $70 return (solid); from $70 as $5B8D (solid underfoot)."
  },
  {
   "address": 30335,
   "type": "line",
   "text": "next_screen's level byte."
  },
  {
   "address": 30336,
   "type": "line",
   "text": "Go on from the screen with level byte X (0, 2 ... $12). On the way out (X < 10) first store the finished play area for the way back (copy_block with store_descriptor, destination from screen_store). Then setup_screen X + 2. When the girl is the one playing ($5A08 = 1), swap the two players' sprite pointers and turn the border light red. From level byte 10 on (the way back) both sprites stay on; before that only the boy's."
  },
  {
   "address": 30421,
   "type": "line",
   "text": "next_screen on the way out: only the boy's sprite on."
  },
  {
   "address": 30427,
   "type": "line",
   "text": "Unreached, 38 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop nop nop ...: code or data left over from development."
  },
  {
   "address": 30492,
   "type": "line",
   "text": "game_over_wait's timers ($771C, $771D, $771E: 255 x 255 x 10 calls): how long the title stays before the high score is checked and the title card comes back."
  },
  {
   "address": 30493,
   "type": "line",
   "text": "game_over_wait's middle timer."
  },
  {
   "address": 30494,
   "type": "line",
   "text": "game_over_wait's outer timer."
  },
  {
   "address": 30495,
   "type": "line",
   "text": "game_over_wait's early return, then game_over_wait: while the border is not black, count three timers down; at the end check the high score, restore the title font, blank the colours, print the title card and play its music. With a black border, title_flicker."
  },
  {
   "address": 30496,
   "type": "line",
   "text": "game_over_wait: on the title (black border) flicker (title_flicker); otherwise count $771C, $771D and $771E down (255 x 255 x 10 calls), then high score, title font, colours off, the title card and its music."
  },
  {
   "address": 30533,
   "type": "line",
   "text": "game_over_wait's end: check the high score, the title font, colours off, the title card and its music."
  },
  {
   "address": 30573,
   "type": "line",
   "text": "game_over_wait with a black border: title_flicker."
  },
  {
   "address": 30592,
   "type": "line",
   "text": "Compare the score ($0406-$040B) with hiscore_digits ($8422) digit by digit; when higher copy it there, so the next game shows it after HI. Then reset game_over_wait's timers."
  },
  {
   "address": 30656,
   "type": "line",
   "text": "\"PROGRAMMED BY DAVID AND RICHARD DARLING.\", screen codes + $80, 40 bytes: one screen row."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "Where the forest's screen rows 1-24 are stored for the way back (screen_store's first entry, from $0428): as loaded it already holds a copy, rewritten when the boy leaves the forest; record 9 reads its play area from $7828."
  },
  {
   "address": 31744,
   "type": "line",
   "text": "The title card: welcome, the goal and the controls. Printed by $7760 after a game ends."
  },
  {
   "address": 31746,
   "type": "line",
   "text": "The title card's text, PETSCII, printed by print_card: WELCOME TO THE GAME OF CHILLER, the goal, and the keys and joystick."
  },
  {
   "address": 32496,
   "type": "line",
   "text": "Scratch for $7EF1 (set sprite 0's X MSB)."
  },
  {
   "address": 32497,
   "type": "line",
   "text": "Set sprite 0's X MSB in $D010 to A (0 or 1)."
  },
  {
   "address": 32512,
   "type": "line",
   "text": "Count down the crosses still needed ($5A15, set from the level record). At zero the screen is done: sprites 0 and 1 on, and next_screen $7680 with the level byte (+$73 of the record, 0, 2 ... $12); after the last ($12) it passes $FE, which ends the game in a win."
  },
  {
   "address": 32544,
   "type": "line",
   "text": "Sprite 0's X, kept in $4516 as the start."
  },
  {
   "address": 32551,
   "type": "line",
   "text": "Sprite 0's Y, kept in $4517 as the start."
  },
  {
   "address": 32558,
   "type": "line",
   "text": "Sprite 0's X MSB, kept in $4518."
  },
  {
   "address": 32592,
   "type": "line",
   "text": "The boy or girl on a cross tile ($57). Reads the tile's colour (the colour-RAM cell at the same offset, $D4 pages up): bit 2 clear is a blue cross, set is red. The boy ($5A08 = 0) takes only blue crosses and the girl only red, as the manual says; the other colour is left alone. A cross taken is replaced by a space and counted by cross_count $5B5E."
  },
  {
   "address": 32640,
   "type": "line",
   "text": "Every 40th call ($5A16 counts down from $28): for each of the ten colour-RAM cells listed at +$5E..+$71 of the level record (zp $11), subtract 8 from its colour. That toggles the multicolour bit, so the ten magic crosses flash. The list is the positions of the screen's crosses."
  },
  {
   "address": 32686,
   "type": "line",
   "text": "The jump or fall step (jump_step $538E), then the colour cycle of the crosses (colour_cycle $7F80)."
  },
  {
   "address": 32736,
   "type": "line",
   "text": "copy_block descriptor for next_screen: screen rows 1-24 ($0428-$07EF) to the store; next_screen patches the destination ($7FE4/$7FE5)."
  },
  {
   "address": 32740,
   "type": "line",
   "text": "store_descriptor's destination, low byte (patched from screen_store)."
  },
  {
   "address": 32741,
   "type": "line",
   "text": "store_descriptor's destination, high byte."
  },
  {
   "address": 32744,
   "type": "line",
   "text": "Where each outward screen is kept for the way back, by level byte: $7800 (forest), $E000 (cinema), $E400 (ghetto), $E800 (graveyard), $EC00 (house), then 0. The return records read their play areas from here, so the way back shows each screen as it was left: crosses taken, mushrooms eaten."
  },
  {
   "address": 32745,
   "type": "line",
   "text": "High bytes of screen_store (the table is words from $7FE8)."
  },
  {
   "address": 32760,
   "type": "line",
   "text": "Unreached, 8 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as lsr eor bit ...: code or data left over from development."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The forest's character set (1 KB, glyphs 0-$7F), copied to $3000 by records 0 and 9."
  },
  {
   "address": 33792,
   "type": "line",
   "text": "The HUD template, two screen rows (80 bytes, screen codes + $80): SCORE, MAGIC CROSSES, HI, the high score, ENERGY and a full bar. Copied to $0400 when a game starts (hud_descriptor)."
  },
  {
   "address": 33826,
   "type": "line",
   "text": "The high score's six digits in the HUD copy at $8400 (row 0, columns 34-39 of the template): check_hiscore copies the score here when it is higher, so the next game's HUD shows it."
  },
  {
   "address": 33872,
   "type": "line",
   "text": "The forest's play area, screen rows 2-24 (928 bytes), copied to $0450 by record 0."
  },
  {
   "address": 34800,
   "type": "line",
   "text": "Sixteen bytes after a play area's 928 copied bytes, before its colour map: not copied, unread."
  },
  {
   "address": 34816,
   "type": "line",
   "text": "The forest's colour map, two cells per byte, unpacked by unpack_colours (records 0 and 9)."
  },
  {
   "address": 35328,
   "type": "line",
   "text": "The cinema's character set, copied by records 1 and 8."
  },
  {
   "address": 36352,
   "type": "line",
   "text": "The cinema screen's copy of the HUD rows (80 bytes), reading SILVER CROSSES where the play HUD says MAGIC: the play-area copies start at +$50, so no routine uses these rows. A trace of an earlier version."
  },
  {
   "address": 36432,
   "type": "line",
   "text": "The cinema's play area, copied by record 1."
  },
  {
   "address": 37360,
   "type": "line",
   "text": "Sixteen bytes after the cinema's play area, before its colour map: not copied, unread."
  },
  {
   "address": 37376,
   "type": "line",
   "text": "The cinema's colour map (records 1 and 8)."
  },
  {
   "address": 37888,
   "type": "line",
   "text": "The ghetto's character set, copied by records 2 and 7."
  },
  {
   "address": 38912,
   "type": "line",
   "text": "The ghetto screen's unused HUD rows, SILVER CROSSES (see hud_cinema)."
  },
  {
   "address": 38992,
   "type": "line",
   "text": "The ghetto's play area, copied by record 2."
  },
  {
   "address": 39920,
   "type": "line",
   "text": "Sixteen bytes after the ghetto's play area, before its colour map: not copied, unread."
  },
  {
   "address": 39936,
   "type": "line",
   "text": "The ghetto's colour map (records 2 and 7)."
  },
  {
   "address": 40448,
   "type": "line",
   "text": "The graveyard's character set, copied by records 3 and 6."
  },
  {
   "address": 40976,
   "type": "line",
   "text": "The graveyard's character set continued (from $9E00)."
  },
  {
   "address": 41552,
   "type": "line",
   "text": "The graveyard's play area, copied by record 3."
  },
  {
   "address": 42480,
   "type": "line",
   "text": "Sixteen bytes after the graveyard's play area, before its colour map: not copied, unread."
  },
  {
   "address": 42496,
   "type": "line",
   "text": "The graveyard's colour map (records 3 and 6)."
  },
  {
   "address": 43008,
   "type": "line",
   "text": "The haunted house's character set, copied by records 4 and 5."
  },
  {
   "address": 44032,
   "type": "line",
   "text": "The haunted house screen's unused HUD rows, SILVER CROSSES (see hud_cinema)."
  },
  {
   "address": 44112,
   "type": "line",
   "text": "The haunted house's play area, copied by record 4."
  },
  {
   "address": 45040,
   "type": "line",
   "text": "Sixteen bytes after the haunted house's play area, before its colour map: not copied, unread."
  },
  {
   "address": 45056,
   "type": "line",
   "text": "The haunted house's colour map (records 4 and 5)."
  },
  {
   "address": 45568,
   "type": "line",
   "text": "The font of the cards and the title (1 KB), copied to $3000 by show_level_card and game_over_wait: the letters, and the CHILLER logo pieces draw_logo uses."
  },
  {
   "address": 48059,
   "type": "line",
   "text": "RAM the game never writes (VICE's power-on pattern). Only placeholder operands ($BBBB) in unused code point here."
  },
  {
   "address": 48911,
   "type": "line",
   "text": "A few loaded bytes in the $FF fill after the level data; unread."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Launch sprite 7 from enemy slot X if that slot's sprite is on and not dying ($CA70): direction $454E,x, then extra_launch. These bytes also serve random as the start of its table."
  },
  {
   "address": 49169,
   "type": "line",
   "text": "When the scroll period $4555 is not $FF, count $CF43 down and on zero scroll the play area (scroll_wait) with the 38-column border; every 8th count nudge the boy (scroll_nudge). Never active: every level has $FF."
  },
  {
   "address": 49202,
   "type": "line",
   "text": "Put the boy at the start the record gave (Y from $4517, X from $4516, MSB from $4518), his colour ($4510 into $D027), then new_life $CAED."
  },
  {
   "address": 49208,
   "type": "line",
   "text": "Screen utilities that only other unused code calls ($51CF, $526C): fill routines for the screen and colour RAM, a glyph mirror ($C150), a 64-byte clear. Left from development."
  },
  {
   "address": 49256,
   "type": "line",
   "text": "Read as data by random, whose table runs on from $C000 through $C0FF; as code it is the rest of unused_screen_tools, which nothing calls."
  },
  {
   "address": 49379,
   "type": "line",
   "text": "The enemy slot spawn_enemy is placing."
  },
  {
   "address": 49380,
   "type": "line",
   "text": "Bring enemy slot A (0-4, on sprites 2-6) onto the screen: mark it moving (mark_moving), put it on its path (enemy_to_path), sprite on (its bit from $CF46), first frame from $CF68 into its pointer ($07FA,x), its colour and first direction ($C6E0 -> set_enemy_colour)."
  },
  {
   "address": 49408,
   "type": "line",
   "text": "A bit table $80 ... $01 and a screen-clear loop, called only by unused_screen_tools. Not reached in play: no simulator run on any of the ten screens read or ran it, and the only instructions that name it are the card text read as code ($41xx-$43xx), the unused tools, or the RAM under the KERNAL."
  },
  {
   "address": 49476,
   "type": "line",
   "text": "place_boy continued: X, the MSB ($C1E1), then colour and new_life."
  },
  {
   "address": 49488,
   "type": "line",
   "text": "Unreached, 75 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as ldx lda sta and asl ...: code or data left over from development."
  },
  {
   "address": 49563,
   "type": "line",
   "text": "Jump direction: 0 rising, 1 falling."
  },
  {
   "address": 49564,
   "type": "line",
   "text": "1 while the boy is in the air, 0 on the ground."
  },
  {
   "address": 49565,
   "type": "line",
   "text": "Fire or SHIFT was pressed. Where the level allows jumping ($45FF = 1) start a jump (start_jump $5418) unless the boy is already in the air ($C19C). Where it does not ($45FF = 0) fire brings in the second player (switch_check $C7D4). Then walk_frame."
  },
  {
   "address": 49588,
   "type": "line",
   "text": "start_jump's second half: jump_counter = 0, then jump_setup."
  },
  {
   "address": 49600,
   "type": "line",
   "text": "An older joystick reader nothing calls: turns $DC00's bits into -1/0/+1 in X and Y."
  },
  {
   "address": 49644,
   "type": "line",
   "text": "Vertical direction from read_controls: $FF up, 1 down, 0 none."
  },
  {
   "address": 49645,
   "type": "line",
   "text": "Horizontal direction from read_controls: $FF left, 1 right, 0 none; held through a jump."
  },
  {
   "address": 49646,
   "type": "line",
   "text": "1 when fire or SHIFT was pressed this read."
  },
  {
   "address": 49647,
   "type": "line",
   "text": "An older key reader nothing calls: SHIFT ($028D) with cursor keys $02/$07 set the directions. Superseded by read_controls."
  },
  {
   "address": 49730,
   "type": "line",
   "text": "Unreached, 91 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as ldy inc lda cmp bne ...: code or data left over from development."
  },
  {
   "address": 49821,
   "type": "line",
   "text": "Copy bytes from (zp $FB) to (zp $FD) until the source reaches the end in $0390/$0391. copy_block rewrites the immediates at $C29E-$C2B3 before each use; as the image holds them they copy the HUD rows $8400-$844F to $0400."
  },
  {
   "address": 49822,
   "type": "line",
   "text": "block_copy's patched immediates (source, destination, end), then the copy loop."
  },
  {
   "address": 49826,
   "type": "line",
   "text": "block_copy's source high byte, destination and end immediates (patched by copy_block), then the copy."
  },
  {
   "address": 49830,
   "type": "line",
   "text": "block_copy's destination and end immediates (patched), then the copy loop."
  },
  {
   "address": 49834,
   "type": "line",
   "text": "block_copy's destination high byte and end immediates, then the copy loop."
  },
  {
   "address": 49838,
   "type": "line",
   "text": "block_copy's end immediates, then the copy loop itself."
  },
  {
   "address": 49843,
   "type": "line",
   "text": "block_copy's last patched immediate (the end's high byte), then the byte-by-byte copy until the source reaches it."
  },
  {
   "address": 49847,
   "type": "line",
   "text": "block_copy's loop: byte by byte until the source reaches $0390/$0391."
  },
  {
   "address": 49880,
   "type": "line",
   "text": "Unreached, 40 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as ldx lda sta sta sta ...: code or data left over from development."
  },
  {
   "address": 49920,
   "type": "line",
   "text": "Low bytes of a 56-note frequency table (entries 0-$37, B-1 to A#7 named at the PAL clock, C0 to B7 at NTSC); the last eight bytes are not notes. Read only by the silenced players $CA80 and $C380."
  },
  {
   "address": 49984,
   "type": "line",
   "text": "High bytes of the same table. Like the tune, its pitches land on equal temperament at the NTSC clock."
  },
  {
   "address": 50042,
   "type": "line",
   "text": "Move enemy sprite X in direction Y: move_sprite with A = Y."
  },
  {
   "address": 50048,
   "type": "line",
   "text": "Unreached: the next byte of a note list at $4000 ($0380 as index), $00 stops, $FC-$FF silence, others are notes from freq_lo/freq_hi. Every SID store is to $FFFF."
  },
  {
   "address": 50086,
   "type": "line",
   "text": "A voice setting unused_note_step reads ($21)."
  },
  {
   "address": 50089,
   "type": "line",
   "text": "unused_note_step continued: a note from freq_lo/freq_hi, written to $FFFF."
  },
  {
   "address": 50120,
   "type": "line",
   "text": "Unreached, 63 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop ldx lda ...: code or data left over from development."
  },
  {
   "address": 50183,
   "type": "line",
   "text": "place_boy: MSB into $D010, colour from $4510 ($CEF6)."
  },
  {
   "address": 50192,
   "type": "line",
   "text": "Saved colour of the play area's first cell, for scroll_left."
  },
  {
   "address": 50193,
   "type": "line",
   "text": "Saved character of the play area's first cell, for scroll_left."
  },
  {
   "address": 50194,
   "type": "line",
   "text": "Scroll the play area (rows 1-24 and their colours) one cell to the left, the first cell wrapping round. Reached only through scroll_timer, which every level switches off ($4555 = $FF)."
  },
  {
   "address": 50283,
   "type": "line",
   "text": "Wait for raster line $4B, then scroll_left and scroll_rows."
  },
  {
   "address": 50303,
   "type": "line",
   "text": "The second half of the scroll: each row's last cell moves down a row (from $07BF up), then the saved cell goes back."
  },
  {
   "address": 50379,
   "type": "line",
   "text": "A colour copy into the HUD (sprite colours to colour RAM, $C4D4); named only by unreached code at $2EF1 and by level data. Not reached in play: no simulator run on any of the ten screens read or ran it, and the only instructions that name it are the card text read as code ($41xx-$43xx), the unused tools, or the RAM under the KERNAL."
  },
  {
   "address": 50427,
   "type": "line",
   "text": "Sprite 1 against the scenery (collect_check, $D01F bit 1) on screens with $45FE set: A = 1 switches sprite 1 off; otherwise it flips sprite 1's frame and after 5 flips ($C544) switches it off. No level record sets $45FE (it reads 0), so it never runs."
  },
  {
   "address": 50469,
   "type": "line",
   "text": "Every 8th scroll count, move sprite 0 left and down one pixel with try_move."
  },
  {
   "address": 50500,
   "type": "line",
   "text": "Counts sprite1_hit_scenery's frame flips (to 5)."
  },
  {
   "address": 50564,
   "type": "line",
   "text": "Unreached, 130 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as lda cmp beq lda ora ...: code or data left over from development."
  },
  {
   "address": 50695,
   "type": "line",
   "text": "A dying slot's animation: every 10 passes ($CF82,x) and every $455B,x of those, the next frame; at frame $FC the sprite goes off and the slot is free ($CF4F,x = 0)."
  },
  {
   "address": 50758,
   "type": "line",
   "text": "A new game: reset the players and score (reset_players, boy_first), the background colour ($450F), a CHR$(8) to lock the character set, sprites off; setup_screen 0 (the operand at $C661 is the starting level byte), the HUD rows from $8400 (hud_descriptor), then into restart_screen."
  },
  {
   "address": 50836,
   "type": "line",
   "text": "Start (or restart) play on the current screen: spawn the level's first enemies ($45AB = 0: spawn_enemy $C0E4 for slots 0 to $45AC-1), put the boy back at his start (place_boy $C032), the play font ($D018 = $1C), sprite 7 frame $F8 and sprite 1's colour, clear the enemies' timers, read $D01E to clear it, then enemy_setup $2D00 and main_loop."
  },
  {
   "address": 50919,
   "type": "line",
   "text": "Busy-wait $CF66 times $CF65 loops. Registers kept."
  },
  {
   "address": 50944,
   "type": "line",
   "text": "Every 8th pass: move sprite 1 one pixel through move_sprite $C900 (X = 1), taking its frame number ($07F9 - $E0) as the direction. Its result is not used."
  },
  {
   "address": 50967,
   "type": "line",
   "text": "joy_move's end."
  },
  {
   "address": 50971,
   "type": "line",
   "text": "Every 32nd pass: read the controls (read_controls $C84D), then move the boy one pixel per direction held through try_move $2A04. $C1EC is vertical and $C1ED horizontal ($FF up or left, 1 down or right). Each direction is allowed only when the level's flag says so ($4500-$4503: up, down, left, right) and animates when $4504-$4507 say so, choosing sprite 0's frame ($07F8, $D8-$DF). $CF06 counts the moves. With fire or SHIFT ($C1EE) goes to fire_pressed $C19D; then walk_frame $C819."
  },
  {
   "address": 51100,
   "type": "line",
   "text": "The frame bases player_input adds for walking left and right ($D8, $DC; $E0 in a jump; $E8, $EC for the girl), then the rest of player_input."
  },
  {
   "address": 51142,
   "type": "line",
   "text": "player_input's frame base for walking right ($DC, patched), then fire."
  },
  {
   "address": 51156,
   "type": "line",
   "text": "Fire on a screen without jumping: when sprite 1 is off ($D015 bit 1 clear), bring it in on top of the boy with the frame for the current facing from $4508 (+$E0), sprite 1 on, its MSB bit copied from sprite 0, and voice 3 loaded from $45B3 ($2F00). With sprite 1 already on, nothing."
  },
  {
   "address": 51225,
   "type": "line",
   "text": "Advance the walking animation when the boy moved this pass ($CF06) or always when $450D = 1: every $450C calls ($CF07) step sprite 0's frame (frame_step). Its first byte becomes RTS during a jump."
  },
  {
   "address": 51263,
   "type": "line",
   "text": "walk_frame's return when nothing moved."
  },
  {
   "address": 51264,
   "type": "line",
   "text": "The end of walk_frame after its NOPs; reached only through operands the card text holds ($5EEF, $5EF5 are LDA (zp),Y there, not jumps)."
  },
  {
   "address": 51277,
   "type": "line",
   "text": "Turn the keyboard and the port-2 joystick into directions: $C1EC vertical, $C1ED horizontal ($FF up/left, 1 down/right, 0 none), $C1EE = 1 to jump. Keys come from the KERNAL's key code in $C5 ($40 = none) compared with the level's key table $4512-$4515 (SPACE, SPACE, Z, C: Z walks left, C right, live); SHIFT from the KERNAL's shift flag $028D; the stick from $DC00 through read_stick ($C9C4): up (bit 0) sets $C1EE like SHIFT, down, left and right set the directions. With $4511 = 1 the last direction is kept while nothing is pressed. Its first byte is switched between LDA # ($A9) and RTS ($60) by $5821 and $588B: a jump in progress disables it."
  },
  {
   "address": 51441,
   "type": "line",
   "text": "Unreached, 13 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as noop cmp beq lda sta ...: code or data left over from development."
  },
  {
   "address": 51454,
   "type": "line",
   "text": "move_sprite's direction."
  },
  {
   "address": 51455,
   "type": "line",
   "text": "move_sprite's sprite number."
  },
  {
   "address": 51456,
   "type": "line",
   "text": "Move sprite X (0-7) one pixel in direction A: 0 up, 1 down, 2 left, 3 right. Limits: Y from $32 to $E3, X from 8 (MSB clear) to $14F (MSB set). Keeps $D010's bit for the sprite with bit_clear_mask and bit_set_mask. Returns Y = 0 when it moved, $FF at an edge. Used for the boy, the girl and every enemy."
  },
  {
   "address": 51610,
   "type": "line",
   "text": "Unreached, 42 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop nop nop inc ldx ...: code or data left over from development."
  },
  {
   "address": 51652,
   "type": "line",
   "text": "Return $DC00 (the port-2 joystick) in A. If the stick is pushed and no key is down, first clear both remembered directions, so the stick replaces a key direction."
  },
  {
   "address": 51681,
   "type": "line",
   "text": "Eight masks with one bit clear ($FE, $FD ... $7F): AND with $D010 to clear sprite n's X MSB."
  },
  {
   "address": 51689,
   "type": "line",
   "text": "Eight single-bit masks ($01, $02 ... $80): sprite n's bit in $D010."
  },
  {
   "address": 51697,
   "type": "line",
   "text": "The game's random number: the next byte of the code at $C000 (index $CF14, incremented each call) EOR zp $A2. Returns it in Y, and X = $20. Used for enemy movement, the extra enemy's timing, respawns and the title colour flicker."
  },
  {
   "address": 51712,
   "type": "line",
   "text": "The main loop of play; it never returns. Each pass: tick_border $75B0 (the border back to the player's colour, then the jump/fall step and the colour cycle), player_step $5800 (the boy's walking frame, energy and crosses), joy_move $C700 every 8th pass, player_input $C71B every 32nd pass ($CF03 counts to $20). Then collect_check $2D4B, which goes on to enemy_pass $CA27, which comes back here."
  },
  {
   "address": 51719,
   "type": "line",
   "text": "main_loop's joy_move period (8, patched from $45FD), the input period at $CA19, player_input, then collect_check."
  },
  {
   "address": 51737,
   "type": "line",
   "text": "main_loop's input period ($20, patched to $80 by bar_speed when tired, and from $45FC), then player_input."
  },
  {
   "address": 51751,
   "type": "line",
   "text": "Second half of the main loop. enemy_step $CDE9 for each enemy slot 0-4, extra_enemy $CCF5 (the flyer on sprite 7), sprite_touch $CE87 (the boy's collisions). $CF81 = 1 means the screen was left: restart_screen $C694. Otherwise the scroll timer $C011 and the respawn timer $2FB2; $CF7F = $FF (RUN/STOP was pressed) quits to end_game $2CB4, else back to main_loop."
  },
  {
   "address": 51812,
   "type": "line",
   "text": "Move enemy sprite X (2-6) in direction Y with move_sprite (via $C37A), only when its $D015 bit is on."
  },
  {
   "address": 51840,
   "type": "line",
   "text": "A note player that nothing in play reaches (respawn's $2FAC and the unused $2C3A call it). It steps through 32 notes at $458B, each an index into the split frequency table $C300/$C340, 8 steps per frame of sprite 0's pointer. Every SID store in it has the operand $FFFF, in the PRG as loaded too: the sound was cut before release."
  },
  {
   "address": 51949,
   "type": "line",
   "text": "Take a life ($CF7C), boy's sprite only, reload the enemies' lives (enemy_lives $56BC)."
  },
  {
   "address": 51967,
   "type": "line",
   "text": "Unreached, 36 bytes: no call, jump or absolute access names them and no simulator run executed or read them. They decode as nop rts nop nop nop ...: code or data left over from development."
  },
  {
   "address": 52003,
   "type": "line",
   "text": "The slot enemy_to_path is placing."
  },
  {
   "address": 52004,
   "type": "line",
   "text": "Place enemy slot A on its path: $CF0D,x gives the slot's five-byte block in the path table $4519 (X, Y, MSB bit, a count right, a count down). The sprite goes to that X, Y and MSB, then is walked right (move_sprite direction 3) and down (direction 1) by a random part of each count (random), so each spawn lands at a random point along a line."
  },
  {
   "address": 52241,
   "type": "line",
   "text": "The slot path_step is moving."
  },
  {
   "address": 52242,
   "type": "line",
   "text": "Move enemy slot A one pixel in its direction ($CF15,x, 0-3) with move_sprite (sprite A + 2). At an edge, unless the slot is allowed to stop there ($4538,x), it leaves the screen: enemy_gone and sprite off. Every 8 steps ($CF1A) the next direction: from its path script (pointer $575E,x / $CF24,x, index $CF29,x; $FF restarts), or, when $453D,x is set, a random one of the script's first 64."
  },
  {
   "address": 52353,
   "type": "line",
   "text": "path_step continued: move the enemy (enemy_move_if_on); at an edge remove it unless $4538 lets it stay; otherwise count to its next turn."
  },
  {
   "address": 52395,
   "type": "line",
   "text": "Every $CF9C,x passes (the move delay that speed_up halves each LEVEL) take a path step (path_step). Every 16 passes ($CF97) and every $54E5,x of those, step the sprite's frame, wrapping from the last ($CF38,x) to the first ($CF3D,x)."
  },
  {
   "address": 52469,
   "type": "line",
   "text": "The thrown extra enemy on sprite 7. While it is off, now and then (extra_roll below $4553 = 16) launch it from a random enemy slot 0-4 (launch_extra). While it is on, extra_move."
  },
  {
   "address": 52503,
   "type": "line",
   "text": "Direction A (4 means this slot throws nothing) into $CF44; sprite 7 on at slot X's position (sprite X+2's X, Y and MSB), colour $454D."
  },
  {
   "address": 52565,
   "type": "line",
   "text": "Every $4554 (16) passes ($CF45) move sprite 7 one pixel in its direction ($CF44); at an edge switch it off."
  },
  {
   "address": 52603,
   "type": "line",
   "text": "Returns Y = a random 0-127 only when a second roll is at least $78, else $7F: a launch needs two rolls."
  },
  {
   "address": 52637,
   "type": "line",
   "text": "Sprite 1 (the character not under control, standing where it was left) touching any enemy sprite also loses energy (poison_add X = 2)."
  },
  {
   "address": 52679,
   "type": "line",
   "text": "Nothing reaches this; it opens with three undocumented one-byte NOPs ($DA). It would handle an enemy being hit (the shot in the name is a guess; how it was hit is unknown): its slot from $CF4D, and when $4556,x allows, kill it ($CF4F,x = 1, sprite 1 off, points from add_score_for); otherwise lose energy. Nothing in play can hit an enemy, so this is left from an earlier design."
  },
  {
   "address": 52712,
   "type": "line",
   "text": "unused_shot_hit's return when the enemy may not be hit."
  },
  {
   "address": 52713,
   "type": "line",
   "text": "One enemy slot's turn in enemy_pass: dying ($CF4F,x = 1) runs enemy_dying; otherwise enemy_move."
  },
  {
   "address": 52730,
   "type": "line",
   "text": "unused_shot_hit continued: a dying enemy is left alone; otherwise the boy loses energy."
  },
  {
   "address": 52753,
   "type": "line",
   "text": "One point: add 1 to the score's last digit ($040B) and carry leftwards through the six digits at $0406-$040B (glyphs $B0-$B9)."
  },
  {
   "address": 52776,
   "type": "line",
   "text": "One point off the score, with borrow, then score_inc: a net change of 0 for the digit it starts on. Nothing calls it."
  },
  {
   "address": 52802,
   "type": "line",
   "text": "Add $CF5A + 255 x $CF5B points, one at a time. $CF5C is written into the JSR at $CE52 as its low byte ($11 makes it JSR score_inc), so a caller could pick another counter."
  },
  {
   "address": 52819,
   "type": "line",
   "text": "add_score's patched JSR target ($11: score_inc), then the loop over the points."
  },
  {
   "address": 52843,
   "type": "line",
   "text": "Points for enemy $CF4E: $4560,x units, $4565,x times 255 more, and $456A,x as the add_score call target. Reached only from unused code ($CE0D, $2FA3, and $090D in the loader's area)."
  },
  {
   "address": 52846,
   "type": "line",
   "text": "add_score_for: the points of enemy $CF4E, then add_score."
  },
  {
   "address": 52871,
   "type": "line",
   "text": "The collisions, from the hardware register $D01E. Sprite 0 (the character under control) in it, sprite 1 not, and exactly one enemy: caught. The enemy's bits ($CF5E) and number ($CF5F) are kept, and sprite 0 loses energy (poison_add X = 2, one step). Then girl_touch for sprite 1."
  },
  {
   "address": 52954,
   "type": "line",
   "text": "Reached only from $CAF9, itself unused: a life off ($CAED), the digit at $041A down, and at 0 the screen-over flag $CF7D."
  },
  {
   "address": 52974,
   "type": "line",
   "text": "An enemy left by an edge: its slot gets a life back ($CF76,x), A = its sprite bit ($CF08,x) for the caller to switch off. respawn_timer brings it back later."
  },
  {
   "address": 52982,
   "type": "line",
   "text": "place_boy's end: the boy's colour, sprite 0's frame from $45EC, new_life."
  },
  {
   "address": 52991,
   "type": "line",
   "text": "Loop counter over the five enemy slots (enemy_pass, restart_screen)."
  },
  {
   "address": 52994,
   "type": "line",
   "text": "Main-loop pass counter, 0-7 (player_step): joy_move on the 8th."
  },
  {
   "address": 52995,
   "type": "line",
   "text": "Main-loop counter for player_input (every $20 passes, $80 when tired)."
  },
  {
   "address": 52998,
   "type": "line",
   "text": "Moves made in this input step, for walk_frame. Read as $CF06,x by enemy_move_if_on with X = 2-6, which lands on enemy_bits."
  },
  {
   "address": 52999,
   "type": "line",
   "text": "walk_frame's counter to the frame period $450C."
  },
  {
   "address": 53000,
   "type": "line",
   "text": "Each enemy slot's sprite bit: $04, $08, $10, $20, $40 (sprites 2-6)."
  },
  {
   "address": 53005,
   "type": "line",
   "text": "Each enemy slot's block in the path table $4519: 0, 5, 10, 15, 20."
  },
  {
   "address": 53010,
   "type": "line",
   "text": "enemy_to_path's step counter."
  },
  {
   "address": 53011,
   "type": "line",
   "text": "enemy_to_path's random count, kept across move_sprite."
  },
  {
   "address": 53012,
   "type": "line",
   "text": "random's index into the code at $C000."
  },
  {
   "address": 53013,
   "type": "line",
   "text": "Each enemy slot's current direction, 0-3."
  },
  {
   "address": 53018,
   "type": "line",
   "text": "Each enemy slot's steps since its last turn; a new direction every 8."
  },
  {
   "address": 53028,
   "type": "line",
   "text": "High bytes of each slot's path script address (low bytes at $575E)."
  },
  {
   "address": 53029,
   "type": "line",
   "text": "Slots 1-4's path script high bytes (with $CF24)."
  },
  {
   "address": 53030,
   "type": "line",
   "text": "Slots 2-4's path script high bytes."
  },
  {
   "address": 53031,
   "type": "line",
   "text": "Slots 3 and 4's script high bytes."
  },
  {
   "address": 53032,
   "type": "line",
   "text": "Slot 4's script high byte."
  },
  {
   "address": 53033,
   "type": "line",
   "text": "Each slot's position in its path script."
  },
  {
   "address": 53038,
   "type": "line",
   "text": "Each slot's count to its move delay."
  },
  {
   "address": 53043,
   "type": "line",
   "text": "Each slot's count to its frame delay; spawn_enemy sets it to 1."
  },
  {
   "address": 53048,
   "type": "line",
   "text": "Each slot's last animation frame (sprite pointer), from the record."
  },
  {
   "address": 53049,
   "type": "line",
   "text": "Slots 1-4's last frames (with $CF38)."
  },
  {
   "address": 53050,
   "type": "line",
   "text": "Slots 2-4's last frames."
  },
  {
   "address": 53051,
   "type": "line",
   "text": "Slots 3 and 4's last frames."
  },
  {
   "address": 53052,
   "type": "line",
   "text": "Slot 4's last frame."
  },
  {
   "address": 53053,
   "type": "line",
   "text": "Each slot's first animation frame, from the record."
  },
  {
   "address": 53054,
   "type": "line",
   "text": "Slots 1-4's first frames (with $CF3D)."
  },
  {
   "address": 53055,
   "type": "line",
   "text": "Slots 2-4's first frames."
  },
  {
   "address": 53056,
   "type": "line",
   "text": "Slots 3 and 4's first frames."
  },
  {
   "address": 53057,
   "type": "line",
   "text": "Slot 4's first frame."
  },
  {
   "address": 53059,
   "type": "line",
   "text": "scroll_timer's countdown."
  },
  {
   "address": 53060,
   "type": "line",
   "text": "The extra enemy's direction (4 none)."
  },
  {
   "address": 53061,
   "type": "line",
   "text": "extra_move's timer."
  },
  {
   "address": 53062,
   "type": "line",
   "text": "Sprite bits $04 ... $80 for sprites 2-7."
  },
  {
   "address": 53068,
   "type": "line",
   "text": "extra_roll's first roll."
  },
  {
   "address": 53069,
   "type": "line",
   "text": "Collision bits unused_shot_hit would read."
  },
  {
   "address": 53070,
   "type": "line",
   "text": "The enemy unused_shot_hit found."
  },
  {
   "address": 53071,
   "type": "line",
   "text": "Each slot: 1 while its death animation runs."
  },
  {
   "address": 53076,
   "type": "line",
   "text": "Each slot's death-frame countdown, from $455B."
  },
  {
   "address": 53082,
   "type": "line",
   "text": "add_score's points, units."
  },
  {
   "address": 53083,
   "type": "line",
   "text": "add_score's points in 255s."
  },
  {
   "address": 53084,
   "type": "line",
   "text": "add_score's call target (its JSR's low byte), $11 for score_inc."
  },
  {
   "address": 53086,
   "type": "line",
   "text": "The enemy sprites in the last collision (sprite_touch)."
  },
  {
   "address": 53087,
   "type": "line",
   "text": "The enemy slot in the last collision."
  },
  {
   "address": 53088,
   "type": "line",
   "text": "The silenced player's note index."
  },
  {
   "address": 53091,
   "type": "line",
   "text": "The silenced player's step within a note."
  },
  {
   "address": 53093,
   "type": "line",
   "text": "delay's inner count."
  },
  {
   "address": 53094,
   "type": "line",
   "text": "delay's outer count."
  },
  {
   "address": 53095,
   "type": "line",
   "text": "delay's working counter."
  },
  {
   "address": 53096,
   "type": "line",
   "text": "Each slot's frame when it spawns, from the record."
  },
  {
   "address": 53097,
   "type": "line",
   "text": "Slots 1-4's spawn frames (with $CF68)."
  },
  {
   "address": 53098,
   "type": "line",
   "text": "Slots 2-4's spawn frames."
  },
  {
   "address": 53099,
   "type": "line",
   "text": "Slots 3 and 4's spawn frames."
  },
  {
   "address": 53100,
   "type": "line",
   "text": "Slot 4's spawn frame."
  },
  {
   "address": 53101,
   "type": "line",
   "text": "Per slot: the low byte of a seven-byte sound block in $45xx for unused_kill_enemy."
  },
  {
   "address": 53107,
   "type": "line",
   "text": "Cleared by level_banner; nothing reads it."
  },
  {
   "address": 53108,
   "type": "line",
   "text": "Cleared by level_banner after the wait; nothing reads it."
  },
  {
   "address": 53109,
   "type": "line",
   "text": "respawn_timer's 255-call timer."
  },
  {
   "address": 53110,
   "type": "line",
   "text": "Each slot's lives left: a respawn takes one, leaving by an edge gives one back."
  },
  {
   "address": 53116,
   "type": "line",
   "text": "Lives, from $45ED; new_life takes one."
  },
  {
   "address": 53117,
   "type": "line",
   "text": "Screen over: 1 when the energy is gone (checked by collect_check)."
  },
  {
   "address": 53119,
   "type": "line",
   "text": "$FF ends the game at once (set only by code nothing reaches, on RUN/STOP)."
  },
  {
   "address": 53121,
   "type": "line",
   "text": "1 asks enemy_pass to restart the screen (screen_exit)."
  },
  {
   "address": 53122,
   "type": "line",
   "text": "Each slot's 10-pass step of the death animation."
  },
  {
   "address": 53143,
   "type": "line",
   "text": "Each slot's 16-pass count between frame checks."
  },
  {
   "address": 53148,
   "type": "line",
   "text": "Each slot's move delay in passes, from the record; speed_up halves it each LEVEL."
  },
  {
   "address": 53149,
   "type": "line",
   "text": "Slots 1-4's move delays (with $CF9C)."
  },
  {
   "address": 53150,
   "type": "line",
   "text": "Slots 2-4's move delays."
  },
  {
   "address": 53151,
   "type": "line",
   "text": "Slots 3 and 4's move delays."
  },
  {
   "address": 53152,
   "type": "line",
   "text": "Slot 4's move delay."
  },
  {
   "address": 53153,
   "type": "line",
   "text": "LEVEL nnn, screen codes + $80, 9 cells. The three digits at $CFA7-$CFA9 are the LEVEL counter: level_up counts them, score_reset sets 001. Shown by level_banner."
  },
  {
   "address": 53158,
   "type": "line",
   "text": "The cell before LEVEL's digits: level_up counts X from 3 down and addresses $CFA6,X."
  },
  {
   "address": 53159,
   "type": "line",
   "text": "The LEVEL counter's three digits, set to 001 by score_reset."
  },
  {
   "address": 53160,
   "type": "line",
   "text": "The LEVEL counter's tens and units."
  },
  {
   "address": 53161,
   "type": "line",
   "text": "The LEVEL counter's units digit."
  },
  {
   "address": 53162,
   "type": "line",
   "text": "GAME OVER, screen codes + $80, 9 cells, written by show_game_over."
  },
  {
   "address": 53184,
   "type": "line",
   "text": "Write GAME OVER (txt_game_over, 9 cells) to screen row 1 at $0438 in white ($01 into colour RAM from $D838). The reads of $CFA1, $0617 and $D81A before it are thrown away, left from a copy of level_banner."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "RAM under the KERNAL where next_screen stores the cinema's rows 1-24 when the boy leaves it (screen_store), written with the KERNAL banked in (a write goes to the RAM beneath). Record 8 reads its play area back from $E028 through copy_under_kernal. As loaded these four stores ($E000-$EFEF) hold bytes that are not a screen: a game started straight on a way-back screen (start_game's operand $C661 poked) shows them as garbage (live, work/verify3.py), while one played through shows the screen as it was left (work/playthrough.py)."
  },
  {
   "address": 58368,
   "type": "line",
   "text": "The stored ghetto screen, read back by record 7 from $E428."
  },
  {
   "address": 59392,
   "type": "line",
   "text": "The stored graveyard screen, read back by record 6 from $E828."
  },
  {
   "address": 60416,
   "type": "line",
   "text": "The stored haunted-house screen, read back by record 5 from $EC28."
  }
 ]
}