{
 "schema": 1,
 "platform": "c64",
 "game": "rick-dangerous",
 "build": "PAL cassette, Firebird 1989, analysed in play on level one",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    1024,
    1151,
    "runtime: the staging buffer one decoded map row (four rows of 32 tiles) passes through ($2D55, $2EB3)"
   ],
   [
    1152,
    1535,
    "runtime: the 63-byte sprite mask $1111 fills for each object drawn, and its spare"
   ],
   [
    1536,
    1791,
    "runtime: the tile property table, rebuilt for each room's graphics set by $4081"
   ],
   [
    1792,
    2047,
    "the end of the KERNAL text screen at $0400 as the loader left it (spaces) and its sprite pointers; the game never reads it"
   ],
   [
    47616,
    49075,
    "runtime: the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll"
   ],
   [
    49152,
    51199,
    "runtime: the two screens, drawn by the game"
   ],
   [
    51200,
    51583,
    "runtime: the first set of sprite images the game builds each frame ($0F83)"
   ],
   [
    51712,
    52095,
    "runtime: the second set of sprite images, used on alternate frames"
   ],
   [
    58368,
    59647,
    "runtime: the twenty enemy frames $90-$A3, copied and mirrored for each level by $16D3"
   ]
  ],
  "extra": []
 },
 "blocks": [
  {
   "start": 0,
   "end": 2063,
   "type": "Undefined"
  },
  {
   "start": 2064,
   "end": 2332,
   "type": "Code"
  },
  {
   "start": 2333,
   "end": 2339,
   "type": "Byte"
  },
  {
   "start": 2340,
   "end": 2719,
   "type": "Code"
  },
  {
   "start": 2720,
   "end": 2729,
   "type": "Byte"
  },
  {
   "start": 2730,
   "end": 3758,
   "type": "Code"
  },
  {
   "start": 3759,
   "end": 3790,
   "type": "Byte"
  },
  {
   "start": 3791,
   "end": 3830,
   "type": "Code"
  },
  {
   "start": 3831,
   "end": 3833,
   "type": "Undefined"
  },
  {
   "start": 3834,
   "end": 3968,
   "type": "Code"
  },
  {
   "start": 3969,
   "end": 3970,
   "type": "Byte"
  },
  {
   "start": 3971,
   "end": 4124,
   "type": "Code"
  },
  {
   "start": 4125,
   "end": 4148,
   "type": "Byte"
  },
  {
   "start": 4149,
   "end": 4471,
   "type": "Code"
  },
  {
   "start": 4472,
   "end": 4487,
   "type": "Byte"
  },
  {
   "start": 4488,
   "end": 4503,
   "type": "Undefined"
  },
  {
   "start": 4504,
   "end": 4522,
   "type": "Byte"
  },
  {
   "start": 4523,
   "end": 5496,
   "type": "Code"
  },
  {
   "start": 5497,
   "end": 5514,
   "type": "Byte"
  },
  {
   "start": 5515,
   "end": 6007,
   "type": "Code"
  },
  {
   "start": 6008,
   "end": 6023,
   "type": "Byte"
  },
  {
   "start": 6024,
   "end": 6025,
   "type": "Undefined"
  },
  {
   "start": 6026,
   "end": 6067,
   "type": "Byte"
  },
  {
   "start": 6068,
   "end": 6070,
   "type": "Undefined"
  },
  {
   "start": 6071,
   "end": 6234,
   "type": "Code"
  },
  {
   "start": 6235,
   "end": 6250,
   "type": "Byte"
  },
  {
   "start": 6251,
   "end": 6502,
   "type": "Code"
  },
  {
   "start": 6503,
   "end": 6503,
   "type": "Undefined"
  },
  {
   "start": 6504,
   "end": 6543,
   "type": "Byte"
  },
  {
   "start": 6544,
   "end": 6595,
   "type": "Code"
  },
  {
   "start": 6596,
   "end": 6597,
   "type": "Undefined"
  },
  {
   "start": 6598,
   "end": 7344,
   "type": "Code"
  },
  {
   "start": 7345,
   "end": 7399,
   "type": "Byte"
  },
  {
   "start": 7400,
   "end": 7491,
   "type": "Code"
  },
  {
   "start": 7492,
   "end": 7621,
   "type": "Byte"
  },
  {
   "start": 7622,
   "end": 7625,
   "type": "Undefined"
  },
  {
   "start": 7626,
   "end": 7790,
   "type": "Code"
  },
  {
   "start": 7791,
   "end": 7799,
   "type": "Undefined"
  },
  {
   "start": 7800,
   "end": 7817,
   "type": "Byte"
  },
  {
   "start": 7818,
   "end": 8548,
   "type": "Code"
  },
  {
   "start": 8549,
   "end": 8570,
   "type": "PETSCII Text"
  },
  {
   "start": 8571,
   "end": 8576,
   "type": "Byte"
  },
  {
   "start": 8577,
   "end": 8651,
   "type": "PETSCII Text"
  },
  {
   "start": 8652,
   "end": 8959,
   "type": "Code"
  },
  {
   "start": 8960,
   "end": 9063,
   "type": "Byte"
  },
  {
   "start": 9064,
   "end": 9083,
   "type": "PETSCII Text"
  },
  {
   "start": 9084,
   "end": 9085,
   "type": "Undefined"
  },
  {
   "start": 9086,
   "end": 9119,
   "type": "Byte"
  },
  {
   "start": 9120,
   "end": 9507,
   "type": "Code"
  },
  {
   "start": 9508,
   "end": 9530,
   "type": "Byte"
  },
  {
   "start": 9531,
   "end": 9648,
   "type": "Code"
  },
  {
   "start": 9649,
   "end": 9650,
   "type": "Undefined"
  },
  {
   "start": 9651,
   "end": 9714,
   "type": "Byte"
  },
  {
   "start": 9715,
   "end": 9807,
   "type": "Code"
  },
  {
   "start": 9808,
   "end": 9827,
   "type": "Byte"
  },
  {
   "start": 9828,
   "end": 9935,
   "type": "Code"
  },
  {
   "start": 9936,
   "end": 9945,
   "type": "Byte"
  },
  {
   "start": 9946,
   "end": 10082,
   "type": "Code"
  },
  {
   "start": 10083,
   "end": 10091,
   "type": "PETSCII Text"
  },
  {
   "start": 10092,
   "end": 10600,
   "type": "Code"
  },
  {
   "start": 10601,
   "end": 10655,
   "type": "Byte"
  },
  {
   "start": 10656,
   "end": 11110,
   "type": "Code"
  },
  {
   "start": 11111,
   "end": 11131,
   "type": "Undefined"
  },
  {
   "start": 11132,
   "end": 11177,
   "type": "Byte"
  },
  {
   "start": 11178,
   "end": 11343,
   "type": "Code"
  },
  {
   "start": 11344,
   "end": 11348,
   "type": "Byte"
  },
  {
   "start": 11349,
   "end": 11560,
   "type": "Code"
  },
  {
   "start": 11561,
   "end": 11566,
   "type": "Byte"
  },
  {
   "start": 11567,
   "end": 11573,
   "type": "Undefined"
  },
  {
   "start": 11574,
   "end": 11663,
   "type": "Code"
  },
  {
   "start": 11664,
   "end": 11679,
   "type": "Byte"
  },
  {
   "start": 11680,
   "end": 14543,
   "type": "Code"
  },
  {
   "start": 14544,
   "end": 14546,
   "type": "Undefined"
  },
  {
   "start": 14547,
   "end": 14721,
   "type": "Byte"
  },
  {
   "start": 14722,
   "end": 14724,
   "type": "Undefined"
  },
  {
   "start": 14725,
   "end": 14736,
   "type": "Byte"
  },
  {
   "start": 14737,
   "end": 14802,
   "type": "Undefined"
  },
  {
   "start": 14803,
   "end": 14913,
   "type": "Code"
  },
  {
   "start": 14914,
   "end": 14914,
   "type": "Undefined"
  },
  {
   "start": 14915,
   "end": 15008,
   "type": "Code"
  },
  {
   "start": 15009,
   "end": 15018,
   "type": "Byte"
  },
  {
   "start": 15019,
   "end": 15071,
   "type": "Code"
  },
  {
   "start": 15072,
   "end": 15083,
   "type": "Byte"
  },
  {
   "start": 15084,
   "end": 15188,
   "type": "Code"
  },
  {
   "start": 15189,
   "end": 15200,
   "type": "Byte"
  },
  {
   "start": 15201,
   "end": 15252,
   "type": "Code"
  },
  {
   "start": 15253,
   "end": 15369,
   "type": "Byte"
  },
  {
   "start": 15370,
   "end": 15822,
   "type": "Code"
  },
  {
   "start": 15823,
   "end": 15827,
   "type": "Undefined"
  },
  {
   "start": 15828,
   "end": 15848,
   "type": "Byte"
  },
  {
   "start": 15849,
   "end": 16430,
   "type": "Code"
  },
  {
   "start": 16431,
   "end": 16446,
   "type": "Byte"
  },
  {
   "start": 16447,
   "end": 16496,
   "type": "Code"
  },
  {
   "start": 16497,
   "end": 16512,
   "type": "Byte"
  },
  {
   "start": 16513,
   "end": 16545,
   "type": "Code"
  },
  {
   "start": 16546,
   "end": 16553,
   "type": "Byte"
  },
  {
   "start": 16554,
   "end": 16645,
   "type": "Code"
  },
  {
   "start": 16646,
   "end": 16647,
   "type": "Undefined"
  },
  {
   "start": 16648,
   "end": 16806,
   "type": "Code"
  },
  {
   "start": 16807,
   "end": 18822,
   "type": "Byte"
  },
  {
   "start": 18823,
   "end": 18827,
   "type": "Undefined"
  },
  {
   "start": 18828,
   "end": 19970,
   "type": "Code"
  },
  {
   "start": 19971,
   "end": 19971,
   "type": "Undefined"
  },
  {
   "start": 19972,
   "end": 20281,
   "type": "Byte"
  },
  {
   "start": 20282,
   "end": 20342,
   "type": "Code"
  },
  {
   "start": 20343,
   "end": 20343,
   "type": "Undefined"
  },
  {
   "start": 20344,
   "end": 20427,
   "type": "Code"
  },
  {
   "start": 20428,
   "end": 20431,
   "type": "Undefined"
  },
  {
   "start": 20432,
   "end": 20440,
   "type": "Byte"
  },
  {
   "start": 20441,
   "end": 20441,
   "type": "Undefined"
  },
  {
   "start": 20442,
   "end": 20462,
   "type": "Byte"
  },
  {
   "start": 20463,
   "end": 20466,
   "type": "Undefined"
  },
  {
   "start": 20467,
   "end": 20472,
   "type": "Byte"
  },
  {
   "start": 20473,
   "end": 20475,
   "type": "Undefined"
  },
  {
   "start": 20476,
   "end": 20544,
   "type": "Byte"
  },
  {
   "start": 20545,
   "end": 20545,
   "type": "Undefined"
  },
  {
   "start": 20546,
   "end": 22320,
   "type": "Code"
  },
  {
   "start": 22321,
   "end": 22321,
   "type": "Undefined"
  },
  {
   "start": 22322,
   "end": 44251,
   "type": "Byte"
  },
  {
   "start": 44252,
   "end": 44287,
   "type": "Undefined"
  },
  {
   "start": 44288,
   "end": 45651,
   "type": "PETSCII Text"
  },
  {
   "start": 45652,
   "end": 46463,
   "type": "Byte"
  },
  {
   "start": 46464,
   "end": 46719,
   "type": "Undefined"
  },
  {
   "start": 46720,
   "end": 47615,
   "type": "Byte"
  },
  {
   "start": 47616,
   "end": 49087,
   "type": "Undefined"
  },
  {
   "start": 49088,
   "end": 49099,
   "type": "Code"
  },
  {
   "start": 49100,
   "end": 49151,
   "type": "Byte"
  },
  {
   "start": 49152,
   "end": 51583,
   "type": "Undefined"
  },
  {
   "start": 51584,
   "end": 51711,
   "type": "Byte"
  },
  {
   "start": 51712,
   "end": 52095,
   "type": "Undefined"
  },
  {
   "start": 52096,
   "end": 58367,
   "type": "Byte"
  },
  {
   "start": 58368,
   "end": 59647,
   "type": "Undefined"
  },
  {
   "start": 59648,
   "end": 65535,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "cpu_ddr",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "cpu_port",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2,
   "name": "irq_list_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3,
   "name": "irq_list_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4,
   "name": "irq_start_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5,
   "name": "irq_start_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7,
   "name": "frame_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8,
   "name": "random_seed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9,
   "name": "ptr_a_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10,
   "name": "ptr_a_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11,
   "name": "ptr_b_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "ptr_b_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13,
   "name": "ptr_c_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14,
   "name": "ptr_c_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15,
   "name": "ptr_d_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16,
   "name": "temp",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21,
   "name": "scroll_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22,
   "name": "map_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23,
   "name": "map_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24,
   "name": "split_line_1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25,
   "name": "split_line_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26,
   "name": "decode_lo",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "decode_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28,
   "name": "rick_tiles",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30,
   "name": "new_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31,
   "name": "new_y_frac",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32,
   "name": "new_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33,
   "name": "new_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34,
   "name": "room_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35,
   "name": "room_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36,
   "name": "temp2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37,
   "name": "temp3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38,
   "name": "temp4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39,
   "name": "scroll_go",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40,
   "name": "trap_triggers",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41,
   "name": "zp_enemy_tiles",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48,
   "name": "level",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49,
   "name": "path_frames_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50,
   "name": "path_frames_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51,
   "name": "path_ptr_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52,
   "name": "path_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53,
   "name": "step_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 54,
   "name": "enemy_new_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55,
   "name": "flufomatic",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56,
   "name": "tile_ranges",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64,
   "name": "stick",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65,
   "name": "facing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 66,
   "name": "score_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 67,
   "name": "score_mid",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 68,
   "name": "score_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 70,
   "name": "climbing",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 71,
   "name": "grounded",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "anim_tick",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 73,
   "name": "anim_frame",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 74,
   "name": "crouching",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 75,
   "name": "map_row_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 76,
   "name": "map_row_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 78,
   "name": "up_held",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 79,
   "name": "dying",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 80,
   "name": "death_dx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 81,
   "name": "furthest",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 82,
   "name": "chosen_level",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 83,
   "name": "cheat",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 96,
   "name": "rick_frame",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 160,
   "name": "voice1_pattern",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 161,
   "name": "zpf_A1",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "voice2_pattern",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 163,
   "name": "zpa_A3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "voice3_pattern",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 788,
   "name": "irq_vector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1279,
   "name": "f_04FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1280,
   "name": "f_0500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1289,
   "name": "f_0509",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1301,
   "name": "f_0515",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1304,
   "name": "f_0518",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1328,
   "name": "f_0530",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1352,
   "name": "f_0548",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1536,
   "name": "f_0600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1790,
   "name": "a_06FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1791,
   "name": "a_06FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2064,
   "name": "game_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2148,
   "name": "once_patch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2171,
   "name": "title_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2186,
   "name": "b_088A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2271,
   "name": "b_08DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2291,
   "name": "b_08F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2333,
   "name": "title_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2340,
   "name": "new_level",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2384,
   "name": "b_0950",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2386,
   "name": "b_0952",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2431,
   "name": "b_097F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2473,
   "name": "j_09A9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2481,
   "name": "b_09B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2537,
   "name": "b_09E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2564,
   "name": "j_0A04",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2570,
   "name": "main_loop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2604,
   "name": "b_0A2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2621,
   "name": "b_0A3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2628,
   "name": "j_0A44",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2641,
   "name": "b_0A51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2648,
   "name": "b_0A58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2669,
   "name": "cheats",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2691,
   "name": "b_0A83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2709,
   "name": "b_0A95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2717,
   "name": "b_0A9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2720,
   "name": "cheat_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2730,
   "name": "lose_life",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2787,
   "name": "b_0AE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2804,
   "name": "b_0AF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2824,
   "name": "b_0B08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2851,
   "name": "b_0B23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2855,
   "name": "b_0B27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2858,
   "name": "move_rick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2865,
   "name": "b_0B31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2875,
   "name": "b_0B3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2895,
   "name": "b_0B4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2946,
   "name": "b_0B82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2973,
   "name": "b_0B9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2999,
   "name": "b_0BB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3002,
   "name": "b_0BBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3018,
   "name": "b_0BCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3044,
   "name": "b_0BE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3047,
   "name": "b_0BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3070,
   "name": "b_0BFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3104,
   "name": "b_0C20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3176,
   "name": "j_0C68",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3186,
   "name": "j_0C72",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3218,
   "name": "rick_actions",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3228,
   "name": "b_0C9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3254,
   "name": "r_0CB6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3255,
   "name": "b_0CB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3264,
   "name": "b_0CC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3275,
   "name": "b_0CCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3305,
   "name": "b_0CE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3340,
   "name": "b_0D0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3345,
   "name": "b_0D11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3353,
   "name": "b_0D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3360,
   "name": "b_0D20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3365,
   "name": "j_0D25",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3367,
   "name": "b_0D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3388,
   "name": "b_0D3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3398,
   "name": "b_0D46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3429,
   "name": "b_0D65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3434,
   "name": "j_0D6A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3438,
   "name": "b_0D6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3465,
   "name": "b_0D89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3467,
   "name": "b_0D8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3472,
   "name": "b_0D90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3478,
   "name": "j_0D96",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3485,
   "name": "rick_climb",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3569,
   "name": "b_0DF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3583,
   "name": "b_0DFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3591,
   "name": "b_0E07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3619,
   "name": "b_0E23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3623,
   "name": "b_0E27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3629,
   "name": "b_0E2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3653,
   "name": "b_0E45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3659,
   "name": "b_0E4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3661,
   "name": "b_0E4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3669,
   "name": "b_0E55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3684,
   "name": "stick_dispatch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3698,
   "name": "a_0E72",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3699,
   "name": "a_0E73",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3703,
   "name": "climb_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3720,
   "name": "climb_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3736,
   "name": "face_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3749,
   "name": "face_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3758,
   "name": "r_0EAE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3759,
   "name": "stick_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3775,
   "name": "stick_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3791,
   "name": "bonus_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3827,
   "name": "b_0EF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3830,
   "name": "r_0EF6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3831,
   "name": "bonus_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3832,
   "name": "bonus_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3833,
   "name": "bonus_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3834,
   "name": "rick_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3855,
   "name": "b_0F0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3863,
   "name": "a_0F17",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3865,
   "name": "rick_falling_dead",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3884,
   "name": "b_0F2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3888,
   "name": "b_0F30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3894,
   "name": "b_0F36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3926,
   "name": "b_0F56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3927,
   "name": "b_0F57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3940,
   "name": "a_0F64",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3955,
   "name": "b_0F73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3969,
   "name": "dead_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3971,
   "name": "draw_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4028,
   "name": "b_0FBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4029,
   "name": "a_0FBD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4030,
   "name": "a_0FBE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4032,
   "name": "a_0FC0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4036,
   "name": "a_0FC4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4038,
   "name": "a_0FC6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4039,
   "name": "a_0FC7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4041,
   "name": "a_0FC9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4045,
   "name": "a_0FCD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4071,
   "name": "draw_sprite_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4076,
   "name": "draw_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4097,
   "name": "a_1001",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4112,
   "name": "b_1010",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4113,
   "name": "a_1011",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4114,
   "name": "a_1012",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4116,
   "name": "a_1014",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4119,
   "name": "a_1017",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4120,
   "name": "a_1018",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4125,
   "name": "sprite_buf_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4137,
   "name": "sprite_buf_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4149,
   "name": "sprite_frame_of",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4152,
   "name": "sprite_mask_or_none",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4158,
   "name": "b_103E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4178,
   "name": "build_mask",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4215,
   "name": "b_1077",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4217,
   "name": "b_1079",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4282,
   "name": "b_10BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4369,
   "name": "b_1111",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4370,
   "name": "a_1112",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4375,
   "name": "a_1117",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4380,
   "name": "a_111C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4385,
   "name": "a_1121",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4391,
   "name": "a_1127",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4396,
   "name": "a_112C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4401,
   "name": "a_1131",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4406,
   "name": "a_1136",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4412,
   "name": "a_113C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4417,
   "name": "a_1141",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4422,
   "name": "a_1146",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4427,
   "name": "a_114B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4452,
   "name": "mask_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4453,
   "name": "a_1165",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4461,
   "name": "b_116D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4467,
   "name": "b_1173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4472,
   "name": "mask_edges",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4488,
   "name": "fg_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4489,
   "name": "fg_flags_next",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4504,
   "name": "row_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4512,
   "name": "room_start",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4513,
   "name": "start_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4514,
   "name": "start_y_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4515,
   "name": "start_crouch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4517,
   "name": "start_map_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4518,
   "name": "start_map_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4519,
   "name": "start_row_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4520,
   "name": "start_row_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4521,
   "name": "start_facing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4522,
   "name": "start_climbing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4523,
   "name": "enemy_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4566,
   "name": "b_11D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4567,
   "name": "b_11D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4580,
   "name": "a_11E4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4631,
   "name": "b_1217",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4634,
   "name": "b_121A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4653,
   "name": "b_122D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4666,
   "name": "b_123A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4674,
   "name": "b_1242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4684,
   "name": "b_124C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4710,
   "name": "b_1266",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4720,
   "name": "b_1270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4728,
   "name": "b_1278",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4774,
   "name": "b_12A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4793,
   "name": "b_12B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4806,
   "name": "b_12C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4841,
   "name": "b_12E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4855,
   "name": "b_12F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4860,
   "name": "j_12FC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4866,
   "name": "b_1302",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4880,
   "name": "b_1310",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4892,
   "name": "b_131C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4895,
   "name": "b_131F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4901,
   "name": "j_1325",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4939,
   "name": "b_134B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4986,
   "name": "b_137A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4997,
   "name": "b_1385",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5077,
   "name": "b_13D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5110,
   "name": "b_13F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5197,
   "name": "b_144D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5202,
   "name": "b_1452",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5216,
   "name": "b_1460",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5230,
   "name": "b_146E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5235,
   "name": "b_1473",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5246,
   "name": "b_147E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5261,
   "name": "b_148D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5293,
   "name": "j_14AD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5296,
   "name": "j_14B0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5299,
   "name": "j_14B3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5308,
   "name": "enemy_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5334,
   "name": "r_14D6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5335,
   "name": "enemy_frame0",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5340,
   "name": "enemy_face_rick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5352,
   "name": "b_14E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5375,
   "name": "enemy_touch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5384,
   "name": "b_1508",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5392,
   "name": "b_1510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5400,
   "name": "r_1518",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5401,
   "name": "enemy_killed",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5434,
   "name": "enemy_gone",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5440,
   "name": "enemy_walk",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5449,
   "name": "enemy_dir_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5465,
   "name": "a_1559",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5466,
   "name": "a_155A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5467,
   "name": "step_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5479,
   "name": "b_1567",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5481,
   "name": "r_1569",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5482,
   "name": "step_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5494,
   "name": "b_1576",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5497,
   "name": "dir_step_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5506,
   "name": "dir_step_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5515,
   "name": "enemy_tiles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5543,
   "name": "b_15A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5548,
   "name": "b_15AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5552,
   "name": "b_15B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5554,
   "name": "b_15B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5557,
   "name": "enemy_tile_flags",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5595,
   "name": "b_15DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5601,
   "name": "a_15E1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5610,
   "name": "b_15EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5621,
   "name": "b_15F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5632,
   "name": "a_1600",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5633,
   "name": "b_1601",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5653,
   "name": "tile_row_flags",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5654,
   "name": "a_1616",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5655,
   "name": "b_1617",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5656,
   "name": "a_1618",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5657,
   "name": "a_1619",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5682,
   "name": "r_1632",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5683,
   "name": "enemy_hits_obj",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5698,
   "name": "j_1642",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5745,
   "name": "b_1671",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5746,
   "name": "r_1672",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5747,
   "name": "enemy_squashed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5776,
   "name": "b_1690",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5796,
   "name": "a_16A4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5804,
   "name": "a_16AC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5828,
   "name": "a_16C4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5831,
   "name": "a_16C7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5835,
   "name": "a_16CB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5838,
   "name": "b_16CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5842,
   "name": "r_16D2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5843,
   "name": "mirror_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5891,
   "name": "b_1703",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5892,
   "name": "a_1704",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5897,
   "name": "a_1709",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5908,
   "name": "mirror_sixteen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5911,
   "name": "mirror_eight",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5917,
   "name": "mirror_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5920,
   "name": "mirror_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5927,
   "name": "b_1727",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5935,
   "name": "b_172F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5936,
   "name": "a_1730",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5937,
   "name": "a_1731",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5939,
   "name": "a_1733",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5940,
   "name": "a_1734",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5947,
   "name": "a_173B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5948,
   "name": "a_173C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5971,
   "name": "b_1753",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5987,
   "name": "b_1763",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5991,
   "name": "mirror_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5994,
   "name": "mirror_two_pairs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5997,
   "name": "mirror_pair",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6008,
   "name": "mirror_src_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6012,
   "name": "mirror_src_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6016,
   "name": "enemy_colour_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6020,
   "name": "enemy_colour_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6024,
   "name": "rick_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6025,
   "name": "enemy_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6026,
   "name": "enemy_frames_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6035,
   "name": "enemy_frames_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6040,
   "name": "enemy_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6052,
   "name": "enemy_frame_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6068,
   "name": "room_rec_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6069,
   "name": "room_rec_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6070,
   "name": "room_gfx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6071,
   "name": "level_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6136,
   "name": "enter_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6149,
   "name": "b_1805",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6151,
   "name": "b_1807",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6235,
   "name": "room_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6251,
   "name": "exit_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6255,
   "name": "exit_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6257,
   "name": "b_1871",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6300,
   "name": "b_189C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6322,
   "name": "b_18B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6330,
   "name": "b_18BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6353,
   "name": "b_18D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6364,
   "name": "a_18DC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6401,
   "name": "b_1901",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6409,
   "name": "b_1909",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6411,
   "name": "b_190B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6417,
   "name": "swap_tiles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6451,
   "name": "b_1933",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6453,
   "name": "a_1935",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6456,
   "name": "a_1938",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6459,
   "name": "a_193B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6463,
   "name": "a_193F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6483,
   "name": "b_1953",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6501,
   "name": "b_1965",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6503,
   "name": "tiles_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6504,
   "name": "lv_start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6508,
   "name": "lv_start_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6512,
   "name": "lv_map_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6516,
   "name": "lv_map_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6520,
   "name": "lv_map_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6524,
   "name": "lv_map_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6528,
   "name": "lv_rooms_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6532,
   "name": "lv_rooms_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6536,
   "name": "lv_colour1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6540,
   "name": "lv_colour2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6544,
   "name": "objects_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6572,
   "name": "b_19AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6590,
   "name": "a_19BE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6591,
   "name": "a_19BF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6592,
   "name": "b_19C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6596,
   "name": "rick_centre_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6597,
   "name": "rick_centre_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6598,
   "name": "box_dynamite",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6623,
   "name": "b_19DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6636,
   "name": "r_19EC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6637,
   "name": "b_19ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6650,
   "name": "box_bullets",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6675,
   "name": "b_1A13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6693,
   "name": "r_1A25",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6694,
   "name": "b_1A26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6707,
   "name": "box_burning",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 6716,
   "name": "b_1A3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6721,
   "name": "j_1A41",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6747,
   "name": "r_1A5B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6748,
   "name": "b_1A5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6751,
   "name": "treasure",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6757,
   "name": "b_1A65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6770,
   "name": "trap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6783,
   "name": "b_1A7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6797,
   "name": "b_1A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6806,
   "name": "b_1A96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6822,
   "name": "b_1AA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6831,
   "name": "b_1AAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6847,
   "name": "b_1ABF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6849,
   "name": "j_1AC1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6862,
   "name": "r_1ACE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6863,
   "name": "trap_run",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6911,
   "name": "b_1AFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6923,
   "name": "b_1B0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6951,
   "name": "b_1B27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6966,
   "name": "b_1B36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6969,
   "name": "b_1B39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7014,
   "name": "b_1B66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7030,
   "name": "a_1B76",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7041,
   "name": "b_1B81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7044,
   "name": "b_1B84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7062,
   "name": "b_1B96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7070,
   "name": "b_1B9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7086,
   "name": "b_1BAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7098,
   "name": "a_1BBA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7110,
   "name": "b_1BC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7113,
   "name": "r_1BC9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7114,
   "name": "bonus_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7142,
   "name": "r_1BE6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7143,
   "name": "bonus_collect",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7184,
   "name": "r_1C10",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7185,
   "name": "obj_done",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7203,
   "name": "obj_remove",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7219,
   "name": "touches_rick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7242,
   "name": "a_1C4A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7253,
   "name": "b_1C55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7279,
   "name": "a_1C6F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7281,
   "name": "b_1C71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7282,
   "name": "r_1C72",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7283,
   "name": "hit_by_bullet",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7290,
   "name": "b_1C7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7292,
   "name": "b_1C7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7300,
   "name": "hit_by_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7307,
   "name": "b_1C8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7313,
   "name": "b_1C91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7343,
   "name": "b_1CAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7344,
   "name": "r_1CB0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7345,
   "name": "unused_hit_test",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7400,
   "name": "trap_rick_in_zone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7420,
   "name": "b_1CFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7422,
   "name": "trap_blast_in_zone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7431,
   "name": "b_1D07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7440,
   "name": "trap_bullet_in_zone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7447,
   "name": "b_1D17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7455,
   "name": "trap_stick_in_zone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7462,
   "name": "b_1D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7468,
   "name": "in_zone",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7488,
   "name": "obj_handler_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7489,
   "name": "zone_out",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7490,
   "name": "b_1D42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7491,
   "name": "r_1D43",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7492,
   "name": "handlers_lo_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7555,
   "name": "obj_handler_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7626,
   "name": "path_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7680,
   "name": "path_segment",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7722,
   "name": "b_1E2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7726,
   "name": "path_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7756,
   "name": "b_1E4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7759,
   "name": "b_1E4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7782,
   "name": "b_1E66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7790,
   "name": "r_1E6E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7791,
   "name": "path_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7792,
   "name": "path_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7793,
   "name": "path_dx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7794,
   "name": "path_dy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7795,
   "name": "path_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7796,
   "name": "path_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7797,
   "name": "path_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7798,
   "name": "path_frame_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7799,
   "name": "path_running",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7800,
   "name": "path_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7808,
   "name": "path_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7813,
   "name": "path_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7818,
   "name": "hall_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7829,
   "name": "b_1E95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7889,
   "name": "b_1ED1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7904,
   "name": "b_1EE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8007,
   "name": "b_1F47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8038,
   "name": "hof_dots",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8043,
   "name": "hof_dots2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8046,
   "name": "hof_char",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8050,
   "name": "hof_bcd",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8059,
   "name": "hof_digit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8062,
   "name": "a_1F7E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8070,
   "name": "b_1F86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8072,
   "name": "hof_put",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8076,
   "name": "name_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8078,
   "name": "b_1F8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8104,
   "name": "b_1FA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8106,
   "name": "b_1FAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8129,
   "name": "b_1FC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8137,
   "name": "b_1FC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8151,
   "name": "b_1FD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8187,
   "name": "j_1FFB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8206,
   "name": "b_200E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8241,
   "name": "b_2031",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8263,
   "name": "b_2047",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8285,
   "name": "b_205D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8307,
   "name": "b_2073",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8311,
   "name": "b_2077",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8330,
   "name": "name_letter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8353,
   "name": "b_20A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8365,
   "name": "b_20AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8378,
   "name": "b_20BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8400,
   "name": "b_20D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8420,
   "name": "hof_copy_name",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8423,
   "name": "hof_copy_name4",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8429,
   "name": "hof_copy_name2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8432,
   "name": "hof_copy_letter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8441,
   "name": "b_20F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8451,
   "name": "name_filter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8453,
   "name": "b_2105",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8482,
   "name": "b_2122",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8488,
   "name": "b_2128",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8490,
   "name": "b_212A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8499,
   "name": "b_2133",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8501,
   "name": "filter_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8505,
   "name": "filter_find",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8516,
   "name": "b_2144",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8518,
   "name": "name_codes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8520,
   "name": "b_2148",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8533,
   "name": "b_2155",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8535,
   "name": "b_2157",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8548,
   "name": "r_2164",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8549,
   "name": "enter_name_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8571,
   "name": "grid_extra",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8577,
   "name": "rude_words",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8622,
   "name": "snigger",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8632,
   "name": "code_flufomatic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8642,
   "name": "code_boing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8652,
   "name": "hof_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8654,
   "name": "b_21CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8656,
   "name": "b_21D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8668,
   "name": "b_21DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8682,
   "name": "b_21EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8696,
   "name": "b_21F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8699,
   "name": "b_21FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8701,
   "name": "b_21FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8708,
   "name": "b_2204",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8792,
   "name": "b_2258",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8810,
   "name": "hof_prank",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8822,
   "name": "b_2276",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8830,
   "name": "b_227E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8846,
   "name": "r_228E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8847,
   "name": "story_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8887,
   "name": "b_22B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8888,
   "name": "a_22B8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8889,
   "name": "a_22B9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8895,
   "name": "b_22BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8920,
   "name": "b_22D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8921,
   "name": "a_22D9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8922,
   "name": "a_22DA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8926,
   "name": "b_22DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8932,
   "name": "cursor_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8954,
   "name": "music_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8960,
   "name": "hof_score_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8961,
   "name": "t_2301",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8968,
   "name": "hof_score_mid",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8969,
   "name": "t_2309",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8976,
   "name": "hof_score_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8977,
   "name": "t_2311",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8984,
   "name": "hall_of_fame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8985,
   "name": "t_2319",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8992,
   "name": "t_2320",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8993,
   "name": "t_2321",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9000,
   "name": "t_2328",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9001,
   "name": "t_2329",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9008,
   "name": "t_2330",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9009,
   "name": "t_2331",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9016,
   "name": "t_2338",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9017,
   "name": "t_2339",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9024,
   "name": "t_2340",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9025,
   "name": "t_2341",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9032,
   "name": "t_2348",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9033,
   "name": "t_2349",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9040,
   "name": "t_2350",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9041,
   "name": "t_2351",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9048,
   "name": "t_2358",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9049,
   "name": "t_2359",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9056,
   "name": "t_2360",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9057,
   "name": "t_2361",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9064,
   "name": "prank_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9084,
   "name": "colour_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9085,
   "name": "band_row",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9086,
   "name": "flash_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9094,
   "name": "select_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9102,
   "name": "colour_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9111,
   "name": "colour_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9120,
   "name": "story_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9133,
   "name": "b_23AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9155,
   "name": "b_23C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9192,
   "name": "b_23E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9221,
   "name": "b_2405",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9223,
   "name": "b_2407",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9246,
   "name": "b_241E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9267,
   "name": "b_2433",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9333,
   "name": "frame_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9358,
   "name": "story_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9360,
   "name": "b_2490",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9379,
   "name": "b_24A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9395,
   "name": "b_24B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9397,
   "name": "b_24B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9403,
   "name": "b_24BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9410,
   "name": "j_24C2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9412,
   "name": "b_24C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9421,
   "name": "b_24CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9435,
   "name": "r_24DB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9436,
   "name": "swap_story_chars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9456,
   "name": "b_24F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9458,
   "name": "a_24F2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9462,
   "name": "a_24F6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9465,
   "name": "a_24F9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9469,
   "name": "a_24FD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9488,
   "name": "b_2510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9508,
   "name": "unused_swap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9531,
   "name": "clear_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9535,
   "name": "b_253F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9551,
   "name": "reveal_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9558,
   "name": "b_2556",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9572,
   "name": "b_2564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9588,
   "name": "a_2574",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9589,
   "name": "a_2575",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9601,
   "name": "a_2581",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9602,
   "name": "a_2582",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9604,
   "name": "a_2584",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9605,
   "name": "a_2585",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9642,
   "name": "short_wait",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9644,
   "name": "b_25AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9649,
   "name": "reveal_pass",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9650,
   "name": "reveal_byte",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9651,
   "name": "reveal_src_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9675,
   "name": "reveal_src_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9699,
   "name": "reveal_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9715,
   "name": "story_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9760,
   "name": "b_2620",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9762,
   "name": "b_2622",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9763,
   "name": "a_2623",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9764,
   "name": "a_2624",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9770,
   "name": "a_262A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9772,
   "name": "a_262C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9773,
   "name": "a_262D",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9801,
   "name": "b_2649",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9808,
   "name": "picture_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9813,
   "name": "picture_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9818,
   "name": "picture_mc1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9823,
   "name": "picture_mc2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9828,
   "name": "title_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9837,
   "name": "logo_shimmer",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9845,
   "name": "b_2675",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9863,
   "name": "b_2687",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9865,
   "name": "b_2689",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9884,
   "name": "border_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9892,
   "name": "path_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9933,
   "name": "b_26CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9936,
   "name": "story_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9941,
   "name": "story_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9946,
   "name": "wait_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9956,
   "name": "b_26E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9964,
   "name": "game_over",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9967,
   "name": "b_26EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9986,
   "name": "b_2702",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10071,
   "name": "b_2757",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10077,
   "name": "b_275D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10083,
   "name": "t_2763",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10092,
   "name": "title_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10097,
   "name": "b_2771",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10137,
   "name": "b_2799",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10161,
   "name": "b_27B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10168,
   "name": "b_27B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10176,
   "name": "b_27C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10192,
   "name": "b_27D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10218,
   "name": "b_27EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10239,
   "name": "b_27FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10253,
   "name": "b_280D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10262,
   "name": "b_2816",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10281,
   "name": "j_2829",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10313,
   "name": "b_2849",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10322,
   "name": "b_2852",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10332,
   "name": "b_285C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10340,
   "name": "select_flash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10353,
   "name": "b_2871",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10369,
   "name": "select_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10384,
   "name": "b_2890",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10385,
   "name": "a_2891",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10386,
   "name": "a_2892",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10391,
   "name": "title_plain",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10405,
   "name": "b_28A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10420,
   "name": "b_28B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10433,
   "name": "b_28C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10546,
   "name": "b_2932",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10577,
   "name": "print_string",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10592,
   "name": "b_2960",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10593,
   "name": "a_2961",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10594,
   "name": "a_2962",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10601,
   "name": "string_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10606,
   "name": "string_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10611,
   "name": "string_len",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10616,
   "name": "select_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10620,
   "name": "select_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10624,
   "name": "select_names",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10648,
   "name": "select_flash_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10656,
   "name": "text_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10669,
   "name": "panel_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10687,
   "name": "b_29BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10690,
   "name": "clear_screens",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10693,
   "name": "b_29C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10713,
   "name": "b_29D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10749,
   "name": "b_29FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10767,
   "name": "font_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10775,
   "name": "fire_gun",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10835,
   "name": "b_2A53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10881,
   "name": "b_2A81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10894,
   "name": "b_2A8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10899,
   "name": "bullet_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10937,
   "name": "r_2AB9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10938,
   "name": "bullet_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10960,
   "name": "b_2AD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10969,
   "name": "b_2AD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10973,
   "name": "b_2ADD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11018,
   "name": "r_2B0A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11019,
   "name": "bullet_cell",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11102,
   "name": "b_2B5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11105,
   "name": "b_2B61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11111,
   "name": "bullet_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11112,
   "name": "bullet_under_char",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11113,
   "name": "bullet_under_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11114,
   "name": "bullet_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11115,
   "name": "bullet_y_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11116,
   "name": "bullet_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11117,
   "name": "bullet_cell_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11118,
   "name": "bullet_cell_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11119,
   "name": "bullet_dx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11120,
   "name": "bullet_char",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11121,
   "name": "bullet_hit_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11122,
   "name": "bullet_hit_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11123,
   "name": "stick_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11124,
   "name": "stick_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11125,
   "name": "stick_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11126,
   "name": "fuse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11127,
   "name": "blast",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11128,
   "name": "blast_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11129,
   "name": "blast_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11130,
   "name": "blast_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11131,
   "name": "blast_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11132,
   "name": "row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11155,
   "name": "row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11178,
   "name": "lay_dynamite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11255,
   "name": "r_2BF7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11256,
   "name": "dynamite_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11283,
   "name": "r_2C13",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11284,
   "name": "b_2C14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11296,
   "name": "b_2C20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11312,
   "name": "b_2C30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11322,
   "name": "b_2C3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11340,
   "name": "b_2C4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11343,
   "name": "r_2C4F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11344,
   "name": "blast_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11349,
   "name": "blast_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11359,
   "name": "b_2C5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11361,
   "name": "b_2C61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11396,
   "name": "b_2C84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11402,
   "name": "enemy_in_blast",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11419,
   "name": "a_2C9B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11421,
   "name": "b_2C9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11423,
   "name": "in_blast",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11444,
   "name": "b_2CB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11451,
   "name": "b_2CBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11468,
   "name": "b_2CCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11469,
   "name": "r_2CCD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11470,
   "name": "panel_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11517,
   "name": "b_2CFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11526,
   "name": "r_2D06",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11527,
   "name": "draw_score",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 11561,
   "name": "panel_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11564,
   "name": "panel_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11567,
   "name": "shown_bullets",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11568,
   "name": "shown_dynamite",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11569,
   "name": "shown_lives",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11570,
   "name": "bullets",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11571,
   "name": "dynamite",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11572,
   "name": "lives",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11573,
   "name": "panel_turn",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11574,
   "name": "add_hundreds",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11581,
   "name": "add_points",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11593,
   "name": "j_2D49",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11603,
   "name": "b_2D53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11605,
   "name": "decode_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11609,
   "name": "decode_row_to",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11617,
   "name": "b_2D61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11637,
   "name": "b_2D75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11641,
   "name": "a_2D79",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11642,
   "name": "a_2D7A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11644,
   "name": "a_2D7C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11645,
   "name": "a_2D7D",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11659,
   "name": "a_2D8B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11664,
   "name": "block_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11680,
   "name": "draw_room",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11730,
   "name": "b_2DD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11857,
   "name": "b_2E51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11859,
   "name": "b_2E53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11860,
   "name": "a_2E54",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11861,
   "name": "a_2E55",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11863,
   "name": "a_2E57",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11864,
   "name": "a_2E58",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11870,
   "name": "a_2E5E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11871,
   "name": "a_2E5F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11955,
   "name": "draw_map_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11960,
   "name": "b_2EB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11962,
   "name": "b_2EBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11963,
   "name": "a_2EBB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11980,
   "name": "b_2ECC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11996,
   "name": "build_collision_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11998,
   "name": "j_2EDE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12148,
   "name": "b_2F74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12257,
   "name": "b_2FE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12309,
   "name": "b_3015",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12312,
   "name": "scroll_view_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12326,
   "name": "b_3026",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12363,
   "name": "b_304B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12378,
   "name": "b_305A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12393,
   "name": "b_3069",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12417,
   "name": "b_3081",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12420,
   "name": "b_3084",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12431,
   "name": "scroll_up_steps",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12434,
   "name": "scroll_up_twice",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12437,
   "name": "scroll_up_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12444,
   "name": "b_309C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12451,
   "name": "scroll_view_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12469,
   "name": "b_30B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12506,
   "name": "b_30DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12521,
   "name": "b_30E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12536,
   "name": "b_30F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12560,
   "name": "b_3110",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12563,
   "name": "b_3113",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12574,
   "name": "scroll_down_steps",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12577,
   "name": "scroll_down_twice",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12580,
   "name": "scroll_down_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12587,
   "name": "b_312B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12594,
   "name": "shift_down_top",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12636,
   "name": "b_315C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12638,
   "name": "j_315E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12784,
   "name": "a_31F0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12795,
   "name": "b_31FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12801,
   "name": "shift_down_bottom",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12802,
   "name": "a_3202",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12818,
   "name": "j_3212",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12964,
   "name": "a_32A4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12975,
   "name": "r_32AF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12976,
   "name": "colour_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12978,
   "name": "j_32B2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13122,
   "name": "r_3342",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13123,
   "name": "shift_up_top",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13146,
   "name": "b_335A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13170,
   "name": "b_3372",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13172,
   "name": "j_3374",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13311,
   "name": "a_33FF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13329,
   "name": "b_3411",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13335,
   "name": "shift_up_bottom",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13336,
   "name": "a_3418",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13352,
   "name": "j_3428",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13491,
   "name": "a_34B3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13509,
   "name": "r_34C5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13510,
   "name": "colour_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13512,
   "name": "j_34C8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13656,
   "name": "r_3558",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13657,
   "name": "sprite_sort",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13671,
   "name": "b_3567",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13684,
   "name": "b_3574",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13723,
   "name": "b_359B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13758,
   "name": "b_35BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13759,
   "name": "a_35BF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13760,
   "name": "b_35C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13773,
   "name": "b_35CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13786,
   "name": "b_35DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13791,
   "name": "b_35DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13808,
   "name": "b_35F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13827,
   "name": "a_3603",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13872,
   "name": "b_3630",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13915,
   "name": "b_365B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13921,
   "name": "b_3661",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13963,
   "name": "b_368B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14006,
   "name": "b_36B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14009,
   "name": "b_36B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14010,
   "name": "a_36BA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14032,
   "name": "b_36D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14041,
   "name": "sprites_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14042,
   "name": "a_36DA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14059,
   "name": "b_36EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14099,
   "name": "b_3713",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14385,
   "name": "reuse_sprites_ab",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14420,
   "name": "b_3854",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14455,
   "name": "b_3877",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14461,
   "name": "reuse_sprites_cd",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14501,
   "name": "b_38A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14538,
   "name": "b_38CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14547,
   "name": "obj_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14559,
   "name": "obj_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14570,
   "name": "panel_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14571,
   "name": "t_38eb",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14577,
   "name": "t_38f1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14578,
   "name": "t_38f2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14579,
   "name": "t_38f3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14583,
   "name": "enemy_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14595,
   "name": "stun_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14607,
   "name": "on_ladder",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14619,
   "name": "trap_home_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14630,
   "name": "t_3926",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14631,
   "name": "trap_home_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14640,
   "name": "sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14653,
   "name": "t_393d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14654,
   "name": "sort_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14655,
   "name": "t_393f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14657,
   "name": "t_3941",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14664,
   "name": "sprite_frame_out",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14666,
   "name": "t_394a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14676,
   "name": "sprite_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14678,
   "name": "t_3956",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14679,
   "name": "t_3957",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14680,
   "name": "t_3958",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14681,
   "name": "t_3959",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14682,
   "name": "t_395a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14683,
   "name": "reuse_objs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14684,
   "name": "t_395c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14685,
   "name": "t_395d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14686,
   "name": "t_395e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14687,
   "name": "t_395f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14691,
   "name": "reuse_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14692,
   "name": "t_3964",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14693,
   "name": "t_3965",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14694,
   "name": "t_3966",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14695,
   "name": "t_3967",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14696,
   "name": "t_3968",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14697,
   "name": "t_3969",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14698,
   "name": "t_396a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14699,
   "name": "t_396b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14700,
   "name": "t_396c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14701,
   "name": "t_396d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14702,
   "name": "t_396e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14703,
   "name": "t_396f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14704,
   "name": "t_3970",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14705,
   "name": "t_3971",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14706,
   "name": "t_3972",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14707,
   "name": "t_3973",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14708,
   "name": "reuse_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14709,
   "name": "t_3975",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14710,
   "name": "t_3976",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14711,
   "name": "t_3977",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14712,
   "name": "sprite_msb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14713,
   "name": "reuse_total",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14714,
   "name": "t_397a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14715,
   "name": "t_397b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14716,
   "name": "t_397c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14717,
   "name": "t_397d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14718,
   "name": "t_397e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14719,
   "name": "t_397f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14720,
   "name": "t_3980",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14721,
   "name": "t_3981",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14725,
   "name": "obj_y_frac",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14728,
   "name": "t_3988",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14737,
   "name": "a_3991",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14739,
   "name": "a_3993",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14740,
   "name": "f_3994",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14741,
   "name": "f_3995",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14749,
   "name": "a_399D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14751,
   "name": "a_399F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14752,
   "name": "f_39A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14753,
   "name": "f_39A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14761,
   "name": "a_39A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14764,
   "name": "f_39AC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14773,
   "name": "a_39B5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14776,
   "name": "f_39B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 14785,
   "name": "a_39C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14797,
   "name": "a_39CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14798,
   "name": "a_39CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14799,
   "name": "a_39CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14800,
   "name": "a_39D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14801,
   "name": "a_39D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14802,
   "name": "a_39D2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14803,
   "name": "set_raster_list",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14804,
   "name": "set_raster_list_cli",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14829,
   "name": "reset_trap",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14835,
   "name": "list_restart",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14852,
   "name": "irq_last",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14855,
   "name": "irq_return",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 14860,
   "name": "nmi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14861,
   "name": "irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14872,
   "name": "a_3A18",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14912,
   "name": "a_3A40",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14913,
   "name": "a_3A41",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 14914,
   "name": "a_3A42",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14915,
   "name": "split_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14917,
   "name": "b_3A45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14931,
   "name": "b_3A53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14952,
   "name": "irq_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15001,
   "name": "b_3A99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15009,
   "name": "rick_frames_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15011,
   "name": "panel_icon_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15013,
   "name": "t_3aa5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15015,
   "name": "t_3aa7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15017,
   "name": "t_3aa9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15019,
   "name": "scroll_top_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15021,
   "name": "b_3AAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15039,
   "name": "b_3ABF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15066,
   "name": "scroll_helper_call",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15067,
   "name": "a_3ADB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15068,
   "name": "a_3ADC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15072,
   "name": "scroll_helpers_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15076,
   "name": "scroll_helpers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15080,
   "name": "scroll_d018",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15084,
   "name": "scroll_signal_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15087,
   "name": "scroll_move_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15093,
   "name": "scroll_signal_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15096,
   "name": "scroll_move_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15102,
   "name": "scroll_bottom_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15122,
   "name": "b_3B12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15133,
   "name": "b_3B1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15136,
   "name": "scroll_top_irq2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15138,
   "name": "b_3B22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15156,
   "name": "b_3B34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15183,
   "name": "scroll2_helper_call",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15184,
   "name": "a_3B50",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15185,
   "name": "a_3B51",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15189,
   "name": "scroll2_helpers_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15193,
   "name": "scroll2_helpers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15197,
   "name": "scroll2_d018",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15201,
   "name": "scroll2_signal_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15204,
   "name": "scroll2_move_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15210,
   "name": "scroll2_signal_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15213,
   "name": "scroll2_move_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15219,
   "name": "scroll2_bottom_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15239,
   "name": "b_3B87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15250,
   "name": "b_3B92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15253,
   "name": "raster_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15319,
   "name": "raster_lines",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15320,
   "name": "t_3bd8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15336,
   "name": "handler_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15353,
   "name": "handler_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15370,
   "name": "room_objects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15372,
   "name": "b_3C0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15421,
   "name": "objects_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15433,
   "name": "objects_in_row",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15450,
   "name": "j_3C5A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15480,
   "name": "b_3C78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15499,
   "name": "b_3C8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15502,
   "name": "b_3C8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15527,
   "name": "b_3CA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15528,
   "name": "b_3CA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15531,
   "name": "b_3CAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15532,
   "name": "a_3CAC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15543,
   "name": "b_3CB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15559,
   "name": "b_3CC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15562,
   "name": "b_3CCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15565,
   "name": "r_3CCD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15566,
   "name": "object_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15655,
   "name": "b_3D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15701,
   "name": "a_3D55",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15742,
   "name": "a_3D7E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15744,
   "name": "a_3D80",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15770,
   "name": "b_3D9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15812,
   "name": "b_3DC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15823,
   "name": "obj_list_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15824,
   "name": "obj_list_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15828,
   "name": "slot_record_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15834,
   "name": "t_3dda",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15840,
   "name": "slot_record_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15846,
   "name": "t_3de6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15849,
   "name": "objects_reset_all",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15867,
   "name": "b_3DFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15893,
   "name": "b_3E15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15899,
   "name": "objects_reset_boxes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15917,
   "name": "b_3E2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15927,
   "name": "b_3E37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15931,
   "name": "b_3E3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15951,
   "name": "b_3E4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15957,
   "name": "objects_down8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15959,
   "name": "b_3E57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16007,
   "name": "b_3E87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16010,
   "name": "panel_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16012,
   "name": "b_3E8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16023,
   "name": "b_3E97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16065,
   "name": "b_3EC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16070,
   "name": "b_3EC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16083,
   "name": "objects_up8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16085,
   "name": "b_3ED5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16126,
   "name": "b_3EFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16132,
   "name": "tile_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16159,
   "name": "b_3F1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16174,
   "name": "b_3F2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16200,
   "name": "b_3F48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16201,
   "name": "r_3F49",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16202,
   "name": "b_3F4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16204,
   "name": "under_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16223,
   "name": "a_3F5F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16254,
   "name": "a_3F7E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16256,
   "name": "b_3F80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16257,
   "name": "r_3F81",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16258,
   "name": "tile_flags_at",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16294,
   "name": "b_3FA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16295,
   "name": "a_3FA7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16304,
   "name": "b_3FB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16315,
   "name": "b_3FBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16343,
   "name": "b_3FD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16357,
   "name": "b_3FE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16358,
   "name": "a_3FE6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16362,
   "name": "b_3FEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16377,
   "name": "tile_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16378,
   "name": "a_3FFA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16379,
   "name": "b_3FFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16403,
   "name": "r_4013",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16404,
   "name": "read_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16414,
   "name": "bcd_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16431,
   "name": "digit_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16441,
   "name": "hex_letters",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16447,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16469,
   "name": "wait_bottom",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16474,
   "name": "b_405A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16480,
   "name": "wait_frames3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16483,
   "name": "wait_frames2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16486,
   "name": "wait_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16491,
   "name": "b_406B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16497,
   "name": "bit_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16501,
   "name": "t_4075",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16504,
   "name": "t_4078",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16513,
   "name": "tile_props",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16525,
   "name": "b_408D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16531,
   "name": "b_4093",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16546,
   "name": "range_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16554,
   "name": "save_checkpoint",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16608,
   "name": "pause",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16619,
   "name": "b_40EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16627,
   "name": "b_40F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16635,
   "name": "b_40FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16645,
   "name": "r_4105",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16646,
   "name": "paused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16648,
   "name": "build_type_tables",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16658,
   "name": "b_4112",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16718,
   "name": "print_binary",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16726,
   "name": "b_4156",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16732,
   "name": "binary_digit",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16733,
   "name": "binary_dest_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16734,
   "name": "binary_dest_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16740,
   "name": "print_titles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16770,
   "name": "b_4182",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16772,
   "name": "b_4184",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16777,
   "name": "a_4189",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16778,
   "name": "a_418A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16782,
   "name": "a_418E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16783,
   "name": "a_418F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16807,
   "name": "titles_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16810,
   "name": "titles_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16813,
   "name": "title_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16909,
   "name": "congrats_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17005,
   "name": "hof_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17101,
   "name": "logo_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17116,
   "name": "logo_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17131,
   "name": "logo_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17146,
   "name": "item_frames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17154,
   "name": "dynamite_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17158,
   "name": "blast_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17162,
   "name": "t_430a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17164,
   "name": "enemy_frame_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17184,
   "name": "walk_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17190,
   "name": "crawl_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17200,
   "name": "climb_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17212,
   "name": "story_paths",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17322,
   "name": "object_frame_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17433,
   "name": "trap_scripts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17689,
   "name": "trap_scripts_4519",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17945,
   "name": "trap_scripts_4619",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18093,
   "name": "room_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18331,
   "name": "exit_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18587,
   "name": "exit_lists_489b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18765,
   "name": "logo_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18789,
   "name": "sfx_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18790,
   "name": "t_4966",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18823,
   "name": "sfx_lock",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18824,
   "name": "sfx_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18826,
   "name": "sfx_pending",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18827,
   "name": "sfx_number",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18828,
   "name": "sid_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 18832,
   "name": "b_4990",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18844,
   "name": "sfx_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 18855,
   "name": "b_49A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18863,
   "name": "b_49AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18891,
   "name": "b_49CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18892,
   "name": "a_49CC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18893,
   "name": "a_49CD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18908,
   "name": "sfx_setup",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 18915,
   "name": "b_49E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 18916,
   "name": "a_49E4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18917,
   "name": "a_49E5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19018,
   "name": "b_4A4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19023,
   "name": "b_4A4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19193,
   "name": "sfx_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 19201,
   "name": "b_4B01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19209,
   "name": "j_4B09",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19215,
   "name": "b_4B0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19232,
   "name": "b_4B20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19248,
   "name": "b_4B30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19275,
   "name": "b_4B4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19294,
   "name": "b_4B5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19321,
   "name": "b_4B79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19340,
   "name": "j_4B8C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19359,
   "name": "b_4B9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19372,
   "name": "b_4BAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19385,
   "name": "b_4BB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19521,
   "name": "sfx_voice",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 19554,
   "name": "a_4C62",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19555,
   "name": "a_4C63",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19575,
   "name": "b_4C77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19585,
   "name": "b_4C81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19588,
   "name": "b_4C84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19606,
   "name": "a_4C96",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19607,
   "name": "a_4C97",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19611,
   "name": "b_4C9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19622,
   "name": "b_4CA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19649,
   "name": "b_4CC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19668,
   "name": "b_4CD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19695,
   "name": "b_4CEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19714,
   "name": "j_4D02",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 19744,
   "name": "a_4D20",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19745,
   "name": "a_4D21",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19750,
   "name": "b_4D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19786,
   "name": "b_4D4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19807,
   "name": "a_4D5F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19808,
   "name": "a_4D60",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19832,
   "name": "b_4D78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19835,
   "name": "b_4D7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19847,
   "name": "b_4D87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19850,
   "name": "b_4D8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19880,
   "name": "a_4DA8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19881,
   "name": "a_4DA9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19886,
   "name": "b_4DAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19909,
   "name": "b_4DC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19930,
   "name": "a_4DDA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19931,
   "name": "a_4DDB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19942,
   "name": "b_4DE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19945,
   "name": "b_4DE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 19963,
   "name": "a_4DFB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19964,
   "name": "a_4DFC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19971,
   "name": "sfx_playing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19972,
   "name": "sfx_v1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19973,
   "name": "t_4e05",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19974,
   "name": "t_4e06",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19975,
   "name": "t_4e07",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19976,
   "name": "t_4e08",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19977,
   "name": "t_4e09",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19978,
   "name": "t_4e0a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19979,
   "name": "t_4e0b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19980,
   "name": "t_4e0c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19981,
   "name": "t_4e0d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19982,
   "name": "t_4e0e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19983,
   "name": "t_4e0f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19984,
   "name": "t_4e10",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19985,
   "name": "t_4e11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19986,
   "name": "t_4e12",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19987,
   "name": "t_4e13",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19988,
   "name": "t_4e14",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19989,
   "name": "t_4e15",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19990,
   "name": "t_4e16",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19991,
   "name": "t_4e17",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19992,
   "name": "t_4e18",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19993,
   "name": "t_4e19",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19994,
   "name": "sfx_v1_def",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 19995,
   "name": "t_4e1b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19996,
   "name": "t_4e1c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19997,
   "name": "t_4e1d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19998,
   "name": "t_4e1e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19999,
   "name": "t_4e1f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20000,
   "name": "t_4e20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20001,
   "name": "t_4e21",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20002,
   "name": "t_4e22",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20003,
   "name": "t_4e23",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20004,
   "name": "t_4e24",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20007,
   "name": "t_4e27",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20008,
   "name": "t_4e28",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20013,
   "name": "t_4e2d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20014,
   "name": "t_4e2e",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20016,
   "name": "sfx_copy_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20019,
   "name": "t_4e33",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20020,
   "name": "sfx_v2_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20027,
   "name": "t_4e3b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20028,
   "name": "t_4e3c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20029,
   "name": "t_4e3d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20030,
   "name": "t_4e3e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20031,
   "name": "t_4e3f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20032,
   "name": "t_4e40",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20033,
   "name": "t_4e41",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20034,
   "name": "t_4e42",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20035,
   "name": "t_4e43",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20036,
   "name": "t_4e44",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20037,
   "name": "t_4e45",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20038,
   "name": "t_4e46",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20039,
   "name": "t_4e47",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20040,
   "name": "t_4e48",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20041,
   "name": "t_4e49",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20042,
   "name": "sfx_v2_def",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20043,
   "name": "t_4e4b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20044,
   "name": "t_4e4c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20045,
   "name": "t_4e4d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20046,
   "name": "t_4e4e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20050,
   "name": "t_4e52",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20051,
   "name": "t_4e53",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20055,
   "name": "t_4e57",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20068,
   "name": "t_4e64",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20069,
   "name": "t_4e65",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20070,
   "name": "t_4e66",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20071,
   "name": "t_4e67",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20072,
   "name": "t_4e68",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20073,
   "name": "t_4e69",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20074,
   "name": "t_4e6a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20075,
   "name": "t_4e6b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20076,
   "name": "t_4e6c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20077,
   "name": "t_4e6d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20080,
   "name": "t_4e70",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20081,
   "name": "sfx_waveforms",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20090,
   "name": "sfx_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20186,
   "name": "sfx_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20282,
   "name": "footstep_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 20297,
   "name": "b_4F49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20303,
   "name": "r_4F4F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20304,
   "name": "footstep",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20342,
   "name": "r_4F76",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20343,
   "name": "footstep_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20344,
   "name": "music_keep",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20357,
   "name": "r_4F85",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20358,
   "name": "audio_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20388,
   "name": "r_4FA4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20389,
   "name": "b_4FA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20395,
   "name": "play_sfx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20417,
   "name": "b_4FC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20418,
   "name": "a_4FC2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20420,
   "name": "a_4FC4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20422,
   "name": "play_tune",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20425,
   "name": "tune_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20428,
   "name": "tune_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20429,
   "name": "tune_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20430,
   "name": "tune_reg",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20431,
   "name": "tune_voice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20432,
   "name": "track_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20435,
   "name": "transpose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20438,
   "name": "pattern_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20441,
   "name": "tune_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20442,
   "name": "voice_regs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20443,
   "name": "t_4fdb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20444,
   "name": "t_4fdc",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20445,
   "name": "t_4fdd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20446,
   "name": "t_4fde",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20447,
   "name": "t_4fdf",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20448,
   "name": "t_4fe0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20449,
   "name": "t_4fe1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20450,
   "name": "t_4fe2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20451,
   "name": "t_4fe3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20452,
   "name": "t_4fe4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20453,
   "name": "t_4fe5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20454,
   "name": "t_4fe6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20455,
   "name": "t_4fe7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20456,
   "name": "t_4fe8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20457,
   "name": "t_4fe9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20458,
   "name": "t_4fea",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20459,
   "name": "t_4feb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20460,
   "name": "t_4fec",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20461,
   "name": "t_4fed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20462,
   "name": "t_4fee",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20466,
   "name": "tune_volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20467,
   "name": "repeat_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20470,
   "name": "note_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20471,
   "name": "t_4ff7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20472,
   "name": "t_4ff8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20476,
   "name": "note_release",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20479,
   "name": "pulse_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20482,
   "name": "t_5002",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20485,
   "name": "t_5005",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20488,
   "name": "t_5008",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20491,
   "name": "t_500b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20494,
   "name": "t_500e",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20497,
   "name": "t_5011",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20500,
   "name": "t_5014",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20503,
   "name": "t_5017",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20506,
   "name": "t_501a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20509,
   "name": "t_501d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20512,
   "name": "t_5020",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20515,
   "name": "t_5023",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20518,
   "name": "t_5026",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20521,
   "name": "t_5029",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20524,
   "name": "t_502c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20525,
   "name": "t_502d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20526,
   "name": "t_502e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20527,
   "name": "t_502f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20530,
   "name": "t_5032",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20533,
   "name": "t_5035",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20536,
   "name": "t_5038",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20539,
   "name": "t_503b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20542,
   "name": "note_now",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20545,
   "name": "tune_skip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20546,
   "name": "tune_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 20552,
   "name": "b_5048",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20567,
   "name": "b_5057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20582,
   "name": "b_5066",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20597,
   "name": "b_5075",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20746,
   "name": "b_510A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20757,
   "name": "b_5115",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20804,
   "name": "b_5144",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20851,
   "name": "b_5173",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20905,
   "name": "b_51A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20912,
   "name": "tune_voice_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20923,
   "name": "b_51BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20935,
   "name": "b_51C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20947,
   "name": "b_51D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20956,
   "name": "b_51DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20958,
   "name": "j_51DE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 20977,
   "name": "b_51F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20981,
   "name": "a_51F5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20982,
   "name": "a_51F6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21009,
   "name": "b_5211",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21029,
   "name": "a_5225",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21030,
   "name": "track_cmds",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 21033,
   "name": "cmd_pad_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21034,
   "name": "cmd_repeat_jmp",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21037,
   "name": "cmd_pad_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21038,
   "name": "cmd_skip_jmp",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21041,
   "name": "cmd_pad_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21042,
   "name": "cmd_instrument_jmp",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21045,
   "name": "b_5235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21070,
   "name": "b_524E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21075,
   "name": "b_5253",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21106,
   "name": "b_5272",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21155,
   "name": "b_52A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21166,
   "name": "b_52AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21174,
   "name": "b_52B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21180,
   "name": "b_52BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21184,
   "name": "a_52C0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21276,
   "name": "j_531C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21334,
   "name": "b_5356",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21343,
   "name": "b_535F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21345,
   "name": "j_5361",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21368,
   "name": "b_5378",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21410,
   "name": "b_53A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21429,
   "name": "b_53B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21454,
   "name": "b_53CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21467,
   "name": "j_53DB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21486,
   "name": "b_53EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21504,
   "name": "r_5400",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 21505,
   "name": "b_5401",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21524,
   "name": "b_5414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21536,
   "name": "b_5420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21568,
   "name": "b_5440",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21587,
   "name": "j_5453",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21595,
   "name": "b_545B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21603,
   "name": "j_5463",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21641,
   "name": "b_5489",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21654,
   "name": "b_5496",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21709,
   "name": "b_54CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21727,
   "name": "b_54DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21737,
   "name": "b_54E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21747,
   "name": "b_54F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21750,
   "name": "b_54F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21753,
   "name": "j_54F9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21761,
   "name": "b_5501",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21774,
   "name": "b_550E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21780,
   "name": "b_5514",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21812,
   "name": "b_5534",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21836,
   "name": "b_554C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21841,
   "name": "b_5551",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21864,
   "name": "j_5568",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21896,
   "name": "j_5588",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 21980,
   "name": "b_55DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21983,
   "name": "b_55DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21991,
   "name": "b_55E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21999,
   "name": "b_55EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22021,
   "name": "b_5605",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22024,
   "name": "b_5608",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22097,
   "name": "b_5651",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22103,
   "name": "b_5657",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22140,
   "name": "r_567C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22141,
   "name": "tune_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22198,
   "name": "b_56B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22206,
   "name": "b_56BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22214,
   "name": "b_56C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22232,
   "name": "cmd_skip",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22236,
   "name": "a_56DC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22237,
   "name": "a_56DD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22247,
   "name": "cmd_transpose",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22251,
   "name": "a_56EB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22252,
   "name": "a_56EC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22262,
   "name": "cmd_instrument",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22276,
   "name": "a_5704",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22277,
   "name": "a_5705",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22282,
   "name": "a_570A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22289,
   "name": "cmd_repeat",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22301,
   "name": "pattern_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 22311,
   "name": "b_5727",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22318,
   "name": "b_572E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22321,
   "name": "empty_pattern",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22322,
   "name": "tune_headers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22323,
   "name": "t_5733",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22324,
   "name": "t_5734",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22325,
   "name": "t_5735",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22326,
   "name": "t_5736",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22327,
   "name": "t_5737",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22364,
   "name": "patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22620,
   "name": "patterns_585c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22876,
   "name": "patterns_595c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23132,
   "name": "patterns_5a5c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23304,
   "name": "track_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23714,
   "name": "pattern_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23769,
   "name": "pattern_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23824,
   "name": "note_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23920,
   "name": "note_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24016,
   "name": "pulse_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24056,
   "name": "vibrato_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24112,
   "name": "waveforms",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24115,
   "name": "t_5e33",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24116,
   "name": "wave_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24132,
   "name": "arpeggio_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24180,
   "name": "instruments",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24181,
   "name": "t_5e75",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24182,
   "name": "t_5e76",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24183,
   "name": "t_5e77",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24184,
   "name": "t_5e78",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24185,
   "name": "t_5e79",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24186,
   "name": "t_5e7a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24187,
   "name": "t_5e7b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24188,
   "name": "t_5e7c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24414,
   "name": "instrument_map",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24438,
   "name": "instrument_map_init",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24462,
   "name": "audio_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25024,
   "name": "sfx_defs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25280,
   "name": "sfx_defs_62c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25536,
   "name": "sfx_defs_63c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25728,
   "name": "t_6480",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25792,
   "name": "sfx_defs_64c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26048,
   "name": "sfx_defs_65c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26112,
   "name": "enemy_src",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26752,
   "name": "enemy_src_6880",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27392,
   "name": "enemy_src_6b00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28032,
   "name": "enemy_src_6d80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28672,
   "name": "tiles_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29184,
   "name": "tiles_b_7200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29696,
   "name": "tiles_b_7400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30208,
   "name": "tiles_b_7600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30720,
   "name": "story_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31232,
   "name": "story_chars_7a00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31455,
   "name": "t_7adf",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "story_chars_7c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32256,
   "name": "story_chars_7e00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32512,
   "name": "t_7f00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "tile_colours_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33024,
   "name": "tile_colours_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33280,
   "name": "blocks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33792,
   "name": "blocks_8400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34304,
   "name": "blocks_8600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34544,
   "name": "t_86f0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34816,
   "name": "blocks_8800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35328,
   "name": "blocks_8a00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35840,
   "name": "blocks_8c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36352,
   "name": "blocks_8e00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36864,
   "name": "blocks_9000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37376,
   "name": "maps",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37888,
   "name": "maps_9400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38400,
   "name": "maps_9600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38912,
   "name": "maps_9800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39424,
   "name": "maps_9a00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39936,
   "name": "maps_9c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40448,
   "name": "maps_9e00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "maps_a000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41472,
   "name": "maps_a200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41984,
   "name": "maps_a400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42432,
   "name": "object_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42944,
   "name": "object_lists_a7c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43456,
   "name": "object_lists_a9c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43968,
   "name": "object_lists_abc0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44288,
   "name": "story_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45312,
   "name": "story_texts_b100",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45652,
   "name": "story_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45824,
   "name": "block_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46080,
   "name": "block_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46288,
   "name": "frame_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46432,
   "name": "t_b560",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46442,
   "name": "t_b56a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46464,
   "name": "a_B580",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46465,
   "name": "a_B581",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46466,
   "name": "a_B582",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46467,
   "name": "f_B583",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46476,
   "name": "a_B58C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46477,
   "name": "a_B58D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46478,
   "name": "a_B58E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46479,
   "name": "f_B58F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46480,
   "name": "f_B590",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46488,
   "name": "f_B598",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46490,
   "name": "a_B59A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46491,
   "name": "f_B59B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46500,
   "name": "f_B5A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46501,
   "name": "a_B5A5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46502,
   "name": "a_B5A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46503,
   "name": "f_B5A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46512,
   "name": "f_B5B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46514,
   "name": "a_B5B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46515,
   "name": "f_B5B3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46516,
   "name": "f_B5B4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46521,
   "name": "f_B5B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46524,
   "name": "f_B5BC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46526,
   "name": "f_B5BE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46537,
   "name": "f_B5C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46538,
   "name": "f_B5CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46539,
   "name": "f_B5CB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46551,
   "name": "f_B5D7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46552,
   "name": "f_B5D8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46563,
   "name": "f_B5E3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46564,
   "name": "f_B5E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46575,
   "name": "f_B5EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46587,
   "name": "f_B5FB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46599,
   "name": "f_B607",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46611,
   "name": "f_B613",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46620,
   "name": "f_B61C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46623,
   "name": "f_B61F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46632,
   "name": "f_B628",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46635,
   "name": "f_B62B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46644,
   "name": "f_B634",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46647,
   "name": "f_B637",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46659,
   "name": "f_B643",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46668,
   "name": "f_B64C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46671,
   "name": "f_B64F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46672,
   "name": "f_B650",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46683,
   "name": "f_B65B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46694,
   "name": "f_B666",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46695,
   "name": "f_B667",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46707,
   "name": "f_B673",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46720,
   "name": "type_hit_w",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46848,
   "name": "type_hit_h",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46976,
   "name": "type_frames_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47104,
   "name": "type_frames_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47232,
   "name": "type_script_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47360,
   "name": "type_script_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47488,
   "name": "type_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47616,
   "name": "f_BA00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47648,
   "name": "f_BA20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47680,
   "name": "f_BA40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47712,
   "name": "f_BA60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47744,
   "name": "f_BA80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47776,
   "name": "f_BAA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47808,
   "name": "f_BAC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47840,
   "name": "f_BAE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47872,
   "name": "f_BB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47904,
   "name": "f_BB20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47936,
   "name": "f_BB40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47968,
   "name": "f_BB60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48000,
   "name": "f_BB80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48032,
   "name": "f_BBA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48064,
   "name": "f_BBC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48096,
   "name": "f_BBE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48128,
   "name": "f_BC00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48160,
   "name": "f_BC20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48192,
   "name": "f_BC40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48224,
   "name": "f_BC60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48256,
   "name": "f_BC80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48288,
   "name": "f_BCA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48320,
   "name": "f_BCC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48352,
   "name": "f_BCE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48384,
   "name": "f_BD00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48416,
   "name": "f_BD20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48448,
   "name": "f_BD40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48480,
   "name": "f_BD60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48512,
   "name": "f_BD80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48544,
   "name": "f_BDA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48576,
   "name": "f_BDC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48608,
   "name": "f_BDE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49024,
   "name": "f_BF80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49056,
   "name": "f_BFA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49076,
   "name": "trap_sounds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49088,
   "name": "trap_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49097,
   "name": "b_BFC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49100,
   "name": "trap_sounds_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49148,
   "name": "t_bffc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "f_C000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49157,
   "name": "a_C005",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49158,
   "name": "a_C006",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49159,
   "name": "a_C007",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49160,
   "name": "a_C008",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49161,
   "name": "a_C009",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49162,
   "name": "a_C00A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49181,
   "name": "a_C01D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49192,
   "name": "f_C028",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49236,
   "name": "f_C054",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49238,
   "name": "f_C056",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49276,
   "name": "f_C07C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49316,
   "name": "f_C0A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49327,
   "name": "f_C0AF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49329,
   "name": "f_C0B1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49356,
   "name": "f_C0CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49361,
   "name": "f_C0D1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49367,
   "name": "f_C0D7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49396,
   "name": "f_C0F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49402,
   "name": "f_C0FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49407,
   "name": "f_C0FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49408,
   "name": "f_C100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49432,
   "name": "f_C118",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49436,
   "name": "f_C11C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49447,
   "name": "f_C127",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49449,
   "name": "f_C129",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49476,
   "name": "f_C144",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49487,
   "name": "f_C14F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49516,
   "name": "f_C16C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49527,
   "name": "f_C177",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49556,
   "name": "f_C194",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49567,
   "name": "f_C19F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49596,
   "name": "f_C1BC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49607,
   "name": "f_C1C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49609,
   "name": "f_C1C9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49636,
   "name": "f_C1E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49652,
   "name": "f_C1F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49664,
   "name": "f_C200",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49672,
   "name": "f_C208",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49676,
   "name": "f_C20C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49716,
   "name": "f_C234",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49729,
   "name": "f_C241",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49756,
   "name": "f_C25C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49796,
   "name": "f_C284",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49836,
   "name": "f_C2AC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49876,
   "name": "f_C2D4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49902,
   "name": "f_C2EE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49912,
   "name": "f_C2F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49916,
   "name": "f_C2FC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49920,
   "name": "f_C300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49926,
   "name": "f_C306",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49956,
   "name": "f_C324",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49996,
   "name": "f_C34C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49999,
   "name": "f_C34F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50020,
   "name": "f_C364",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50036,
   "name": "f_C374",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50076,
   "name": "f_C39C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50116,
   "name": "f_C3C4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50156,
   "name": "f_C3EC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50168,
   "name": "a_C3F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50169,
   "name": "a_C3F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50170,
   "name": "a_C3FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50171,
   "name": "a_C3FB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50172,
   "name": "a_C3FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50173,
   "name": "a_C3FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50174,
   "name": "a_C3FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50175,
   "name": "a_C3FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50176,
   "name": "f_C400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50216,
   "name": "f_C428",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50220,
   "name": "f_C42C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50260,
   "name": "f_C454",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50300,
   "name": "f_C47C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50340,
   "name": "f_C4A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50380,
   "name": "f_C4CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50420,
   "name": "f_C4F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50426,
   "name": "f_C4FA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50432,
   "name": "f_C500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50456,
   "name": "f_C518",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50460,
   "name": "f_C51C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50500,
   "name": "f_C544",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50540,
   "name": "f_C56C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50580,
   "name": "f_C594",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50620,
   "name": "f_C5BC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50631,
   "name": "f_C5C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50660,
   "name": "f_C5E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50676,
   "name": "f_C5F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50688,
   "name": "f_C600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50696,
   "name": "f_C608",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50700,
   "name": "f_C60C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50740,
   "name": "f_C634",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50780,
   "name": "f_C65C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50820,
   "name": "f_C684",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50860,
   "name": "f_C6AC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50900,
   "name": "f_C6D4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50926,
   "name": "f_C6EE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50936,
   "name": "f_C6F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50940,
   "name": "f_C6FC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50944,
   "name": "f_C700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 50980,
   "name": "f_C724",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51020,
   "name": "f_C74C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51060,
   "name": "f_C774",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51100,
   "name": "f_C79C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51140,
   "name": "f_C7C4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51180,
   "name": "f_C7EC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51192,
   "name": "a_C7F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51193,
   "name": "a_C7F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51194,
   "name": "a_C7FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51195,
   "name": "a_C7FB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51196,
   "name": "a_C7FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51197,
   "name": "a_C7FD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51198,
   "name": "a_C7FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51199,
   "name": "a_C7FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51200,
   "name": "f_C800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51264,
   "name": "f_C840",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51520,
   "name": "f_C940",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 51584,
   "name": "title_rick_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52096,
   "name": "title_frames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52608,
   "name": "title_frames_cd80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53120,
   "name": "title_frames_cf80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "tiles_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53760,
   "name": "tiles_a_d200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54272,
   "name": "tiles_a_d400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54784,
   "name": "tiles_a_d600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "frames_60",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55301,
   "name": "t_d805",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55309,
   "name": "t_d80d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55317,
   "name": "t_d815",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55325,
   "name": "t_d81d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55336,
   "name": "t_d828",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55376,
   "name": "t_d850",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55380,
   "name": "t_d854",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55420,
   "name": "t_d87c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55460,
   "name": "t_d8a4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55500,
   "name": "t_d8cc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55504,
   "name": "t_d8d0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55540,
   "name": "t_d8f4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55543,
   "name": "t_d8f7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55546,
   "name": "t_d8fa",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55552,
   "name": "t_d900",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55576,
   "name": "t_d918",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55580,
   "name": "t_d91c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55592,
   "name": "t_d928",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55620,
   "name": "t_d944",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55632,
   "name": "t_d950",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55660,
   "name": "t_d96c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55700,
   "name": "t_d994",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55740,
   "name": "t_d9bc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55751,
   "name": "t_d9c7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55753,
   "name": "t_d9c9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55780,
   "name": "t_d9e4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55796,
   "name": "t_d9f4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55808,
   "name": "frames_60_da00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55816,
   "name": "t_da08",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55820,
   "name": "t_da0c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55860,
   "name": "t_da34",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55863,
   "name": "t_da37",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55900,
   "name": "t_da5c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55940,
   "name": "t_da84",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55947,
   "name": "t_da8b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55980,
   "name": "t_daac",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56020,
   "name": "t_dad4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56046,
   "name": "t_daee",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56056,
   "name": "t_daf8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56060,
   "name": "t_dafc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56064,
   "name": "t_db00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56100,
   "name": "t_db24",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56140,
   "name": "t_db4c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56143,
   "name": "t_db4f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56164,
   "name": "t_db64",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56180,
   "name": "t_db74",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56220,
   "name": "t_db9c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56260,
   "name": "t_dbc4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56300,
   "name": "t_dbec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56320,
   "name": "frames_60_dc00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56832,
   "name": "frames_60_de00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "frames_80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59648,
   "name": "frames_a4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59900,
   "name": "t_e9fc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60096,
   "name": "t_eac0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60160,
   "name": "frames_a4_eb00",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60224,
   "name": "t_eb40",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60672,
   "name": "frames_a4_ed00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61184,
   "name": "frames_a4_ef00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61696,
   "name": "frames_a4_f100",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62208,
   "name": "frames_a4_f300",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62720,
   "name": "frames_a4_f500",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63232,
   "name": "frames_a4_f700",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63488,
   "name": "font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63520,
   "name": "t_f820",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63524,
   "name": "t_f824",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63532,
   "name": "t_f82c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63536,
   "name": "t_f830",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63840,
   "name": "t_f960",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63936,
   "name": "t_f9c0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64000,
   "name": "font_fa00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64032,
   "name": "t_fa20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64128,
   "name": "t_fa80",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64223,
   "name": "t_fadf",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64512,
   "name": "font_fc00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65024,
   "name": "font_fe00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65280,
   "name": "t_ff00",
   "type": "Field",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The processor port's direction register; the start-up writes $2F to it."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The processor port: $35 in play, RAM everywhere but the I/O area at $D000."
  },
  {
   "address": 2,
   "type": "line",
   "text": "The raster list in use, low byte: the interrupt reads its entries through ($02), the position within the list kept in the operand at $3A18, and $39F3 resets the pointer from $04/$05 at the end of each frame."
  },
  {
   "address": 3,
   "type": "line",
   "text": "The raster list in use, high byte (with $02)."
  },
  {
   "address": 4,
   "type": "line",
   "text": "The start of the current raster list, low byte, put back into $02 at the end of each frame ($39F3)."
  },
  {
   "address": 5,
   "type": "line",
   "text": "The raster list start, high byte; the scroll handlers switch it back to the play list."
  },
  {
   "address": 7,
   "type": "line",
   "text": "Counts frames, stepped by $39F3 at the end of each frame; the main loop runs when it is even, and animations use its bits."
  },
  {
   "address": 8,
   "type": "line",
   "text": "The last random number from $403F."
  },
  {
   "address": 9,
   "type": "line",
   "text": "A temporary pointer, low byte, used through ($09) by many routines: the screen cursor, a table being searched."
  },
  {
   "address": 10,
   "type": "line",
   "text": "The temporary pointer's high byte. The tile probes ($3F82, $1052, $15B5) use $0A and $0B as a pointer of their own into the room map, $0A the low byte and $0B the high."
  },
  {
   "address": 11,
   "type": "line",
   "text": "A second temporary pointer, low byte ($0B)."
  },
  {
   "address": 12,
   "type": "line",
   "text": "The second pointer's high byte; also the Hall of Fame place found by $21CC."
  },
  {
   "address": 13,
   "type": "line",
   "text": "A third temporary pointer, low byte: a frame list being read."
  },
  {
   "address": 14,
   "type": "line",
   "text": "The third pointer's high byte."
  },
  {
   "address": 15,
   "type": "line",
   "text": "A fourth temporary pointer, low byte."
  },
  {
   "address": 16,
   "type": "line",
   "text": "A temporary byte: a sign or carry for 16-bit sums, the high byte of a pointer in $0F, a flag passed between routines."
  },
  {
   "address": 21,
   "type": "line",
   "text": "Counts the steps of a scroll down from 15; the scroll handlers choose the screen and the helper by its low bits and return to the play list when it goes negative."
  },
  {
   "address": 22,
   "type": "line",
   "text": "The address of the map row at the top of the view, low byte."
  },
  {
   "address": 23,
   "type": "line",
   "text": "The same, high byte: within $9200-$A5BF."
  },
  {
   "address": 24,
   "type": "line",
   "text": "The raster line of the first sprite-reuse split, worked out by $3559 from the objects' Y."
  },
  {
   "address": 25,
   "type": "line",
   "text": "The raster line of the second split."
  },
  {
   "address": 26,
   "type": "line",
   "text": "The map row being decoded ($2D59), low byte."
  },
  {
   "address": 27,
   "type": "line",
   "text": "The map row being decoded, high byte."
  },
  {
   "address": 28,
   "type": "line",
   "text": "The tile flags under Rick, ORed together by $3F82: 2 ladder, 4 deadly (the main loop kills him on it, $0A23), 8 in front, $10 a platform he stands on unless rising ($3F04) and that stops a climb ($0DE4), $20 a floor that throws him back up when he lands on it from a fall ($0BD5), $40 solid, $80 the top of a ladder (it holds a fall, and down climbs onto it, $0C38)."
  },
  {
   "address": 30,
   "type": "line",
   "text": "The X Rick would move to this step."
  },
  {
   "address": 31,
   "type": "line",
   "text": "The fraction of the Y Rick would move to."
  },
  {
   "address": 32,
   "type": "line",
   "text": "The Y Rick (or an enemy) would move to."
  },
  {
   "address": 33,
   "type": "line",
   "text": "The high byte of that Y."
  },
  {
   "address": 34,
   "type": "line",
   "text": "The current room's record ($46AD onwards), low byte."
  },
  {
   "address": 35,
   "type": "line",
   "text": "The current room's record, high byte."
  },
  {
   "address": 36,
   "type": "line",
   "text": "A temporary byte: a frame's low address, a mirrored byte, a halved Y."
  },
  {
   "address": 37,
   "type": "line",
   "text": "A temporary byte: an object slot kept over a call, the level-select cursor."
  },
  {
   "address": 38,
   "type": "line",
   "text": "A temporary byte: a halved Y for the hit tests, the name-entry row."
  },
  {
   "address": 39,
   "type": "line",
   "text": "Set by the raster interrupt's scroll helper when the next half-step of a scroll may be built; the scroll waits on it."
  },
  {
   "address": 40,
   "type": "line",
   "text": "The trigger bits of the trap being tested, shifted out one at a time by $1A72."
  },
  {
   "address": 41,
   "type": "line",
   "text": "The tile flags under an enemy, ORed together by $15B5."
  },
  {
   "address": 48,
   "type": "line",
   "text": "The level being played, 0 to 3; $FF before the first, 4 after the last (the ending)."
  },
  {
   "address": 49,
   "type": "line",
   "text": "The frame list of the story screen's sprite path, low byte."
  },
  {
   "address": 50,
   "type": "line",
   "text": "The story path's frame list, high byte."
  },
  {
   "address": 51,
   "type": "line",
   "text": "The sprite path being followed, low byte."
  },
  {
   "address": 52,
   "type": "line",
   "text": "The sprite path being followed, high byte."
  },
  {
   "address": 53,
   "type": "line",
   "text": "Stepped each main loop and set to $FF at a level's start; nothing reads it."
  },
  {
   "address": 54,
   "type": "line",
   "text": "The X an enemy would move to this step."
  },
  {
   "address": 55,
   "type": "line",
   "text": "Set by the name FLUFOMATIC in the Hall of Fame: the title screen then offers the level select."
  },
  {
   "address": 56,
   "type": "line",
   "text": "Eight tile codes, the first of each tile property range, copied from $185B for the room's graphics set and read by $4081."
  },
  {
   "address": 64,
   "type": "line",
   "text": "Joystick port 2 as $4014 reads it: bit 0 up, 1 down, 2 left, 3 right, 4 fire."
  },
  {
   "address": 65,
   "type": "line",
   "text": "Rick's facing: 0 right, $18 left (the offset to his left-facing frames)."
  },
  {
   "address": 66,
   "type": "line",
   "text": "The score's tens and units, BCD."
  },
  {
   "address": 67,
   "type": "line",
   "text": "The score's thousands and hundreds, BCD."
  },
  {
   "address": 68,
   "type": "line",
   "text": "The score's hundred thousands and ten thousands, BCD."
  },
  {
   "address": 70,
   "type": "line",
   "text": "Non-zero while Rick is on a ladder."
  },
  {
   "address": 71,
   "type": "line",
   "text": "Counts Rick's steps standing on a floor; zero in the air."
  },
  {
   "address": 72,
   "type": "line",
   "text": "Rick's animation counter."
  },
  {
   "address": 73,
   "type": "line",
   "text": "Rick's place in his walking or crawling frame list."
  },
  {
   "address": 74,
   "type": "line",
   "text": "Non-zero while Rick crouches or crawls; he is then shorter for the hit tests."
  },
  {
   "address": 75,
   "type": "line",
   "text": "How far the view is scrolled down the level, low byte: steps of 8 per block row."
  },
  {
   "address": 76,
   "type": "line",
   "text": "The scroll position's high byte (with $4B)."
  },
  {
   "address": 78,
   "type": "line",
   "text": "The stick's up bit from the step before, so a shot needs the stick let go."
  },
  {
   "address": 79,
   "type": "line",
   "text": "Rick's death: 0 alive, 1 falling, $FF fallen out of the play area (a life lost)."
  },
  {
   "address": 80,
   "type": "line",
   "text": "The sideways speed of the dying Rick."
  },
  {
   "address": 81,
   "type": "line",
   "text": "The furthest level reached, 0 to 3, which the level select offers."
  },
  {
   "address": 82,
   "type": "line",
   "text": "One less than the level chosen at the level select (so $FF for level 1), or $FF for a game started from the plain title ($294C); $23A0 skips the ending's story screen when it is positive."
  },
  {
   "address": 83,
   "type": "line",
   "text": "Set by the name BBOOIINNGG: the 2 and C= cheat keys work."
  },
  {
   "address": 96,
   "type": "line",
   "text": "The sprite frame Rick's two sprites show: $20 or $28, the image buffer drawn this frame."
  },
  {
   "address": 160,
   "type": "line",
   "text": "Voice 1's pattern pointer, low and high byte."
  },
  {
   "address": 161,
   "type": "line",
   "text": "An address the code names directly: the STA at $5241 writes it (and 1 more)."
  },
  {
   "address": 162,
   "type": "line",
   "text": "Voice 2's pattern pointer."
  },
  {
   "address": 163,
   "type": "line",
   "text": "An address the code names directly: tune_start writes it at $56AE."
  },
  {
   "address": 164,
   "type": "line",
   "text": "Voice 3's pattern pointer."
  },
  {
   "address": 165,
   "type": "line",
   "text": "An address the code names directly: tune_start writes it at $56B0."
  },
  {
   "address": 788,
   "type": "line",
   "text": "The KERNAL's IRQ vector, pointed at $3A0D by the start-up as well as $FFFE."
  },
  {
   "address": 789,
   "type": "line",
   "text": "An address the code names directly: game_start writes it at $0841."
  },
  {
   "address": 1024,
   "type": "line",
   "text": "An address the code names directly, in $0400-$047F, the staging buffer one decoded map row (four rows of 32 tiles) passes through ($2D55, $2EB3): draw_map_row reads it at $2EBA indexed by Y (and 4 more)."
  },
  {
   "address": 1279,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: sprite_mask_or_none writes it at $103E indexed by Y."
  },
  {
   "address": 1280,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: the STA at $1113 writes it indexed by Y (and 2 more)."
  },
  {
   "address": 1289,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: the AND at $0FBF reads it indexed by X (and 1 more)."
  },
  {
   "address": 1301,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: the AND at $1013 reads it indexed by Y."
  },
  {
   "address": 1304,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: the STA at $1118 writes it indexed by Y (and 2 more)."
  },
  {
   "address": 1328,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: the STA at $111D writes it indexed by Y (and 2 more)."
  },
  {
   "address": 1352,
   "type": "line",
   "text": "An address the code names directly, in $0480-$05FF, the 63-byte sprite mask $1111 fills for each object drawn, and its spare: the STA at $1122 writes it indexed by Y (and 2 more)."
  },
  {
   "address": 1536,
   "type": "line",
   "text": "An address the code names directly, in $0600-$06FF, the tile property table, rebuilt for each room's graphics set by $4081: build_mask reads it at $107C indexed by X (and 8 more)."
  },
  {
   "address": 1790,
   "type": "line",
   "text": "An address the code names directly, in $0600-$06FF, the tile property table, rebuilt for each room's graphics set by $4081: tile_props writes it at $4086."
  },
  {
   "address": 1791,
   "type": "line",
   "text": "An address the code names directly, in $0600-$06FF, the tile property table, rebuilt for each room's graphics set by $4081: tile_props writes it at $4083."
  },
  {
   "address": 2064,
   "type": "line",
   "text": "The game's first instruction, where the tape loader hands over: interrupts off, stack reset, CIA 1 port directions set for the joystick and keyboard, $51 cleared, then the NMI, RESET and IRQ vectors at $FFFA-$FFFF pointed at $3A0C (an RTI), $39ED and $3A0D, and $0314 at $3A0D too. CIA 2 selects video bank 3 ($C000-$FFFF), and $01 is written $35, which leaves only I/O over the RAM. It goes on to clear the score $42-$44 and the flags $53 and $37, run the Hall of Fame prank at $226A, and runs into the title loop, which sets six lives at $08C0."
  },
  {
   "address": 2148,
   "type": "line",
   "text": "At the hand-over this is JSR $4108, which builds the object-type tables; the next two instructions turn its opcode into $AD (LDA), so the call happens once and the instruction does nothing afterwards."
  },
  {
   "address": 2171,
   "type": "line",
   "text": "The loop the game comes back to after a game (game_start runs into it the first time): clears the screens ($29C2), colours the score line, clears the climbing flag, the shown counters and the bonus, sets $30 to $FF and six lives, shows the Hall of Fame ($1E8A), clears the score, waits for fire on control port 2 ($26DA), shows the title ($276C), clears the top line of the screen at $C000 and plays from $0924. When that returns, the game over, it blanks the screen, silences all three SID voices, sets the volume to 15, shows GAME OVER ($26EC) and starts again with the JMP at $091A."
  },
  {
   "address": 2333,
   "type": "line",
   "text": "Seven bytes between the title loop and the level set-up that no instruction reads: 01 00 80 0E 21 0C 1F."
  },
  {
   "address": 2340,
   "type": "line",
   "text": "Sets up a level: shows the story screen ($23A0) and, when the level number has reached 4, returns after the ending. Otherwise clears all of the screen at $C400 and rows 1 to 24 of the screen at $C000 (its score line on row 0 is kept), fills colour RAM rows 1 to 24 with white, colours the score line, calls $17B7 and $3DE9, switches $D018 to $0E and $D016 to $18, and gives Rick six bullets ($2D32) and six sticks of dynamite ($2D33) at $09F6. Called from the title loop ($08E5); also reached at the end of each level from $18CE, by the cheat at $0A92, and at $09A9 after a life is lost."
  },
  {
   "address": 2473,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0B27 jumps to it."
  },
  {
   "address": 2564,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0A9D jumps to it."
  },
  {
   "address": 2570,
   "type": "line",
   "text": "The game loop: waits until the frame counter $07 is even, so the game moves every second frame (25 times a second on PAL), then calls the routines for one step of play."
  },
  {
   "address": 2628,
   "type": "line",
   "text": "An address the code names directly: main_loop jumps to it at $0A3A."
  },
  {
   "address": 2648,
   "type": "line",
   "text": "An address the code names directly: j_0A44 jumps to it at $0A4E."
  },
  {
   "address": 2669,
   "type": "line",
   "text": "The end of the main loop's step, which reads keyboard row 7 and joystick port 1 through $DC01 (the game never writes $DC00). With $53 set (by the name BBOOIINNGG in the Hall of Fame, $2155), key 2 or port 1 right (bit 3) refills bullets, dynamite and lives to six, and C= (bit 5) jumps to the level set-up at $0924, the next level. Then, cheat or not, a fallen Rick ($4F negative) goes to lose_life, and the left-arrow key or port 1 down (bit 1) returns from $0924, which ends the game."
  },
  {
   "address": 2720,
   "type": "line",
   "text": "Ten bytes between the cheat keys and lose_life that no instruction reads."
  },
  {
   "address": 2730,
   "type": "line",
   "text": "Restores the room's start state from the table at $11A0, then takes one life from $2D34. At zero it writes $C01D and returns; otherwise it sets bit 7 of the first five-byte record holding $16 in the table that $3DCF points at, and restarts from $09A9, with six bullets and six sticks of dynamite."
  },
  {
   "address": 2858,
   "type": "line",
   "text": "Rick's step in the main loop. While he is dying ($4F) it hands over to $0F19. Otherwise it reads the stick into $40 ($4014); on a ladder or rope ($46 set) it goes to $0D9D. On foot it sets the horizontal speed from the stick ($0E64), adds the speeds to his position (X in $B58C, Y in $3985/$3991/$399D) and tests the new place against the room's tiles ($3F04): a blocked step is not taken, the falling speed in $39B5 grows by half a pixel a step up to eight, and a floor under him ends the fall ($47 is cleared each step and set to 1 when he stands on something). Then $0C92 decides what he does."
  },
  {
   "address": 3176,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0BE4 jumps to it."
  },
  {
   "address": 3186,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0BE1 jumps to it."
  },
  {
   "address": 3218,
   "type": "line",
   "text": "What Rick does this step. With fire held and his feet on the ground ($47): up shoots ($2A17, only when up was not already held the step before, $4E, so every shot needs the stick let go), down lays dynamite ($2BAA), and left or right jabs with the stick: $2B73 counts the jab, $2B74 and $2B75 place it beside him, and sound 2 plays as the jab starts. Without fire: up or down on a ladder tile ($1C bit 1) climbs ($46); up jumps, an upward speed of 5.5 pixels ($39B5/$39A9 = $FA80) with sound 7; down crouches and down with a direction crawls ($4A), the frames stepping through $4326; walking steps through $4320. The frame chosen plus the facing $41 goes to $B598 ($0D96)."
  },
  {
   "address": 3365,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0CC8 jumps to it."
  },
  {
   "address": 3434,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0CBD jumps to it."
  },
  {
   "address": 3478,
   "type": "line",
   "text": "An address the code names directly: the JMP at $0D0E jumps to it (and 2 more)."
  },
  {
   "address": 3485,
   "type": "line",
   "text": "Rick on a ladder or rope ($46 set): no gravity, the stick moves him two pixels a step in any direction ($0E64), and the move is kept only where the tiles allow ($3F04). Leaving the ladder's tiles ($1C bit 1 clear) drops him back to walking. The climbing frames alternate from $4330 every two steps."
  },
  {
   "address": 3591,
   "type": "line",
   "text": "An address the code names directly: rick_climb jumps to it at $0DEE."
  },
  {
   "address": 3684,
   "type": "line",
   "text": "Turns the stick bits in A into a handler: the low and high bytes at $0EAF and $0EBF, indexed by the bits, are written into the JMP at $0E71. Left and right set the horizontal speed $39C1 to -2 or +2 and the facing $41 to $18 or 0; up and down set the vertical speed $39B5 to -2 or +2; a diagonal does both; no direction, or two opposite ones, does nothing."
  },
  {
   "address": 3698,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the JMP at $0E71 (jmp $0EAE), rewritten at run time by $0E68 in stick_dispatch ($0E64). The code from here runs on as part of stick_dispatch ($0E64)."
  },
  {
   "address": 3699,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the JMP at $0E71 (jmp $0EAE), rewritten at run time by $0E6E in stick_dispatch ($0E64). The code from here runs on as part of stick_dispatch ($0E64)."
  },
  {
   "address": 3703,
   "type": "line",
   "text": "Stick handler: vertical speed -2 ($39B5 = $FE), with the sub-pixel and the high-byte carry ($10) set to match."
  },
  {
   "address": 3720,
   "type": "line",
   "text": "Stick handler: vertical speed +2."
  },
  {
   "address": 3736,
   "type": "line",
   "text": "Stick handler: horizontal speed -2, facing left ($41 = $18)."
  },
  {
   "address": 3749,
   "type": "line",
   "text": "Stick handler: horizontal speed +2, facing right ($41 = 0)."
  },
  {
   "address": 3758,
   "type": "line",
   "text": "An address the code names directly: stick_dispatch jumps to it at $0E71."
  },
  {
   "address": 3759,
   "type": "line",
   "text": "Low bytes of the sixteen stick handlers for $0E64, one for each value of the four direction bits (up 1, down 2, left 4, right 8); $AE is the RTS at $0EAE."
  },
  {
   "address": 3775,
   "type": "line",
   "text": "High bytes of the sixteen stick handlers, all $0E."
  },
  {
   "address": 3791,
   "type": "line",
   "text": "Counts down the room bonus: each call steps the timer $0EF9 down, and when it reaches zero takes 10 from the two-byte BCD value at $0EF7 and sets the timer to 26 again, until the bonus reaches zero, which stops the count. $1BCA starts the timer at 38; $1BE7 reads the bonus when it is collected."
  },
  {
   "address": 3831,
   "type": "line",
   "text": "The room bonus, low BCD byte (tens and units), counted down by $0ECF."
  },
  {
   "address": 3832,
   "type": "line",
   "text": "The room bonus, high BCD byte."
  },
  {
   "address": 3833,
   "type": "line",
   "text": "Calls left until the bonus at $0EF7 next drops by 10; zero stops the count."
  },
  {
   "address": 3834,
   "type": "line",
   "text": "Starts Rick's death: sound 4, the death flag $4F = 1, a sideways speed $50 of -2 when he is in the right half of the screen ($B58C at $80 or more) or +2 in the left, and an upward speed of -3 ($39B5), so he is thrown up and towards the middle of the screen. X is kept: the LDX at $0F16 is given its value."
  },
  {
   "address": 3863,
   "type": "line",
   "text": "Self-modified code: the operand of the LDX at $0F16 (ldx #$00), rewritten at run time by $0EFA in rick_hit ($0EFA). The code from here runs on as part of rick_hit ($0EFA)."
  },
  {
   "address": 3865,
   "type": "line",
   "text": "Moves the dead Rick each step: sideways by $50, turned back at the screen's edges ($1C and $CC), and down with gravity to a speed of 5, the sprite doubled in size ($D017 and $D01D) once the fall is fast. When he drops off the bottom of the play area ($399D reaches 1) $4F becomes $FF, which the main loop takes as the life lost. The two frames at $0F81 alternate every four frames."
  },
  {
   "address": 3940,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $0F63 (lda #$00), rewritten at run time by $0F57 in rick_falling_dead ($0F19). The code from here runs on as part of rick_falling_dead ($0F19)."
  },
  {
   "address": 3969,
   "type": "line",
   "text": "The two sprite frames of the dead Rick, $DC and $DE."
  },
  {
   "address": 3971,
   "type": "line",
   "text": "Builds this frame's sprite images for Rick (slot 0) and the objects in slots 2 and 9 to 11: each one's frame, 64 bytes from $C000 + 64 * frame ($B598, through $1038), is ANDed with a mask that $1052 builds from the foreground tiles at the object's place, so the sprite is hidden wherever the scenery stands in front of it. The images go to $C800 or $CA00 by turns (bit 1 of the frame counter $07), so the video chip shows one set while the next is written. A dying Rick is drawn without a mask."
  },
  {
   "address": 4029,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $0FBC (lda $EB00,x), rewritten at run time by $0F94 in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4030,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $0FBC (lda $EB00,x), rewritten at run time by $0F8C in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4032,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the AND at $0FBF (and $0509,x), rewritten at run time by $0FA5 in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4036,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $0FC2 (sta $C800,x), rewritten at run time by $0FB4 in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4038,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $0FC5 (lda $EB40,x), rewritten at run time by $0F99 in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4039,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $0FC5 (lda $EB40,x), rewritten at run time by $0F8F in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4041,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the AND at $0FC8 (and $0509,x), rewritten at run time by $0FA8 in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4045,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $0FCB (sta $C840,x), rewritten at run time by $0FB7 in draw_sprites ($0F83). The code from here runs on as part of draw_sprites ($0F83)."
  },
  {
   "address": 4071,
   "type": "line",
   "text": "$0FEC for object X: draw its frame, masked, into its buffer."
  },
  {
   "address": 4076,
   "type": "line",
   "text": "Copies one masked sprite frame (64 bytes) into the buffer the self-modified STA at $1016 names, the vertical offset within the mask from the table at $1198, the buffer from $101D and $1029."
  },
  {
   "address": 4097,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1000 (lda #$00), rewritten at run time by $0FAF in draw_sprites ($0F83). The code from here runs on as part of draw_sprite ($0FEC)."
  },
  {
   "address": 4113,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $1010 (lda $EAC0,y), rewritten at run time by $0FF1 in draw_sprite ($0FEC). The code from here runs on as part of draw_sprite ($0FEC)."
  },
  {
   "address": 4114,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $1010 (lda $EAC0,y), rewritten at run time by $0FEC in draw_sprite ($0FEC). The code from here runs on as part of draw_sprite ($0FEC)."
  },
  {
   "address": 4116,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the AND at $1013 (and $0515,y), rewritten at run time by $0FFD in draw_sprite ($0FEC). The code from here runs on as part of draw_sprite ($0FEC)."
  },
  {
   "address": 4119,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $1016 (sta $C940,y), rewritten at run time by $100B in draw_sprite ($0FEC). The code from here runs on as part of draw_sprite ($0FEC)."
  },
  {
   "address": 4120,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $1016 (sta $C940,y), rewritten at run time by $1005 in draw_sprite ($0FEC). The code from here runs on as part of draw_sprite ($0FEC)."
  },
  {
   "address": 4125,
   "type": "line",
   "text": "Low bytes of each object's sprite buffer, for $0FEC."
  },
  {
   "address": 4137,
   "type": "line",
   "text": "High bytes of each object's sprite buffer ($C8 or $C9; zero for an object drawn elsewhere)."
  },
  {
   "address": 4149,
   "type": "line",
   "text": "For object X (9 to 11, the enemies in slots 6 to 8): loads its dying flag from $B628 (the enemy's $B62B), which $1038 takes: zero builds the mask, non-zero draws the frame unmasked."
  },
  {
   "address": 4152,
   "type": "line",
   "text": "With A zero, builds the object's mask ($1052); otherwise fills the mask buffer at $0500 with $FF (nothing hidden). Returns the frame's address high byte, $C0 + frame / 4."
  },
  {
   "address": 4178,
   "type": "line",
   "text": "Builds the 96-byte mask at $0500-$055F for object X (four tile rows of eight lines, three bytes a line): reads the 4 x 4 tiles under the sprite from the room map at $BA00 (32 tiles a row), takes each tile's foreground bit (bit 3 of its flags in $0600) into $1188, then turns each pair of neighbouring flags into the mask bytes ($1164 and the table $1178) for the sprite's horizontal offset, and writes them as the operands of the self-modified fill at $1111."
  },
  {
   "address": 4370,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1111 (lda #$00), rewritten at run time by $10D3 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4375,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1116 (lda #$00), rewritten at run time by $10E6 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4380,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $111B (lda #$00), rewritten at run time by $10F9 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4385,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1120 (lda #$00), rewritten at run time by $110C in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4391,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1126 (lda #$00), rewritten at run time by $10CD in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4396,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $112B (lda #$00), rewritten at run time by $10E0 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4401,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1130 (lda #$00), rewritten at run time by $10F3 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4406,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1135 (lda #$00), rewritten at run time by $1106 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4412,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $113B (lda #$00), rewritten at run time by $10C7 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4417,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1140 (lda #$00), rewritten at run time by $10DA in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4422,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1145 (lda #$00), rewritten at run time by $10ED in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4427,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $114A (lda #$00), rewritten at run time by $1100 in build_mask ($1052). The code from here runs on as part of build_mask ($1052)."
  },
  {
   "address": 4452,
   "type": "line",
   "text": "One byte of the sprite mask: from two neighbouring foreground flags at $1188,Y, picks a byte from $1178 (all clear, all set, or the edge between them at the sprite's pixel offset)."
  },
  {
   "address": 4453,
   "type": "line",
   "text": "Self-modified code: the operand of the LDX at $1164 (ldx #$00), rewritten at run time by $10BE in build_mask ($1052). The code from here runs on as part of mask_byte ($1164)."
  },
  {
   "address": 4472,
   "type": "line",
   "text": "The sixteen mask bytes $1164 chooses from: four for each two-pixel offset, open, closed on the left, closed on the right, or closed."
  },
  {
   "address": 4488,
   "type": "line",
   "text": "The foreground flags of the 4 x 4 tiles under a sprite, filled by $1052."
  },
  {
   "address": 4489,
   "type": "line",
   "text": "The second of a pair of foreground flags $1164 reads."
  },
  {
   "address": 4504,
   "type": "line",
   "text": "Three times 0 to 7: the first mask byte for each pixel line within a tile row."
  },
  {
   "address": 4512,
   "type": "line",
   "text": "Where Rick starts in the current room, saved by $40AA on entry and copied back by lose_life: X, Y and Y high at $11A0-$11A2, $4A at $11A3, then $16, $17, $4B, $4C, $41 and $46 at $11A5-$11AA. $11A4 is neither written nor read."
  },
  {
   "address": 4513,
   "type": "line",
   "text": "The saved Y of Rick at the room's entry."
  },
  {
   "address": 4514,
   "type": "line",
   "text": "The saved Y's high byte."
  },
  {
   "address": 4515,
   "type": "line",
   "text": "The saved crouching flag."
  },
  {
   "address": 4517,
   "type": "line",
   "text": "The saved map address, low byte."
  },
  {
   "address": 4518,
   "type": "line",
   "text": "The saved map address, high byte."
  },
  {
   "address": 4519,
   "type": "line",
   "text": "The saved scroll position, low byte."
  },
  {
   "address": 4520,
   "type": "line",
   "text": "The saved scroll position, high byte."
  },
  {
   "address": 4521,
   "type": "line",
   "text": "The saved facing."
  },
  {
   "address": 4522,
   "type": "line",
   "text": "The saved climbing flag."
  },
  {
   "address": 4523,
   "type": "line",
   "text": "The handler for object types 4 to 15, the enemies, reached through the table at $1D40 with X the object's slot (its fields at slot + 3 in the object arrays). A dying enemy ($B62B set) is thrown up and falls with gravity until it leaves the play area, then is removed and its record in the room's object list marked done. A live one dies to an explosion ($2C8A) or a bullet ($1C73), for 50 points ($1519), and is stunned for 25 steps by the stick ($3903 = $19, $1C84); otherwise it walks towards Rick's column ($B58C) two pixels a step, climbs a ladder when Rick is above or below it ($1788 against $1789), falls where there is no floor, turns at walls ($158B), and kills Rick on contact ($14FF). The animation runs from the frame lists at $178A/$1793."
  },
  {
   "address": 4580,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $11E3 (lda #$00), rewritten at run time by $11D7 in enemy_step ($11AB). The code from here runs on as part of enemy_step ($11AB)."
  },
  {
   "address": 4860,
   "type": "line",
   "text": "An address the code names directly: the JMP at $12C3 jumps to it."
  },
  {
   "address": 4901,
   "type": "line",
   "text": "An address the code names directly: the JMP at $126D jumps to it."
  },
  {
   "address": 5293,
   "type": "line",
   "text": "An address the code names directly: the JMP at $1382 jumps to it (and 2 more)."
  },
  {
   "address": 5296,
   "type": "line",
   "text": "An address the code names directly: the JMP at $1217 jumps to it."
  },
  {
   "address": 5299,
   "type": "line",
   "text": "An address the code names directly: j_12FC jumps to it at $1322."
  },
  {
   "address": 5308,
   "type": "line",
   "text": "Sets the enemy's frame from its frame list ($B5EF/$B5FB) at position Y, plus its type's base ($B673), and its colour from $B4D0."
  },
  {
   "address": 5335,
   "type": "line",
   "text": "Shows the first frame of the enemy's list ($14BC), then runs into $14DC and turns it towards Rick: the step of a stunned enemy ($1275, $13F3)."
  },
  {
   "address": 5340,
   "type": "line",
   "text": "Turns the enemy towards Rick: direction 4 (left) or 8 (right) by which side of him it stands, with that direction's frame list."
  },
  {
   "address": 5375,
   "type": "line",
   "text": "An enemy standing on a deadly tile ($29 bit 2) dies ($1519). Otherwise, when it touches Rick ($1C33) Rick dies ($0EFA), and when it overlaps a moving object ($1673) it dies."
  },
  {
   "address": 5401,
   "type": "line",
   "text": "Starts an enemy's death: the dying counter $B62B, an upward speed of -3, the dying frames at $431B, sound 4, and 50 points ($2D3D)."
  },
  {
   "address": 5434,
   "type": "line",
   "text": "Empties the enemy's slot once it has fallen out of the room ($B5B3 = 0)."
  },
  {
   "address": 5440,
   "type": "line",
   "text": "Moves an enemy one step in its direction ($1549) and keeps the new X."
  },
  {
   "address": 5449,
   "type": "line",
   "text": "Moves the enemy two pixels left or right according to its direction $38F7, through a jump picked from $1579/$1582, kept between 2 and $E8; up, down or none does nothing."
  },
  {
   "address": 5465,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the JMP at $1558 (jmp $1569), rewritten at run time by $154F in enemy_dir_step ($1549). The code from here runs on as part of enemy_dir_step ($1549)."
  },
  {
   "address": 5466,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the JMP at $1558 (jmp $1569), rewritten at run time by $1555 in enemy_dir_step ($1549). The code from here runs on as part of enemy_dir_step ($1549)."
  },
  {
   "address": 5467,
   "type": "line",
   "text": "Two pixels left, no further than X = 2."
  },
  {
   "address": 5481,
   "type": "line",
   "text": "An address the code names directly: enemy_dir_step jumps to it at $1558."
  },
  {
   "address": 5482,
   "type": "line",
   "text": "Two pixels right, no further than X = $E8."
  },
  {
   "address": 5497,
   "type": "line",
   "text": "Low bytes of the step routines for each direction value 0 to 8: left (4) is $155B and right (8) $156A; the others point at RTS instructions ($0F18, $1569 and $1578)."
  },
  {
   "address": 5506,
   "type": "line",
   "text": "High bytes of the direction step routines for $1549, by direction 0 to 8."
  },
  {
   "address": 5515,
   "type": "line",
   "text": "Tests the tiles at an enemy's next position ($15B5): carry clear means blocked. Moving up (direction 1) only a solid tile ($40) blocks; otherwise a floor ($20) or a solid tile blocks, and a ladder top ($80) too unless the enemy is on a ladder ($390F). A place the tiles allow is then tested against the object in slot 0 ($1642), which blocks it too."
  },
  {
   "address": 5557,
   "type": "line",
   "text": "ORs the flags ($0600) of the tiles under an enemy into $29, from the room map at $BA00 through the self-modified load at $1617: rows of three tiles (two when its X plus 4 is a multiple of 8), three rows, or four when bit 2 of its Y is set, with bits 4 and 7 of the rows above cleared before the last row is added."
  },
  {
   "address": 5601,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $15E0 (lda #$00), rewritten at run time by $15B5 in enemy_tile_flags ($15B5). The code from here runs on as part of enemy_tile_flags ($15B5)."
  },
  {
   "address": 5632,
   "type": "line",
   "text": "Self-modified code: the operand of the BEQ at $15FF (beq $1601), rewritten at run time by $15EA in enemy_tile_flags ($15B5). The code from here runs on as part of enemy_tile_flags ($15B5)."
  },
  {
   "address": 5653,
   "type": "line",
   "text": "ORs the flags of two or three tiles of one row into A and $29, through the self-modified load at $1617, then moves that load down one row of the room map (32 tiles)."
  },
  {
   "address": 5654,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $1615 (ldy #$02), rewritten at run time by $15F5 in enemy_tile_flags ($15B5). The code from here runs on as part of tile_row_flags ($1615)."
  },
  {
   "address": 5656,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDX at $1617 (ldx $FFFF,y), rewritten at run time by $15D4, $162A in enemy_tile_flags ($15B5). The code from here runs on as part of tile_row_flags ($1615)."
  },
  {
   "address": 5657,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDX at $1617 (ldx $FFFF,y), rewritten at run time by $15DD, $162F in enemy_tile_flags ($15B5). The code from here runs on as part of tile_row_flags ($1615)."
  },
  {
   "address": 5683,
   "type": "line",
   "text": "Whether the enemy at X overlaps the object in slot 0 ($B5B3), the slot objects whose record has bit 1 of its flags set are put in ($3C95). Carry clear means it does; $1642 makes the same test for the position in $36, $20 and $21."
  },
  {
   "address": 5698,
   "type": "line",
   "text": "An address the code names directly: the JMP at $15B2 jumps to it."
  },
  {
   "address": 5747,
   "type": "line",
   "text": "Whether the enemy at X is under any of the five falling objects in slots 1 to 5 ($B5B4); carry clear means it was hit."
  },
  {
   "address": 5796,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $16A3 (lda #$00), rewritten at run time by $167E in enemy_squashed ($1673). The code from here runs on as part of enemy_squashed ($1673)."
  },
  {
   "address": 5804,
   "type": "line",
   "text": "Self-modified code: the operand of the CMP at $16AB (cmp #$00), rewritten at run time by $16A0 in enemy_squashed ($1673). The code from here runs on as part of enemy_squashed ($1673)."
  },
  {
   "address": 5828,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $16C3 (lda #$00), rewritten at run time by $168B in enemy_squashed ($1673). The code from here runs on as part of enemy_squashed ($1673)."
  },
  {
   "address": 5831,
   "type": "line",
   "text": "Self-modified code: the operand of the SBC at $16C6 (sbc #$00), rewritten at run time by $16C0 in enemy_squashed ($1673). The code from here runs on as part of enemy_squashed ($1673)."
  },
  {
   "address": 5835,
   "type": "line",
   "text": "Self-modified code: the operand of the CMP at $16CA (cmp #$14), rewritten at run time by $16B5 in enemy_squashed ($1673). The code from here runs on as part of enemy_squashed ($1673)."
  },
  {
   "address": 5843,
   "type": "line",
   "text": "At the start of a level (X = the level), builds the left-facing frames of the level's enemies from the right-facing ones, starting at the address in $1778/$177C ($6600, $6880, $6B00 or $6D80): each frame's rows are reversed byte by byte and each byte's four multicolour pixel pairs swapped end for end ($1767), written to $E400-$E8FF. Then gives the twenty enemy frames $90 to $A3 their colours in the frame-colour table ($B560-$B573, part of $B4D0): the first ten from $1780, the second ten from $1784."
  },
  {
   "address": 5892,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1703 (lda #$05), rewritten at run time by $16F8 in mirror_sprites ($16D3). The code from here runs on as part of mirror_sprites ($16D3)."
  },
  {
   "address": 5897,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $1708 (lda #$05), rewritten at run time by $16FE in mirror_sprites ($16D3). The code from here runs on as part of mirror_sprites ($16D3)."
  },
  {
   "address": 5908,
   "type": "line",
   "text": "Mirrors ten sprite frames, the level's enemy frames, by calling $1720 in a tree of JSRs: five through $1717, then five more by running into it."
  },
  {
   "address": 5911,
   "type": "line",
   "text": "Five frames of $1714's tree: one, then two through $171D, then two more by running into it."
  },
  {
   "address": 5917,
   "type": "line",
   "text": "Two frames of the tree."
  },
  {
   "address": 5920,
   "type": "line",
   "text": "Mirrors one 63-byte frame: each row's three bytes reversed in order and in pixel pairs."
  },
  {
   "address": 5936,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $172F (lda $6880,y), rewritten at run time by $16DA, $1753 in mirror_sprites ($16D3). The code from here runs on as part of mirror_frame ($1720)."
  },
  {
   "address": 5937,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $172F (lda $6880,y), rewritten at run time by $16E0, $1750 in mirror_sprites ($16D3). The code from here runs on as part of mirror_frame ($1720)."
  },
  {
   "address": 5939,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $1732 (sta $E900,y), rewritten at run time by $16E5, $1763 in mirror_sprites ($16D3). The code from here runs on as part of mirror_frame ($1720)."
  },
  {
   "address": 5940,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $1732 (sta $E900,y), rewritten at run time by $16EA, $175D in mirror_sprites ($16D3). The code from here runs on as part of mirror_frame ($1720)."
  },
  {
   "address": 5947,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $173A (sta $E9FC,x), rewritten at run time by $172A in mirror_frame ($1720). The code from here runs on as part of mirror_frame ($1720)."
  },
  {
   "address": 5948,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $173A (sta $E9FC,x), rewritten at run time by $16ED, $1760 in mirror_sprites ($16D3). The code from here runs on as part of mirror_frame ($1720)."
  },
  {
   "address": 5991,
   "type": "line",
   "text": "Reverses the four pixel pairs of the byte in A into $24."
  },
  {
   "address": 5994,
   "type": "line",
   "text": "Two pixel pairs of $1767."
  },
  {
   "address": 5997,
   "type": "line",
   "text": "One pixel pair of $1767."
  },
  {
   "address": 6008,
   "type": "line",
   "text": "Per level, the low byte of the first enemy frame to mirror."
  },
  {
   "address": 6012,
   "type": "line",
   "text": "Per level, the high byte of the first enemy frame to mirror ($66 to $6D)."
  },
  {
   "address": 6016,
   "type": "line",
   "text": "Per level, the colour of enemy frames $90 to $99."
  },
  {
   "address": 6020,
   "type": "line",
   "text": "Per level, the colour of enemy frames $9A to $A3."
  },
  {
   "address": 6024,
   "type": "line",
   "text": "Rick's Y halved, refreshed each step by $1990; enemies compare it with their own to decide whether to climb."
  },
  {
   "address": 6025,
   "type": "line",
   "text": "The current enemy's Y halved."
  },
  {
   "address": 6026,
   "type": "line",
   "text": "Low bytes of the enemy frame lists, by direction: none, up, down, left, right."
  },
  {
   "address": 6035,
   "type": "line",
   "text": "High bytes of the enemy frame lists."
  },
  {
   "address": 6040,
   "type": "line",
   "text": "By object type, how an enemy moves ($38D3): 2 follows Rick up and down ladders, 0 and 1 choose between two ways of walking (at $144D)."
  },
  {
   "address": 6052,
   "type": "line",
   "text": "By object type, the frame offset added to the enemy's frame lists ($B673): 0 or 10, which gives two looks from one set of lists."
  },
  {
   "address": 6068,
   "type": "line",
   "text": "Byte 1 of the current room's record (the low byte of its map address), kept by $17F8; nothing reads it directly."
  },
  {
   "address": 6069,
   "type": "line",
   "text": "Byte 2 of the room's record (the map address's high byte), kept by $17F8; nothing reads it directly."
  },
  {
   "address": 6070,
   "type": "line",
   "text": "The current room's graphics set (byte 0 of its record): 0 or not 0, it chooses the tile set ($1911) and the eight tile-range codes in zero page $38-$3F ($185B)."
  },
  {
   "address": 6071,
   "type": "line",
   "text": "Puts Rick at the start of level $30: X from $1968, Y from $196C, the map row $4B/$4C from $1970/$1974, the map address $16/$17 from $1978/$197C, the room list $22/$23 from $1980/$1984, and the level's two multicolours ($D022, $D023) from $1988/$198C."
  },
  {
   "address": 6136,
   "type": "line",
   "text": "Builds the room the record at ($22) describes: the eight tile-range codes of its graphics set into $38-$3F from $185B, the tile properties ($4081), its tile set ($1911), the record's bytes 1 and 2 to $17B4, the object list pointer (bytes 5 and 6) to $3DCF; then draws it ($2DA0), saves the restart point ($40AA), moves the map pointer $16 on by 16, clears the weapons and starts the objects ($3C0A)."
  },
  {
   "address": 6235,
   "type": "line",
   "text": "The two sets of eight tile codes $17F8 copies into zero page $38-$3F, the first code of each tile-property range ($4081): 00 4D 5B 5F B6 BE C1 FC for graphics set 0, 00 37 3B 3F CF D8 D9 FA for the other."
  },
  {
   "address": 6251,
   "type": "line",
   "text": "Rick has walked off the right edge ($B58C at $E6 or more): find the exit."
  },
  {
   "address": 6255,
   "type": "line",
   "text": "Rick has walked off the left edge: find the exit. Searches the room's exit list (the pointer in bytes 3 and 4 of its record, five bytes an exit) for one on this side whose map row is Rick's row or one less; the exit names the next room's record and how far to move the map. A next room of zero ends the level ($0924). Rick is put at the far edge (X = $E4 or 6) and the new room built ($17F8)."
  },
  {
   "address": 6364,
   "type": "line",
   "text": "Self-modified code: the operand of the SBC at $18DB (sbc #$00), rewritten at run time by $18D4."
  },
  {
   "address": 6417,
   "type": "line",
   "text": "When a room uses the other graphics set ($1967 changes), exchanges the 2 KB of tile graphics at $7000 with the character set in the RAM under the I/O area at $D000, and the 256 bytes at $8000 with those at $8100, with the I/O banked out."
  },
  {
   "address": 6453,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDY at $1933 (ldy $7000,x), rewritten at run time by $191F, $1943 in swap_tiles ($1911). The code from here runs on as part of swap_tiles ($1911)."
  },
  {
   "address": 6456,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $1936 (lda $7000,x), rewritten at run time by $1927, $1946 in swap_tiles ($1911). The code from here runs on as part of swap_tiles ($1911)."
  },
  {
   "address": 6459,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $1939 (sta $7000,x), rewritten at run time by $1922, $1949 in swap_tiles ($1911). The code from here runs on as part of swap_tiles ($1911)."
  },
  {
   "address": 6463,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $193D (sta $7000,x), rewritten at run time by $192A, $194C in swap_tiles ($1911). The code from here runs on as part of swap_tiles ($1911)."
  },
  {
   "address": 6503,
   "type": "line",
   "text": "The graphics set now in place, for $1911."
  },
  {
   "address": 6504,
   "type": "line",
   "text": "Per level, Rick's starting X."
  },
  {
   "address": 6508,
   "type": "line",
   "text": "Per level, Rick's starting Y."
  },
  {
   "address": 6512,
   "type": "line",
   "text": "Per level, the starting map row, low byte ($4B)."
  },
  {
   "address": 6516,
   "type": "line",
   "text": "Per level, the starting map row, high byte ($4C)."
  },
  {
   "address": 6520,
   "type": "line",
   "text": "Per level, the address of the level's map, low byte ($16)."
  },
  {
   "address": 6524,
   "type": "line",
   "text": "Per level, the address of the level's map, high byte ($17): $92, $96, $9A and $A0."
  },
  {
   "address": 6528,
   "type": "line",
   "text": "Per level, the address of the first room's record, low byte ($22)."
  },
  {
   "address": 6532,
   "type": "line",
   "text": "Per level, the address of the first room's record, high byte ($23)."
  },
  {
   "address": 6536,
   "type": "line",
   "text": "Per level, the first shared multicolour ($D022)."
  },
  {
   "address": 6540,
   "type": "line",
   "text": "Per level, the second shared multicolour ($D023)."
  },
  {
   "address": 6544,
   "type": "line",
   "text": "Each step: notes Rick's row and centre for the hit tests ($1788, $19C4, $19C5), then for each of the nine object slots with a type ($B5B3), calls the type's handler from the tables at $1D40 and $1D83 through the self-modified JSR at $19BD."
  },
  {
   "address": 6590,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the JSR at $19BD (jsr $1BCA), rewritten at run time by $19B4 in objects_step ($1990). The code from here runs on as part of objects_step ($1990)."
  },
  {
   "address": 6591,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the JSR at $19BD (jsr $1BCA), rewritten at run time by $19BA in objects_step ($1990). The code from here runs on as part of objects_step ($1990)."
  },
  {
   "address": 6596,
   "type": "line",
   "text": "Rick's Y halved plus 10, the centre the hit tests compare with."
  },
  {
   "address": 6597,
   "type": "line",
   "text": "Rick's X plus 19."
  },
  {
   "address": 6598,
   "type": "line",
   "text": "Object type 16, a box of dynamite: Rick touching it ($1C33) refills the dynamite to six (sound 8) and the box goes; a bullet or the stick sets it off instead, an explosion of 19 steps (sound 0) that kills Rick if he is in it."
  },
  {
   "address": 6650,
   "type": "line",
   "text": "Object type 17, a box of bullets: the same, refilling the bullets to six."
  },
  {
   "address": 6707,
   "type": "line",
   "text": "A box that has been set off: kills Rick on contact and counts down its explosion, changing frame every four steps from $4306."
  },
  {
   "address": 6721,
   "type": "line",
   "text": "An address the code names directly: box_dynamite jumps to it at $19E9 (and 1 more)."
  },
  {
   "address": 6751,
   "type": "line",
   "text": "Object types 18 to 21, a treasure: Rick touching it gets 500 points ($2D36 with 5) and sound 8, and it goes."
  },
  {
   "address": 6770,
   "type": "line",
   "text": "Object types 24 to 70, the traps (67 to 70 reach here through the overlap of the handler tables, $1D83). A trap at rest waits for its triggers, the bits of $38DF: bit 7 Rick inside its zone ($1CE8), bit 6 the stick ($1D1F), bit 5 a bullet ($1D10), bit 4 an explosion ($1CFE). Triggered, it starts its script ($B62B = $FE) and its sound ($BFC0). Bit 3 of $38DF makes it deadly to touch while it runs, bit 2 while it is at rest ($B64F)."
  },
  {
   "address": 6849,
   "type": "line",
   "text": "An address the code names directly: trap jumps to it at $1A7C."
  },
  {
   "address": 6863,
   "type": "line",
   "text": "One step of a running trap: steps its animation ($B5EF/$B5FB, every fourth step, $FF ending a loop), then its movement script ($B607/$B613): records of three bytes, a count and an X and a Y step, until $FF. At the end the trap is put back as it started ($391B, $3927), and when bit 0 of $38DF is set it gives 1000 points and goes for good. A move off the screen ends the script early."
  },
  {
   "address": 6951,
   "type": "line",
   "text": "An address the code names directly: the JMP at $1BC6 jumps to it."
  },
  {
   "address": 7030,
   "type": "line",
   "text": "Self-modified code: the operand of the ORA at $1B75 (ora #$03), rewritten at run time by $1B66."
  },
  {
   "address": 7098,
   "type": "line",
   "text": "Self-modified code: the operand of the ADC at $1BB9 (adc #$00), rewritten at run time by $1BA3, $1BAB."
  },
  {
   "address": 7114,
   "type": "line",
   "text": "Object type 22, the bonus trigger: when no bonus is counting, Rick touching it starts one at 2000 points ($0EF8 = $20) with sound 11, counting down from $0ECF."
  },
  {
   "address": 7143,
   "type": "line",
   "text": "Object type 23, the bonus goal: Rick touching it while a bonus counts adds what is left to the score ($2D3D, $2D36), plays sound 11 and stops the count."
  },
  {
   "address": 7185,
   "type": "line",
   "text": "Marks the object's record in the room's object list as used up (bit 7 of its second byte), so it does not come back, then empties the slot."
  },
  {
   "address": 7203,
   "type": "line",
   "text": "Empties the object's slot: frame $AB (blank), type 0, and $B583 = $FF."
  },
  {
   "address": 7219,
   "type": "line",
   "text": "Whether object X overlaps Rick, from its hit box ($B5D7, $B5E3) and Rick's centre ($19C4, $19C5); a crouching Rick ($4A) is shorter. Carry clear means it touches; a dying Rick touches nothing."
  },
  {
   "address": 7242,
   "type": "line",
   "text": "Self-modified code: the operand of the CMP at $1C49 (cmp #$26), rewritten at run time by $1C3D in touches_rick ($1C33). The code from here runs on as part of touches_rick ($1C33)."
  },
  {
   "address": 7279,
   "type": "line",
   "text": "Self-modified code: the operand of the CMP at $1C6E (cmp #$14), rewritten at run time by $1C59 in touches_rick ($1C33). The code from here runs on as part of touches_rick ($1C33)."
  },
  {
   "address": 7283,
   "type": "line",
   "text": "Whether the bullet ($2B67 positive, at $2B71/$2B72) is inside object X's box. Carry clear means hit."
  },
  {
   "address": 7300,
   "type": "line",
   "text": "Whether the stick ($2B73 set, at $2B74/$2B75) is inside object X's box. Carry clear means hit."
  },
  {
   "address": 7345,
   "type": "line",
   "text": "55 bytes of code nothing calls: a test of Rick's centre against trap X's zone ($B65B, $B673, $B667, $38D3), with margins added and a lower height when he crouches, in the self-modifying style of $1C33."
  },
  {
   "address": 7400,
   "type": "line",
   "text": "Whether Rick's centre is inside trap X's trigger zone ($B65B, $B667, $B673, $38D3)."
  },
  {
   "address": 7422,
   "type": "line",
   "text": "Whether an explosion ($2B77 at 4 or more, at $2B78/$2B79) is inside trap X's zone."
  },
  {
   "address": 7440,
   "type": "line",
   "text": "Whether the bullet is inside trap X's zone."
  },
  {
   "address": 7455,
   "type": "line",
   "text": "Whether the stick is inside trap X's zone."
  },
  {
   "address": 7468,
   "type": "line",
   "text": "The zone test: A and Y against the zone's X, width, Y and height. Carry clear means inside."
  },
  {
   "address": 7488,
   "type": "line",
   "text": "Low bytes of the object handlers by type, for $1990. The table's first four bytes, for types 0 to 3, are the last bytes of the code before it (part of a CMP, an RTS, a SEC and an RTS): type 0 is never dispatched, and no object has types 1 to 3. From type 4: enemies ($11AB) to 15, 16 dynamite box, 17 bullet box, 18 to 21 treasure, 22 and 23 the bonus, 24 to 70 traps ($1A72); the low bytes of types 67 to 70 are the first four bytes of the high-byte table at $1D83."
  },
  {
   "address": 7489,
   "type": "line",
   "text": "The zone test's RTS after the last comparison: carry clear means inside the zone. Its byte also serves as the handler table's entry for type 1."
  },
  {
   "address": 7492,
   "type": "line",
   "text": "The object handler table's low bytes from type 4 on, the first entries the game uses ($11AB for the enemies)."
  },
  {
   "address": 7555,
   "type": "line",
   "text": "High bytes of the object handlers by type, 0 to 70 ($1D83-$1DC9), for $1990. Its first four bytes ($72) are never used as high bytes (types 0 to 3) but serve as the low bytes of types 67 to 70, which with the high bytes $1A at $1DC6-$1DC9 point at the trap handler $1A72."
  },
  {
   "address": 7626,
   "type": "line",
   "text": "Starts the sprite path of a story screen (X the level, or 4 for the ending; its only caller is $240A in story_screen): the path's address from $1E80/$1E85 into $33/$34, the sprite colour from $1E78, then the start position (the path's first two bytes) and its first segment ($1E00)."
  },
  {
   "address": 7680,
   "type": "line",
   "text": "Reads the next segment of the path at ($33): a count, an X step, a Y step and the address of a frame list ($31/$32); a count of zero ends the path ($1E77 = 0)."
  },
  {
   "address": 7726,
   "type": "line",
   "text": "One step along the path, from the raster handler at $26A4: on every second call (when the segment's count is even) moves the position by the segment's steps, and on every second such move takes the next frame from its list (a zero restarts the list); when the segment's count runs out it reads the next segment ($1E00)."
  },
  {
   "address": 7791,
   "type": "line",
   "text": "The path sprite's X position."
  },
  {
   "address": 7792,
   "type": "line",
   "text": "The path sprite's Y position."
  },
  {
   "address": 7793,
   "type": "line",
   "text": "The current segment's X step."
  },
  {
   "address": 7794,
   "type": "line",
   "text": "The current segment's Y step."
  },
  {
   "address": 7795,
   "type": "line",
   "text": "The path sprite's current frame."
  },
  {
   "address": 7796,
   "type": "line",
   "text": "Steps left in the current segment."
  },
  {
   "address": 7797,
   "type": "line",
   "text": "Where the next segment starts within the path."
  },
  {
   "address": 7798,
   "type": "line",
   "text": "Where the next frame comes from within the frame list."
  },
  {
   "address": 7799,
   "type": "line",
   "text": "Non-zero while a path runs; the raster handler moves the sprite only then."
  },
  {
   "address": 7800,
   "type": "line",
   "text": "The sprite colour of each story screen's moving figure."
  },
  {
   "address": 7808,
   "type": "line",
   "text": "Low bytes of the five story screens' paths."
  },
  {
   "address": 7813,
   "type": "line",
   "text": "High bytes of the five story screens' paths, all $43."
  },
  {
   "address": 7818,
   "type": "line",
   "text": "The Hall of Fame screen, shown each time round the title loop ($08C5), at power-on too: clears the screen, finds whether the score belongs in the table ($21CC); if it does, marks the new place's row for the colour effect ($237D) and takes the name ($1F8C, which shows CONGRATULATIONS). Then writes the heading ($4164 with 2) and the eight entries, best first: the score from its first non-zero digit, four dots and the name. Plays tune 5, puts in the raster list at $3BC7 (the colour effects of $228F), waits for a frame's end ($4055) and fades in the text ($254F). The wait for fire is the caller's ($08D5)."
  },
  {
   "address": 8038,
   "type": "line",
   "text": "Writes four dots."
  },
  {
   "address": 8043,
   "type": "line",
   "text": "Two of them."
  },
  {
   "address": 8046,
   "type": "line",
   "text": "One character at ($09),Y."
  },
  {
   "address": 8050,
   "type": "line",
   "text": "Writes a BCD byte as two digits. Until the score's first non-zero digit a zero is not written: the cell is left blank and the cursor moves on, because $1F7E is the offset of the BEQ at $1F7D, $0B (to the INY at $1F8A) until $1F7B sets it to 7."
  },
  {
   "address": 8059,
   "type": "line",
   "text": "One digit of $1F72."
  },
  {
   "address": 8062,
   "type": "line",
   "text": "Self-modified code: the operand of the BEQ at $1F7D (beq $1F86), rewritten at run time by $1EE2, $1F82 in hall_screen ($1E8A). The code from here runs on as part of hof_digit ($1F7B)."
  },
  {
   "address": 8072,
   "type": "line",
   "text": "Writes A at ($09),Y and moves on."
  },
  {
   "address": 8076,
   "type": "line",
   "text": "The name entry: PLEASE ENTER YOUR NAME ($2165), the letter grid A to Z with the full stop and the rub-out and end signs ($217B), the name's ten places filled with $3B, then a cursor (character $3E) moved over the grid by the stick ($1FFB onwards, one letter a step) until fire picks a letter ($208A)."
  },
  {
   "address": 8187,
   "type": "line",
   "text": "An address the code names directly: b_2077 jumps to it at $2087."
  },
  {
   "address": 8311,
   "type": "line",
   "text": "An address the code names directly: name_letter jumps to it at $20B7."
  },
  {
   "address": 8330,
   "type": "line",
   "text": "One step of Hall of Fame name entry: the letter chosen with the joystick is written to the name on screen at $C306. Code $3C rubs out the last letter, $3D ends the name, and a tenth letter ends it too. The game then waits for fire to be released. A finished name goes through the rude-word filter ($2103) and the code words ($2146) and is copied into the table at $2318 ($20E4)."
  },
  {
   "address": 8420,
   "type": "line",
   "text": "Copies the ten letters of the entered name into the table at $2318, column by column."
  },
  {
   "address": 8423,
   "type": "line",
   "text": "Five letters of $20E4."
  },
  {
   "address": 8429,
   "type": "line",
   "text": "Two letters of the name into the Hall of Fame table."
  },
  {
   "address": 8432,
   "type": "line",
   "text": "One letter, a $3B becoming a space."
  },
  {
   "address": 8451,
   "type": "line",
   "text": "Searches the name just entered, on screen at $C306, for any of the eleven four-letter words in the list at $2181, its letters in order but not necessarily side by side, within the name's first seven places; a name that holds one is replaced by SNIGGER ($21AE)."
  },
  {
   "address": 8501,
   "type": "line",
   "text": "The next letter of a rude word, compared from where the last matched."
  },
  {
   "address": 8505,
   "type": "line",
   "text": "Looks for the letter in A in the name from position Y, up to the seventh letter."
  },
  {
   "address": 8518,
   "type": "line",
   "text": "Compares the entered name with FLUFOMATIC ($21B8), which sets $37, and with BBOOIINNGG ($21C2), which sets $53 and so turns on the cheat keys in the main loop."
  },
  {
   "address": 8549,
   "type": "line",
   "text": "PLEASE ENTER YOUR NAME, ASCII with @ for a space."
  },
  {
   "address": 8571,
   "type": "line",
   "text": "The last characters of the letter grid: Y, Z, the full stop, a space, and the signs $3C (rub out) and $3D (end)."
  },
  {
   "address": 8577,
   "type": "line",
   "text": "Eleven four-letter words the Hall of Fame refuses, ending in a zero: FUCK CUNT PISS SHIT CRAP FART WANK BAST BOLL ARSE BROS. ASCII."
  },
  {
   "address": 8622,
   "type": "line",
   "text": "The name that replaces a rude one: SNIGGER, padded with @. ASCII."
  },
  {
   "address": 8632,
   "type": "line",
   "text": "FLUFOMATIC, a Hall of Fame name that sets the flag $37. ASCII."
  },
  {
   "address": 8642,
   "type": "line",
   "text": "BBOOIINNGG, a Hall of Fame name that sets the cheat flag $53. ASCII."
  },
  {
   "address": 8652,
   "type": "line",
   "text": "Whether the score $44 $43 $42 belongs in the Hall of Fame: compares it with the eight scores from the top. When it does, moves the entries below the new place down one, scores and names, writes the score in, and returns carry set with the place in $0C."
  },
  {
   "address": 8810,
   "type": "line",
   "text": "Called once at power-on. Reads the raster line ($D012) as a random number: when its top bit is set, copies NOBBY or JEZEBEL (bit 3 chooses) from $2368 over one of the Hall of Fame names, chosen by the low three bits (none when they are zero). So the table can differ from one boot to the next."
  },
  {
   "address": 8847,
   "type": "line",
   "text": "Raster handler of the Hall of Fame (the only one in the list at $3BC7, at line $28): switches $D018 to $0E for the text; while $237C counts down from $7F to 0 it sweeps the colours of $237E across the entry rows (the row tables at $238E/$2397), and while it is negative it cycles the colours of $2386 on the row in $237D, the new entry's. Then runs the music ($4F78)."
  },
  {
   "address": 8888,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $22B7 (sta $DA37,x), rewritten at run time by $22A5 in story_irq ($228F). The code from here runs on as part of story_irq ($228F)."
  },
  {
   "address": 8889,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $22B7 (sta $DA37,x), rewritten at run time by $22AB in story_irq ($228F). The code from here runs on as part of story_irq ($228F)."
  },
  {
   "address": 8921,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $22D8 (sta $D8F7,x), rewritten at run time by $22CA in story_irq ($228F). The code from here runs on as part of story_irq ($228F)."
  },
  {
   "address": 8922,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $22D8 (sta $D8F7,x), rewritten at run time by $22D0 in story_irq ($228F). The code from here runs on as part of story_irq ($228F)."
  },
  {
   "address": 8932,
   "type": "line",
   "text": "Raster handler for the name entry: $D018 = $0E and the cursor's colour cycled from $237E every four frames."
  },
  {
   "address": 8954,
   "type": "line",
   "text": "Raster handler that only plays the music ($4F78)."
  },
  {
   "address": 8960,
   "type": "line",
   "text": "The Hall of Fame scores, high BCD byte, eight entries, the best last."
  },
  {
   "address": 8961,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2204 reads it indexed by X."
  },
  {
   "address": 8968,
   "type": "line",
   "text": "The middle BCD byte of the eight scores: 10 to 80, which with the others makes 1000 to 8000."
  },
  {
   "address": 8969,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $220A reads it indexed by X."
  },
  {
   "address": 8976,
   "type": "line",
   "text": "The low BCD byte of the eight scores."
  },
  {
   "address": 8977,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2210 reads it indexed by X."
  },
  {
   "address": 8984,
   "type": "line",
   "text": "The eight Hall of Fame names, stored column by column: byte 8 * i + n is letter i of name n, ten letters a name, @ for a space. ASCII."
  },
  {
   "address": 8985,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2216 reads it indexed by X."
  },
  {
   "address": 8992,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F06 indexed by X (and 1 more)."
  },
  {
   "address": 8993,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $221C reads it indexed by X."
  },
  {
   "address": 9000,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F0C indexed by X (and 1 more)."
  },
  {
   "address": 9001,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2222 reads it indexed by X."
  },
  {
   "address": 9008,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F12 indexed by X (and 1 more)."
  },
  {
   "address": 9009,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2228 reads it indexed by X."
  },
  {
   "address": 9016,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F18 indexed by X (and 1 more)."
  },
  {
   "address": 9017,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $222E reads it indexed by X."
  },
  {
   "address": 9024,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F1E indexed by X (and 1 more)."
  },
  {
   "address": 9025,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2234 reads it indexed by X."
  },
  {
   "address": 9032,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F24 indexed by X (and 1 more)."
  },
  {
   "address": 9033,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $223A reads it indexed by X."
  },
  {
   "address": 9040,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F2A indexed by X (and 1 more)."
  },
  {
   "address": 9041,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2240 reads it indexed by X."
  },
  {
   "address": 9048,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F30 indexed by X (and 1 more)."
  },
  {
   "address": 9049,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $2246 reads it indexed by X."
  },
  {
   "address": 9056,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): hall_screen reads it at $1F36 indexed by X (and 1 more)."
  },
  {
   "address": 9057,
   "type": "line",
   "text": "An address the code names directly, in the byte block hof_score_hi ($2300-$2367): the LDA at $224C reads it indexed by X."
  },
  {
   "address": 9064,
   "type": "line",
   "text": "NOBBY and JEZEBEL, each padded to ten with @: the two names $226A may put into the Hall of Fame. ASCII."
  },
  {
   "address": 9084,
   "type": "line",
   "text": "Counts down the colour effect of $228F."
  },
  {
   "address": 9085,
   "type": "line",
   "text": "Which row of the text $228F colours."
  },
  {
   "address": 9086,
   "type": "line",
   "text": "Eight colours the cursor and the text effects cycle through."
  },
  {
   "address": 9094,
   "type": "line",
   "text": "Eight colours: the first four colour the level-select lines, one each ($27C0, $2838); the chosen line cycles through all eight ($2864), and so does the new entry's row in the Hall of Fame ($228F)."
  },
  {
   "address": 9102,
   "type": "line",
   "text": "Low bytes of the colour-RAM rows the effects write."
  },
  {
   "address": 9111,
   "type": "line",
   "text": "High bytes of the colour-RAM rows $228F writes: the Hall of Fame's entry rows, two text rows apart from $D8F7."
  },
  {
   "address": 9120,
   "type": "line",
   "text": "Before each level and before the ending: steps the level number $30 and shows its story screen, except that a game begun from the level select ($52 positive) returns at once when the number reaches 4, skipping the ending's. Notes the furthest level reached in $51 (at most 3), draws the picture ($25F3), starts the sprite path ($1DCA), writes the story text ($248E), draws the film-strip frame, swaps in the story's character set ($24DC), mirrors the level's enemy sprites ($16D3), plays the level's tune, fades the text in ($254F), waits for fire and swaps the character set back."
  },
  {
   "address": 9333,
   "type": "line",
   "text": "Writes A down one column of eight screen rows: the edges of the film-strip frame around a picture."
  },
  {
   "address": 9358,
   "type": "line",
   "text": "Writes a story's text from ($0B) to the screen: the heading line of 30 characters at $C056 first, then lines of 30 characters from $C20D (the pointer at $C1E5 is moved on a row before the first), a $FE leaving an empty line and $FF ending the text; spaces become character 0."
  },
  {
   "address": 9379,
   "type": "line",
   "text": "An address the code names directly: j_24C2 jumps to it at $24D8."
  },
  {
   "address": 9410,
   "type": "line",
   "text": "An address the code names directly: story_text jumps to it at $24A0."
  },
  {
   "address": 9436,
   "type": "line",
   "text": "Exchanges the character set at $F800-$FFF7 with the 2 KB at $7800, so the story screen's picture characters are in place; called again to put them back."
  },
  {
   "address": 9458,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $24F0 (lda $FF00,y), rewritten at run time by $24DE, $2501 in swap_story_chars ($24DC). The code from here runs on as part of swap_story_chars ($24DC)."
  },
  {
   "address": 9462,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $24F4 (lda $7F00,y), rewritten at run time by $24E6, $2504 in swap_story_chars ($24DC). The code from here runs on as part of swap_story_chars ($24DC)."
  },
  {
   "address": 9465,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $24F7 (sta $FF00,y), rewritten at run time by $24E1, $2507 in swap_story_chars ($24DC). The code from here runs on as part of swap_story_chars ($24DC)."
  },
  {
   "address": 9469,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $24FB (sta $7F00,y), rewritten at run time by $24E9, $250A in swap_story_chars ($24DC). The code from here runs on as part of swap_story_chars ($24DC)."
  },
  {
   "address": 9508,
   "type": "line",
   "text": "23 bytes of code nothing calls: a loop that exchanges two blocks of memory through ($09) and ($0B)."
  },
  {
   "address": 9531,
   "type": "line",
   "text": "Clears the characters $2C to $57 of the set at $F800 ($F960-$FADF), where pictures are built."
  },
  {
   "address": 9551,
   "type": "line",
   "text": "Fades in characters $2C to $5B of the set at $F800 ($F960-$FADF, the punctuation, digits and letters that $253B clears) from the copy at $7960-$7ADF: eight passes, each ORing one more bit of every byte, the bit taken from $4071 and changing from byte to byte, with a short wait ($25AA) after each byte, so the text appears a few pixels at a time."
  },
  {
   "address": 9588,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $2573 (lda $7ADF), rewritten at run time by $256A in reveal_picture ($254F). The code from here runs on as part of reveal_picture ($254F)."
  },
  {
   "address": 9589,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $2573 (lda $7ADF), rewritten at run time by $2559 in reveal_picture ($254F). The code from here runs on as part of reveal_picture ($254F)."
  },
  {
   "address": 9601,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the ORA at $2580 (ora $FADF), rewritten at run time by $256D in reveal_picture ($254F). The code from here runs on as part of reveal_picture ($254F)."
  },
  {
   "address": 9602,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the ORA at $2580 (ora $FADF), rewritten at run time by $255E in reveal_picture ($254F). The code from here runs on as part of reveal_picture ($254F)."
  },
  {
   "address": 9604,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $2583 (sta $FADF), rewritten at run time by $2570 in reveal_picture ($254F). The code from here runs on as part of reveal_picture ($254F)."
  },
  {
   "address": 9605,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $2583 (sta $FADF), rewritten at run time by $2561 in reveal_picture ($254F). The code from here runs on as part of reveal_picture ($254F)."
  },
  {
   "address": 9642,
   "type": "line",
   "text": "A delay of about 180 cycles, the call included."
  },
  {
   "address": 9649,
   "type": "line",
   "text": "The pass of $254F, 0 to 7."
  },
  {
   "address": 9650,
   "type": "line",
   "text": "The position within the current 16-byte block (two characters) that $254F is on."
  },
  {
   "address": 9651,
   "type": "line",
   "text": "Low bytes of the 24 blocks of 16 bytes (two characters each) $254F copies; the same low bytes serve the source and the destination."
  },
  {
   "address": 9675,
   "type": "line",
   "text": "High bytes of the same: $79 and $7A."
  },
  {
   "address": 9699,
   "type": "line",
   "text": "The offsets 0 to 15 within a row."
  },
  {
   "address": 9715,
   "type": "line",
   "text": "Draws the 6 x 6 characters of a level's picture into the frame on the story screen, starting from the character in $2650 for the level, in the colour from $2655 (written into the LDA at $2629), and sets the multicolours ($D022, $D023) from $265A and $265F."
  },
  {
   "address": 9763,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $2622 (sta $C1C9,y), rewritten at run time by $25F5, $263B in story_picture ($25F3). The code from here runs on as part of story_picture ($25F3)."
  },
  {
   "address": 9764,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $2622 (sta $C1C9,y), rewritten at run time by $25FA, $2643 in story_picture ($25F3). The code from here runs on as part of story_picture ($25F3)."
  },
  {
   "address": 9770,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $2629 (lda #$0D), rewritten at run time by $2616 in story_picture ($25F3). The code from here runs on as part of story_picture ($25F3)."
  },
  {
   "address": 9772,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $262B (sta $D9C9,y), rewritten at run time by $25FF, $263E in story_picture ($25F3). The code from here runs on as part of story_picture ($25F3)."
  },
  {
   "address": 9773,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $262B (sta $D9C9,y), rewritten at run time by $2604, $2646 in story_picture ($25F3). The code from here runs on as part of story_picture ($25F3)."
  },
  {
   "address": 9808,
   "type": "line",
   "text": "Per level and the ending, the first character of the story picture."
  },
  {
   "address": 9813,
   "type": "line",
   "text": "Per level, the picture's colour."
  },
  {
   "address": 9818,
   "type": "line",
   "text": "Per level, the picture's first multicolour."
  },
  {
   "address": 9823,
   "type": "line",
   "text": "Per level, the picture's second multicolour."
  },
  {
   "address": 9828,
   "type": "line",
   "text": "Raster handler of the story screens (handler 8, the last in the list at $3BBB): animates the film-strip frame ($266D) and plays the music ($4FC9)."
  },
  {
   "address": 9837,
   "type": "line",
   "text": "Every fourth frame swaps the top and bottom halves of character 4 ($F820 and $F824), and every frame the bottom half of character 5 with the top half of character 6 ($F82C and $F830): the characters of the film-strip frame ($2475, $494D), whose sprocket holes so seem to run. Called by $2664 on the story screens and by the plain title ($2932)."
  },
  {
   "address": 9884,
   "type": "line",
   "text": "Raster handler: $D016 = $10 (multicolour, 38 columns)."
  },
  {
   "address": 9892,
   "type": "line",
   "text": "Raster handler of the story screens: $D016 = 0, one step of the sprite path ($1E2E), and the path sprite's frame and position written to sprites 0 and 1."
  },
  {
   "address": 9936,
   "type": "line",
   "text": "Low bytes of the story texts for levels 1 to 4 and the ending."
  },
  {
   "address": 9941,
   "type": "line",
   "text": "High bytes of the same, $AD to $B1."
  },
  {
   "address": 9946,
   "type": "line",
   "text": "Waits for fire on control port 2 (bit 4 of $DC00), calls $4055, then waits for fire to be released."
  },
  {
   "address": 9964,
   "type": "line",
   "text": "GAME OVER: clears the play area, writes the words ($2763) in the middle, plays tune 6 and waits until the tune ends ($4FCC)."
  },
  {
   "address": 10083,
   "type": "line",
   "text": "GAME OVER, ASCII."
  },
  {
   "address": 10092,
   "type": "line",
   "text": "The title: clears the screen, writes the titles ($4164 with 0), the credits from $42CD/$42DC, then either the plain title ($2897) or, when FLUFOMATIC was entered ($37), a level select: the levels 1 to the furthest reached ($51) listed with their names, up and down choosing, fire starting from the chosen one ($30, $52)."
  },
  {
   "address": 10281,
   "type": "line",
   "text": "An address the code names directly: j_2829 jumps to it at $2859."
  },
  {
   "address": 10340,
   "type": "line",
   "text": "Each call colours the Core Design logo's top two rows ($DB64 plus the offsets at $42EB) from $2998 by the frame counter, then runs into $2881 with a colour from $2386, so the level-select line in $25 flashes. The plain title calls it too ($293E), with $25 = 3."
  },
  {
   "address": 10369,
   "type": "line",
   "text": "Colours one line of the level select."
  },
  {
   "address": 10385,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $2890 (sta $DA8B,y), rewritten at run time by $2884 in select_colour ($2881). The code from here runs on as part of select_colour ($2881)."
  },
  {
   "address": 10386,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $2890 (sta $DA8B,y), rewritten at run time by $288A in select_colour ($2881). The code from here runs on as part of select_colour ($2881)."
  },
  {
   "address": 10391,
   "type": "line",
   "text": "The plain title: the film-strip frame (its sprocket holes run by $266D), Rick in it as four expanded sprites, and a loop that cycles colours through $2864 every fourth frame until fire is pressed; then $30 and $52 are set to $FF, so the game starts at level 1."
  },
  {
   "address": 10577,
   "type": "line",
   "text": "Writes one of the strings named by $2969/$296E (Y the length from $2973) at ($09)."
  },
  {
   "address": 10593,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $2960 (lda $FFFF,y), rewritten at run time by $2957 in print_string ($2951). The code from here runs on as part of print_string ($2951)."
  },
  {
   "address": 10594,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $2960 (lda $FFFF,y), rewritten at run time by $295D in print_string ($2951). The code from here runs on as part of print_string ($2951)."
  },
  {
   "address": 10601,
   "type": "line",
   "text": "Low bytes of the level-select strings."
  },
  {
   "address": 10606,
   "type": "line",
   "text": "High bytes of the level-select strings' addresses."
  },
  {
   "address": 10611,
   "type": "line",
   "text": "Their lengths less one."
  },
  {
   "address": 10616,
   "type": "line",
   "text": "Low bytes of each level line's colour row."
  },
  {
   "address": 10620,
   "type": "line",
   "text": "High bytes of the level lines' colour rows."
  },
  {
   "address": 10624,
   "type": "line",
   "text": "SELECT LEVEL in pairs of characters $E0-$EB, the heading of the level select (string 4 of $2969, written at $C0D0)."
  },
  {
   "address": 10648,
   "type": "line",
   "text": "The colours $2864 flashes through."
  },
  {
   "address": 10656,
   "type": "line",
   "text": "Raster handler: $D018 = $0E and $D016 = $C8 for text."
  },
  {
   "address": 10669,
   "type": "line",
   "text": "Raster handler: $D018 = $1E and $D016 = $C4, and the music if a tune is playing."
  },
  {
   "address": 10690,
   "type": "line",
   "text": "Clears all of the screen at $C400 and rows 1 to 24 of the screen at $C000, turns interrupts off while it puts in the plain raster list ($3BBF, $2A0F alone), and sets colour RAM rows 1 to 24 to white."
  },
  {
   "address": 10767,
   "type": "line",
   "text": "Raster handler: $D018 = $1E."
  },
  {
   "address": 10775,
   "type": "line",
   "text": "Fire and up: when no bullet is flying ($2B67) and Rick has bullets, starts one at his hand, a screen cell from his position on the side he faces, moving eight pixels a step ($2B6F = +8 or -8), and takes a bullet away with sound 6. With none left, or too close to the edge, it plays sound 3 instead."
  },
  {
   "address": 10899,
   "type": "line",
   "text": "Moves the flying bullet: puts back the character and colour it covered ($2B68, $2B69) and moves it on ($2ABA)."
  },
  {
   "address": 10938,
   "type": "line",
   "text": "Moves the bullet one screen cell along its row. It ends at the screen's edge, at a wall or floor tile ($0600 bits 4 and 6, through $2B0B), or when it hits the object in the first slot ($1C73). Otherwise it saves the character and colour at its new cell and draws itself there: the character in $2B70 ($FF going right, $FE going left) in white."
  },
  {
   "address": 11019,
   "type": "line",
   "text": "The screen and colour addresses of the bullet's cell, from its X and Y through the row tables at $2B7C and $2B93; returns zero (and stops the bullet) for a cell outside the play area or on a solid tile."
  },
  {
   "address": 11111,
   "type": "line",
   "text": "The bullet: zero when there is none, set while one flies."
  },
  {
   "address": 11112,
   "type": "line",
   "text": "The screen character the bullet covers."
  },
  {
   "address": 11113,
   "type": "line",
   "text": "The colour under it."
  },
  {
   "address": 11114,
   "type": "line",
   "text": "The bullet's Y, low byte."
  },
  {
   "address": 11115,
   "type": "line",
   "text": "The bullet's Y, high byte."
  },
  {
   "address": 11116,
   "type": "line",
   "text": "The bullet's X."
  },
  {
   "address": 11117,
   "type": "line",
   "text": "The bullet's screen address, low byte."
  },
  {
   "address": 11118,
   "type": "line",
   "text": "The bullet's screen address, high byte."
  },
  {
   "address": 11119,
   "type": "line",
   "text": "The bullet's step: +8 or -8 pixels."
  },
  {
   "address": 11120,
   "type": "line",
   "text": "The character drawn for the bullet, $FF or $FE by direction."
  },
  {
   "address": 11121,
   "type": "line",
   "text": "The bullet's X for the hit tests."
  },
  {
   "address": 11122,
   "type": "line",
   "text": "The bullet's Y halved, for the hit tests."
  },
  {
   "address": 11123,
   "type": "line",
   "text": "Set while the stick is out ($0CDE), for the hit tests ($1C84)."
  },
  {
   "address": 11124,
   "type": "line",
   "text": "Where the stick's tip is, X."
  },
  {
   "address": 11125,
   "type": "line",
   "text": "Where the stick's tip is, Y halved."
  },
  {
   "address": 11126,
   "type": "line",
   "text": "The lit dynamite's fuse, counting down from 34; at zero the explosion starts."
  },
  {
   "address": 11127,
   "type": "line",
   "text": "The explosion's steps left: 9 when the fuse runs out ($2C1E, less one at once), counting down to 0, when it ends. While it is 2 or more $2C55 tests Rick and slots 3 to 8 against the blast; the traps' and enemies' own tests ($1CFE, $2C8A) need it at 4 or more."
  },
  {
   "address": 11128,
   "type": "line",
   "text": "The dynamite's X plus 12: the centre of the blast for the trap tests."
  },
  {
   "address": 11129,
   "type": "line",
   "text": "The dynamite's Y, halved, plus 5."
  },
  {
   "address": 11130,
   "type": "line",
   "text": "The left edge of the blast's box, 40 pixels left of the centre."
  },
  {
   "address": 11131,
   "type": "line",
   "text": "The top of the blast's box."
  },
  {
   "address": 11132,
   "type": "line",
   "text": "Low bytes of the screen rows the bullet can be on."
  },
  {
   "address": 11155,
   "type": "line",
   "text": "High bytes of the same, $C0 to $C3."
  },
  {
   "address": 11178,
   "type": "line",
   "text": "Fire and down: with no dynamite burning and some left, takes a stick away and puts it at Rick's feet as object slot 2, with a fuse of 34 steps ($2B76) and the blast's box worked out ahead."
  },
  {
   "address": 11256,
   "type": "line",
   "text": "Each step: counts down the fuse, flickering the stick between the frames at $4302; at zero, sound 0 and ten steps of explosion, whose frames come from $4306 and $2C50, and while it is large ($2B77 at 2 or more) $2C55 kills what is in it."
  },
  {
   "address": 11344,
   "type": "line",
   "text": "The colours of the explosion's frames."
  },
  {
   "address": 11349,
   "type": "line",
   "text": "The explosion kills Rick if he is in its box ($2C9F with slot 0), and sets off every object in slots 3 to 8 whose type is below 18 and that is in it and not already set off ($B64C): its count $B634 to $13 and its frame to $A6 ($430A). The enemies sit in slots 9 to 11 and are tested by $2C8A instead, so this catches the boxes of dynamite and bullets."
  },
  {
   "address": 11402,
   "type": "line",
   "text": "For an enemy: whether a live explosion has it in its box. Carry clear means it does."
  },
  {
   "address": 11419,
   "type": "line",
   "text": "Self-modified code: the operand of the LDX at $2C9A (ldx #$00), rewritten at run time by $2C91 in enemy_in_blast ($2C8A). The code from here runs on as part of enemy_in_blast ($2C8A)."
  },
  {
   "address": 11423,
   "type": "line",
   "text": "Whether object X is inside the blast's box ($2B7A, $2B7B): 56 pixels wide, and 28 high in the halved Y units ($399D/$3991 shifted right), which is 56 pixels. When the box starts left of the screen ($2B7A at $E8 or more) only an X below $1C counts as inside. Carry clear means inside."
  },
  {
   "address": 11470,
   "type": "line",
   "text": "Each step updates one part of the panel: one of the three counters, whose icons it adds or takes away one at a time until the panel matches the count, or every fourth step the score."
  },
  {
   "address": 11527,
   "type": "line",
   "text": "Writes the six digits of the BCD score $44 $43 $42 to the top line of the screen at $C005."
  },
  {
   "address": 11561,
   "type": "line",
   "text": "Where the three panel counters are drawn: the screen offsets $0C, $14 and $1C for bullets, dynamite and lives."
  },
  {
   "address": 11564,
   "type": "line",
   "text": "The high byte of each counter's place on screen ($C0)."
  },
  {
   "address": 11567,
   "type": "line",
   "text": "The bullets the panel shows; stepped one at a time towards $2D32 by $2CCE."
  },
  {
   "address": 11568,
   "type": "line",
   "text": "The dynamite the panel shows."
  },
  {
   "address": 11569,
   "type": "line",
   "text": "The lives the panel shows."
  },
  {
   "address": 11570,
   "type": "line",
   "text": "Bullets left, six at the start of each level and after each life lost."
  },
  {
   "address": 11571,
   "type": "line",
   "text": "Sticks of dynamite left, six at the start of each level and after each life lost."
  },
  {
   "address": 11572,
   "type": "line",
   "text": "Lives left: six from $08C0 in the title loop before every game, one taken at $0AE9; drawn as hats in the panel."
  },
  {
   "address": 11573,
   "type": "line",
   "text": "Which of the panel's four parts $2CCE updates this step: the three counters, then the score."
  },
  {
   "address": 11574,
   "type": "line",
   "text": "Adds the BCD value in A to the score's hundreds ($43), carrying into $44."
  },
  {
   "address": 11581,
   "type": "line",
   "text": "Adds the BCD value in A to the score's tens and units ($42), carrying on."
  },
  {
   "address": 11593,
   "type": "line",
   "text": "An address the code names directly: add_hundreds jumps to it at $2D3A."
  },
  {
   "address": 11605,
   "type": "line",
   "text": "Decodes one map row ($1A) into the staging buffer at $0400 ($2D59 with X = $1C, Y = $04)."
  },
  {
   "address": 11609,
   "type": "line",
   "text": "Decodes one row of the level map into four rows of 32 tile codes in a 32-wide buffer, right to left: X (low) and Y (high) give the buffer's address plus $1C, where the last block goes, and each block four columns further left. Each of the row's eight bytes is a block number, whose 16 tile codes (4 x 4) are found through the block address tables at $B300 and $B400 and copied with the offsets at $2D90 (0-3, $20-$23, $40-$43, $60-$63)."
  },
  {
   "address": 11641,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $2D78 (lda $86F0,x), rewritten at run time by $2D67 in decode_row_to ($2D59). The code from here runs on as part of decode_row_to ($2D59)."
  },
  {
   "address": 11642,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $2D78 (lda $86F0,x), rewritten at run time by $2D6D in decode_row_to ($2D59). The code from here runs on as part of decode_row_to ($2D59)."
  },
  {
   "address": 11644,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $2D7B (sta $BFFC,y), rewritten at run time by $2D59, $2D87 in decode_row_to ($2D59). The code from here runs on as part of decode_row_to ($2D59)."
  },
  {
   "address": 11645,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $2D7B (sta $BFFC,y), rewritten at run time by $2D5C in decode_row_to ($2D59). The code from here runs on as part of decode_row_to ($2D59)."
  },
  {
   "address": 11659,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $2D8A (ldy #$00), rewritten at run time by $2D70 in decode_row_to ($2D59). The code from here runs on as part of decode_row_to ($2D59)."
  },
  {
   "address": 11664,
   "type": "line",
   "text": "Where each of a block's 16 tiles goes in a 32-wide buffer: four rows of four."
  },
  {
   "address": 11680,
   "type": "line",
   "text": "Draws a room: decodes six map rows, starting 16 bytes past ($16), onto the hidden screen at $C42C ($2EB3), moves the first tile row off to $BFA0, waits for the frame ($4055), then copies the other 23 tile rows to the visible screen from $C054, setting each cell's colour from the per-tile colour table at $8000. Finally builds the collision map ($2EDC) with ($16) moved on 16 bytes for the call."
  },
  {
   "address": 11860,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $2E53 (lda $C7EC,y), rewritten at run time by $2E32, $2E69 in draw_room ($2DA0). The code from here runs on as part of draw_room ($2DA0)."
  },
  {
   "address": 11861,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $2E53 (lda $C7EC,y), rewritten at run time by $2E3D, $2E71 in draw_room ($2DA0). The code from here runs on as part of draw_room ($2DA0)."
  },
  {
   "address": 11863,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $2E56 (sta $C3EC,y), rewritten at run time by $2E35, $2E7A in draw_room ($2DA0). The code from here runs on as part of draw_room ($2DA0)."
  },
  {
   "address": 11864,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $2E56 (sta $C3EC,y), rewritten at run time by $2E42, $2E82 in draw_room ($2DA0). The code from here runs on as part of draw_room ($2DA0)."
  },
  {
   "address": 11870,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $2E5D (sta $DBEC,y), rewritten at run time by $2E38, $2E8B in draw_room ($2DA0). The code from here runs on as part of draw_room ($2DA0)."
  },
  {
   "address": 11871,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $2E5D (sta $DBEC,y), rewritten at run time by $2E47, $2E93 in draw_room ($2DA0). The code from here runs on as part of draw_room ($2DA0)."
  },
  {
   "address": 11955,
   "type": "line",
   "text": "Decodes one map row ($2D55) and copies its four tile rows from $0400 onto the screen at ($0F), stepping $0F on by four screen lines."
  },
  {
   "address": 11963,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $2EBA (lda $0400,y), rewritten at run time by $2ED5 in draw_map_row ($2EB3). The code from here runs on as part of draw_map_row ($2EB3)."
  },
  {
   "address": 11996,
   "type": "line",
   "text": "Builds the room's tile map at $BA00-$BF7F, 32 tiles to a row, which every collision test reads: the 23 visible rows are copied from the screen ($C054 onwards) to $BB20-$BDFF, with the row above them from $BFA0 at $BB00; the two map rows above the screen are decoded into $BA00-$BAFF and the three below into $BE00-$BF7F ($2D59). Holding SPACE (or fire on joystick port 1) while it runs also copies the rows above the screen ($BA00-$BAFF) onto the bottom eight rows of the play area."
  },
  {
   "address": 11998,
   "type": "line",
   "text": "An address the code names directly: j_2EDE jumps to it at $2F71."
  },
  {
   "address": 12312,
   "type": "line",
   "text": "Rick is near the top of the screen (Y below $60): scrolls the view up by two map rows, 64 pixels, in four steps ($308F) of two one-row shifts each, built off screen and swapped in by the raster interrupt, whose helpers move every sprite down 8 pixels at a time ($3E55). Then moves the bullet down 64 pixels (Y + $40) and the blast box down 64 ($2B79 + $20, halved), or clears the fuse and blast when there is no dynamite; moves the object row $4B back by 8 and every object's zone Y and rest Y ($B666, $3926, both halved) down by $20; rebuilds the collision map ($2EDC) and adds the objects of the band now at the top ($3C49 with A = 0)."
  },
  {
   "address": 12431,
   "type": "line",
   "text": "Four steps of the upward scroll ($3095)."
  },
  {
   "address": 12434,
   "type": "line",
   "text": "Two steps of the upward scroll ($3095)."
  },
  {
   "address": 12437,
   "type": "line",
   "text": "One step: waits for the raster interrupt's signal ($27), shifts the whole play area one row down from the screen being shown onto the hidden one ($3132), waits again and shifts it one more row down back onto the first screen ($3201): 16 pixels a step."
  },
  {
   "address": 12451,
   "type": "line",
   "text": "Rick is near the bottom of the screen (Y at $CC or more): the same as $3018 the other way, the view moving down two map rows (64 pixels) in four steps ($311E), everything else moving up 64 pixels, the new rows at the bottom built from the map, and the objects of the band now at the bottom added ($3C49 with A = $20)."
  },
  {
   "address": 12574,
   "type": "line",
   "text": "Four steps of the downward scroll ($3124)."
  },
  {
   "address": 12577,
   "type": "line",
   "text": "Two steps of the downward scroll ($3124)."
  },
  {
   "address": 12580,
   "type": "line",
   "text": "One step down: the whole play area shifted one row up from the screen being shown onto the hidden one ($3343), then one more row up back onto the first ($3417): 16 pixels a step."
  },
  {
   "address": 12594,
   "type": "line",
   "text": "Shifts the whole play area of the $C000 screen (the one shown at that moment) one row lower onto the $C400 screen, the rows unrolled: the tile row held at $BFA0 goes in at the top ($C454), its colours noted at $BF80 for $32B0, and the next tile row of the decoded map row at $0400 takes its place in $BFA0. When $15 AND 7 is 7 (the first and third of the four steps) it first moves ($16) back one map row and decodes it ($2D55)."
  },
  {
   "address": 12638,
   "type": "line",
   "text": "An address the code names directly: the JMP at $31F8 jumps to it."
  },
  {
   "address": 12784,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $31EF (lda $0400,y), rewritten at run time by $3154, $31FD in shift_down_top ($3132). The code from here runs on as part of j_315E ($315E)."
  },
  {
   "address": 12801,
   "type": "line",
   "text": "The second shift of the step: the whole play area of the $C400 screen (shown at that moment) one row lower back onto the $C000 screen, the row at $BFA0 going in at the top ($C054) and the next tile row from $0400 taking its place."
  },
  {
   "address": 12802,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $3201 (lda #$80), rewritten at run time by $3159, $3206 in shift_down_top ($3132). The code from here runs on as part of shift_down_bottom ($3201)."
  },
  {
   "address": 12818,
   "type": "line",
   "text": "An address the code names directly: the JMP at $32AC jumps to it."
  },
  {
   "address": 12964,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $32A3 (lda $0400,y), rewritten at run time by $3209 in shift_down_bottom ($3201). The code from here runs on as part of j_3212 ($3212)."
  },
  {
   "address": 12976,
   "type": "line",
   "text": "Called from the raster interrupt as the screens swap: copies the colour RAM one row lower to match, the rows unrolled."
  },
  {
   "address": 12978,
   "type": "line",
   "text": "An address the code names directly: j_32B2 jumps to it at $333F."
  },
  {
   "address": 13123,
   "type": "line",
   "text": "Shifts the whole play area of the $C000 screen (the one shown at that moment) one row higher onto the $C400 screen: its top row goes to $BFA0 and the next tile row of the decoded map row at $0400 comes in at the bottom ($C7C4), its colours noted at $BF80 for $34C6. When $15 AND 7 is 7 (the first and third of the four steps) it first moves ($16) on one map row and decodes the row now below the screen ($2D55)."
  },
  {
   "address": 13172,
   "type": "line",
   "text": "An address the code names directly: the JMP at $340E jumps to it."
  },
  {
   "address": 13311,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $33FE (lda $0400,y), rewritten at run time by $336A, $3413 in shift_up_top ($3343). The code from here runs on as part of j_3374 ($3374)."
  },
  {
   "address": 13335,
   "type": "line",
   "text": "The second shift of the upward copy: the whole play area of the $C400 screen (shown at that moment) one row higher back onto the $C000 screen, the next tile row from $0400 coming in at the bottom ($C3C4)."
  },
  {
   "address": 13336,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $3417 (lda #$E0), rewritten at run time by $336F, $341C in shift_up_top ($3343). The code from here runs on as part of shift_up_bottom ($3417)."
  },
  {
   "address": 13352,
   "type": "line",
   "text": "An address the code names directly: the JMP at $34C2 jumps to it."
  },
  {
   "address": 13491,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $34B2 (lda $0400,y), rewritten at run time by $341F in shift_up_bottom ($3417). The code from here runs on as part of j_3428 ($3428)."
  },
  {
   "address": 13510,
   "type": "line",
   "text": "Called from the raster interrupt as the screens swap: copies the colour RAM one row higher."
  },
  {
   "address": 13512,
   "type": "line",
   "text": "An address the code names directly: j_34C8 jumps to it at $3555."
  },
  {
   "address": 13657,
   "type": "line",
   "text": "The sprite multiplexer's set-up for the next frame: sorts the ten objects by their screen Y ($B580) with an insertion sort over the order list $B5CA. Rick takes sprites 0 and 1 (two sprites for one figure); the first six other objects in screen order get sprites 2 to 7 ($3956), and up to four more reuse sprites 2 to 5 further down the screen, the raster list ($3A42 = 2 or 5) given extra splits at lines worked out from the objects' Y ($18, $19, stored in $3BD7). X positions are offset by $38 and their ninth bits collected for $D010."
  },
  {
   "address": 13759,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $35BE (ldy #$02), rewritten at run time by $3594 in sprite_sort ($3559). The code from here runs on as part of sprite_sort ($3559)."
  },
  {
   "address": 13827,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $3602 (ldy #$06), rewritten at run time by $35EB in sprite_sort ($3559). The code from here runs on as part of sprite_sort ($3559)."
  },
  {
   "address": 14010,
   "type": "line",
   "text": "Self-modified code: the operand of the LDX at $36B9 (ldx #$00), rewritten at run time by $35DA in sprite_sort ($3559). The code from here runs on as part of sprite_sort ($3559)."
  },
  {
   "address": 14041,
   "type": "line",
   "text": "Puts the sorted objects into the sprite registers: the ninth X bits ($3978 to $D010), Rick's two sprites (frame from $60, colours from $B5A4 and $B5A5), then the six objects in $3956-$395B on sprites 2 to 7: positions and colours into the registers, frames kept in $39CD-$39D2 while all six pointers are set to the blank frame $AB, until $3A43 or $3AAB puts the frames in at the top of the play area. It also copies the reused sprites' objects, X, Y, colour, frame and shown flag into $3960-$3977 for $3831 and $387D, and the split lines $18 and $19 into $3BD7 and $3BD8. Called from the raster interrupt."
  },
  {
   "address": 14042,
   "type": "line",
   "text": "Self-modified code: the operand of the LDX at $36D9 (ldx #$00), rewritten at run time by $36D5 in sprite_sort ($3559). The code from here runs on as part of sprites_place ($36D9)."
  },
  {
   "address": 14385,
   "type": "line",
   "text": "Raster handler, below the first group: moves sprites 2 and 3 to the seventh and eighth objects, if there are any."
  },
  {
   "address": 14461,
   "type": "line",
   "text": "Raster handler: moves sprites 4 and 5 to the ninth and tenth objects."
  },
  {
   "address": 14547,
   "type": "line",
   "text": "Per object slot: an enemy's way of moving (from $1798, at $121D) or a trap's zone height (the type table $B980's low three bits times four, by $3CCE)."
  },
  {
   "address": 14559,
   "type": "line",
   "text": "Per object slot, the flags from its record in the object list: for a trap, bit 7 Rick sets it off, 6 the stick, 5 a bullet, 4 an explosion, bit 3 deadly while it runs ($1AB2), bit 2 deadly while at rest ($3D1E, $1B5A), bit 0 1000 points and gone when it ends. Bit 1 puts the object in slot 3, the first slot counted from $B5B3 ($3C95)."
  },
  {
   "address": 14570,
   "type": "line",
   "text": "The sprite frame of slot 2, the dynamite, which is drawn in software: the buffer frame $22 or $2A by turns, set by $3A68 from $3AA3. $38EA-$38F3 are the frames of slots 2 to 11 that $3E8A copies into $394A: $38EB-$38F0 from the objects' own frames ($B59B), $38F1-$38F3 the buffers of the enemies in slots 9 to 11, also set by $3A68."
  },
  {
   "address": 14571,
   "type": "line",
   "text": "The sprite frame of each object for this frame, the software-drawn ones taken from the buffer just drawn: entry 1 ($38EA + 1)."
  },
  {
   "address": 14577,
   "type": "line",
   "text": "The sprite frame of each object for this frame, the software-drawn ones taken from the buffer just drawn: entry 7 ($38EA + 7)."
  },
  {
   "address": 14578,
   "type": "line",
   "text": "The sprite frame of each object for this frame, the software-drawn ones taken from the buffer just drawn: entry 8 ($38EA + 8)."
  },
  {
   "address": 14579,
   "type": "line",
   "text": "The sprite frame of each object for this frame, the software-drawn ones taken from the buffer just drawn: entry 9 ($38EA + 9)."
  },
  {
   "address": 14583,
   "type": "line",
   "text": "Per object slot, an enemy's direction: 1 up, 2 down, 4 left, 8 right."
  },
  {
   "address": 14595,
   "type": "line",
   "text": "Per object slot, the steps an enemy stays stunned by the stick."
  },
  {
   "address": 14607,
   "type": "line",
   "text": "Per object slot, non-zero while an enemy climbs."
  },
  {
   "address": 14619,
   "type": "line",
   "text": "Per object slot, a trap's X at rest, put back when its script ends."
  },
  {
   "address": 14630,
   "type": "line",
   "text": "An address the code names directly, in the byte block obj_kind ($38D3-$3981): scroll_view_up reads it at $3077 indexed by X (and 3 more)."
  },
  {
   "address": 14631,
   "type": "line",
   "text": "Per object slot, a trap's Y at rest, halved."
  },
  {
   "address": 14640,
   "type": "line",
   "text": "Per object, its sprite X ($38 added), worked out by $3559."
  },
  {
   "address": 14653,
   "type": "line",
   "text": "The object's sprite X for the multiplexer: entry 13 ($3930 + 13)."
  },
  {
   "address": 14654,
   "type": "line",
   "text": "The objects' screen Y in sorted order, for the multiplexer."
  },
  {
   "address": 14655,
   "type": "line",
   "text": "The multiplexer's sorted screen Y: entry 1 ($393E + 1)."
  },
  {
   "address": 14657,
   "type": "line",
   "text": "The multiplexer's sorted screen Y: entry 3 ($393E + 3)."
  },
  {
   "address": 14664,
   "type": "line",
   "text": "Per object, the sprite frame to show."
  },
  {
   "address": 14666,
   "type": "line",
   "text": "The frame each sprite shows: the dynamite ($3948 + 2)."
  },
  {
   "address": 14676,
   "type": "line",
   "text": "The objects in screen order, as $3559 leaves them, with Rick's two sprites first."
  },
  {
   "address": 14678,
   "type": "line",
   "text": "The objects in screen order: entry 2 ($3954 + 2)."
  },
  {
   "address": 14679,
   "type": "line",
   "text": "The objects in screen order: entry 3 ($3954 + 3)."
  },
  {
   "address": 14680,
   "type": "line",
   "text": "The objects in screen order: entry 4 ($3954 + 4)."
  },
  {
   "address": 14681,
   "type": "line",
   "text": "The objects in screen order: entry 5 ($3954 + 5)."
  },
  {
   "address": 14682,
   "type": "line",
   "text": "The objects in screen order: entry 6 ($3954 + 6)."
  },
  {
   "address": 14683,
   "type": "line",
   "text": "The object shown by sprite 7, the last of the six that $3559 writes to $3956-$395B. The four bytes after it ($395C-$395F) are the objects that take the reused sprites 2 to 5; $36D9 copies them and their X, Y, colour and frame into $3960-$3977, which is what the handlers at $3831 and $387D read."
  },
  {
   "address": 14684,
   "type": "line",
   "text": "The objects in screen order: entry 8 ($3954 + 8)."
  },
  {
   "address": 14685,
   "type": "line",
   "text": "The objects given the reused sprites: entry 2 ($395B + 2)."
  },
  {
   "address": 14686,
   "type": "line",
   "text": "The objects given the reused sprites: entry 3 ($395B + 3)."
  },
  {
   "address": 14687,
   "type": "line",
   "text": "The objects given the reused sprites: entry 4 ($395B + 4)."
  },
  {
   "address": 14691,
   "type": "line",
   "text": "Part of the reused sprites' buffers that $36D9 fills: $3960-$3963 the four objects, then from $3964 their X ($3964-$3967), Y ($3968-$396B), colour ($396C-$396F) and frame ($3970-$3973), four of each, and their shown flags ($3974-$3977). Until the multiplexer first needs a reused sprite, $3961-$3973 hold ASCII left over from the developers' machine: RICK_MASK,Y, a carriage return and line feed, !124, a tab and S, a fragment of the game's own source."
  },
  {
   "address": 14692,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 1 ($3963 + 1)."
  },
  {
   "address": 14693,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 2 ($3963 + 2)."
  },
  {
   "address": 14694,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 3 ($3963 + 3)."
  },
  {
   "address": 14695,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 4 ($3963 + 4)."
  },
  {
   "address": 14696,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 5 ($3963 + 5)."
  },
  {
   "address": 14697,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 6 ($3963 + 6)."
  },
  {
   "address": 14698,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 7 ($3963 + 7)."
  },
  {
   "address": 14699,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 8 ($3963 + 8)."
  },
  {
   "address": 14700,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 9 ($3963 + 9)."
  },
  {
   "address": 14701,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 10 ($3963 + 10)."
  },
  {
   "address": 14702,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 11 ($3963 + 11)."
  },
  {
   "address": 14703,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 12 ($3963 + 12)."
  },
  {
   "address": 14704,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 13 ($3963 + 13)."
  },
  {
   "address": 14705,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 14 ($3963 + 14)."
  },
  {
   "address": 14706,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 15 ($3963 + 15)."
  },
  {
   "address": 14707,
   "type": "line",
   "text": "The reused sprites' X, Y, colour and frame: entry 16 ($3963 + 16)."
  },
  {
   "address": 14708,
   "type": "line",
   "text": "How many objects each reused sprite has to show (0 or 1), four bytes."
  },
  {
   "address": 14709,
   "type": "line",
   "text": "How many objects each reused sprite shows: entry 1 ($3974 + 1)."
  },
  {
   "address": 14710,
   "type": "line",
   "text": "How many objects each reused sprite shows: entry 2 ($3974 + 2)."
  },
  {
   "address": 14711,
   "type": "line",
   "text": "How many objects each reused sprite shows: entry 3 ($3974 + 3)."
  },
  {
   "address": 14712,
   "type": "line",
   "text": "The ninth bits of the sprites' X for $D010, worked out by $3559."
  },
  {
   "address": 14713,
   "type": "line",
   "text": "How many objects get a reused sprite this frame: cleared at $35C7, counted at $361B, $3646, $3676 and $36A1, and written into the LDX at $36D9."
  },
  {
   "address": 14714,
   "type": "line",
   "text": "The ninth bits of the sprites' X after the first raster split."
  },
  {
   "address": 14715,
   "type": "line",
   "text": "The ninth bits for $D010 when two sprites are reused at the first split: $397A with the second reused object's bit in bit 3 (sprite 3), written by $3559; $36D9 copies it to $397F for $3831."
  },
  {
   "address": 14716,
   "type": "line",
   "text": "Never written by any instruction, so it stays zero: $3559 reads it at $36AD to build $3981 and $36D9 copies it into $3980 at $3725."
  },
  {
   "address": 14717,
   "type": "line",
   "text": "Never written by any instruction, so it stays zero: $36D9 copies it into $3981 at $372B."
  },
  {
   "address": 14718,
   "type": "line",
   "text": "The ninth bits $3831 writes to $D010, copied from $397A."
  },
  {
   "address": 14719,
   "type": "line",
   "text": "The ninth bits $3831 writes for its second sprite, copied from $397B."
  },
  {
   "address": 14720,
   "type": "line",
   "text": "The ninth bit that $387D ORs into $D010, after clearing bit 4, for the third reused sprite (sprite 4). $3559 writes it at $368B with that sprite's bit, but $36D9 then overwrites it with $397C, which is always zero, so in play it is zero when $387D reads it."
  },
  {
   "address": 14721,
   "type": "line",
   "text": "The ninth bit that $387D ORs into $D010, after clearing bit 5, for the fourth reused sprite (sprite 5). $3559 writes it at $36B6 and $36D9 then overwrites it with $397D, which is always zero."
  },
  {
   "address": 14725,
   "type": "line",
   "text": "Per object slot, the fraction of a pixel in its Y."
  },
  {
   "address": 14728,
   "type": "line",
   "text": "The fraction of a pixel in the object's Y: item slot 0 ($3985 + 3)."
  },
  {
   "address": 14737,
   "type": "line",
   "text": "The object's Y: Rick ($3991 + 0)."
  },
  {
   "address": 14739,
   "type": "line",
   "text": "The object's Y: the dynamite ($3991 + 2)."
  },
  {
   "address": 14740,
   "type": "line",
   "text": "The object's Y: item slot 0 ($3991 + 3)."
  },
  {
   "address": 14741,
   "type": "line",
   "text": "The object's Y: item slot 1 ($3991 + 4)."
  },
  {
   "address": 14749,
   "type": "line",
   "text": "The high byte of the object's Y: Rick ($399D + 0)."
  },
  {
   "address": 14751,
   "type": "line",
   "text": "The high byte of the object's Y: the dynamite ($399D + 2)."
  },
  {
   "address": 14752,
   "type": "line",
   "text": "The high byte of the object's Y: item slot 0 ($399D + 3)."
  },
  {
   "address": 14753,
   "type": "line",
   "text": "The high byte of the object's Y: item slot 1 ($399D + 4)."
  },
  {
   "address": 14761,
   "type": "line",
   "text": "The fraction of the object's vertical speed: Rick ($39A9 + 0)."
  },
  {
   "address": 14764,
   "type": "line",
   "text": "The fraction of the object's vertical speed: item slot 0 ($39A9 + 3)."
  },
  {
   "address": 14773,
   "type": "line",
   "text": "The object's vertical speed: Rick ($39B5 + 0)."
  },
  {
   "address": 14776,
   "type": "line",
   "text": "The object's vertical speed: item slot 0 ($39B5 + 3)."
  },
  {
   "address": 14785,
   "type": "line",
   "text": "The object's horizontal speed: Rick ($39C1 + 0)."
  },
  {
   "address": 14797,
   "type": "line",
   "text": "The reused sprites' saved frames, put back at the top of the play area: entry 0 ($39CD + 0)."
  },
  {
   "address": 14798,
   "type": "line",
   "text": "The reused sprites' saved frames, put back at the top of the play area: entry 1 ($39CD + 1)."
  },
  {
   "address": 14799,
   "type": "line",
   "text": "The reused sprites' saved frames, put back at the top of the play area: entry 2 ($39CD + 2)."
  },
  {
   "address": 14800,
   "type": "line",
   "text": "The reused sprites' saved frames, put back at the top of the play area: entry 3 ($39CD + 3)."
  },
  {
   "address": 14801,
   "type": "line",
   "text": "The reused sprites' saved frames, put back at the top of the play area: entry 4 ($39CD + 4)."
  },
  {
   "address": 14802,
   "type": "line",
   "text": "The reused sprites' saved frames, put back at the top of the play area: entry 5 ($39CD + 5)."
  },
  {
   "address": 14803,
   "type": "line",
   "text": "Puts in a new raster list (its address in X and Y, kept in $04/$05) with interrupts off, turns off CIA 1's interrupts, and enables the raster interrupt."
  },
  {
   "address": 14804,
   "type": "line",
   "text": "The same, entered where interrupts are already off."
  },
  {
   "address": 14829,
   "type": "line",
   "text": "The RESET vector's target: a loop that flashes the border for ever."
  },
  {
   "address": 14835,
   "type": "line",
   "text": "Puts the raster list pointer back at the list's start and counts the frame in $07; the handler that ends a frame calls it."
  },
  {
   "address": 14852,
   "type": "line",
   "text": "End of the frame's last handler: restarts the list ($39F3) and returns from the interrupt."
  },
  {
   "address": 14855,
   "type": "line",
   "text": "Restores A, X and Y and returns from the interrupt."
  },
  {
   "address": 14860,
   "type": "line",
   "text": "An RTI, so RESTORE does nothing."
  },
  {
   "address": 14861,
   "type": "line",
   "text": "The raster interrupt. It works down a list of raster lines through the pointer at $02: each entry picks a handler (its address from the tables at $3BE8 and $3BF9, written into the JMP at $3A3F) and the line of the next interrupt (from $3BD7)."
  },
  {
   "address": 14872,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $3A17 (ldy #$00), rewritten at run time by $39FE, $3A29 in list_restart ($39F3). The code from here runs on as part of irq ($3A0D)."
  },
  {
   "address": 14912,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the JMP at $3A3F (jmp $3A68), rewritten at run time by $3A1F in irq ($3A0D). The code from here runs on as part of irq ($3A0D)."
  },
  {
   "address": 14913,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the JMP at $3A3F (jmp $3A68), rewritten at run time by $3A25 in irq ($3A0D). The code from here runs on as part of irq ($3A0D)."
  },
  {
   "address": 14914,
   "type": "line",
   "text": "An address the code names directly: j_09A9 writes it at $09D4 (and 6 more)."
  },
  {
   "address": 14915,
   "type": "line",
   "text": "Raster handler at the top of the play area: puts the frames of sprites 2 to 7 ($39CD-$39D2) into the sprite pointers of both screens, waits for line $41, makes the background black and switches $D018 to $04, the play area's tile set at $D000, and plays the music and sounds ($4F86)."
  },
  {
   "address": 14952,
   "type": "line",
   "text": "One of the raster handlers: calls $3559 and $36D9, puts the raster list back to its start and counts the frame in $07 ($39F3), then sets $D018 = $0F."
  },
  {
   "address": 15009,
   "type": "line",
   "text": "The frames of Rick's first sprite on alternate pairs of frames: $20, the image buffer at $C800, and $28, the one at $CA00 (the second sprite takes the next frame). $3A68 picks one by bit 1 of the frame count $07 and puts it in $60, so the sprites show one buffer while the software draws into the other ($0F83)."
  },
  {
   "address": 15011,
   "type": "line",
   "text": "The buffer frames of the other software-drawn sprites for the same two phases, in pairs: $22/$2A for the dynamite ($38EA), and $23/$2B, $24/$2C and $25/$2D for the enemies in slots 9 to 11 ($38F1, $38F2, $38F3), written there by $3A68."
  },
  {
   "address": 15013,
   "type": "line",
   "text": "An address the code names directly, in the byte block rick_frames_a ($3AA1-$3AAA): irq_frame reads it at $3A87 indexed by X."
  },
  {
   "address": 15015,
   "type": "line",
   "text": "An address the code names directly, in the byte block rick_frames_a ($3AA1-$3AAA): irq_frame reads it at $3A8D indexed by X."
  },
  {
   "address": 15017,
   "type": "line",
   "text": "An address the code names directly, in the byte block rick_frames_a ($3AA1-$3AAA): irq_frame reads it at $3A93 indexed by X."
  },
  {
   "address": 15019,
   "type": "line",
   "text": "Raster handler at the top of the play area while the view scrolls: waits for line $41, chooses $D018 from $3AE8 for the step of the scroll ($15), plays the music, and calls the step's helper from $3AE0/$3AE4 through the self-modified JSR at $3ADA."
  },
  {
   "address": 15066,
   "type": "line",
   "text": "JSR to the upward scroll's helper for this step; the operand is written from $3AE0/$3AE4 by the handler above."
  },
  {
   "address": 15067,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the JSR at $3ADA (jsr $3ADA), rewritten at run time by $3ACE in scroll_top_irq ($3AAB). The code from here runs on as part of s_3ADA ($3ADA)."
  },
  {
   "address": 15068,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the JSR at $3ADA (jsr $3ADA), rewritten at run time by $3AD4 in scroll_top_irq ($3AAB). The code from here runs on as part of s_3ADA ($3ADA)."
  },
  {
   "address": 15072,
   "type": "line",
   "text": "Low bytes of the four helpers of the upward scroll's steps."
  },
  {
   "address": 15076,
   "type": "line",
   "text": "High bytes of the same, all $3A."
  },
  {
   "address": 15080,
   "type": "line",
   "text": "The $D018 value for each step of the upward scroll: $14 or $04, which shows one screen or the other."
  },
  {
   "address": 15084,
   "type": "line",
   "text": "Scroll helper: tells the main program a step may be built ($27)."
  },
  {
   "address": 15087,
   "type": "line",
   "text": "Scroll helper: moves every object eight pixels down for this step ($3E55), then sorts the sprites ($3559)."
  },
  {
   "address": 15093,
   "type": "line",
   "text": "Scroll helper: the same signal as $3AEC."
  },
  {
   "address": 15096,
   "type": "line",
   "text": "Scroll helper: the same as $3AEF."
  },
  {
   "address": 15102,
   "type": "line",
   "text": "Raster handler below the play area during the upward scroll: places the sprites, counts the scroll step $15 down (back to the normal raster list at the end), and every other step copies the colour RAM ($32B0)."
  },
  {
   "address": 15136,
   "type": "line",
   "text": "The same as $3AAB for the downward scroll, with the tables at $3B55, $3B59 and $3B5D."
  },
  {
   "address": 15183,
   "type": "line",
   "text": "JSR to the downward scroll's helper for this step, written from $3B55/$3B59."
  },
  {
   "address": 15184,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the JSR at $3B4F (jsr $3B4F), rewritten at run time by $3B43 in scroll_top_irq2 ($3B20). The code from here runs on as part of s_3B4F ($3B4F)."
  },
  {
   "address": 15185,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the JSR at $3B4F (jsr $3B4F), rewritten at run time by $3B49 in scroll_top_irq2 ($3B20). The code from here runs on as part of s_3B4F ($3B4F)."
  },
  {
   "address": 15189,
   "type": "line",
   "text": "Low bytes of the downward scroll's helpers."
  },
  {
   "address": 15193,
   "type": "line",
   "text": "High bytes of the same, all $3B."
  },
  {
   "address": 15197,
   "type": "line",
   "text": "The $D018 value for each step of the downward scroll."
  },
  {
   "address": 15201,
   "type": "line",
   "text": "Scroll helper: the signal ($27) for the downward scroll."
  },
  {
   "address": 15204,
   "type": "line",
   "text": "Scroll helper: moves every object eight pixels up ($3ED3) and sorts the sprites."
  },
  {
   "address": 15210,
   "type": "line",
   "text": "Scroll helper: the same signal as $3B61."
  },
  {
   "address": 15213,
   "type": "line",
   "text": "Scroll helper: the same as $3B64."
  },
  {
   "address": 15219,
   "type": "line",
   "text": "The same as $3AFE for the downward scroll, copying the colour RAM the other way ($34C6)."
  },
  {
   "address": 15253,
   "type": "line",
   "text": "The raster lists: each a run of handler numbers, one for each interrupt of the frame, read through $02 by the interrupt at $3A0D. The game's states point $02 at different starts: $3B9D in play, $3BA7 and $3BB1 while scrolling, $3BBB the story screens, $3BBF the plain screens, $3BC7 the Hall of Fame, $3BC9 the name entry, $3BCB game over, $3BD4 the title."
  },
  {
   "address": 15319,
   "type": "line",
   "text": "The raster line of each handler, by number; the multiplexer rewrites the first two for each frame."
  },
  {
   "address": 15320,
   "type": "line",
   "text": "An address the code names directly, in the byte block raster_lists ($3B95-$3C09): the STY at $382D writes it."
  },
  {
   "address": 15336,
   "type": "line",
   "text": "Low bytes of the seventeen raster handlers, by number."
  },
  {
   "address": 15353,
   "type": "line",
   "text": "High bytes of the seventeen raster handlers' addresses."
  },
  {
   "address": 15370,
   "type": "line",
   "text": "Starts a room's objects: empties the ten slots, then adds every object of the room's list whose row is in one of the five bands from $4B: offsets $08, $10 and $18 ($3C3D), then 0 and $20 ($3C49)."
  },
  {
   "address": 15421,
   "type": "line",
   "text": "Adds the objects of block rows 1 to 3."
  },
  {
   "address": 15433,
   "type": "line",
   "text": "Goes through the room's object list ($3DCF, five bytes a record, $FF at the end) for the records whose row (top five bits of the first byte) is $4B plus A, skipping those already used up (bit 7 of the type) and, for types 4 to 15, those already in slots 6 to 8, and starts each in a free slot ($3CCE). Slots count from $B5B3: an object whose flags have bit 1 set goes in slot 0 only, other types from $10 on in slots 1 to 5, and types below $10 in slots 6 to 8."
  },
  {
   "address": 15450,
   "type": "line",
   "text": "An address the code names directly: the JMP at $3CC4 jumps to it."
  },
  {
   "address": 15532,
   "type": "line",
   "text": "Self-modified code: the operand of the CPX at $3CAB (cpx #$06), rewritten at run time by $3CA8 in j_3C5A ($3C5A). The code from here runs on as part of j_3C5A ($3C5A)."
  },
  {
   "address": 15566,
   "type": "line",
   "text": "Fills slot X from a record of the object list: the type's hit box, frame list, movement script and kind from the tables at $B680 to $B980 (one byte per type in each), the flags from the record's third byte, and its position and trigger zone from the fourth and fifth bytes (X in the top five bits, the row within the block in the low three). An enemy also gets its walking direction and starting stun time."
  },
  {
   "address": 15701,
   "type": "line",
   "text": "Self-modified code: the operand of the ORA at $3D54 (ora #$03), rewritten at run time by $3D27 in object_start ($3CCE). The code from here runs on as part of object_start ($3CCE)."
  },
  {
   "address": 15742,
   "type": "line",
   "text": "Self-modified code: the operand of the ADC at $3D7D (adc #$00), rewritten at run time by $3D74 in object_start ($3CCE). The code from here runs on as part of object_start ($3CCE)."
  },
  {
   "address": 15744,
   "type": "line",
   "text": "Self-modified code: the operand of the ADC at $3D7F (adc #$00), rewritten at run time by $3D79 in object_start ($3CCE). The code from here runs on as part of object_start ($3CCE)."
  },
  {
   "address": 15823,
   "type": "line",
   "text": "The current room's object list, low byte of its address."
  },
  {
   "address": 15824,
   "type": "line",
   "text": "The current room's object list, high byte."
  },
  {
   "address": 15828,
   "type": "line",
   "text": "Per slot, the low byte of the object-list record it was started from, so that it can be marked used up."
  },
  {
   "address": 15834,
   "type": "line",
   "text": "An address the code names directly, in the byte block slot_record_lo ($3DD4-$3DE8): j_3C5A reads it at $3C7D indexed by X."
  },
  {
   "address": 15840,
   "type": "line",
   "text": "Per slot, the high byte of the same."
  },
  {
   "address": 15846,
   "type": "line",
   "text": "An address the code names directly, in the byte block slot_record_lo ($3DD4-$3DE8): j_3C5A reads it at $3C84 indexed by X."
  },
  {
   "address": 15849,
   "type": "line",
   "text": "At the start of a level: clears the used-up bit of 363 records of the object list at $A5C0, all of its 364 five-byte records but the last (the final room's $FF end record), so every object is back."
  },
  {
   "address": 15899,
   "type": "line",
   "text": "After a life is lost: clears the used-up bit of the records of types $10 and $11 only, so the boxes of dynamite and bullets come back while treasures taken and enemies killed stay gone."
  },
  {
   "address": 15957,
   "type": "line",
   "text": "Moves every object eight pixels down for a step of the upward scroll, dropping those that leave the bottom."
  },
  {
   "address": 16010,
   "type": "line",
   "text": "Copies the frames of the score panel's icons and of the objects in slots 0 to 9 that are on screen into the sprite frame list ($394A), with their screen Y ($B582)."
  },
  {
   "address": 16083,
   "type": "line",
   "text": "Moves every object eight pixels up for a step of the downward scroll, dropping those that leave the top, then $3E8A."
  },
  {
   "address": 16132,
   "type": "line",
   "text": "Tests whether Rick may stand at a new place (A = Y, X = X, Y = Y high): notes his centre for the hit tests ($19C4, $19C5), ORs the flags of the tiles under him into $1C ($3F82), and returns carry clear when the place is blocked: a solid tile ($1C bit 6), or, when he is not moving up ($39B5 not negative), a ladder top (bit 7) or a tile with bit 4 under his feet, or, when crouching ($4A), the object in slot 3 ($B5B3) touching him ($1C33). Carry set means he may move there."
  },
  {
   "address": 16204,
   "type": "line",
   "text": "Whether Rick's centre is inside the box of the object in the first slot of the falling-object list ($B5B3): used to stop him standing up under a rock."
  },
  {
   "address": 16223,
   "type": "line",
   "text": "Self-modified code: the operand of the CMP at $3F5E (cmp #$30), rewritten at run time by $3F52 in s_3F4C ($3F4C). The code from here runs on as part of s_3F4C ($3F4C)."
  },
  {
   "address": 16254,
   "type": "line",
   "text": "Self-modified code: the operand of the CMP at $3F7D (cmp #$14), rewritten at run time by $3F68 in s_3F4C ($3F4C). The code from here runs on as part of s_3F4C ($3F4C)."
  },
  {
   "address": 16258,
   "type": "line",
   "text": "The flags of the tiles under Rick: the address in the room map at $BA00 for the given X and Y (32 tiles to a row), then three or four rows (four when bit 2 of Y is set) of three tiles (two when X + 4 is a multiple of 8) ORed into $1C through $3FF9. Bits 4 and 7 count only from the last row; the object in slot 3 over him ($3F4C) counts as solid in the top row; a crouching Rick ($4A) drops the top row's flags, keeping its solid bit in $10."
  },
  {
   "address": 16295,
   "type": "line",
   "text": "Self-modified code: the operand of the LDA at $3FA6 (lda #$8B), rewritten at run time by $3F82 in s_3F82 ($3F82). The code from here runs on as part of s_3F82 ($3F82)."
  },
  {
   "address": 16358,
   "type": "line",
   "text": "Self-modified code: the operand of the BEQ at $3FE5 (beq $3FEA), rewritten at run time by $3FB0 in s_3F82 ($3F82). The code from here runs on as part of s_3F82 ($3F82)."
  },
  {
   "address": 16377,
   "type": "line",
   "text": "ORs the flags ($0600) of three tiles in a row of the room map at ($0A) into $1C, and moves ($0A) down one row."
  },
  {
   "address": 16378,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $3FF9 (ldy #$02), rewritten at run time by $3FBB in s_3F82 ($3F82). The code from here runs on as part of s_3FF9 ($3FF9)."
  },
  {
   "address": 16404,
   "type": "line",
   "text": "Reads joystick port 2 into $40: the five lines turned active-high, bit 0 up, 1 down, 2 left, 3 right, 4 fire."
  },
  {
   "address": 16414,
   "type": "line",
   "text": "Turns the BCD byte in A into its two digit characters, A the tens and Y the units, through $402F."
  },
  {
   "address": 16431,
   "type": "line",
   "text": "The character codes of the digits 0 to 9."
  },
  {
   "address": 16441,
   "type": "line",
   "text": "The letters A to F, the end of a table of hexadecimal digits that starts with $402F's ten digits."
  },
  {
   "address": 16447,
   "type": "line",
   "text": "A random number in $08 and A, mixed from CIA 1's two timers ($DC04-$DC07) and the last number. An enemy uses it to decide when to turn ($1459)."
  },
  {
   "address": 16469,
   "type": "line",
   "text": "Waits until the raster is below line 255 and then back above it: one frame's end."
  },
  {
   "address": 16480,
   "type": "line",
   "text": "Waits four frames: $4063 twice, by the JSR and then by running into it."
  },
  {
   "address": 16483,
   "type": "line",
   "text": "Waits two frames."
  },
  {
   "address": 16486,
   "type": "line",
   "text": "Waits until the raster next reaches line 256, below the visible picture, by the top bit of $D011: first for it to leave lines 256 and over, then for it to come back to them."
  },
  {
   "address": 16497,
   "type": "line",
   "text": "The eight single-bit masks and their eight complements."
  },
  {
   "address": 16501,
   "type": "line",
   "text": "An address the code names directly, in the byte block bit_masks ($4071-$4080): enemy_tiles reads it at $15A7 (and 1 more)."
  },
  {
   "address": 16504,
   "type": "line",
   "text": "An address the code names directly, in the byte block bit_masks ($4071-$4080): enemy_tiles reads it at $15A2 (and 1 more)."
  },
  {
   "address": 16513,
   "type": "line",
   "text": "Builds the tile property table at $0600 for the room's graphics set: the eight tile codes in zero page $38-$3F (from $185B) mark where each range of codes starts, and every code in a range gets that range's flags from $40A2. With set 0: codes 0-$4C background, $4D-$5A ladders, $5B-$5E deadly (bit 2: $0A23, $14FF), $5F-$B5 scenery in front of the sprites, $B6-$BD the same with bit 4 (stood on unless rising, $3F04), $BE-$C0 floors, $C1-$FB solid and in front, $FC-$FD ladder tops ($82: the ladder bit and bit 7, also stood on unless rising); $FE and $FF none."
  },
  {
   "address": 16546,
   "type": "line",
   "text": "The flags of the eight tile ranges, in order from the first range ($38) to the last ($3F): 1 background, 2 ladder, 4 deadly, 8 in front of the sprites, $18 in front and stood on, $60 solid floor, $48 solid and in front, $82 ladder top."
  },
  {
   "address": 16554,
   "type": "line",
   "text": "Remembers where Rick entered the room, with the map position, his facing and his state, in $11A0-$11AA: after a death he starts again there."
  },
  {
   "address": 16608,
   "type": "line",
   "text": "Run/Stop pauses: when bit 7 of $DC01 is low (Run/Stop on the keyboard row the game leaves selected), sets $4106 and waits for the key to be let go, pressed again and let go."
  },
  {
   "address": 16646,
   "type": "line",
   "text": "Non-zero while the game is paused; the raster handler at $3A68 then leaves the software sprites' buffer frames alone ($60, $38EA, $38F1-$38F3)."
  },
  {
   "address": 16648,
   "type": "line",
   "text": "Run once from $0864 at start-up: copies 128 records of seven bytes, from $C379 downwards to $C000, into the object-type tables at $B680, $B700, $B780, $B800, $B880, $B900 and $B980 (hit box width and height, frame list, movement script, kind). In this tape's image the tables already hold the same 896 bytes before it runs."
  },
  {
   "address": 16718,
   "type": "line",
   "text": "22 bytes of code nothing calls: writes A as eight ASCII digits 0 and 1 at the address in X and Y, through its own STA ($415C, whose operand the first two instructions set). A debugging aid left in."
  },
  {
   "address": 16732,
   "type": "line",
   "text": "The STA that writes each binary digit; its operand is the address print_binary was given."
  },
  {
   "address": 16733,
   "type": "line",
   "text": "Low byte of print_binary's destination, written from X."
  },
  {
   "address": 16734,
   "type": "line",
   "text": "High byte of print_binary's destination, written from Y."
  },
  {
   "address": 16740,
   "type": "line",
   "text": "Writes one of three 96-character texts (X picks, through $41A7/$41AA) as three lines of 32 characters at $C004, $C02C and $C054, as characters with bit 7 set (the large letters of the set), in colour 8. The STAs' operands are put back to $C004 and $D804 at each call; the $C07C in the listing is where the last call left them. Text 0 is the title (from $2794), 1 CONGRATULATIONS (the name entry, $1F99) and 2 HALL OF FAME ($1ED3)."
  },
  {
   "address": 16777,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $4188 (sta $C07C,x), rewritten at run time by $4170, $419C in print_titles ($4164). The code from here runs on as part of print_titles ($4164)."
  },
  {
   "address": 16778,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $4188 (sta $C07C,x), rewritten at run time by $4178 in print_titles ($4164). The code from here runs on as part of print_titles ($4164)."
  },
  {
   "address": 16782,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the STA at $418D (sta $D87C,x), rewritten at run time by $4173, $419F in print_titles ($4164). The code from here runs on as part of print_titles ($4164)."
  },
  {
   "address": 16783,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the STA at $418D (sta $D87C,x), rewritten at run time by $417D in print_titles ($4164). The code from here runs on as part of print_titles ($4164)."
  },
  {
   "address": 16807,
   "type": "line",
   "text": "Low bytes of the three texts for $4164."
  },
  {
   "address": 16810,
   "type": "line",
   "text": "High bytes of the three big-lettering texts' addresses."
  },
  {
   "address": 16813,
   "type": "line",
   "text": "The title's big lettering for $4164: three rows of 32 character codes (with bit 7 added when drawn), RICK DANGEROUS."
  },
  {
   "address": 16909,
   "type": "line",
   "text": "The big lettering CONGRATULATIONS ! for the name entry, three rows of 32 character codes."
  },
  {
   "address": 17005,
   "type": "line",
   "text": "The big lettering HALL OF FAME, three rows of 32 character codes."
  },
  {
   "address": 17101,
   "type": "line",
   "text": "The Firebird logo on the title screen: 15 character codes, three rows of five, written at $C34F + the offsets in $42EB."
  },
  {
   "address": 17116,
   "type": "line",
   "text": "The Core Design logo: 15 character codes written at $C364 + the same offsets."
  },
  {
   "address": 17131,
   "type": "line",
   "text": "Screen offsets of the logos' characters: three rows of five (0-4, $28-$2C, $50-$54)."
  },
  {
   "address": 17146,
   "type": "line",
   "text": "Frames $30-$35 and two blanks ($AB): several object types' frame lists (from $B780) start inside this run, each showing the frame its entry points at."
  },
  {
   "address": 17154,
   "type": "line",
   "text": "The lit stick of dynamite's two frames, $A4 and $A5, which $2BF8 alternates, then $FF and a blank."
  },
  {
   "address": 17158,
   "type": "line",
   "text": "The explosion's frames $AA, $A9, $A8, $A7 and $A6, then $FF. $2BF8 picks one by $2B77 / 2, so the blast shows $A6, $A7, $A8 and $A9 in turn ($AA is not reached there); $2C55 gives a box it sets off $A6 ($430A), and $1A55 reads the list for a box going off."
  },
  {
   "address": 17162,
   "type": "line",
   "text": "An address the code names directly, in the byte block titles_lo ($41A7-$4986): blast_hits reads it at $2C7E."
  },
  {
   "address": 17164,
   "type": "line",
   "text": "The enemies' frame lists, four frames each and $FF, picked by direction through $178A/$1793: right ($430C: $90 $92 $90 $94), left ($4311: $91 $93 $91 $95), climbing up or down ($4316: $96 $97 $96 $97); then the dying frames ($431B: $98 $99 $98 $99). The type's offset ($B673) is added to the frame."
  },
  {
   "address": 17184,
   "type": "line",
   "text": "A frame list of five walking frames, $AE $B0 $B2 $B4 $B6, ended by 0. In play Rick walks with the first two only ($0D65, index $49 of 0 or 1), the facing $41 added; the story paths' walking figure ($4350) steps through all five."
  },
  {
   "address": 17190,
   "type": "line",
   "text": "Frame lists each ended by 0: $B8 $BA, Rick's crawl in play ($0D83, the facing $41 added); $AC, standing ($4329); $D0 $D2 and $C4, the same crawl and standing pose plus the left facing $18, used by the story paths ($432B, $432E)."
  },
  {
   "address": 17200,
   "type": "line",
   "text": "Rick's climbing frames $C2 $DA, then the story figures' frame lists ($36, $3A $3C, $38, $3E), each ended by 0."
  },
  {
   "address": 17212,
   "type": "line",
   "text": "The five sprite paths of the story screens' moving figures, one per level and one for the ending, read by $1DCA: a start X and Y, then segments of five bytes (a count, an X step, a Y step and a frame list's address), a count of 0 ending the path."
  },
  {
   "address": 17322,
   "type": "line",
   "text": "The frame lists of the treasures, boxes and traps, named by the type table at $B780. Each list is its frame at rest, then the frames it animates through, ended by $FF; an animated list goes back to its second entry ($1AF6). The frames are mostly $60 to $8F, with blanks ($AB) and a few others ($32, $34, $98, $99)."
  },
  {
   "address": 17433,
   "type": "line",
   "text": "The traps' movement scripts, named by the type table at $B880: records of three bytes (a count, an X step and a Y step, signed), $FF ending a script."
  },
  {
   "address": 17689,
   "type": "line",
   "text": "The traps' movement scripts, continued ($4519-$4618)."
  },
  {
   "address": 17945,
   "type": "line",
   "text": "The traps' movement scripts, continued ($4619-$46AC)."
  },
  {
   "address": 18093,
   "type": "line",
   "text": "The 34 room records, seven bytes each: the graphics set (0 for the first 13, 1 after), the room's map address ($9200-$A540), its exit list ($479B onwards) and its object list ($A5C0 onwards). Each level starts at the record in $1980/$1984."
  },
  {
   "address": 18331,
   "type": "line",
   "text": "The rooms' exit lists, five bytes an exit: the side (0 left, 1 right, bit 7 the list's end), the map row it is found at, the next room's record (zero: the end of the level), and how far the map moves."
  },
  {
   "address": 18587,
   "type": "line",
   "text": "Exit lists, continued ($489B-$494C)."
  },
  {
   "address": 18765,
   "type": "line",
   "text": "24 bytes copied to $F820 at the title and the story screens: three characters of the shimmering logos, whose bytes $266D swaps."
  },
  {
   "address": 18789,
   "type": "line",
   "text": "The addresses of the sound effects' 64-byte definitions, $61C0 onwards, two bytes each."
  },
  {
   "address": 18790,
   "type": "line",
   "text": "An address the code names directly, in the byte block titles_lo ($41A7-$4986): the LDA at $49C0 reads it indexed by X."
  },
  {
   "address": 18823,
   "type": "line",
   "text": "Checked by $499C, which starts no effect while it is non-zero. Its only write ($4F98) stores zero, so it never blocks."
  },
  {
   "address": 18824,
   "type": "line",
   "text": "The number of the effect playing."
  },
  {
   "address": 18826,
   "type": "line",
   "text": "Set by play_sfx ($4FBB) when an effect is asked for, and cleared at once by sfx_start ($499E), and when a tune ends ($4F9E)."
  },
  {
   "address": 18827,
   "type": "line",
   "text": "The effect asked for."
  },
  {
   "address": 18828,
   "type": "line",
   "text": "Silences the SID: zero into all 22 registers $D400-$D415, then the volume to 15."
  },
  {
   "address": 18844,
   "type": "line",
   "text": "Starts sound effect $498B (clearing $498A first), unless $4987 is set or an effect is already playing ($4E03), in which case the request is dropped: copies the first 26 bytes of the effect's 64-byte definition (its address from $4965) into the voice 1 settings at $4E1A and sets $4E70, so that the next call ($49DC) finishes the set-up."
  },
  {
   "address": 18892,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $49CB (lda $6480,y), rewritten at run time by $49BA."
  },
  {
   "address": 18893,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $49CB (lda $6480,y), rewritten at run time by $49C3."
  },
  {
   "address": 18908,
   "type": "line",
   "text": "The second half of starting an effect: copies the rest of the definition (38 bytes, voice 2) into $4E4A-$4E6F (STA $4E30,Y with Y from $1A), clears the SID ($498C), sets both voices' envelopes, the filter if the effect uses one ($4E6B), and resets the two voices' sweep counters, then marks the effect playing ($4E03)."
  },
  {
   "address": 18916,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $49E3 (lda $6480,y), rewritten at run time by $49BD. The code from here runs on as part of sfx_setup ($49DC)."
  },
  {
   "address": 18917,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $49E3 (lda $6480,y), rewritten at run time by $49C6. The code from here runs on as part of sfx_setup ($49DC)."
  },
  {
   "address": 19193,
   "type": "line",
   "text": "The sound effects' step each frame (from $4F86, when no tune plays): finishes a start in two halves ($49DC, $499C), then while an effect plays ($4E03) counts down its two voices' lengths ($4E1B, $4E4B), sweeps the filter cutoff up or down ($4E05/$4E06 by $4E68/$4E69, turning at $4E6A), steps each voice ($4C41) and writes both voices' frequency, pulse width and control registers. When both lengths run out the effect ends."
  },
  {
   "address": 19209,
   "type": "line",
   "text": "An address the code names directly: the JMP at $49AC jumps to it."
  },
  {
   "address": 19340,
   "type": "line",
   "text": "An address the code names directly: the JMP at $4B2D jumps to it (and 2 more)."
  },
  {
   "address": 19521,
   "type": "line",
   "text": "One step of one effect voice (X = 0 for voice 1, $30 for voice 2): steps its arpeggio list ($4E2D, when bit 5 of its flags is set, looping when bit 4 is), its frequency slide or wobble ($4E17 by $4E20, reversing every $4E22 steps), its pulse-width table ($4E27/$4E28, nibbles of width and duration) and its waveform table ($4E23/$4E24), each a short list in the definition."
  },
  {
   "address": 19554,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4C61 (lda $4E2E,y), rewritten at run time by $4C57 in sfx_voice ($4C41). The code from here runs on as part of sfx_voice ($4C41)."
  },
  {
   "address": 19555,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4C61 (lda $4E2E,y), rewritten at run time by $4C5E in sfx_voice ($4C41). The code from here runs on as part of sfx_voice ($4C41)."
  },
  {
   "address": 19606,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4C95 (lda $4E2D,y), rewritten at run time by $4C8B in sfx_voice ($4C41). The code from here runs on as part of sfx_voice ($4C41)."
  },
  {
   "address": 19607,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4C95 (lda $4E2D,y), rewritten at run time by $4C92 in sfx_voice ($4C41). The code from here runs on as part of sfx_voice ($4C41)."
  },
  {
   "address": 19714,
   "type": "line",
   "text": "An address the code names directly: the JMP at $4CA3 jumps to it (and 2 more)."
  },
  {
   "address": 19744,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4D1F (lda $4E28,y), rewritten at run time by $4D15 in j_4D02 ($4D02). The code from here runs on as part of j_4D02 ($4D02)."
  },
  {
   "address": 19745,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4D1F (lda $4E28,y), rewritten at run time by $4D1C in j_4D02 ($4D02). The code from here runs on as part of j_4D02 ($4D02)."
  },
  {
   "address": 19807,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4D5E (lda $4E27,y), rewritten at run time by $4D54."
  },
  {
   "address": 19808,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4D5E (lda $4E27,y), rewritten at run time by $4D5B."
  },
  {
   "address": 19835,
   "type": "line",
   "text": "An address the code names directly: the JMP at $4D47 jumps to it (and 1 more)."
  },
  {
   "address": 19880,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4DA7 (lda $4E24,y), rewritten at run time by $4D9D."
  },
  {
   "address": 19881,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4DA7 (lda $4E24,y), rewritten at run time by $4DA4."
  },
  {
   "address": 19930,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4DD9 (lda $4E23,y), rewritten at run time by $4DCF."
  },
  {
   "address": 19931,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4DD9 (lda $4E23,y), rewritten at run time by $4DD6."
  },
  {
   "address": 19945,
   "type": "line",
   "text": "An address the code names directly: the JMP at $4DC2 jumps to it (and 1 more)."
  },
  {
   "address": 19963,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $4DFA (lda $4E23,y), rewritten at run time by $4DF0."
  },
  {
   "address": 19964,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $4DFA (lda $4E23,y), rewritten at run time by $4DF7."
  },
  {
   "address": 19971,
   "type": "line",
   "text": "Non-zero while a sound effect plays."
  },
  {
   "address": 19972,
   "type": "line",
   "text": "The state of voice 1 of the playing effect, 22 bytes: flags, filter sweep position, counters and the current frequency offset, pulse width and waveform."
  },
  {
   "address": 19973,
   "type": "line",
   "text": "Byte 1 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19974,
   "type": "line",
   "text": "Byte 2 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19975,
   "type": "line",
   "text": "Byte 3 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19976,
   "type": "line",
   "text": "Byte 4 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19977,
   "type": "line",
   "text": "Byte 5 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19978,
   "type": "line",
   "text": "Byte 6 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19979,
   "type": "line",
   "text": "Byte 7 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19980,
   "type": "line",
   "text": "Byte 8 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19981,
   "type": "line",
   "text": "Byte 9 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19982,
   "type": "line",
   "text": "Byte 10 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19983,
   "type": "line",
   "text": "Byte 11 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19984,
   "type": "line",
   "text": "Byte 12 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19985,
   "type": "line",
   "text": "Byte 13 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19986,
   "type": "line",
   "text": "Byte 14 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19987,
   "type": "line",
   "text": "Byte 15 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19988,
   "type": "line",
   "text": "Byte 16 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19989,
   "type": "line",
   "text": "Byte 17 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19990,
   "type": "line",
   "text": "Byte 18 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19991,
   "type": "line",
   "text": "Byte 19 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19992,
   "type": "line",
   "text": "Byte 20 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19993,
   "type": "line",
   "text": "Byte 21 of the playing effect's voice 1 state ($4E04-$4E19), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 19994,
   "type": "line",
   "text": "Voice 1's 26 bytes of the playing effect's definition ($4E1A-$4E33), copied by $499C: base note, length, envelope, slide, arpeggio, pulse and waveform lists."
  },
  {
   "address": 19995,
   "type": "line",
   "text": "Byte 1 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 19996,
   "type": "line",
   "text": "Byte 2 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 19997,
   "type": "line",
   "text": "Byte 3 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 19998,
   "type": "line",
   "text": "Byte 4 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 19999,
   "type": "line",
   "text": "Byte 5 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20000,
   "type": "line",
   "text": "Byte 6 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20001,
   "type": "line",
   "text": "Byte 7 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20002,
   "type": "line",
   "text": "Byte 8 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20003,
   "type": "line",
   "text": "Byte 9 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20004,
   "type": "line",
   "text": "Byte 10 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20007,
   "type": "line",
   "text": "Byte 13 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20008,
   "type": "line",
   "text": "Byte 14 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20013,
   "type": "line",
   "text": "Byte 19 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20014,
   "type": "line",
   "text": "Byte 20 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20016,
   "type": "line",
   "text": "Part of voice 1's definition copy ($4E1A-$4E33): the label is where $49DC's copy is based, STA $4E30,Y with Y from $1A, which writes $4E4A-$4E6F."
  },
  {
   "address": 20019,
   "type": "line",
   "text": "Byte 25 of voice 1's 26 bytes of the playing effect's definition, copied by $499C ($4E1A-$4E33)."
  },
  {
   "address": 20020,
   "type": "line",
   "text": "Voice 2's working state while an effect plays, the counterpart of voice 1's $4E04-$4E19."
  },
  {
   "address": 20027,
   "type": "line",
   "text": "Byte 7 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20028,
   "type": "line",
   "text": "Byte 8 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20029,
   "type": "line",
   "text": "Byte 9 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20030,
   "type": "line",
   "text": "Byte 10 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20031,
   "type": "line",
   "text": "Byte 11 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20032,
   "type": "line",
   "text": "Byte 12 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20033,
   "type": "line",
   "text": "Byte 13 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20034,
   "type": "line",
   "text": "Byte 14 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20035,
   "type": "line",
   "text": "Byte 15 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20036,
   "type": "line",
   "text": "Byte 16 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20037,
   "type": "line",
   "text": "Byte 17 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20038,
   "type": "line",
   "text": "Byte 18 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20039,
   "type": "line",
   "text": "Byte 19 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20040,
   "type": "line",
   "text": "Byte 20 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20041,
   "type": "line",
   "text": "Byte 21 of voice 2's working state, the counterpart of $4E04-$4E19 ($4E34-$4E49)."
  },
  {
   "address": 20042,
   "type": "line",
   "text": "Voice 2's 38 bytes of the definition ($4E4A-$4E6F), copied by $49DC, ending with the filter settings ($4E64-$4E6B) and two values ($4E6C, $4E6D) copied into each voice's state."
  },
  {
   "address": 20043,
   "type": "line",
   "text": "Byte 1 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20044,
   "type": "line",
   "text": "Byte 2 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20045,
   "type": "line",
   "text": "Byte 3 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20046,
   "type": "line",
   "text": "Byte 4 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20050,
   "type": "line",
   "text": "Byte 8 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20051,
   "type": "line",
   "text": "Byte 9 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20055,
   "type": "line",
   "text": "Byte 13 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20068,
   "type": "line",
   "text": "Byte 26 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20069,
   "type": "line",
   "text": "Byte 27 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20070,
   "type": "line",
   "text": "Byte 28 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20071,
   "type": "line",
   "text": "Byte 29 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20072,
   "type": "line",
   "text": "Byte 30 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20073,
   "type": "line",
   "text": "Byte 31 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20074,
   "type": "line",
   "text": "Byte 32 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20075,
   "type": "line",
   "text": "Byte 33 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20076,
   "type": "line",
   "text": "Byte 34 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20077,
   "type": "line",
   "text": "Byte 35 of voice 2's 38 bytes of the definition, copied by $49DC, the last of them the filter settings and the values $4E6C/$4E6D copied to $4E04 and $4E34 ($4E4A-$4E6F)."
  },
  {
   "address": 20080,
   "type": "line",
   "text": "Set by $499C when an effect's first half has been copied; the next call finishes the start ($49DC) and clears it."
  },
  {
   "address": 20081,
   "type": "line",
   "text": "The control register bits for the effects' waveform numbers 0 to 8: $10 triangle, $20 sawtooth, $40 pulse, $80 noise, $12 triangle with sync, $14 triangle with ring modulation, $50 triangle and pulse together, $16 ring and sync, and 0."
  },
  {
   "address": 20090,
   "type": "line",
   "text": "High bytes of the effects' frequency table, 96 notes."
  },
  {
   "address": 20186,
   "type": "line",
   "text": "Low bytes of the same."
  },
  {
   "address": 20282,
   "type": "line",
   "text": "Counts down the footstep sound ($4F77) and silences voice 3 when it ends."
  },
  {
   "address": 20304,
   "type": "line",
   "text": "Rick's footstep: when no footstep or tune is sounding, a short noise on voice 3 (frequency $1388, control $81), $4F77 set to 4 so that $4F3A silences it five frames later. Called while he walks or climbs, on the main steps when bit 2 of the frame count $07 is clear (two steps in every four); the second call of each pair finds it still sounding, so a footstep starts every eight frames."
  },
  {
   "address": 20343,
   "type": "line",
   "text": "Frames left of the footstep; $FF when silent."
  },
  {
   "address": 20344,
   "type": "line",
   "text": "Plays the tune, and starts tune 5 again when it has ended: the title and Hall of Fame music loops."
  },
  {
   "address": 20358,
   "type": "line",
   "text": "Called from the raster interrupt each frame: the tune if one plays ($4FC9), and when the tune has just ended it clears the effect state ($4E03, $4987, $4988, $498A, $498B) itself; otherwise the sound effects ($4AF9) and the footstep ($4F3A)."
  },
  {
   "address": 20395,
   "type": "line",
   "text": "Starts sound effect A when no tune is playing ($4FCC); keeps X and Y."
  },
  {
   "address": 20418,
   "type": "line",
   "text": "Self-modified code: the operand of the LDX at $4FC1 (ldx #$01), rewritten at run time by $4FAB in play_sfx ($4FAB). The code from here runs on as part of play_sfx ($4FAB)."
  },
  {
   "address": 20420,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $4FC3 (ldy #$00), rewritten at run time by $4FAE in play_sfx ($4FAB). The code from here runs on as part of play_sfx ($4FAB)."
  },
  {
   "address": 20422,
   "type": "line",
   "text": "Starts tune A ($567D)."
  },
  {
   "address": 20425,
   "type": "line",
   "text": "One frame of the tune ($5042)."
  },
  {
   "address": 20428,
   "type": "line",
   "text": "Non-zero while a tune plays; the effects and footsteps are silent then."
  },
  {
   "address": 20429,
   "type": "line",
   "text": "The music player's scratch byte."
  },
  {
   "address": 20430,
   "type": "line",
   "text": "The SID register offset of the voice being worked on: 0, 7 or 14."
  },
  {
   "address": 20431,
   "type": "line",
   "text": "The voice being worked on: 0, 1 or 2."
  },
  {
   "address": 20432,
   "type": "line",
   "text": "Per voice, the position in its track list."
  },
  {
   "address": 20435,
   "type": "line",
   "text": "Per voice, the transposition of its notes, set by a track-list command."
  },
  {
   "address": 20438,
   "type": "line",
   "text": "Per voice, the position in its current pattern."
  },
  {
   "address": 20441,
   "type": "line",
   "text": "Six times the tune number: the offset of its header at $5732."
  },
  {
   "address": 20442,
   "type": "line",
   "text": "The SID registers of the three voices as the player builds them each frame, seven bytes a voice (frequency, pulse width, control, envelope), written to the chip at the end of the frame ($5115)."
  },
  {
   "address": 20443,
   "type": "line",
   "text": "The music player's copy of voice 1's frequency high register, written to the SID at the end of each frame."
  },
  {
   "address": 20444,
   "type": "line",
   "text": "The music player's copy of voice 1's pulse width low register, written to the SID at the end of each frame."
  },
  {
   "address": 20445,
   "type": "line",
   "text": "The music player's copy of voice 1's pulse width high register, written to the SID at the end of each frame."
  },
  {
   "address": 20446,
   "type": "line",
   "text": "The music player's copy of voice 1's control register, written to the SID at the end of each frame."
  },
  {
   "address": 20447,
   "type": "line",
   "text": "The music player's copy of voice 1's attack and decay register, written to the SID at the end of each frame."
  },
  {
   "address": 20448,
   "type": "line",
   "text": "The music player's copy of voice 1's sustain and release register, written to the SID at the end of each frame."
  },
  {
   "address": 20449,
   "type": "line",
   "text": "The music player's copy of voice 2's frequency low register, written to the SID at the end of each frame."
  },
  {
   "address": 20450,
   "type": "line",
   "text": "The music player's copy of voice 2's frequency high register, written to the SID at the end of each frame."
  },
  {
   "address": 20451,
   "type": "line",
   "text": "The music player's copy of voice 2's pulse width low register, written to the SID at the end of each frame."
  },
  {
   "address": 20452,
   "type": "line",
   "text": "The music player's copy of voice 2's pulse width high register, written to the SID at the end of each frame."
  },
  {
   "address": 20453,
   "type": "line",
   "text": "The music player's copy of voice 2's control register, written to the SID at the end of each frame."
  },
  {
   "address": 20454,
   "type": "line",
   "text": "The music player's copy of voice 2's attack and decay register, written to the SID at the end of each frame."
  },
  {
   "address": 20455,
   "type": "line",
   "text": "The music player's copy of voice 2's sustain and release register, written to the SID at the end of each frame."
  },
  {
   "address": 20456,
   "type": "line",
   "text": "The music player's copy of voice 3's frequency low register, written to the SID at the end of each frame."
  },
  {
   "address": 20457,
   "type": "line",
   "text": "The music player's copy of voice 3's frequency high register, written to the SID at the end of each frame."
  },
  {
   "address": 20458,
   "type": "line",
   "text": "The music player's copy of voice 3's pulse width low register, written to the SID at the end of each frame."
  },
  {
   "address": 20459,
   "type": "line",
   "text": "The music player's copy of voice 3's pulse width high register, written to the SID at the end of each frame."
  },
  {
   "address": 20460,
   "type": "line",
   "text": "The music player's copy of voice 3's control register, written to the SID at the end of each frame."
  },
  {
   "address": 20461,
   "type": "line",
   "text": "The music player's copy of voice 3's attack and decay register, written to the SID at the end of each frame."
  },
  {
   "address": 20462,
   "type": "line",
   "text": "The music player's copy of voice 3's sustain and release register, written to the SID at the end of each frame."
  },
  {
   "address": 20466,
   "type": "line",
   "text": "The volume and filter mode written to $D418."
  },
  {
   "address": 20467,
   "type": "line",
   "text": "Per voice, how many times the track list still repeats a pattern."
  },
  {
   "address": 20470,
   "type": "line",
   "text": "Per voice, frames left of the note."
  },
  {
   "address": 20471,
   "type": "line",
   "text": "Byte $04 of the music player's per-voice state (three bytes a field, voice 2): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20472,
   "type": "line",
   "text": "Byte $05 of the music player's per-voice state (three bytes a field, voice 3): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20476,
   "type": "line",
   "text": "Per voice, the frame of the note at which the gate is released."
  },
  {
   "address": 20479,
   "type": "line",
   "text": "Per voice, the pulse sweep's speed (the instrument's first byte, low four bits). Then, three bytes each to $503D: the pulse table's start ($5002), a frequency offset set by a track command ($5005), the vibrato's delay, list and position ($5008-$5010), the waveform list, position and counter ($5011-$5019), the arpeggio list ($501A), the slide's length, step and delay and its command byte ($501D-$502B), a rest's count ($502C), the arpeggio's position and counter ($502F-$5034), and the pulse sweep's counter, step and position ($5035-$503D)."
  },
  {
   "address": 20482,
   "type": "line",
   "text": "Byte $0F of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20485,
   "type": "line",
   "text": "Byte $12 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20488,
   "type": "line",
   "text": "Byte $15 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20491,
   "type": "line",
   "text": "Byte $18 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20494,
   "type": "line",
   "text": "Byte $1B of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20497,
   "type": "line",
   "text": "Byte $1E of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20500,
   "type": "line",
   "text": "Byte $21 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20503,
   "type": "line",
   "text": "Byte $24 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20506,
   "type": "line",
   "text": "Byte $27 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20509,
   "type": "line",
   "text": "Byte $2A of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20512,
   "type": "line",
   "text": "Byte $2D of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20515,
   "type": "line",
   "text": "Byte $30 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20518,
   "type": "line",
   "text": "Byte $33 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20521,
   "type": "line",
   "text": "Byte $36 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20524,
   "type": "line",
   "text": "Byte $39 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20525,
   "type": "line",
   "text": "Byte $3A of the music player's per-voice state (three bytes a field, voice 2): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20526,
   "type": "line",
   "text": "Byte $3B of the music player's per-voice state (three bytes a field, voice 3): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20527,
   "type": "line",
   "text": "Byte $3C of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20530,
   "type": "line",
   "text": "Byte $3F of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20533,
   "type": "line",
   "text": "Byte $42 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20536,
   "type": "line",
   "text": "Byte $45 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20539,
   "type": "line",
   "text": "Byte $48 of the music player's per-voice state (three bytes a field, voice 1): counters and positions of the voice's note, slide, pulse, vibrato and arpeggio."
  },
  {
   "address": 20542,
   "type": "line",
   "text": "Per voice, the note number being played."
  },
  {
   "address": 20545,
   "type": "line",
   "text": "Counts the voices whose note ran out at the start of this frame ($504E, $505D, $506C); while it is non-zero the voices' effects are skipped ($5404), and $5042 writes no registers this frame and clears it."
  },
  {
   "address": 20546,
   "type": "line",
   "text": "One frame of the tune: counts each voice's note down, then for voices 1, 2 and (for tunes below 5) 3 either applies its effects ($53DB onwards: gate release, slide, pulse sweep, vibrato, waveform list, arpeggio) or, when its note has ended, reads its next pattern bytes ($51B0). Then writes the voices' registers and the volume, except on a frame when a note ran out ($5041); a resting voice's registers are left alone ($502C)."
  },
  {
   "address": 20912,
   "type": "line",
   "text": "One voice's step: while the note lasts, its effects ($53DB); at its end the next byte of its pattern. $FF ends a pattern, which plays again while $4FF3 counts, else takes the next byte of the track list ($5B08 onwards): $FF ends the tune, a byte with bit 7 is a command (bits 5 and 6 pick transpose, repeat, a frequency offset or an instrument mapping) and any other a pattern number (its address from $5CA2/$5CD9). In a pattern: a byte below $80 is a note with its length after it; $80-$8F picks an instrument; $A0 is a rest with its length after it; $BF stops a slide; $C0 and above starts a slide with three more bytes; any other byte from $90 to $BE picks an arpeggio list ($501A, the low four bits times 8)."
  },
  {
   "address": 20935,
   "type": "line",
   "text": "An address the code names directly: the JMP at $524B jumps to it (and 3 more)."
  },
  {
   "address": 20958,
   "type": "line",
   "text": "An address the code names directly: b_51C7 jumps to it at $51D0 (and 1 more)."
  },
  {
   "address": 20977,
   "type": "line",
   "text": "An address the code names directly: the JMP at $56E4 jumps to it (and 3 more)."
  },
  {
   "address": 20981,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $51F4 (lda $5B08,y), rewritten at run time by $5086, $50AD, $50E2. The code from here runs on as part of j_51DE ($51DE)."
  },
  {
   "address": 20982,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $51F4 (lda $5B08,y), rewritten at run time by $5095, $50BC, $50F1. The code from here runs on as part of j_51DE ($51DE)."
  },
  {
   "address": 21029,
   "type": "line",
   "text": "Self-modified code: the operand of the BEQ at $5224 (beq $5226), rewritten at run time by $521F."
  },
  {
   "address": 21030,
   "type": "line",
   "text": "The four track-list commands, picked by bits 5 and 6 of the command byte through the self-modified branch at $5224: $56E7 transpose, $5711 repeat, $56D8 a frequency offset ($5005) and $56F6 an instrument mapping."
  },
  {
   "address": 21033,
   "type": "line",
   "text": "The NOP after entry 0's JMP ($5226) that pads it to four bytes."
  },
  {
   "address": 21034,
   "type": "line",
   "text": "Track command entry 1: JMP $5711, repeat."
  },
  {
   "address": 21037,
   "type": "line",
   "text": "The NOP between entry 1's JMP ($522A) and entry 2's ($522E)."
  },
  {
   "address": 21038,
   "type": "line",
   "text": "Track command entry 2: JMP $56D8. Each entry is four bytes, the step of the branch offset at $5225."
  },
  {
   "address": 21041,
   "type": "line",
   "text": "The NOP between entry 2's JMP and entry 3's ($5232)."
  },
  {
   "address": 21042,
   "type": "line",
   "text": "Track command entry 3: JMP $56F6. The bytes after it are the rest of tune_voice_step: the instrument, slide and note handling of a pattern byte."
  },
  {
   "address": 21184,
   "type": "line",
   "text": "Self-modified code: the operand of the ADC at $52BF (adc #$00), rewritten at run time by $507D, $50CF, $5104."
  },
  {
   "address": 21276,
   "type": "line",
   "text": "An address the code names directly: the JMP at $5250 jumps to it."
  },
  {
   "address": 21345,
   "type": "line",
   "text": "An address the code names directly: j_531C jumps to it at $5353 (and 1 more)."
  },
  {
   "address": 21467,
   "type": "line",
   "text": "An address the code names directly: tune_voice_step jumps to it at $51B8."
  },
  {
   "address": 21587,
   "type": "line",
   "text": "An address the code names directly: the JMP at $5411 jumps to it (and 1 more)."
  },
  {
   "address": 21603,
   "type": "line",
   "text": "An address the code names directly: the JMP at $54E6 jumps to it (and 1 more)."
  },
  {
   "address": 21654,
   "type": "line",
   "text": "An address the code names directly: b_5496 jumps to it at $54CA (and 1 more)."
  },
  {
   "address": 21753,
   "type": "line",
   "text": "An address the code names directly: j_5453 jumps to it at $5458 (and 2 more)."
  },
  {
   "address": 21864,
   "type": "line",
   "text": "An address the code names directly: the JMP at $5549 jumps to it."
  },
  {
   "address": 21896,
   "type": "line",
   "text": "An address the code names directly: j_54F9 jumps to it at $54FE (and 1 more)."
  },
  {
   "address": 22140,
   "type": "line",
   "text": "An address the code names directly: j_5588 jumps to it at $55E4 (and 2 more)."
  },
  {
   "address": 22141,
   "type": "line",
   "text": "Starts tune A: its header offset (A x 6) into $4FD9, all three voices gated off, every voice's pattern pointer at $5731 (an $FF, so the first step reads the track list), the player's state cleared, the instrument map reset from $5F76, the volume at 15 and $4FCC set."
  },
  {
   "address": 22232,
   "type": "line",
   "text": "Track command: takes the next track byte into the voice's sound offset ($5005)."
  },
  {
   "address": 22236,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $56DB (lda $5B08,y), rewritten at run time by $5089, $50B0, $50E5. The code from here runs on as part of cmd_skip ($56D8)."
  },
  {
   "address": 22237,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $56DB (lda $5B08,y), rewritten at run time by $5098, $50BF, $50F4. The code from here runs on as part of cmd_skip ($56D8)."
  },
  {
   "address": 22247,
   "type": "line",
   "text": "Track command: takes the next track byte as the voice's transposition ($4FD3)."
  },
  {
   "address": 22251,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $56EA (lda $5B08,y), rewritten at run time by $508C, $50B3, $50E8. The code from here runs on as part of cmd_transpose ($56E7)."
  },
  {
   "address": 22252,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $56EA (lda $5B08,y), rewritten at run time by $509B, $50C2, $50F7. The code from here runs on as part of cmd_transpose ($56E7)."
  },
  {
   "address": 22262,
   "type": "line",
   "text": "Track command: maps an instrument number to another (the next byte into $5F5E)."
  },
  {
   "address": 22276,
   "type": "line",
   "text": "Self-modified code: the low byte of the operand of the LDA at $5703 (lda $5B08,y), rewritten at run time by $508F, $50B6, $50EB. The code from here runs on as part of cmd_instrument ($56F6)."
  },
  {
   "address": 22277,
   "type": "line",
   "text": "Self-modified code: the high byte of the operand of the LDA at $5703 (lda $5B08,y), rewritten at run time by $509E, $50C5, $50FA. The code from here runs on as part of cmd_instrument ($56F6)."
  },
  {
   "address": 22282,
   "type": "line",
   "text": "Self-modified code: the operand of the LDY at $5709 (ldy #$00), rewritten at run time by $56FD in cmd_instrument ($56F6). The code from here runs on as part of cmd_instrument ($56F6)."
  },
  {
   "address": 22289,
   "type": "line",
   "text": "Track command: plays the next pattern as many times in all as the command's low five bits say (that number less one goes to $4FF3)."
  },
  {
   "address": 22301,
   "type": "line",
   "text": "Reads the voice's current pattern byte through $A0, $A2 or $A4."
  },
  {
   "address": 22321,
   "type": "line",
   "text": "An $FF: the pattern every voice starts on, so its first step goes to the track list."
  },
  {
   "address": 22322,
   "type": "line",
   "text": "The tunes' headers: for each tune the addresses of its three voices' track lists. Tunes 0 to 3 go with the four levels' story screens, 4 the ending, 5 the title and Hall of Fame, 6 game over."
  },
  {
   "address": 22323,
   "type": "line",
   "text": "Tune 0's header, byte 1: the high byte of voice 1's track list."
  },
  {
   "address": 22324,
   "type": "line",
   "text": "Tune 0's header, byte 2: the low byte of voice 2's track list."
  },
  {
   "address": 22325,
   "type": "line",
   "text": "Tune 0's header, byte 3: the high byte of voice 2's track list."
  },
  {
   "address": 22326,
   "type": "line",
   "text": "Tune 0's header, byte 4: the low byte of voice 3's track list."
  },
  {
   "address": 22327,
   "type": "line",
   "text": "Tune 0's header, byte 5: the high byte of voice 3's track list."
  },
  {
   "address": 22364,
   "type": "line",
   "text": "The music's patterns, named by $5CA2/$5CD9: notes below $80 each followed by a length, $80-$8F instruments, $A0 rests followed by a length, $BF the end of a slide, $C0 and above slides with three bytes, other bytes from $90 to $BE arpeggio lists, $FF the end."
  },
  {
   "address": 22620,
   "type": "line",
   "text": "Music patterns, continued ($585C-$595B)."
  },
  {
   "address": 22876,
   "type": "line",
   "text": "Music patterns, continued ($595C-$5A5B)."
  },
  {
   "address": 23132,
   "type": "line",
   "text": "Music patterns, continued ($5A5C-$5B07)."
  },
  {
   "address": 23304,
   "type": "line",
   "text": "The tunes' track lists, three a tune from the headers at $5732: pattern numbers, commands with bit 7 set (transpose, repeat, a frequency offset, an instrument mapping; all but repeat take the next byte), and $FF at the end of the tune."
  },
  {
   "address": 23714,
   "type": "line",
   "text": "Low bytes of the 55 patterns' addresses."
  },
  {
   "address": 23769,
   "type": "line",
   "text": "High bytes of the 55 patterns' addresses."
  },
  {
   "address": 23824,
   "type": "line",
   "text": "Low bytes of the music's frequency table, 96 notes."
  },
  {
   "address": 23920,
   "type": "line",
   "text": "High bytes of the music's frequency table."
  },
  {
   "address": 24016,
   "type": "line",
   "text": "The instruments' pulse-width tables: nibbles of target width and a command ($10 loop, $20 bounce) for $5453."
  },
  {
   "address": 24056,
   "type": "line",
   "text": "The vibrato tables: signed frequency steps for $54F9, a list per instrument."
  },
  {
   "address": 24112,
   "type": "line",
   "text": "Four control-register values the waveform lists index."
  },
  {
   "address": 24115,
   "type": "line",
   "text": "An address the code names directly, in the byte block tune_headers ($5732-$ACDB): j_5588 reads it at $55C7 indexed by Y (and 1 more)."
  },
  {
   "address": 24116,
   "type": "line",
   "text": "The waveform lists: each byte a waveform number and a duration, for $5588."
  },
  {
   "address": 24132,
   "type": "line",
   "text": "The arpeggio lists: note offsets and durations for $55DF, bit 7 marking a loop."
  },
  {
   "address": 24180,
   "type": "line",
   "text": "The instruments, nine bytes each, read by $52BC: the pulse table and its step count, the pulse width high byte, the control register, attack/decay, sustain/release, the frame the gate is released, the pulse step, the vibrato list and the waveform list."
  },
  {
   "address": 24181,
   "type": "line",
   "text": "Byte 1 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24182,
   "type": "line",
   "text": "Byte 2 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24183,
   "type": "line",
   "text": "Byte 3 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24184,
   "type": "line",
   "text": "Byte 4 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24185,
   "type": "line",
   "text": "Byte 5 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24186,
   "type": "line",
   "text": "Byte 6 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24187,
   "type": "line",
   "text": "Byte 7 of the first instrument's record ($5E74-$5E7B), copied from the effect's definition or counted while it plays."
  },
  {
   "address": 24188,
   "type": "line",
   "text": "An address the code names directly, in the byte block tune_headers ($5732-$ACDB): the LDA at $52F0 reads it indexed by Y."
  },
  {
   "address": 24414,
   "type": "line",
   "text": "The instrument map: for each instrument number in a pattern, the offset of its record (multiples of 9); a track command can change it."
  },
  {
   "address": 24438,
   "type": "line",
   "text": "The instrument map's starting values, copied into $5F5E when a tune starts."
  },
  {
   "address": 24462,
   "type": "line",
   "text": "Zeros between the music data and the sound effects, loaded with the game and never read."
  },
  {
   "address": 25024,
   "type": "line",
   "text": "The 17 sound effects, 64 bytes each from $4965's table: 26 bytes for voice 1 (note, length, envelope, slide, arpeggio, pulse and waveform lists), 38 for voice 2 and the filter. 0 the explosion, 2 the stick, 3 the empty gun, 4 a death, 6 a shot, 7 a jump, 8 a pick-up, 11 the bonus."
  },
  {
   "address": 25280,
   "type": "line",
   "text": "Sound effects 4 to 7: their 64-byte definitions ($62C0-$63BF)."
  },
  {
   "address": 25536,
   "type": "line",
   "text": "Sound effects 8 to 11: their 64-byte definitions ($63C0-$64BF)."
  },
  {
   "address": 25728,
   "type": "line",
   "text": "An address the code names directly, in the byte block tune_headers ($5732-$ACDB): the LDA at $49CB reads it indexed by Y (and 1 more)."
  },
  {
   "address": 25792,
   "type": "line",
   "text": "Sound effects 12 to 15: their 64-byte definitions ($64C0-$65BF)."
  },
  {
   "address": 26048,
   "type": "line",
   "text": "Sound effects 16 to 16: their 64-byte definitions ($65C0-$65FF)."
  },
  {
   "address": 26112,
   "type": "line",
   "text": "The enemies' sprite frames, ten for each level ($6600 the Goolus of level 1), copied and mirrored into frames $90-$A3 at each level's start by $16D3."
  },
  {
   "address": 26752,
   "type": "line",
   "text": "Enemy frames for level 2 and after ($6880-$6AFF), ten frames of 64 bytes a level."
  },
  {
   "address": 27392,
   "type": "line",
   "text": "Enemy frames for level 3 and after ($6B00-$6D7F), ten frames of 64 bytes a level."
  },
  {
   "address": 28032,
   "type": "line",
   "text": "Enemy frames for level 4 and after ($6D80-$6FFF), ten frames of 64 bytes a level."
  },
  {
   "address": 28672,
   "type": "line",
   "text": "The tile graphics of the second graphics set (rooms from the 14th on): 256 characters, exchanged with the character set at $D000 by $1911."
  },
  {
   "address": 29184,
   "type": "line",
   "text": "Second tile set: characters $40-$7F ($7200-$73FF)."
  },
  {
   "address": 29696,
   "type": "line",
   "text": "Second tile set: characters $80-$BF ($7400-$75FF)."
  },
  {
   "address": 30208,
   "type": "line",
   "text": "Second tile set: characters $C0-$FF ($7600-$77FF)."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "The story screens' character set: the font of the story text and the levels' pictures, exchanged with the play font at $F800 by $24DC."
  },
  {
   "address": 31232,
   "type": "line",
   "text": "Story character set: characters $40-$7F ($7A00-$7BFF)."
  },
  {
   "address": 31455,
   "type": "line",
   "text": "An address the code names directly, in the byte block tune_headers ($5732-$ACDB): reveal_picture reads it at $2573."
  },
  {
   "address": 31744,
   "type": "line",
   "text": "Story character set: characters $80-$BF ($7C00-$7DFF)."
  },
  {
   "address": 32256,
   "type": "line",
   "text": "Story character set: characters $C0-$FF ($7E00-$7FFF)."
  },
  {
   "address": 32512,
   "type": "line",
   "text": "An address the code names directly, in the byte block tune_headers ($5732-$ACDB): the LDA at $24F4 reads it indexed by Y (and 3 more)."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The colour of each of the 256 tiles of the first set, written to colour RAM by $2DA0 as a room is drawn."
  },
  {
   "address": 33024,
   "type": "line",
   "text": "The colour of each tile of the second set, exchanged with $8000 by $1911."
  },
  {
   "address": 33280,
   "type": "line",
   "text": "The 256 blocks the maps are made of, 16 tile codes each (four rows of four), found through the address tables at $B300/$B400."
  },
  {
   "address": 33792,
   "type": "line",
   "text": "Blocks $20-$3F, 16 tile codes each ($8400-$85FF)."
  },
  {
   "address": 34304,
   "type": "line",
   "text": "Blocks $40-$5F, 16 tile codes each ($8600-$87FF)."
  },
  {
   "address": 34544,
   "type": "line",
   "text": "An address the code names directly, in the byte block tune_headers ($5732-$ACDB): decode_row_to reads it at $2D78 indexed by X."
  },
  {
   "address": 34816,
   "type": "line",
   "text": "Blocks $60-$7F, 16 tile codes each ($8800-$89FF)."
  },
  {
   "address": 35328,
   "type": "line",
   "text": "Blocks $80-$9F, 16 tile codes each ($8A00-$8BFF)."
  },
  {
   "address": 35840,
   "type": "line",
   "text": "Blocks $A0-$BF, 16 tile codes each ($8C00-$8DFF)."
  },
  {
   "address": 36352,
   "type": "line",
   "text": "Blocks $C0-$DF, 16 tile codes each ($8E00-$8FFF)."
  },
  {
   "address": 36864,
   "type": "line",
   "text": "Blocks $E0-$FF, 16 tile codes each ($9000-$91FF)."
  },
  {
   "address": 37376,
   "type": "line",
   "text": "The level maps: rows of eight block numbers (32 tiles across), the rooms' maps one after another from $9200, each room's address in its record at $46AD. Each level's first room's map is at $9200, $95C0, $9AC8 and $A070; play starts with the map pointer at $9210, $9690, $9AE8 and $A090 ($1978/$197C)."
  },
  {
   "address": 37888,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($9400-$95FF)."
  },
  {
   "address": 38400,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($9600-$97FF)."
  },
  {
   "address": 38912,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($9800-$99FF)."
  },
  {
   "address": 39424,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($9A00-$9BFF)."
  },
  {
   "address": 39936,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($9C00-$9DFF)."
  },
  {
   "address": 40448,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($9E00-$9FFF)."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($A000-$A1FF)."
  },
  {
   "address": 41472,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($A200-$A3FF)."
  },
  {
   "address": 41984,
   "type": "line",
   "text": "Level maps, rows of eight block numbers ($A400-$A5BF)."
  },
  {
   "address": 42432,
   "type": "line",
   "text": "The rooms' object lists, 364 records of five bytes ($A5C0-$ACDB): map row, type (bit 7 set once used up), flags, position and trigger zone. Each room's list ends with a record whose first byte is $FF, 34 of them, leaving 330 objects."
  },
  {
   "address": 42944,
   "type": "line",
   "text": "Object lists, continued ($A7C0-$A9BF)."
  },
  {
   "address": 43456,
   "type": "line",
   "text": "Object lists, continued ($A9C0-$ABBF)."
  },
  {
   "address": 43968,
   "type": "line",
   "text": "Object lists, continued ($ABC0-$ACDB)."
  },
  {
   "address": 44288,
   "type": "line",
   "text": "The five story screens, each a 30-character heading padded with @ and lines of 30 characters, $FE ending a paragraph and $FF the text. The headings: SOUTH AMERICA 1945; EGYPT, SOMETIME LATER; EUROPE, LATER THAT WEEK; EUROPE, EVEN LATER; and LONDON, MUCH, MUCH LATER (the ending). ASCII."
  },
  {
   "address": 45312,
   "type": "line",
   "text": "The story texts from the last lines of EUROPE, EVEN LATER through the ending, LONDON, MUCH, MUCH LATER (to $B253)."
  },
  {
   "address": 45652,
   "type": "line",
   "text": "The $FF that ends the last story text ($24A7 stops there), then zeros to $B2FF that nothing reads."
  },
  {
   "address": 45824,
   "type": "line",
   "text": "Low bytes of the 256 blocks' addresses ($8200 + 16 x block)."
  },
  {
   "address": 46080,
   "type": "line",
   "text": "High bytes of the 256 blocks' addresses ($B400-$B4FF); the last 48, from $B4D0, are also the frame colour table's first entries."
  },
  {
   "address": 46288,
   "type": "line",
   "text": "The colour of each sprite frame ($B4D0 + frame). Its first 48 bytes are also the block address table's high bytes for blocks $D0-$FF; frames $90-$A3 are set per level by $16D3."
  },
  {
   "address": 46432,
   "type": "line",
   "text": "An address the code names directly, in the byte block story_spare ($B254-$B57F): the STA at $1705 writes it indexed by X."
  },
  {
   "address": 46442,
   "type": "line",
   "text": "An address the code names directly, in the byte block story_spare ($B254-$B57F): the STA at $170A writes it indexed by X."
  },
  {
   "address": 46464,
   "type": "line",
   "text": "The object's sprite Y on screen: Rick ($B580 + 0)."
  },
  {
   "address": 46465,
   "type": "line",
   "text": "The object's sprite Y on screen: Rick's second sprite ($B580 + 1)."
  },
  {
   "address": 46466,
   "type": "line",
   "text": "The object's sprite Y on screen: the dynamite ($B580 + 2)."
  },
  {
   "address": 46467,
   "type": "line",
   "text": "The object's sprite Y on screen: item slot 0 ($B580 + 3)."
  },
  {
   "address": 46476,
   "type": "line",
   "text": "The object's X: Rick ($B58C + 0)."
  },
  {
   "address": 46477,
   "type": "line",
   "text": "The object's X: Rick's second sprite ($B58C + 1)."
  },
  {
   "address": 46478,
   "type": "line",
   "text": "The object's X: the dynamite ($B58C + 2)."
  },
  {
   "address": 46479,
   "type": "line",
   "text": "The object's X: item slot 0 ($B58C + 3)."
  },
  {
   "address": 46480,
   "type": "line",
   "text": "The object's X: item slot 1 ($B58C + 4)."
  },
  {
   "address": 46488,
   "type": "line",
   "text": "The object's sprite frame: Rick ($B598 + 0)."
  },
  {
   "address": 46490,
   "type": "line",
   "text": "The object's sprite frame: the dynamite ($B598 + 2)."
  },
  {
   "address": 46491,
   "type": "line",
   "text": "The object's sprite frame: item slot 0 ($B598 + 3)."
  },
  {
   "address": 46500,
   "type": "line",
   "text": "The object's sprite colour: Rick ($B5A4 + 0)."
  },
  {
   "address": 46501,
   "type": "line",
   "text": "The object's sprite colour: Rick's second sprite ($B5A4 + 1)."
  },
  {
   "address": 46502,
   "type": "line",
   "text": "The object's sprite colour: the dynamite ($B5A4 + 2)."
  },
  {
   "address": 46503,
   "type": "line",
   "text": "The object's sprite colour: item slot 0 ($B5A4 + 3)."
  },
  {
   "address": 46512,
   "type": "line",
   "text": "The object's type (0 for an empty slot): Rick ($B5B0 + 0)."
  },
  {
   "address": 46514,
   "type": "line",
   "text": "The object's type (0 for an empty slot): the dynamite ($B5B0 + 2)."
  },
  {
   "address": 46515,
   "type": "line",
   "text": "The object's type (0 for an empty slot): item slot 0 ($B5B0 + 3)."
  },
  {
   "address": 46516,
   "type": "line",
   "text": "The object's type (0 for an empty slot): item slot 1 ($B5B0 + 4)."
  },
  {
   "address": 46521,
   "type": "line",
   "text": "The object's type (0 for an empty slot): enemy slot 0 ($B5B0 + 9)."
  },
  {
   "address": 46524,
   "type": "line",
   "text": "Whether the object is on screen this frame: Rick ($B5BC + 0)."
  },
  {
   "address": 46526,
   "type": "line",
   "text": "Whether the object is on screen this frame: the dynamite ($B5BC + 2)."
  },
  {
   "address": 46537,
   "type": "line",
   "text": "The start of the multiplexer's order list: entry 1 ($B5C8 + 1)."
  },
  {
   "address": 46538,
   "type": "line",
   "text": "The multiplexer's order list: object numbers sorted by screen Y: entry 0 ($B5CA + 0)."
  },
  {
   "address": 46539,
   "type": "line",
   "text": "The multiplexer's order list: object numbers sorted by screen Y: entry 1 ($B5CA + 1)."
  },
  {
   "address": 46551,
   "type": "line",
   "text": "The object's hit box width: item slot 0 ($B5D4 + 3)."
  },
  {
   "address": 46552,
   "type": "line",
   "text": "The object's hit box width: item slot 1 ($B5D4 + 4)."
  },
  {
   "address": 46563,
   "type": "line",
   "text": "The object's hit box height: item slot 0 ($B5E0 + 3)."
  },
  {
   "address": 46564,
   "type": "line",
   "text": "The object's hit box height: item slot 1 ($B5E0 + 4)."
  },
  {
   "address": 46575,
   "type": "line",
   "text": "The object's frame list, low byte: item slot 0 ($B5EC + 3)."
  },
  {
   "address": 46587,
   "type": "line",
   "text": "The object's frame list, high byte: item slot 0 ($B5F8 + 3)."
  },
  {
   "address": 46599,
   "type": "line",
   "text": "The object's movement script, low byte: item slot 0 ($B604 + 3)."
  },
  {
   "address": 46611,
   "type": "line",
   "text": "The object's movement script, high byte: item slot 0 ($B610 + 3)."
  },
  {
   "address": 46620,
   "type": "line",
   "text": "The steps left in the object's current script record, or an enemy's patrol count: Rick ($B61C + 0)."
  },
  {
   "address": 46623,
   "type": "line",
   "text": "The steps left in the object's current script record, or an enemy's patrol count: item slot 0 ($B61C + 3)."
  },
  {
   "address": 46632,
   "type": "line",
   "text": "The object's state: a running trap's script position, or a dying enemy's count: Rick ($B628 + 0)."
  },
  {
   "address": 46635,
   "type": "line",
   "text": "The object's state: a running trap's script position, or a dying enemy's count: item slot 0 ($B628 + 3)."
  },
  {
   "address": 46644,
   "type": "line",
   "text": "The object's animation counter: Rick ($B634 + 0)."
  },
  {
   "address": 46647,
   "type": "line",
   "text": "The object's animation counter: item slot 0 ($B634 + 3)."
  },
  {
   "address": 46659,
   "type": "line",
   "text": "Whether the object's frame list animates: item slot 0 ($B640 + 3)."
  },
  {
   "address": 46668,
   "type": "line",
   "text": "Whether the object is deadly to touch (or a box already set off): Rick ($B64C + 0)."
  },
  {
   "address": 46671,
   "type": "line",
   "text": "Whether the object is deadly to touch (or a box already set off): item slot 0 ($B64C + 3)."
  },
  {
   "address": 46672,
   "type": "line",
   "text": "Whether the object is deadly to touch (or a box already set off): item slot 1 ($B64C + 4)."
  },
  {
   "address": 46683,
   "type": "line",
   "text": "The X of the object's trigger zone: item slot 0 ($B658 + 3)."
  },
  {
   "address": 46694,
   "type": "line",
   "text": "The Y of the object's trigger zone: the dynamite ($B664 + 2)."
  },
  {
   "address": 46695,
   "type": "line",
   "text": "The Y of the object's trigger zone: item slot 0 ($B664 + 3)."
  },
  {
   "address": 46707,
   "type": "line",
   "text": "The object's frame offset, or a trap's zone width: item slot 0 ($B670 + 3)."
  },
  {
   "address": 46720,
   "type": "line",
   "text": "Per object type (128): the hit box width."
  },
  {
   "address": 46848,
   "type": "line",
   "text": "Per object type: the hit box height."
  },
  {
   "address": 46976,
   "type": "line",
   "text": "Per object type: its frame list, low byte."
  },
  {
   "address": 47104,
   "type": "line",
   "text": "Per object type: its frame list, high byte."
  },
  {
   "address": 47232,
   "type": "line",
   "text": "Per object type: its movement script, low byte."
  },
  {
   "address": 47360,
   "type": "line",
   "text": "Per object type: its movement script, high byte."
  },
  {
   "address": 47488,
   "type": "line",
   "text": "Per object type: the zone height (low three bits, times four) and frame offset or zone width (top five bits)."
  },
  {
   "address": 47616,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $2FE1 reads it indexed by X."
  },
  {
   "address": 47648,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $2FE7 reads it indexed by X."
  },
  {
   "address": 47680,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $2FED reads it indexed by X."
  },
  {
   "address": 47712,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $2FF3 reads it indexed by X."
  },
  {
   "address": 47744,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $2FF9 reads it indexed by X."
  },
  {
   "address": 47776,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $2FFF reads it indexed by X."
  },
  {
   "address": 47808,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $3005 reads it indexed by X."
  },
  {
   "address": 47840,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: the LDA at $300B reads it indexed by X."
  },
  {
   "address": 47872,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2EE1 indexed by X."
  },
  {
   "address": 47904,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2EE7 indexed by X."
  },
  {
   "address": 47936,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2EED indexed by X."
  },
  {
   "address": 47968,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2EF3 indexed by X."
  },
  {
   "address": 48000,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2EF9 indexed by X."
  },
  {
   "address": 48032,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2EFF indexed by X."
  },
  {
   "address": 48064,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F05 indexed by X."
  },
  {
   "address": 48096,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F0B indexed by X."
  },
  {
   "address": 48128,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F11 indexed by X."
  },
  {
   "address": 48160,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F17 indexed by X."
  },
  {
   "address": 48192,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F1D indexed by X."
  },
  {
   "address": 48224,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F23 indexed by X."
  },
  {
   "address": 48256,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F29 indexed by X."
  },
  {
   "address": 48288,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F2F indexed by X."
  },
  {
   "address": 48320,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F35 indexed by X."
  },
  {
   "address": 48352,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F3B indexed by X."
  },
  {
   "address": 48384,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F41 indexed by X."
  },
  {
   "address": 48416,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F47 indexed by X."
  },
  {
   "address": 48448,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F4D indexed by X."
  },
  {
   "address": 48480,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F53 indexed by X."
  },
  {
   "address": 48512,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F59 indexed by X."
  },
  {
   "address": 48544,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F5F indexed by X."
  },
  {
   "address": 48576,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F65 indexed by X."
  },
  {
   "address": 48608,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_2EDE writes it at $2F6B indexed by X."
  },
  {
   "address": 49024,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: j_315E writes it at $31EC indexed by Y (and 5 more)."
  },
  {
   "address": 49056,
   "type": "line",
   "text": "An address the code names directly, in $BA00-$BFB3, the room's collision map, 32 tiles to a row, rebuilt by $2EDC on every room change and scroll: draw_room writes it at $2DD5 indexed by Y (and 7 more)."
  },
  {
   "address": 49076,
   "type": "line",
   "text": "The sound each object type plays when it is set off, indexed by type from $BFB4; bit 7 means none. Only the traps (types 24 on, $BFCC) call it ($1ABC): the bytes for types 0 to 11 are the end of the tile row buffer at $BFA0-$BFBF, and those for types 12 to 23 are the code of $BFC0 itself."
  },
  {
   "address": 49088,
   "type": "line",
   "text": "Plays the sound of a trap that has just been set off: the sound number for its type from the table at $BFB4, none when that byte has bit 7 set. It sits in the RAM under the BASIC ROM, between the collision map's last rows and $C000."
  },
  {
   "address": 49100,
   "type": "line",
   "text": "The trap sounds table from type 24 on, the traps: one sound number each, bit 7 for none."
  },
  {
   "address": 49148,
   "type": "line",
   "text": "An address the code names directly, in the byte block trap_sounds_24 ($BFCC-$BFFF): the STA at $2D7B writes it indexed by Y."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_loop writes it at $08DF indexed by Y (and 3 more)."
  },
  {
   "address": 49157,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_score writes it at $2D0C."
  },
  {
   "address": 49158,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_score writes it at $2D0F."
  },
  {
   "address": 49159,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_score writes it at $2D17."
  },
  {
   "address": 49160,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_score writes it at $2D1A."
  },
  {
   "address": 49161,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_score writes it at $2D22."
  },
  {
   "address": 49162,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_score writes it at $2D25."
  },
  {
   "address": 49181,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: lose_life writes it at $0AF0."
  },
  {
   "address": 49192,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $0954 writes it indexed by Y (and 2 more)."
  },
  {
   "address": 49236,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2EE4 indexed by X (and 4 more)."
  },
  {
   "address": 49238,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: story_text writes it at $2492 indexed by Y."
  },
  {
   "address": 49276,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2EEA indexed by X (and 5 more)."
  },
  {
   "address": 49316,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2EF0 indexed by X (and 4 more)."
  },
  {
   "address": 49327,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $2475 indexed by X."
  },
  {
   "address": 49329,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $2420 writes it indexed by X."
  },
  {
   "address": 49356,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2EF6 indexed by X (and 4 more)."
  },
  {
   "address": 49361,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: name_entry writes it at $1F91 indexed by X."
  },
  {
   "address": 49367,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $2478 indexed by X."
  },
  {
   "address": 49396,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2EFC indexed by X (and 4 more)."
  },
  {
   "address": 49402,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: hall_screen writes it at $1E9A indexed by Y (and 2 more)."
  },
  {
   "address": 49407,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $247B indexed by X."
  },
  {
   "address": 49408,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $0957 writes it indexed by Y."
  },
  {
   "address": 49432,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $23C8 writes it indexed by X (and 1 more)."
  },
  {
   "address": 49436,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F02 indexed by X (and 4 more)."
  },
  {
   "address": 49447,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $247E indexed by X."
  },
  {
   "address": 49449,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_plain writes it at $28A7 indexed by X."
  },
  {
   "address": 49476,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F08 indexed by X (and 4 more)."
  },
  {
   "address": 49487,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $2481 indexed by X."
  },
  {
   "address": 49516,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F0E indexed by X (and 4 more)."
  },
  {
   "address": 49527,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $2484 indexed by X."
  },
  {
   "address": 49556,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F14 indexed by X (and 4 more)."
  },
  {
   "address": 49567,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $2487 indexed by X."
  },
  {
   "address": 49596,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F1A indexed by X (and 4 more)."
  },
  {
   "address": 49607,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: frame_column writes it at $248A indexed by X."
  },
  {
   "address": 49609,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $2425 writes it indexed by X (and 1 more)."
  },
  {
   "address": 49636,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F20 indexed by X (and 4 more)."
  },
  {
   "address": 49652,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: hall_screen writes it at $1E9D indexed by Y (and 2 more)."
  },
  {
   "address": 49664,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $095A writes it indexed by Y."
  },
  {
   "address": 49672,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $23CB writes it indexed by X (and 1 more)."
  },
  {
   "address": 49676,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F26 indexed by X (and 4 more)."
  },
  {
   "address": 49716,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F2C indexed by X (and 4 more)."
  },
  {
   "address": 49729,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_plain writes it at $28AC indexed by X."
  },
  {
   "address": 49756,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F32 indexed by X (and 4 more)."
  },
  {
   "address": 49796,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F38 indexed by X (and 4 more)."
  },
  {
   "address": 49836,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F3E indexed by X (and 5 more)."
  },
  {
   "address": 49876,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F44 indexed by X (and 5 more)."
  },
  {
   "address": 49902,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: hall_screen writes it at $1EA0 indexed by Y (and 2 more)."
  },
  {
   "address": 49912,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $23CE writes it indexed by X (and 1 more)."
  },
  {
   "address": 49916,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F4A indexed by X (and 5 more)."
  },
  {
   "address": 49920,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $095D writes it indexed by Y."
  },
  {
   "address": 49926,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: name_entry writes it at $1FD7 indexed by X (and 7 more)."
  },
  {
   "address": 49956,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F50 indexed by X (and 5 more)."
  },
  {
   "address": 49996,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F56 indexed by X (and 5 more)."
  },
  {
   "address": 49999,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_screen writes it at $279F indexed by Y."
  },
  {
   "address": 50020,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_screen writes it at $27A5 indexed by Y."
  },
  {
   "address": 50036,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F5C indexed by X (and 5 more)."
  },
  {
   "address": 50076,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F62 indexed by X (and 5 more)."
  },
  {
   "address": 50116,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_2EDE reads it at $2F68 indexed by X (and 4 more)."
  },
  {
   "address": 50156,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $2E56 writes it indexed by Y."
  },
  {
   "address": 50168,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: path_irq writes it at $26B4 (and 3 more)."
  },
  {
   "address": 50169,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: path_irq writes it at $26B8 (and 2 more)."
  },
  {
   "address": 50170,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_plain writes it at $2911 (and 5 more)."
  },
  {
   "address": 50171,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: title_plain writes it at $2915 (and 2 more)."
  },
  {
   "address": 50172,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $380E writes it (and 1 more)."
  },
  {
   "address": 50173,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $3814 writes it (and 1 more)."
  },
  {
   "address": 50174,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $381A writes it."
  },
  {
   "address": 50175,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $3820 writes it."
  },
  {
   "address": 50176,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $0960 writes it indexed by Y (and 1 more)."
  },
  {
   "address": 50216,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: game_over writes it at $26EF indexed by Y."
  },
  {
   "address": 50220,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_room reads it at $2DD2 indexed by Y (and 1 more)."
  },
  {
   "address": 50260,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31E5 indexed by Y (and 3 more)."
  },
  {
   "address": 50300,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31DF indexed by Y (and 3 more)."
  },
  {
   "address": 50340,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31D9 indexed by Y (and 3 more)."
  },
  {
   "address": 50380,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31D3 indexed by Y (and 3 more)."
  },
  {
   "address": 50420,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31CD indexed by Y (and 3 more)."
  },
  {
   "address": 50426,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: clear_screens writes it at $29C8 indexed by Y."
  },
  {
   "address": 50432,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $0963 writes it indexed by Y."
  },
  {
   "address": 50456,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: game_over writes it at $26F2 indexed by Y."
  },
  {
   "address": 50460,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31C7 indexed by Y (and 3 more)."
  },
  {
   "address": 50500,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31C1 indexed by Y (and 3 more)."
  },
  {
   "address": 50540,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31BB indexed by Y (and 3 more)."
  },
  {
   "address": 50580,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31B5 indexed by Y (and 3 more)."
  },
  {
   "address": 50620,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31AF indexed by Y (and 3 more)."
  },
  {
   "address": 50631,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: game_over writes it at $270A indexed by Y."
  },
  {
   "address": 50660,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31A9 indexed by Y (and 3 more)."
  },
  {
   "address": 50676,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: clear_screens writes it at $29CB indexed by Y."
  },
  {
   "address": 50688,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $0966 writes it indexed by Y."
  },
  {
   "address": 50696,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: game_over writes it at $26F5 indexed by Y."
  },
  {
   "address": 50700,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $31A3 indexed by Y (and 3 more)."
  },
  {
   "address": 50740,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $319D indexed by Y (and 3 more)."
  },
  {
   "address": 50780,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3197 indexed by Y (and 3 more)."
  },
  {
   "address": 50820,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3191 indexed by Y (and 3 more)."
  },
  {
   "address": 50860,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $318B indexed by Y (and 3 more)."
  },
  {
   "address": 50900,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3185 indexed by Y (and 3 more)."
  },
  {
   "address": 50926,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: clear_screens writes it at $29CE indexed by Y."
  },
  {
   "address": 50936,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: game_over writes it at $26F8 indexed by Y."
  },
  {
   "address": 50940,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $317F indexed by Y (and 3 more)."
  },
  {
   "address": 50944,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $0969 writes it indexed by Y."
  },
  {
   "address": 50980,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3179 indexed by Y (and 3 more)."
  },
  {
   "address": 51020,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3173 indexed by Y (and 3 more)."
  },
  {
   "address": 51060,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $316D indexed by Y (and 3 more)."
  },
  {
   "address": 51100,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3167 indexed by Y (and 3 more)."
  },
  {
   "address": 51140,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: j_315E writes it at $3161 indexed by Y (and 2 more)."
  },
  {
   "address": 51180,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: draw_room reads it at $2E53 indexed by Y."
  },
  {
   "address": 51192,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STX at $374E writes it."
  },
  {
   "address": 51193,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STX at $375B writes it."
  },
  {
   "address": 51194,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $3805 writes it (and 4 more)."
  },
  {
   "address": 51195,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $380B writes it (and 1 more)."
  },
  {
   "address": 51196,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $3811 writes it (and 1 more)."
  },
  {
   "address": 51197,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $3817 writes it (and 1 more)."
  },
  {
   "address": 51198,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $381D writes it."
  },
  {
   "address": 51199,
   "type": "line",
   "text": "An address the code names directly, in $C000-$C7FF, the two screens, drawn by the game: the STA at $3823 writes it."
  },
  {
   "address": 51200,
   "type": "line",
   "text": "An address the code names directly, in $C800-$C97F, the first set of sprite images the game builds each frame ($0F83): the STA at $0FC2 writes it indexed by X."
  },
  {
   "address": 51264,
   "type": "line",
   "text": "An address the code names directly, in $C800-$C97F, the first set of sprite images the game builds each frame ($0F83): the STA at $0FCB writes it indexed by X."
  },
  {
   "address": 51520,
   "type": "line",
   "text": "An address the code names directly, in $C800-$C97F, the first set of sprite images the game builds each frame ($0F83): the STA at $1016 writes it indexed by Y."
  },
  {
   "address": 51584,
   "type": "line",
   "text": "Sprite frames $26 and $27: the top of Rick in the title screen's film frame, between the two sets of image buffers."
  },
  {
   "address": 52096,
   "type": "line",
   "text": "Sprite frames $2E-$3F: the bottom of the title Rick ($2E, $2F), the items whose frame lists start at $42FA ($30-$35), and the story screens' moving figures ($36-$3E)."
  },
  {
   "address": 52608,
   "type": "line",
   "text": "Sprite frames $36-$3D ($CD80-$CF7F), 64 bytes each: the story screens' moving figures."
  },
  {
   "address": 53120,
   "type": "line",
   "text": "Sprite frames $3E-$3F ($CF80-$CFFF), 64 bytes each: the last story figure frames."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "The tile graphics in play: 256 multicolour characters in the RAM under the I/O area, read by the video chip in bank 3 ($D018 = $04 in the play area, $3A5D). With graphics set 0, codes below $4D are background, then ladders, deadly tiles, scenery in front of the sprites, floors, walls and ladder tops ($4081); set 1 has its own ranges ($185B + 8). The bullet is drawn with codes $FE and $FF of this set."
  },
  {
   "address": 53760,
   "type": "line",
   "text": "Play tile set: characters $40-$7F ($D200-$D3FF)."
  },
  {
   "address": 54272,
   "type": "line",
   "text": "Play tile set: characters $80-$BF ($D400-$D5FF)."
  },
  {
   "address": 54784,
   "type": "line",
   "text": "Play tile set: characters $C0-$FF ($D600-$D7FF)."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "Sprite frames $60-$7F under the I/O area: the treasures, boxes and traps."
  },
  {
   "address": 55301,
   "type": "line",
   "text": "Colour RAM, row 0 column 5 of the screen: title_loop writes it at $088C indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $60."
  },
  {
   "address": 55309,
   "type": "line",
   "text": "Colour RAM, row 0 column 13 of the screen: title_loop writes it at $0891 indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $60."
  },
  {
   "address": 55317,
   "type": "line",
   "text": "Colour RAM, row 0 column 21 of the screen: title_loop writes it at $0896 indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $60."
  },
  {
   "address": 55325,
   "type": "line",
   "text": "Colour RAM, row 0 column 29 of the screen: title_loop writes it at $089B indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $60."
  },
  {
   "address": 55336,
   "type": "line",
   "text": "Colour RAM, row 1 column 0 of the screen: the STA at $096E writes it indexed by Y (and 2 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $60."
  },
  {
   "address": 55376,
   "type": "line",
   "text": "Colour RAM, row 2 column 0 of the screen: the STA at $23E8 writes it indexed by X. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $61."
  },
  {
   "address": 55380,
   "type": "line",
   "text": "Colour RAM, row 2 column 4 of the screen: j_32B2 reads it at $3330 indexed by Y (and 2 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $61."
  },
  {
   "address": 55420,
   "type": "line",
   "text": "Colour RAM, row 3 column 4 of the screen: j_32B2 reads it at $332A indexed by Y (and 4 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $61."
  },
  {
   "address": 55460,
   "type": "line",
   "text": "Colour RAM, row 4 column 4 of the screen: j_32B2 reads it at $3324 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $62."
  },
  {
   "address": 55500,
   "type": "line",
   "text": "Colour RAM, row 5 column 4 of the screen: j_32B2 reads it at $331E indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $63."
  },
  {
   "address": 55504,
   "type": "line",
   "text": "Colour RAM, row 5 column 8 of the screen: title_screen writes it at $27B8 indexed by X. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $63."
  },
  {
   "address": 55540,
   "type": "line",
   "text": "Colour RAM, row 6 column 4 of the screen: j_32B2 reads it at $3318 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $63."
  },
  {
   "address": 55543,
   "type": "line",
   "text": "Colour RAM, row 6 column 7 of the screen: the STA at $22D8 writes it indexed by X. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $63."
  },
  {
   "address": 55546,
   "type": "line",
   "text": "Colour RAM, row 6 column 10 of the screen: hall_screen writes it at $1EA8 indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $63."
  },
  {
   "address": 55552,
   "type": "line",
   "text": "Colour RAM, row 6 column 16 of the screen: the STA at $0971 writes it indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $64."
  },
  {
   "address": 55576,
   "type": "line",
   "text": "Colour RAM, row 7 column 0 of the screen: the STA at $23D6 writes it indexed by X (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $64."
  },
  {
   "address": 55580,
   "type": "line",
   "text": "Colour RAM, row 7 column 4 of the screen: j_32B2 reads it at $3312 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $64."
  },
  {
   "address": 55592,
   "type": "line",
   "text": "Colour RAM, row 7 column 16 of the screen: title_plain writes it at $28C4 indexed by X. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $64."
  },
  {
   "address": 55620,
   "type": "line",
   "text": "Colour RAM, row 8 column 4 of the screen: j_32B2 reads it at $330C indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $65."
  },
  {
   "address": 55632,
   "type": "line",
   "text": "Colour RAM, row 8 column 16 of the screen: title_plain writes it at $28C1 indexed by X. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $65."
  },
  {
   "address": 55660,
   "type": "line",
   "text": "Colour RAM, row 9 column 4 of the screen: j_32B2 reads it at $3306 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $65."
  },
  {
   "address": 55700,
   "type": "line",
   "text": "Colour RAM, row 10 column 4 of the screen: j_32B2 reads it at $3300 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $66."
  },
  {
   "address": 55740,
   "type": "line",
   "text": "Colour RAM, row 11 column 4 of the screen: j_32B2 reads it at $32FA indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $66."
  },
  {
   "address": 55751,
   "type": "line",
   "text": "Colour RAM, row 11 column 15 of the screen: game_over writes it at $2704 indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $67."
  },
  {
   "address": 55753,
   "type": "line",
   "text": "Colour RAM, row 11 column 17 of the screen: the STA at $262B writes it indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $67."
  },
  {
   "address": 55780,
   "type": "line",
   "text": "Colour RAM, row 12 column 4 of the screen: j_32B2 reads it at $32F4 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $67."
  },
  {
   "address": 55796,
   "type": "line",
   "text": "Colour RAM, row 12 column 20 of the screen: hall_screen writes it at $1EAB indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $67."
  },
  {
   "address": 55808,
   "type": "line",
   "text": "Sprite frames $68-$6F ($DA00-$DBFF), 64 bytes each: objects and traps."
  },
  {
   "address": 55816,
   "type": "line",
   "text": "Colour RAM, row 13 column 0 of the screen: the STA at $23DB writes it indexed by X (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $68."
  },
  {
   "address": 55820,
   "type": "line",
   "text": "Colour RAM, row 13 column 4 of the screen: j_32B2 reads it at $32EE indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $68."
  },
  {
   "address": 55860,
   "type": "line",
   "text": "Colour RAM, row 14 column 4 of the screen: j_32B2 reads it at $32E8 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $68."
  },
  {
   "address": 55863,
   "type": "line",
   "text": "Colour RAM, row 14 column 7 of the screen: story_irq writes it at $22B7 indexed by X. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $68."
  },
  {
   "address": 55900,
   "type": "line",
   "text": "Colour RAM, row 15 column 4 of the screen: j_32B2 reads it at $32E2 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $69."
  },
  {
   "address": 55940,
   "type": "line",
   "text": "Colour RAM, row 16 column 4 of the screen: j_32B2 reads it at $32DC indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6A."
  },
  {
   "address": 55947,
   "type": "line",
   "text": "Colour RAM, row 16 column 11 of the screen: select_colour writes it at $2890 indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6A."
  },
  {
   "address": 55980,
   "type": "line",
   "text": "Colour RAM, row 17 column 4 of the screen: j_32B2 reads it at $32D6 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6A."
  },
  {
   "address": 56020,
   "type": "line",
   "text": "Colour RAM, row 18 column 4 of the screen: j_32B2 reads it at $32D0 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6B."
  },
  {
   "address": 56046,
   "type": "line",
   "text": "Colour RAM, row 18 column 30 of the screen: hall_screen writes it at $1EAE indexed by Y (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6B."
  },
  {
   "address": 56056,
   "type": "line",
   "text": "Colour RAM, row 19 column 0 of the screen: the STA at $23DE writes it indexed by X (and 1 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6B."
  },
  {
   "address": 56060,
   "type": "line",
   "text": "Colour RAM, row 19 column 4 of the screen: j_32B2 reads it at $32CA indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6B."
  },
  {
   "address": 56064,
   "type": "line",
   "text": "Colour RAM, row 19 column 8 of the screen: the STA at $0977 writes it indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6C."
  },
  {
   "address": 56100,
   "type": "line",
   "text": "Colour RAM, row 20 column 4 of the screen: j_32B2 reads it at $32C4 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6C."
  },
  {
   "address": 56140,
   "type": "line",
   "text": "Colour RAM, row 21 column 4 of the screen: j_32B2 reads it at $32BE indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6D."
  },
  {
   "address": 56143,
   "type": "line",
   "text": "Colour RAM, row 21 column 7 of the screen: title_screen writes it at $27AE indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6D."
  },
  {
   "address": 56164,
   "type": "line",
   "text": "Colour RAM, row 21 column 28 of the screen: select_flash writes it at $2874 indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6D."
  },
  {
   "address": 56180,
   "type": "line",
   "text": "Colour RAM, row 22 column 4 of the screen: j_32B2 reads it at $32B8 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6D."
  },
  {
   "address": 56220,
   "type": "line",
   "text": "Colour RAM, row 23 column 4 of the screen: j_32B2 reads it at $32B2 indexed by Y (and 3 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6E."
  },
  {
   "address": 56260,
   "type": "line",
   "text": "Colour RAM, row 24 column 4 of the screen: j_32B2 writes it at $32B5 indexed by Y (and 2 more). That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6F."
  },
  {
   "address": 56300,
   "type": "line",
   "text": "Colour RAM, row 25 column 4 of the screen: the STA at $2E5D writes it indexed by Y. That instruction reaches the I/O chip's colour RAM; the RAM beneath the same address holds part of sprite frame $6F."
  },
  {
   "address": 56320,
   "type": "line",
   "text": "Sprite frames $70-$77 ($DC00-$DDFF), 64 bytes each: objects and traps."
  },
  {
   "address": 56832,
   "type": "line",
   "text": "Sprite frames $78-$7F ($DE00-$DFFF), 64 bytes each: objects and traps."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "Sprite frames $80-$8F: more traps and objects."
  },
  {
   "address": 59648,
   "type": "line",
   "text": "Sprite frames $A4-$DF: the dynamite and its blast ($A4-$AA), the blank frame $AB, and Rick ($AC-$DF, right-facing first and left-facing $18 frames later)."
  },
  {
   "address": 59900,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): the STA at $173A writes it indexed by X."
  },
  {
   "address": 60096,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): the LDA at $1010 reads it indexed by Y."
  },
  {
   "address": 60160,
   "type": "line",
   "text": "Sprite frames $AC-$B3 ($EB00-$ECFF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 60224,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): the LDA at $0FC5 reads it indexed by X."
  },
  {
   "address": 60672,
   "type": "line",
   "text": "Sprite frames $B4-$BB ($ED00-$EEFF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 61184,
   "type": "line",
   "text": "Sprite frames $BC-$C3 ($EF00-$F0FF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 61696,
   "type": "line",
   "text": "Sprite frames $C4-$CB ($F100-$F2FF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 62208,
   "type": "line",
   "text": "Sprite frames $CC-$D3 ($F300-$F4FF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 62720,
   "type": "line",
   "text": "Sprite frames $D4-$DB ($F500-$F6FF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 63232,
   "type": "line",
   "text": "Sprite frames $DC-$DF ($F700-$F7FF), 64 bytes each: Rick and his weapons."
  },
  {
   "address": 63488,
   "type": "line",
   "text": "The character set of the score panel and every text screen: letters, digits, the panel's icons (codes 1 to 3, $2CCE) and the big lettering."
  },
  {
   "address": 63520,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): the STA at $2436 writes it indexed by X (and 3 more)."
  },
  {
   "address": 63524,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): logo_shimmer reads it at $2678 indexed by X (and 1 more)."
  },
  {
   "address": 63532,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): logo_shimmer reads it at $268C indexed by X (and 1 more)."
  },
  {
   "address": 63536,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): logo_shimmer reads it at $2689 indexed by X (and 1 more)."
  },
  {
   "address": 63840,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): clear_picture writes it at $253F indexed by Y."
  },
  {
   "address": 63936,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): clear_picture writes it at $2542 indexed by Y."
  },
  {
   "address": 64000,
   "type": "line",
   "text": "Text and panel font: characters $40-$7F ($FA00-$FBFF)."
  },
  {
   "address": 64032,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): clear_picture writes it at $2545 indexed by Y."
  },
  {
   "address": 64128,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): clear_picture writes it at $2548 indexed by Y."
  },
  {
   "address": 64223,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): the ORA at $2580 reads it (and 1 more)."
  },
  {
   "address": 64512,
   "type": "line",
   "text": "Text and panel font: characters $80-$BF ($FC00-$FDFF)."
  },
  {
   "address": 65024,
   "type": "line",
   "text": "Text and panel font: characters $C0-$FF ($FE00-$FFFF)."
  },
  {
   "address": 65280,
   "type": "line",
   "text": "An address the code names directly, in the byte block frames_a4 ($E900-$FFFF): swap_story_chars reads it at $24F0 indexed by Y (and 3 more)."
  }
 ]
}