{
 "schema": 1,
 "platform": "c64",
 "game": "kane",
 "build": "Mastertronic cassette, 1985 (Ultimate Tape Archive Kane.tap, SHA-256 d6c066a6cdc3380026ace9cd5ecd7c4af98cf90851fb48b3b23777b328c48093)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    1024,
    2047,
    "screen RAM"
   ],
   [
    16640,
    32767,
    "runtime: VIC bank 1's screens, sprite shapes and bitmap, which show_picture and build_ride_screen fill; at the hand-over it holds DATA1's copy of $A100-$DFFF, which the loader also copies up there, so the same bytes are counted once, at $A100"
   ],
   [
    1024,
    2047,
    "runtime: the status lines' text screen, which the game clears and writes; its top rows, hidden behind the picture, hold the facing flag flip_shape keeps for each sprite shape"
   ]
  ],
  "extra": [
   [
    2048,
    2815,
    "the status lines' character set, which the video chip reads through $D018"
   ]
  ],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2047,
   "type": "Undefined"
  },
  {
   "start": 2048,
   "end": 3071,
   "type": "Byte"
  },
  {
   "start": 3072,
   "end": 3643,
   "type": "Code"
  },
  {
   "start": 3644,
   "end": 4560,
   "type": "Byte"
  },
  {
   "start": 4561,
   "end": 4816,
   "type": "Code"
  },
  {
   "start": 4817,
   "end": 6479,
   "type": "Byte"
  },
  {
   "start": 6480,
   "end": 15917,
   "type": "Code"
  },
  {
   "start": 15918,
   "end": 15990,
   "type": "Byte"
  },
  {
   "start": 15991,
   "end": 16184,
   "type": "Code"
  },
  {
   "start": 16185,
   "end": 16639,
   "type": "Byte"
  },
  {
   "start": 16640,
   "end": 32767,
   "type": "Undefined"
  },
  {
   "start": 32768,
   "end": 34831,
   "type": "Byte"
  },
  {
   "start": 34832,
   "end": 35910,
   "type": "Code"
  },
  {
   "start": 35911,
   "end": 37350,
   "type": "Byte"
  },
  {
   "start": 37351,
   "end": 37506,
   "type": "Code"
  },
  {
   "start": 37507,
   "end": 37509,
   "type": "Byte"
  },
  {
   "start": 37510,
   "end": 37575,
   "type": "Code"
  },
  {
   "start": 37576,
   "end": 37576,
   "type": "Byte"
  },
  {
   "start": 37577,
   "end": 37684,
   "type": "Code"
  },
  {
   "start": 37685,
   "end": 37686,
   "type": "Byte"
  },
  {
   "start": 37687,
   "end": 37959,
   "type": "Code"
  },
  {
   "start": 37960,
   "end": 37962,
   "type": "Byte"
  },
  {
   "start": 37963,
   "end": 38463,
   "type": "Code"
  },
  {
   "start": 38464,
   "end": 38468,
   "type": "Byte"
  },
  {
   "start": 38469,
   "end": 38546,
   "type": "Code"
  },
  {
   "start": 38547,
   "end": 38654,
   "type": "Byte"
  },
  {
   "start": 38655,
   "end": 38935,
   "type": "Code"
  },
  {
   "start": 38936,
   "end": 65535,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 1,
   "name": "cpu_port",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2,
   "name": "zpa_02",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "gunman_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5,
   "name": "mul_a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6,
   "name": "mul_b",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7,
   "name": "product_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8,
   "name": "product_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "saved_a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11,
   "name": "saved_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "saved_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "div_lo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18,
   "name": "div_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19,
   "name": "divisor",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20,
   "name": "quotient",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21,
   "name": "remainder",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22,
   "name": "voice1_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23,
   "name": "zpa_17",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "voice2_ptr",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26,
   "name": "voice3_ptr",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "zpa_1B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28,
   "name": "score_at",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29,
   "name": "zpa_1D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 30,
   "name": "zpa_1E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31,
   "name": "zpa_1F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "effects",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37,
   "name": "shot_time",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38,
   "name": "src_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "dest_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "map_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "row_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 45,
   "name": "zpa_2D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46,
   "name": "zpa_2E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "ending_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "unpack_stop",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "sample_end",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53,
   "name": "zpa_35",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpa_37",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 56,
   "name": "zpa_38",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "train_speed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "zpa_3B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60,
   "name": "zpa_3C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "coaches",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62,
   "name": "zpa_3E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63,
   "name": "zpa_3F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64,
   "name": "in_ride",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65,
   "name": "bad_guys_left",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 66,
   "name": "aim_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 67,
   "name": "bar_char",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 68,
   "name": "arrow_char",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 69,
   "name": "bar_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 70,
   "name": "bar_width",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 71,
   "name": "clock_secs",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "clock_mins",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 73,
   "name": "score_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 256,
   "name": "f_0100",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 425,
   "name": "a_01A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 788,
   "name": "irq_vector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 789,
   "name": "a_0315",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 790,
   "name": "brk_vector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 791,
   "name": "a_0317",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 792,
   "name": "nmi_vector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 793,
   "name": "a_0319",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 820,
   "name": "picture_header",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 821,
   "name": "f_0335",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 822,
   "name": "a_0336",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 823,
   "name": "a_0337",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 824,
   "name": "a_0338",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 825,
   "name": "a_0339",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 960,
   "name": "f_03C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 984,
   "name": "f_03D8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "shape_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1536,
   "name": "f_0600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1660,
   "name": "f_067C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1664,
   "name": "f_0680",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1673,
   "name": "f_0689",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1675,
   "name": "f_068B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1705,
   "name": "a_06A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1709,
   "name": "f_06AD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1710,
   "name": "f_06AE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1715,
   "name": "f_06B3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1725,
   "name": "a_06BD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1726,
   "name": "a_06BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1731,
   "name": "a_06C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1732,
   "name": "a_06C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1733,
   "name": "a_06C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1734,
   "name": "a_06C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1750,
   "name": "f_06D6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1754,
   "name": "f_06DA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1784,
   "name": "f_06F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1790,
   "name": "f_06FE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1792,
   "name": "f_0700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1795,
   "name": "f_0703",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1799,
   "name": "f_0707",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1811,
   "name": "a_0713",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1812,
   "name": "a_0714",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1813,
   "name": "a_0715",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1814,
   "name": "a_0716",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1830,
   "name": "f_0726",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1839,
   "name": "f_072F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1863,
   "name": "f_0747",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1864,
   "name": "f_0748",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1865,
   "name": "f_0749",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1866,
   "name": "f_074A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1868,
   "name": "f_074C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1870,
   "name": "f_074E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1879,
   "name": "f_0757",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1904,
   "name": "f_0770",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1905,
   "name": "f_0771",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1910,
   "name": "f_0776",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1918,
   "name": "f_077E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1919,
   "name": "f_077F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1950,
   "name": "f_079E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1959,
   "name": "f_07A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1984,
   "name": "f_07C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1989,
   "name": "f_07C5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1995,
   "name": "f_07CB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2040,
   "name": "f_07F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2048,
   "name": "status_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2816,
   "name": "ride1_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2866,
   "name": "leftover_0b32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2928,
   "name": "train_layout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2980,
   "name": "leftover_0ba4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3072,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3080,
   "name": "b_0C08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3099,
   "name": "show_picture",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3186,
   "name": "b_0C72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3196,
   "name": "b_0C7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3241,
   "name": "b_0CA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3367,
   "name": "b_0D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3381,
   "name": "b_0D35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3389,
   "name": "b_0D3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3397,
   "name": "b_0D45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3460,
   "name": "unpack_bitmap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3501,
   "name": "b_0DAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3507,
   "name": "b_0DB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3510,
   "name": "b_0DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3517,
   "name": "b_0DBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3536,
   "name": "b_0DD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3537,
   "name": "b_0DD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3548,
   "name": "b_0DDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3551,
   "name": "j_0DDF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3564,
   "name": "b_0DEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3579,
   "name": "unpack_runs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3590,
   "name": "b_0E06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3598,
   "name": "b_0E0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3606,
   "name": "b_0E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3618,
   "name": "b_0E22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3633,
   "name": "short_delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3638,
   "name": "b_0E36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3644,
   "name": "text_scroll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3645,
   "name": "band_scroll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3646,
   "name": "train_scroll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3647,
   "name": "spr0_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3648,
   "name": "spr0_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3649,
   "name": "spr1_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3650,
   "name": "spr1_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3651,
   "name": "spr2_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3652,
   "name": "spr2_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3653,
   "name": "spr3_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3654,
   "name": "spr3_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3655,
   "name": "spr4_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3656,
   "name": "spr4_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3657,
   "name": "spr5_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3658,
   "name": "spr5_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3659,
   "name": "spr6_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3660,
   "name": "spr6_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3661,
   "name": "spr7_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3662,
   "name": "spr7_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3663,
   "name": "spr_x_msb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3664,
   "name": "spr_enable",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3665,
   "name": "border_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3666,
   "name": "bg_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3667,
   "name": "bg_colour1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3668,
   "name": "bg_colour2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3670,
   "name": "spr_mc0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3671,
   "name": "spr_mc1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3672,
   "name": "spr0_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3673,
   "name": "spr1_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3674,
   "name": "spr2_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3675,
   "name": "spr3_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3679,
   "name": "spr7_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3681,
   "name": "spr0_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3682,
   "name": "spr1_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3683,
   "name": "spr2_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3684,
   "name": "spr3_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3685,
   "name": "spr4_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3686,
   "name": "spr5_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3687,
   "name": "spr6_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3688,
   "name": "spr7_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3689,
   "name": "bar_positions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3730,
   "name": "rider_saved",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3774,
   "name": "map_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3775,
   "name": "a_0EBF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3776,
   "name": "distance",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3777,
   "name": "a_0EC1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3778,
   "name": "ride_objects",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4003,
   "name": "hills",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4063,
   "name": "clouds",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4077,
   "name": "rider_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4078,
   "name": "a_0FEE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4079,
   "name": "rider_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4080,
   "name": "a_0FF0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4081,
   "name": "jump_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4095,
   "name": "jump_horse_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4101,
   "name": "horse_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4113,
   "name": "horse_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4125,
   "name": "horse_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4126,
   "name": "a_101E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4127,
   "name": "horse_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4128,
   "name": "a_1020",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4129,
   "name": "a_1021",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4130,
   "name": "a_1022",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4131,
   "name": "stick_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4132,
   "name": "turning",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4133,
   "name": "jumping",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4134,
   "name": "a_1026",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4135,
   "name": "collisions",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4136,
   "name": "touching",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4137,
   "name": "falling",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4150,
   "name": "a_1036",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4151,
   "name": "a_1037",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4152,
   "name": "stand_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4162,
   "name": "trot_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4172,
   "name": "gallop_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4182,
   "name": "jump_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4197,
   "name": "turn_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4215,
   "name": "credit_design",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4255,
   "name": "credit_mastertronic",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4295,
   "name": "train_rows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4395,
   "name": "arrow_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4539,
   "name": "duck_index",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4540,
   "name": "a_11BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4541,
   "name": "wing_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4546,
   "name": "duck_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4552,
   "name": "wing_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4555,
   "name": "a_11CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4556,
   "name": "fall_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4557,
   "name": "a_11CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4558,
   "name": "duck_falling",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4559,
   "name": "a_11CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4560,
   "name": "a_11D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4561,
   "name": "start_ducks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4597,
   "name": "b_11F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4604,
   "name": "b_11FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4609,
   "name": "b_1201",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4624,
   "name": "b_1210",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4665,
   "name": "b_1239",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4717,
   "name": "b_126D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4760,
   "name": "b_1298",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4776,
   "name": "b_12A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4817,
   "name": "leftover_12d1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4864,
   "name": "title_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4872,
   "name": "title_bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5745,
   "name": "title_bitmap_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6150,
   "name": "title_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6352,
   "name": "title_nibbles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6470,
   "name": "leftover_1946",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6480,
   "name": "duck_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6523,
   "name": "b_197B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6543,
   "name": "b_198F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6563,
   "name": "b_19A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6583,
   "name": "b_19B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6603,
   "name": "b_19CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6614,
   "name": "b_19D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6622,
   "name": "b_19DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6630,
   "name": "b_19E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6693,
   "name": "b_1A25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6714,
   "name": "j_1A3A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6728,
   "name": "b_1A48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6783,
   "name": "j_1A7F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6797,
   "name": "j_1A8D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6805,
   "name": "b_1A95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6819,
   "name": "b_1AA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6851,
   "name": "b_1AC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6868,
   "name": "b_1AD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6879,
   "name": "b_1ADF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6890,
   "name": "b_1AEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6895,
   "name": "j_1AEF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6918,
   "name": "b_1B06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6928,
   "name": "b_1B10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6962,
   "name": "b_1B32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6970,
   "name": "b_1B3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6990,
   "name": "b_1B4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7001,
   "name": "b_1B59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7004,
   "name": "move_arrow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7021,
   "name": "r_1B6D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7022,
   "name": "b_1B6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7065,
   "name": "b_1B99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7092,
   "name": "r_1BB4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7093,
   "name": "move_ducks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7098,
   "name": "b_1BBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7107,
   "name": "move_duck",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7139,
   "name": "b_1BE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7149,
   "name": "b_1BED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7182,
   "name": "b_1C0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7187,
   "name": "b_1C13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7192,
   "name": "b_1C18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7205,
   "name": "b_1C25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7218,
   "name": "b_1C32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7224,
   "name": "b_1C38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7242,
   "name": "b_1C4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7277,
   "name": "b_1C6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7292,
   "name": "b_1C7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7310,
   "name": "b_1C8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7328,
   "name": "b_1CA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7360,
   "name": "j_1CC0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7363,
   "name": "b_1CC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7378,
   "name": "b_1CD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7381,
   "name": "j_1CD5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7394,
   "name": "b_1CE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7407,
   "name": "b_1CEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7446,
   "name": "j_1D16",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7494,
   "name": "b_1D46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7512,
   "name": "b_1D58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7544,
   "name": "b_1D78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7556,
   "name": "b_1D84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7568,
   "name": "b_1D90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7574,
   "name": "b_1D96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7584,
   "name": "b_1DA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7589,
   "name": "b_1DA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7594,
   "name": "b_1DAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7599,
   "name": "b_1DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7620,
   "name": "b_1DC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7630,
   "name": "draw_token",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7642,
   "name": "b_1DDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7648,
   "name": "b_1DE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7707,
   "name": "b_1E1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7729,
   "name": "draw_arrows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7748,
   "name": "b_1E44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7756,
   "name": "b_1E4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7762,
   "name": "b_1E52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7768,
   "name": "b_1E58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7781,
   "name": "add_points",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7815,
   "name": "draw_bar",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7830,
   "name": "b_1E96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7838,
   "name": "b_1E9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7842,
   "name": "b_1EA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7873,
   "name": "r_1EC1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7874,
   "name": "j_1EC2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7904,
   "name": "b_1EE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7913,
   "name": "b_1EE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7940,
   "name": "clear_bitmap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7958,
   "name": "b_1F16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7962,
   "name": "b_1F1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7984,
   "name": "wait_points",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7986,
   "name": "b_1F32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7995,
   "name": "start_ride",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8012,
   "name": "irq_idle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8020,
   "name": "j_1F54",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8034,
   "name": "b_1F62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8115,
   "name": "b_1FB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8135,
   "name": "b_1FC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8148,
   "name": "b_1FD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8167,
   "name": "b_1FE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8192,
   "name": "f_2000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8215,
   "name": "b_2017",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8228,
   "name": "b_2024",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8239,
   "name": "b_202F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8279,
   "name": "b_2057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8301,
   "name": "b_206D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8303,
   "name": "b_206F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8331,
   "name": "j_208B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8350,
   "name": "ride_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8366,
   "name": "b_20AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8376,
   "name": "b_20B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8406,
   "name": "b_20D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8412,
   "name": "b_20DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8416,
   "name": "b_20E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8421,
   "name": "b_20E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8440,
   "name": "b_20F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8446,
   "name": "b_20FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8492,
   "name": "b_212C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8501,
   "name": "b_2135",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8520,
   "name": "b_2148",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8537,
   "name": "b_2159",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8555,
   "name": "b_216B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8566,
   "name": "b_2176",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8577,
   "name": "b_2181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8588,
   "name": "b_218C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8599,
   "name": "b_2197",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8607,
   "name": "b_219F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8647,
   "name": "j_21C7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8650,
   "name": "b_21CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8677,
   "name": "b_21E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8678,
   "name": "b_21E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8686,
   "name": "b_21EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8699,
   "name": "b_21FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8702,
   "name": "b_21FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8707,
   "name": "b_2203",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8720,
   "name": "b_2210",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8744,
   "name": "b_2228",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8748,
   "name": "b_222C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8750,
   "name": "b_222E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8763,
   "name": "b_223B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8766,
   "name": "b_223E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8770,
   "name": "b_2242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8786,
   "name": "b_2252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8817,
   "name": "next_level",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 8835,
   "name": "b_2283",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8843,
   "name": "train_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8872,
   "name": "j_22A8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8897,
   "name": "b_22C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8922,
   "name": "b_22DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8927,
   "name": "b_22DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8934,
   "name": "b_22E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8939,
   "name": "b_22EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8942,
   "name": "b_22EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8956,
   "name": "b_22FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8962,
   "name": "b_2302",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8985,
   "name": "b_2319",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8987,
   "name": "b_231B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8989,
   "name": "b_231D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8997,
   "name": "j_2325",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9011,
   "name": "ride1_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9040,
   "name": "b_2350",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9053,
   "name": "b_235D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9057,
   "name": "b_2361",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9059,
   "name": "b_2363",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9061,
   "name": "b_2365",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9082,
   "name": "b_237A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9098,
   "name": "b_238A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9105,
   "name": "b_2391",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9154,
   "name": "j_23C2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9162,
   "name": "b_23CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9201,
   "name": "b_23F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9218,
   "name": "b_2402",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9243,
   "name": "j_241B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9245,
   "name": "b_241D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9273,
   "name": "b_2439",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9276,
   "name": "b_243C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9297,
   "name": "b_2451",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9321,
   "name": "j_2469",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9333,
   "name": "b_2475",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9362,
   "name": "b_2492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9389,
   "name": "b_24AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9410,
   "name": "b_24C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9419,
   "name": "j_24CB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9434,
   "name": "b_24DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9447,
   "name": "b_24E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9449,
   "name": "b_24E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9475,
   "name": "b_2503",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9478,
   "name": "j_2506",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9483,
   "name": "b_250B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9507,
   "name": "b_2523",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9533,
   "name": "game_over_ride",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9546,
   "name": "j_254A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9554,
   "name": "b_2552",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9559,
   "name": "b_2557",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9573,
   "name": "b_2565",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9589,
   "name": "b_2575",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9623,
   "name": "b_2597",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9637,
   "name": "b_25A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9653,
   "name": "b_25B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9684,
   "name": "j_25D4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9692,
   "name": "j_25DC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9712,
   "name": "b_25F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9727,
   "name": "b_25FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9735,
   "name": "b_2607",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9768,
   "name": "b_2628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9773,
   "name": "b_262D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9781,
   "name": "b_2635",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9790,
   "name": "b_263E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9804,
   "name": "b_264C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9826,
   "name": "b_2662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9834,
   "name": "b_266A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9848,
   "name": "b_2678",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9855,
   "name": "b_267F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9873,
   "name": "b_2691",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9895,
   "name": "b_26A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9913,
   "name": "b_26B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9933,
   "name": "b_26CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9947,
   "name": "b_26DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9954,
   "name": "b_26E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9972,
   "name": "j_26F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10002,
   "name": "j_2712",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10027,
   "name": "b_272B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10050,
   "name": "j_2742",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10056,
   "name": "set_horse_shapes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10074,
   "name": "b_275A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10097,
   "name": "b_2771",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10107,
   "name": "j_277B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10110,
   "name": "horse_face_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10112,
   "name": "b_2780",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10131,
   "name": "b_2793",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10141,
   "name": "b_279D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10154,
   "name": "horse_face_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10156,
   "name": "b_27AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10175,
   "name": "b_27BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10185,
   "name": "b_27C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10198,
   "name": "wait_ride_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10205,
   "name": "b_27DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10212,
   "name": "b_27E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10219,
   "name": "b_27EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10227,
   "name": "irq_ride",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10292,
   "name": "b_2834",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10308,
   "name": "b_2844",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10313,
   "name": "b_2849",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10369,
   "name": "b_2881",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10385,
   "name": "b_2891",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10387,
   "name": "b_2893",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10408,
   "name": "b_28A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10410,
   "name": "b_28AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10422,
   "name": "b_28B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10452,
   "name": "b_28D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10477,
   "name": "b_28ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10483,
   "name": "irq_ride_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10514,
   "name": "irq_ride_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10544,
   "name": "irq_ride_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10593,
   "name": "irq_ride_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10624,
   "name": "irq_ride_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10660,
   "name": "b_29A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10679,
   "name": "b_29B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10713,
   "name": "b_29D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10726,
   "name": "b_29E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10740,
   "name": "b_29F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10743,
   "name": "irq_ride_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10789,
   "name": "irq_ride_control",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10828,
   "name": "b_2A4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10844,
   "name": "b_2A5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10856,
   "name": "b_2A68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10882,
   "name": "b_2A82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10893,
   "name": "b_2A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10902,
   "name": "b_2A96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10918,
   "name": "b_2AA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10926,
   "name": "b_2AAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10934,
   "name": "b_2AB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10942,
   "name": "b_2ABE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10953,
   "name": "b_2AC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10980,
   "name": "b_2AE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10988,
   "name": "b_2AEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11018,
   "name": "b_2B0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11026,
   "name": "j_2B12",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11049,
   "name": "b_2B29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11056,
   "name": "b_2B30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11071,
   "name": "j_2B3F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11079,
   "name": "b_2B47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11083,
   "name": "b_2B4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11107,
   "name": "b_2B63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11138,
   "name": "b_2B82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11158,
   "name": "b_2B96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11174,
   "name": "b_2BA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11203,
   "name": "b_2BC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11214,
   "name": "b_2BCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11222,
   "name": "j_2BD6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11249,
   "name": "b_2BF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11254,
   "name": "b_2BF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11262,
   "name": "b_2BFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11270,
   "name": "b_2C06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11278,
   "name": "b_2C0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11299,
   "name": "b_2C23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11304,
   "name": "j_2C28",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11322,
   "name": "b_2C3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11334,
   "name": "b_2C46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11337,
   "name": "b_2C49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11360,
   "name": "b_2C60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11386,
   "name": "b_2C7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11389,
   "name": "j_2C7D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11405,
   "name": "b_2C8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11417,
   "name": "b_2C99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11421,
   "name": "b_2C9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11439,
   "name": "b_2CAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11454,
   "name": "b_2CBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11480,
   "name": "j_2CD8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11483,
   "name": "bcd_to_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11501,
   "name": "draw_tokens",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11511,
   "name": "b_2CF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11527,
   "name": "r_2D07",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11528,
   "name": "build_ride_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11532,
   "name": "b_2D0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11545,
   "name": "b_2D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11585,
   "name": "b_2D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11589,
   "name": "b_2D45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11604,
   "name": "b_2D54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11632,
   "name": "b_2D70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11640,
   "name": "b_2D78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11659,
   "name": "j_2D8B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11672,
   "name": "b_2D98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11678,
   "name": "b_2D9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11689,
   "name": "b_2DA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11695,
   "name": "b_2DAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11698,
   "name": "b_2DB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11716,
   "name": "b_2DC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11753,
   "name": "b_2DE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11791,
   "name": "b_2E0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11798,
   "name": "b_2E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11816,
   "name": "b_2E28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11827,
   "name": "b_2E33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11838,
   "name": "b_2E3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11849,
   "name": "b_2E49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11860,
   "name": "b_2E54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11869,
   "name": "b_2E5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11878,
   "name": "j_2E66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11904,
   "name": "b_2E80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11924,
   "name": "b_2E94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11935,
   "name": "b_2E9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11946,
   "name": "b_2EAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11977,
   "name": "b_2EC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11997,
   "name": "b_2EDD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12008,
   "name": "b_2EE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12019,
   "name": "b_2EF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12024,
   "name": "j_2EF8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12053,
   "name": "b_2F15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12066,
   "name": "b_2F22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12090,
   "name": "b_2F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12103,
   "name": "b_2F47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12155,
   "name": "place_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12193,
   "name": "b_2FA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12226,
   "name": "b_2FC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12241,
   "name": "multiply",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12249,
   "name": "b_2FD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12263,
   "name": "b_2FE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12270,
   "name": "divide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12274,
   "name": "b_2FF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12287,
   "name": "b_2FFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12298,
   "name": "b_300A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12302,
   "name": "show_timer_hex",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12308,
   "name": "b_3014",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12315,
   "name": "copy_map_window",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12341,
   "name": "b_3035",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12342,
   "name": "map_src",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12343,
   "name": "a_3037",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12345,
   "name": "band_dest",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12346,
   "name": "a_303A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12383,
   "name": "b_305F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12387,
   "name": "set_horse_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12422,
   "name": "unpack_rle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12452,
   "name": "b_30A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12458,
   "name": "b_30AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12461,
   "name": "b_30AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12468,
   "name": "b_30B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12487,
   "name": "b_30C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12488,
   "name": "b_30C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12496,
   "name": "b_30D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12511,
   "name": "b_30DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12516,
   "name": "j_30E4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12529,
   "name": "clear_bank1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12540,
   "name": "b_30FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12544,
   "name": "b_3100",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12558,
   "name": "clear_colours",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12569,
   "name": "b_3119",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12582,
   "name": "clear_map",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12593,
   "name": "b_3131",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12607,
   "name": "clear_obstacles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12616,
   "name": "b_3148",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12630,
   "name": "b_3156",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12642,
   "name": "nmi_ignore",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12643,
   "name": "start_stage",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12665,
   "name": "b_3179",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12702,
   "name": "b_319E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12727,
   "name": "b_31B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12741,
   "name": "b_31C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12771,
   "name": "b_31E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12791,
   "name": "b_31F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12823,
   "name": "b_3217",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12856,
   "name": "b_3238",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12863,
   "name": "b_323F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12880,
   "name": "title_screen",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12887,
   "name": "b_3257",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12903,
   "name": "b_3267",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12922,
   "name": "b_327A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12933,
   "name": "b_3285",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12995,
   "name": "j_32C3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13013,
   "name": "b_32D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13025,
   "name": "b_32E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13037,
   "name": "b_32ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13051,
   "name": "b_32FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13066,
   "name": "b_330A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13074,
   "name": "b_3312",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13082,
   "name": "b_331A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13097,
   "name": "b_3329",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13120,
   "name": "b_3340",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13134,
   "name": "b_334E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13146,
   "name": "b_335A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13148,
   "name": "b_335C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13164,
   "name": "practice_menu",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13167,
   "name": "b_336F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13176,
   "name": "b_3378",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13178,
   "name": "b_337A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13208,
   "name": "b_3398",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13219,
   "name": "b_33A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13233,
   "name": "b_33B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13238,
   "name": "b_33B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13284,
   "name": "b_33E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13307,
   "name": "b_33FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13325,
   "name": "b_340D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13343,
   "name": "b_341F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13361,
   "name": "irq_title",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13418,
   "name": "irq_title_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13475,
   "name": "j_34A3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13487,
   "name": "start_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13564,
   "name": "b_34FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13582,
   "name": "b_350E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13612,
   "name": "b_352C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13651,
   "name": "b_3553",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13687,
   "name": "b_3577",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13700,
   "name": "b_3584",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13753,
   "name": "b_35B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13773,
   "name": "b_35CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13818,
   "name": "j_35FA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13845,
   "name": "b_3615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13854,
   "name": "b_361E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13867,
   "name": "b_362B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13888,
   "name": "b_3640",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13910,
   "name": "b_3656",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13929,
   "name": "b_3669",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13943,
   "name": "b_3677",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13962,
   "name": "b_368A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13970,
   "name": "b_3692",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13978,
   "name": "b_369A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13986,
   "name": "b_36A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14045,
   "name": "j_36DD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14057,
   "name": "b_36E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14083,
   "name": "b_3703",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14099,
   "name": "j_3713",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14129,
   "name": "j_3731",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14132,
   "name": "check_shot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14136,
   "name": "b_3738",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14143,
   "name": "b_373F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14148,
   "name": "b_3744",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14224,
   "name": "b_3790",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14235,
   "name": "b_379B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14246,
   "name": "b_37A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14292,
   "name": "b_37D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14307,
   "name": "j_37E3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14310,
   "name": "b_37E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14312,
   "name": "b_37E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14336,
   "name": "r_3800",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14337,
   "name": "frame_delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14347,
   "name": "delay_count",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14358,
   "name": "print_hex",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14393,
   "name": "hex_digit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14400,
   "name": "b_3840",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14403,
   "name": "marshall_stand",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14447,
   "name": "walk_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14457,
   "name": "b_3879",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14475,
   "name": "b_388B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14501,
   "name": "b_38A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14516,
   "name": "walk_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14526,
   "name": "b_38BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14569,
   "name": "b_38E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14595,
   "name": "b_3903",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14610,
   "name": "walk_animate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14656,
   "name": "b_3940",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14671,
   "name": "j_394F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14681,
   "name": "b_3959",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14685,
   "name": "b_395D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14706,
   "name": "face_shape_less",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14714,
   "name": "face_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14718,
   "name": "j_397E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14740,
   "name": "b_3994",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14742,
   "name": "face_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14753,
   "name": "b_39A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14755,
   "name": "b_39A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14773,
   "name": "face_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14784,
   "name": "b_39C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14786,
   "name": "b_39C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14809,
   "name": "irq_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14885,
   "name": "b_3A25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14888,
   "name": "j_3A28",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14890,
   "name": "b_3A2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14906,
   "name": "b_3A3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14917,
   "name": "b_3A45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14936,
   "name": "b_3A58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14944,
   "name": "b_3A60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14952,
   "name": "b_3A68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14975,
   "name": "b_3A7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14993,
   "name": "b_3A91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15011,
   "name": "b_3AA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15022,
   "name": "b_3AAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15037,
   "name": "b_3ABD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15039,
   "name": "b_3ABF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15045,
   "name": "b_3AC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15061,
   "name": "b_3AD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15072,
   "name": "b_3AE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15087,
   "name": "j_3AEF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15092,
   "name": "b_3AF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15095,
   "name": "b_3AF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15110,
   "name": "b_3B06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15113,
   "name": "irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15181,
   "name": "b_3B4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15189,
   "name": "b_3B55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15195,
   "name": "irq_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15201,
   "name": "brk_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15221,
   "name": "save_regs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15228,
   "name": "restore_regs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15235,
   "name": "clear_sid",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15239,
   "name": "b_3B87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15246,
   "name": "restore_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15248,
   "name": "b_3B90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15258,
   "name": "count_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15260,
   "name": "b_3B9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15269,
   "name": "b_3BA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15288,
   "name": "b_3BB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15292,
   "name": "b_3BBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15329,
   "name": "b_3BE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15367,
   "name": "b_3C07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15391,
   "name": "b_3C1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15407,
   "name": "b_3C2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15418,
   "name": "b_3C3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15442,
   "name": "draw_gunmen_bars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15517,
   "name": "show_hall_of_fame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15519,
   "name": "b_3C9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15542,
   "name": "b_3CB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15567,
   "name": "b_3CCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15601,
   "name": "check_high_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15613,
   "name": "b_3CFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15617,
   "name": "b_3D01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15628,
   "name": "b_3D0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15634,
   "name": "b_3D12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15645,
   "name": "b_3D1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15654,
   "name": "b_3D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15677,
   "name": "b_3D3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15679,
   "name": "b_3D3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15703,
   "name": "b_3D57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15714,
   "name": "b_3D62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15727,
   "name": "b_3D6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15731,
   "name": "b_3D73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15745,
   "name": "b_3D81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15765,
   "name": "b_3D95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15776,
   "name": "b_3DA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15779,
   "name": "b_3DA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15798,
   "name": "b_3DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15831,
   "name": "b_3DD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15856,
   "name": "b_3DF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15864,
   "name": "b_3DF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15878,
   "name": "entry_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15918,
   "name": "press_fire_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15935,
   "name": "credit_graphics",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15976,
   "name": "a_3E68",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15977,
   "name": "a_3E69",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15979,
   "name": "credit_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15981,
   "name": "cbm80_header",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15990,
   "name": "train_stop_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15991,
   "name": "gunmen_appear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15997,
   "name": "b_3E7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16004,
   "name": "b_3E84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16020,
   "name": "b_3E94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16025,
   "name": "b_3E99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16029,
   "name": "b_3E9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16041,
   "name": "j_3EA9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16068,
   "name": "b_3EC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16082,
   "name": "b_3ED2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16092,
   "name": "b_3EDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16098,
   "name": "b_3EE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16152,
   "name": "b_3F18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16166,
   "name": "j_3F26",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16185,
   "name": "old_gunman_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16383,
   "name": "f_3FFF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "thrown_rider",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16431,
   "name": "f_402F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16448,
   "name": "f_4040",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16487,
   "name": "f_4067",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16544,
   "name": "a_40A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16576,
   "name": "leftover_40c0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16584,
   "name": "engine_row1_at",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16624,
   "name": "engine_row2_at",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16664,
   "name": "a_4118",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16704,
   "name": "a_4140",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16744,
   "name": "f_4168",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16915,
   "name": "f_4213",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17344,
   "name": "f_43C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17368,
   "name": "f_43D8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17400,
   "name": "f_43F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18044,
   "name": "f_467C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18168,
   "name": "f_46F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18424,
   "name": "f_47F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19625,
   "name": "a_4CA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 29439,
   "name": "f_72FF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31595,
   "name": "f_7B6B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31688,
   "name": "f_7BC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31856,
   "name": "f_7C70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 31968,
   "name": "f_7CE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32768,
   "name": "f_8000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32777,
   "name": "leftover_8009",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32784,
   "name": "old_build",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33792,
   "name": "old_build_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34560,
   "name": "old_build_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34832,
   "name": "gunman_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34858,
   "name": "b_882A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34877,
   "name": "b_883D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34895,
   "name": "r_884F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34896,
   "name": "b_8850",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34909,
   "name": "b_885D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34915,
   "name": "b_8863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34928,
   "name": "b_8870",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34931,
   "name": "b_8873",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34941,
   "name": "j_887D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34951,
   "name": "b_8887",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34971,
   "name": "b_889B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34984,
   "name": "b_88A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34997,
   "name": "b_88B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35000,
   "name": "j_88B8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35015,
   "name": "b_88C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35020,
   "name": "b_88CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35036,
   "name": "b_88DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35039,
   "name": "j_88DF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35064,
   "name": "b_88F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35070,
   "name": "b_88FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35076,
   "name": "b_8904",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35080,
   "name": "b_8908",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35097,
   "name": "j_8919",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35116,
   "name": "r_892C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35117,
   "name": "b_892D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35122,
   "name": "gunman_gone",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35146,
   "name": "b_894A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35150,
   "name": "b_894E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35167,
   "name": "b_895F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35180,
   "name": "b_896C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35183,
   "name": "j_896F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35198,
   "name": "b_897E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35203,
   "name": "b_8983",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35219,
   "name": "b_8993",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35222,
   "name": "j_8996",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35247,
   "name": "b_89AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35253,
   "name": "b_89B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35259,
   "name": "b_89BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35263,
   "name": "b_89BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35280,
   "name": "shape_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35283,
   "name": "b_89D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35294,
   "name": "flip_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35315,
   "name": "b_89F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35324,
   "name": "flip_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35363,
   "name": "mirror_byte",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35388,
   "name": "b_8A3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35397,
   "name": "r_8A45",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35398,
   "name": "shape_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35408,
   "name": "b_8A50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35425,
   "name": "gunmen_aim",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35431,
   "name": "b_8A67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35456,
   "name": "b_8A80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35463,
   "name": "b_8A87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35482,
   "name": "b_8A9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35512,
   "name": "b_8AB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35526,
   "name": "b_8AC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35556,
   "name": "b_8AE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35569,
   "name": "r_8AF1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35570,
   "name": "gunman_fires",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35592,
   "name": "r_8B08",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35593,
   "name": "b_8B09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35598,
   "name": "b_8B0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35608,
   "name": "b_8B18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35614,
   "name": "b_8B1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35685,
   "name": "b_8B65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35698,
   "name": "j_8B72",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35702,
   "name": "dust_puffs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35704,
   "name": "b_8B78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35709,
   "name": "j_8B7D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35713,
   "name": "b_8B81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35736,
   "name": "b_8B98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35770,
   "name": "b_8BBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35775,
   "name": "b_8BBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35781,
   "name": "marshall_dies",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35903,
   "name": "r_8C3F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35904,
   "name": "wait_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35911,
   "name": "practice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35912,
   "name": "fame_title",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35934,
   "name": "fame_heads",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35956,
   "name": "fame_entries",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35967,
   "name": "f_8C7F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35978,
   "name": "f_8C8A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35989,
   "name": "f_8C95",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 36000,
   "name": "f_8CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 36011,
   "name": "train_stopping",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36012,
   "name": "ending_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36417,
   "name": "score_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36442,
   "name": "a_8E5A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36443,
   "name": "ending_running",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36444,
   "name": "bitmap_d011",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36445,
   "name": "tune_slowdowns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36454,
   "name": "level_question",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36481,
   "name": "practice_f1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36509,
   "name": "practice_f3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36537,
   "name": "practice_f5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36564,
   "name": "practice_f7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36592,
   "name": "title_fire",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36621,
   "name": "title_f1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36649,
   "name": "title_f7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36675,
   "name": "title_previous",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36689,
   "name": "last_score_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36701,
   "name": "engine_row0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36713,
   "name": "engine_row1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36725,
   "name": "engine_row2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36737,
   "name": "engine_row3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36749,
   "name": "engine_row4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36761,
   "name": "hoofbeats",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36762,
   "name": "a_8F9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36763,
   "name": "a_8F9B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36765,
   "name": "a_8F9D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36766,
   "name": "a_8F9E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36767,
   "name": "a_8F9F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36768,
   "name": "music_off",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36769,
   "name": "drawing_picture",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36770,
   "name": "level",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36771,
   "name": "ducks_per_token",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36772,
   "name": "pending",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36773,
   "name": "a_8FA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36774,
   "name": "a_8FA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36775,
   "name": "a_8FA7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36776,
   "name": "score",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36777,
   "name": "a_8FA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36778,
   "name": "a_8FAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36779,
   "name": "a_8FAB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36780,
   "name": "tokens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36781,
   "name": "falls",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36782,
   "name": "a_8FAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36783,
   "name": "shot_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36784,
   "name": "arrows",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36785,
   "name": "ducks_home",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36786,
   "name": "ducks_killed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36789,
   "name": "arrow_dx",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36790,
   "name": "arrow_dy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36792,
   "name": "arrow_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36793,
   "name": "ducks_status",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36834,
   "name": "shootout_status",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36875,
   "name": "time_status",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36903,
   "name": "distance_status",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36931,
   "name": "coaches_status",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36959,
   "name": "score_word",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36965,
   "name": "restart_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36986,
   "name": "arrow_flying",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36987,
   "name": "stage",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36988,
   "name": "picture_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36989,
   "name": "f_907D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 36998,
   "name": "bottom_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37009,
   "name": "sight_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37025,
   "name": "stick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37026,
   "name": "frame_delay_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37027,
   "name": "frame_delay_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37028,
   "name": "bit_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37036,
   "name": "bit_clears",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37044,
   "name": "moved",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37045,
   "name": "facing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37046,
   "name": "anim_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37047,
   "name": "gun_up",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37048,
   "name": "shot_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37049,
   "name": "a_90B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37050,
   "name": "walk_left_shapes",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37051,
   "name": "a_90BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37052,
   "name": "a_90BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37053,
   "name": "walk_right_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37056,
   "name": "a_90C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37057,
   "name": "walk_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37058,
   "name": "a_90C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37059,
   "name": "a_90C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37060,
   "name": "start_positions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37077,
   "name": "start_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37096,
   "name": "unpack_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37097,
   "name": "a_90E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37098,
   "name": "flip_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37100,
   "name": "a_90EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37101,
   "name": "walk_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37102,
   "name": "ride_shapes",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37103,
   "name": "rider_shape",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37104,
   "name": "horse_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37105,
   "name": "a_90F1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37106,
   "name": "a_90F2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37107,
   "name": "a_90F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37108,
   "name": "a_90F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37109,
   "name": "a_90F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37110,
   "name": "mirror_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37126,
   "name": "mirror_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37142,
   "name": "gunman_rise_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37147,
   "name": "gunman_rise_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37153,
   "name": "gunman_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37164,
   "name": "gunman_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37175,
   "name": "bad_guys_killed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37176,
   "name": "a_9138",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37177,
   "name": "gunmen_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37178,
   "name": "gunman_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37182,
   "name": "gunman_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37186,
   "name": "gunman_delays",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37190,
   "name": "a_9146",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37191,
   "name": "a_9147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37192,
   "name": "gunman_way",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37193,
   "name": "a_9149",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37194,
   "name": "a_914A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37195,
   "name": "a_914B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37196,
   "name": "a_914C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37197,
   "name": "place_used",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37217,
   "name": "gunman_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37221,
   "name": "gunman_place",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37225,
   "name": "places",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37226,
   "name": "f_916A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37227,
   "name": "f_916B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37228,
   "name": "f_916C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37293,
   "name": "gunman_out",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37297,
   "name": "gunman_used",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37301,
   "name": "marshall_hit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37302,
   "name": "aim_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37303,
   "name": "aim_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37304,
   "name": "a_91B8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37305,
   "name": "a_91B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37306,
   "name": "f_91BA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37318,
   "name": "aim_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37319,
   "name": "aim_dist",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37320,
   "name": "a_91C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37321,
   "name": "a_91C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37322,
   "name": "hit_boxes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37323,
   "name": "f_91CB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37324,
   "name": "f_91CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37325,
   "name": "f_91CD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 37338,
   "name": "puff_used",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37342,
   "name": "puff_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37346,
   "name": "saved_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37347,
   "name": "a_91E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37349,
   "name": "a_91E5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37351,
   "name": "play_effects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 37360,
   "name": "b_91F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37369,
   "name": "b_91F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37378,
   "name": "b_9202",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37387,
   "name": "b_920B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37390,
   "name": "shot_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37434,
   "name": "b_923A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37437,
   "name": "b_923D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37447,
   "name": "gunman_shot_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37492,
   "name": "b_9274",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37496,
   "name": "b_9278",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37507,
   "name": "gunman_shot_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37510,
   "name": "whistle_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37541,
   "name": "b_92A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37564,
   "name": "b_92BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37576,
   "name": "whistle_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37577,
   "name": "drum_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37600,
   "name": "r_92E0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37601,
   "name": "b_92E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37616,
   "name": "b_92F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37654,
   "name": "b_9316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37685,
   "name": "drum_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37686,
   "name": "drum_beat",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37687,
   "name": "play_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37705,
   "name": "play_ending_sample",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37723,
   "name": "play_whinny",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37739,
   "name": "b_936B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37746,
   "name": "b_9372",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37760,
   "name": "b_9380",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37809,
   "name": "b_93B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37815,
   "name": "b_93B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37830,
   "name": "b_93C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37849,
   "name": "b_93D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37853,
   "name": "a_93DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37872,
   "name": "b_93F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37877,
   "name": "b_93F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37892,
   "name": "j_9404",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37913,
   "name": "b_9419",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37920,
   "name": "b_9420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37922,
   "name": "b_9422",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37932,
   "name": "j_942C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37960,
   "name": "sample_volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37961,
   "name": "sample_rate",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37962,
   "name": "sample_playing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37963,
   "name": "start_tune",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37970,
   "name": "b_9452",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37995,
   "name": "b_946B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38004,
   "name": "r_9474",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38005,
   "name": "play_music",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38022,
   "name": "b_9486",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38025,
   "name": "b_9489",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38028,
   "name": "b_948C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38034,
   "name": "music_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38064,
   "name": "r_94B0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38065,
   "name": "b_94B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38078,
   "name": "b_94BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38091,
   "name": "b_94CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38104,
   "name": "b_94D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38107,
   "name": "b_94DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38122,
   "name": "b_94EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38134,
   "name": "b_94F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38149,
   "name": "b_9505",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38163,
   "name": "b_9513",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38177,
   "name": "b_9521",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38199,
   "name": "j_9537",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38207,
   "name": "b_953F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38219,
   "name": "b_954B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38234,
   "name": "b_955A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38248,
   "name": "b_9568",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38262,
   "name": "b_9576",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38284,
   "name": "j_958C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38297,
   "name": "b_9599",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38309,
   "name": "b_95A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38324,
   "name": "b_95B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38338,
   "name": "b_95C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38352,
   "name": "b_95D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38374,
   "name": "j_95E6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38384,
   "name": "b_95F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38391,
   "name": "b_95F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38396,
   "name": "b_95FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38407,
   "name": "b_9607",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38418,
   "name": "b_9612",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38428,
   "name": "tune_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38464,
   "name": "tempo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38465,
   "name": "tempo_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38466,
   "name": "voice1_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38467,
   "name": "voice2_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38468,
   "name": "voice3_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38469,
   "name": "load_instrument_1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38486,
   "name": "b_9656",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38495,
   "name": "load_instrument_2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38512,
   "name": "b_9670",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38521,
   "name": "load_instrument_3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38538,
   "name": "b_968A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38545,
   "name": "f_9691",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38546,
   "name": "f_9692",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38551,
   "name": "f_9697",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38552,
   "name": "f_9698",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38557,
   "name": "f_969D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38558,
   "name": "f_969E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38568,
   "name": "filter_setup",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 38616,
   "name": "voice1_regs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38617,
   "name": "a_96D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38618,
   "name": "f_96DA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38620,
   "name": "voice1_ctrl",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38625,
   "name": "filter_route",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38627,
   "name": "voice2_regs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38628,
   "name": "a_96E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38629,
   "name": "f_96E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38631,
   "name": "voice2_ctrl",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38634,
   "name": "voice3_regs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38635,
   "name": "a_96EB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38636,
   "name": "f_96EC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 38638,
   "name": "voice3_ctrl",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38643,
   "name": "a_96F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38645,
   "name": "a_96F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38655,
   "name": "hoof_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38661,
   "name": "b_9705",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38693,
   "name": "b_9725",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38704,
   "name": "b_9730",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38730,
   "name": "b_974A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38749,
   "name": "b_975D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38752,
   "name": "b_9760",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38795,
   "name": "b_978B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38809,
   "name": "j_9799",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38821,
   "name": "b_97A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38893,
   "name": "b_97ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38916,
   "name": "r_9804",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38917,
   "name": "j_9805",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38935,
   "name": "r_9817",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38936,
   "name": "gallop_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38937,
   "name": "a_9819",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38938,
   "name": "a_981A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38939,
   "name": "a_981B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38940,
   "name": "a_981C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38941,
   "name": "a_981D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38942,
   "name": "a_981E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38944,
   "name": "hoof_period",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38945,
   "name": "hoof_volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38946,
   "name": "tune_voice1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39484,
   "name": "tune_voice2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39892,
   "name": "tune_voice3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40230,
   "name": "note_freqs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40231,
   "name": "note_freqs_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 40422,
   "name": "leftover_9de6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40448,
   "name": "whinny_sample",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40959,
   "name": "data1_byte",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "town_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40968,
   "name": "town_bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41751,
   "name": "town_bitmap_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42531,
   "name": "town_bitmap_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43414,
   "name": "town_bitmap_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44399,
   "name": "town_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45107,
   "name": "town_nibbles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45487,
   "name": "leftover_b1af",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45488,
   "name": "canyon_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45496,
   "name": "canyon_bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46383,
   "name": "canyon_bitmap_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47218,
   "name": "canyon_bitmap_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48037,
   "name": "canyon_bitmap_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48936,
   "name": "canyon_bitmap_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "canyon_bitmap_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49226,
   "name": "canyon_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49239,
   "name": "j_C057",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49303,
   "name": "canyon_colours_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50128,
   "name": "canyon_nibbles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50694,
   "name": "leftover_c606",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50704,
   "name": "ending_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50712,
   "name": "ending_bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51649,
   "name": "ending_bitmap_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52253,
   "name": "ending_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52729,
   "name": "ending_nibbles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53107,
   "name": "leftover_cf73",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "stage_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54234,
   "name": "stage_sprites_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55230,
   "name": "stage_sprites_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55884,
   "name": "leftover_da4c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55888,
   "name": "ride_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56868,
   "name": "ride_sprites_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "ride_sprites_2b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57839,
   "name": "ride_sprites_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58804,
   "name": "ride_sprites_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59791,
   "name": "ride_sprites_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60039,
   "name": "KERNAL_SCNKEYj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60103,
   "name": "ride_sprites_5b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60791,
   "name": "ride_sprites_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61762,
   "name": "ride_sprites_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62405,
   "name": "leftover_f3c5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62448,
   "name": "hit_sample",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63152,
   "name": "leftover_f6b0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63168,
   "name": "ride_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64192,
   "name": "ride_charset_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64704,
   "name": "ending_sample",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64738,
   "name": "KERNAL_RESET_VECTOR",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64802,
   "name": "ending_sample_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64816,
   "name": "f_FD30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 64880,
   "name": "ending_sample_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64931,
   "name": "KERNAL_IOINITj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64995,
   "name": "ending_sample_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65371,
   "name": "KERNAL_CINTj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65424,
   "name": "leftover_ff90",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65508,
   "name": "KERNAL_GETIN",
   "type": "Predefined",
   "kind": "system"
  }
 ],
 "comments": [
  {
   "address": 1,
   "type": "line",
   "text": "The processor port: which ROMs the CPU sees. The game keeps $36 (BASIC out, the I/O area and the KERNAL in) and writes 0, every ROM and the I/O area out, for as long as it reads packed data or a sample from the RAM beneath them."
  },
  {
   "address": 2,
   "type": "line",
   "text": "Scratch byte of the gunmen's code: a row of a gunman's shape while gunman_step shifts it, and a nibble's mirror in mirror_byte"
  },
  {
   "address": 3,
   "type": "line",
   "text": "Scratch byte of the gunmen's code: the hiding place in gunmen_appear and gunman_step, the row in flip_shape"
  },
  {
   "address": 4,
   "type": "line",
   "text": "The gunman being handled, 0 to 3 (sprite 3 to 6), in gunmen_appear and gunman_step"
  },
  {
   "address": 5,
   "type": "line",
   "text": "multiply's first number (11 for a duck's height, 25 for an object in place_object); in a fall, the rider's step up or down, from -3"
  },
  {
   "address": 6,
   "type": "line",
   "text": "multiply's second number, left at 0"
  },
  {
   "address": 7,
   "type": "line",
   "text": "multiply's product, low byte"
  },
  {
   "address": 8,
   "type": "line",
   "text": "multiply's product, high byte"
  },
  {
   "address": 9,
   "type": "line",
   "text": "multiply's count of bits, 8 down to 0"
  },
  {
   "address": 10,
   "type": "line",
   "text": "A, kept by save_regs"
  },
  {
   "address": 11,
   "type": "line",
   "text": "X, kept by save_regs"
  },
  {
   "address": 12,
   "type": "line",
   "text": "Y, kept by save_regs"
  },
  {
   "address": 13,
   "type": "line",
   "text": "A scratch counter many routines share: short_delay's loop, place_object's rows, the slot in check_shot, the hall of fame entry, the tokens in draw_tokens, the blocks of a sample"
  },
  {
   "address": 14,
   "type": "line",
   "text": "A second scratch counter: the five adds of each bonus step, the high byte of the distance to go, the hall of fame entry being moved, gunman_step's rows"
  },
  {
   "address": 15,
   "type": "line",
   "text": "The initial being typed in check_high_score, 0 to 2"
  },
  {
   "address": 16,
   "type": "line",
   "text": "A scratch byte many routines share: the count in draw_arrows and draw_bar, the tokens worked out from ducks_killed, ride 1's time bonus, a sample byte's bits, the tune's position in the ending"
  },
  {
   "address": 17,
   "type": "line",
   "text": "divide's 16-bit number, low byte; in check_high_score, the low byte of a pointer to an entry"
  },
  {
   "address": 18,
   "type": "line",
   "text": "divide's number, high byte; the pointer's high byte in check_high_score"
  },
  {
   "address": 19,
   "type": "line",
   "text": "divide's divisor"
  },
  {
   "address": 20,
   "type": "line",
   "text": "divide's quotient"
  },
  {
   "address": 21,
   "type": "line",
   "text": "divide's remainder"
  },
  {
   "address": 22,
   "type": "line",
   "text": "Voice 1's place in the tune, low byte ($17 high): the event it reads next"
  },
  {
   "address": 23,
   "type": "line",
   "text": "voice1_ptr's high byte"
  },
  {
   "address": 24,
   "type": "line",
   "text": "Voice 2's place in the tune, low byte ($19 high)"
  },
  {
   "address": 25,
   "type": "line",
   "text": "voice2_ptr's high byte"
  },
  {
   "address": 26,
   "type": "line",
   "text": "Voice 3's place in the tune, low byte ($1B high)"
  },
  {
   "address": 27,
   "type": "line",
   "text": "voice3_ptr's high byte"
  },
  {
   "address": 28,
   "type": "line",
   "text": "Where on the text screen count_score writes the score, low byte ($1D high); its colour RAM is the same place at $D800"
  },
  {
   "address": 29,
   "type": "line",
   "text": "score_at's high byte"
  },
  {
   "address": 30,
   "type": "line",
   "text": "The character carried round as a row of the train or of ride 1's hills scrolls left: the row's first, written again at its end"
  },
  {
   "address": 31,
   "type": "line",
   "text": "The step count_score adds this frame (1, 11 or 99) and, in the ending, the scroll's step"
  },
  {
   "address": 34,
   "type": "line",
   "text": "The duck's sprite, duck_index + 3, in move_duck: the index of its bit in $90A4"
  },
  {
   "address": 35,
   "type": "line",
   "text": "The sound effects playing: bit 7 the Marshall's shot, bit 6 a gunman's, bit 5 the arrow's whistle, bit 4 the canyon's drum. The shots and the whistle clear their own bits when they end; the drum's stays set until the stage ends (start_play clears the byte)"
  },
  {
   "address": 37,
   "type": "line",
   "text": "Frames left of the Marshall's shot sound, from 20"
  },
  {
   "address": 38,
   "type": "line",
   "text": "The pointer most routines read through: a picture's stream, a sprite shape, a hall of fame entry, a sample (low byte; $27 high)"
  },
  {
   "address": 39,
   "type": "line",
   "text": "src_ptr's high byte"
  },
  {
   "address": 40,
   "type": "line",
   "text": "The pointer most routines write through: the screen, the bitmap, colour RAM, the next hall of fame entry (low byte; $29 high)"
  },
  {
   "address": 41,
   "type": "line",
   "text": "dest_ptr's high byte"
  },
  {
   "address": 42,
   "type": "line",
   "text": "A third pointer: the map buffer in build_ride_screen and place_object, and the hall of fame's entries in check_high_score (low byte; $2B high)"
  },
  {
   "address": 43,
   "type": "line",
   "text": "map_ptr's high byte"
  },
  {
   "address": 44,
   "type": "line",
   "text": "A fourth pointer: an instrument being loaded, a row of the train or the hills being scrolled, the ending's rows being moved up, colour RAM under the score (low byte; $2D high)"
  },
  {
   "address": 45,
   "type": "line",
   "text": "row_ptr's high byte"
  },
  {
   "address": 46,
   "type": "line",
   "text": "The row the ending's text moves up into, low byte ($2F high)"
  },
  {
   "address": 47,
   "type": "line",
   "text": "the high byte of the ending's destination row"
  },
  {
   "address": 48,
   "type": "line",
   "text": "The next line of the ending text to be written on row 24, low byte ($31 high)"
  },
  {
   "address": 49,
   "type": "line",
   "text": "ending_ptr's high byte"
  },
  {
   "address": 50,
   "type": "line",
   "text": "unpack_rle's end: it stops when the destination reaches this address, low byte ($33 high)"
  },
  {
   "address": 51,
   "type": "line",
   "text": "unpack_stop's high byte"
  },
  {
   "address": 52,
   "type": "line",
   "text": "The end of the sample playing, low byte ($35 high): $F6B0 for the hit sample, $FF90 for the ending's, $9FFF for the whinny"
  },
  {
   "address": 53,
   "type": "line",
   "text": "sample_end's high byte; on the train, 0 until the caught train starts to slow, then $FF"
  },
  {
   "address": 54,
   "type": "line",
   "text": "Passes of ride_loop to the caught train's next slowing, 50 each"
  },
  {
   "address": 55,
   "type": "line",
   "text": "The value of $3C when the engine last moved in a column, so it moves in once a character"
  },
  {
   "address": 56,
   "type": "line",
   "text": "The engine's column being drawn in from the left, 11 down to 0, then negative when the engine is whole"
  },
  {
   "address": 57,
   "type": "line",
   "text": "The train's speed, 0 at the start, made more negative as it speeds up, raised again as it stops"
  },
  {
   "address": 58,
   "type": "line",
   "text": "The lowest coach count so far: a count below it gives points and becomes the new lowest"
  },
  {
   "address": 59,
   "type": "line",
   "text": "0 while the train runs; $FF once it is caught and stopping, or the coach count once it has reached 20. Not 0 stops the end of a train row being wrapped round as it scrolls left"
  },
  {
   "address": 60,
   "type": "line",
   "text": "Characters the train has scrolled since the coach count last changed, up to 20"
  },
  {
   "address": 61,
   "type": "line",
   "text": "The coach count, BCD: 3, 7 or 11 at the start by level, one less every twenty characters the horse gains on the train and one more every twenty it falls back; the train is caught at 0"
  },
  {
   "address": 62,
   "type": "line",
   "text": "The horse's speed less the train's, signed: which way the train's rows move"
  },
  {
   "address": 63,
   "type": "line",
   "text": "The pixels the train's rows move this frame, the size of $3E; on ride 1, 1 for the hills"
  },
  {
   "address": 64,
   "type": "line",
   "text": "Not 0 in a riding stage, where the tokens are drawn a row higher"
  },
  {
   "address": 65,
   "type": "line",
   "text": "The gunmen still to be hit in the shoot-out, BCD from 12"
  },
  {
   "address": 66,
   "type": "line",
   "text": "Pixels the gunmen's aim moves each step, 1. Moving right while the aim is left of x 256 the add at $8AE7 also takes the carry the subtraction above left set, so there it moves 2"
  },
  {
   "address": 67,
   "type": "line",
   "text": "The character draw_bar fills its cells with"
  },
  {
   "address": 68,
   "type": "line",
   "text": "The character draw_arrows draws for each arrow or bullet left"
  },
  {
   "address": 69,
   "type": "line",
   "text": "The colour of draw_bar's cells"
  },
  {
   "address": 70,
   "type": "line",
   "text": "Cells to a row in draw_bar"
  },
  {
   "address": 71,
   "type": "line",
   "text": "Ride 1's clock, seconds, BCD, counted down by irq_ride"
  },
  {
   "address": 72,
   "type": "line",
   "text": "Ride 1's clock, minutes, BCD, from 2"
  },
  {
   "address": 73,
   "type": "line",
   "text": "Eight bytes, $0049-$0050: the score's digits, one to a byte, as count_score unpacks them from its BCD to write them on the screen"
  },
  {
   "address": 788,
   "type": "line",
   "text": "The KERNAL's IRQ vector: every raster handler writes the next one's address here, so each frame runs a chain of them"
  },
  {
   "address": 789,
   "type": "line",
   "text": "the IRQ vector's high byte"
  },
  {
   "address": 790,
   "type": "line",
   "text": "The KERNAL's BRK vector: pointed at brk_handler"
  },
  {
   "address": 791,
   "type": "line",
   "text": "the BRK vector's high byte"
  },
  {
   "address": 792,
   "type": "line",
   "text": "The KERNAL's NMI vector: pointed at nmi_ignore, so RESTORE does nothing"
  },
  {
   "address": 793,
   "type": "line",
   "text": "the NMI vector's high byte"
  },
  {
   "address": 820,
   "type": "line",
   "text": "Six bytes, $0334-$0339, the picture's three addresses as show_picture moves them to where the picture lies: its screen colours ($0334), its colour-RAM nibbles ($0336), and the end of those nibbles ($0338)"
  },
  {
   "address": 821,
   "type": "line",
   "text": "the screen colours' high byte"
  },
  {
   "address": 822,
   "type": "line",
   "text": "The start of the picture's colour-RAM nibbles, which is also the end of its screen colours, low byte"
  },
  {
   "address": 823,
   "type": "line",
   "text": "the nibbles' start, high byte"
  },
  {
   "address": 824,
   "type": "line",
   "text": "The end of the picture's colour-RAM nibbles, low byte"
  },
  {
   "address": 825,
   "type": "line",
   "text": "the nibbles' end, high byte"
  },
  {
   "address": 960,
   "type": "line",
   "text": "Sprite shape 15 in VIC bank 0, $03C0-$03FF: made a solid bar by build_ride_screen for the bars under a ride's band"
  },
  {
   "address": 984,
   "type": "line",
   "text": "The bar's last eight lines, $03D8 on: left empty, so the bar is eight lines high"
  },
  {
   "address": 1024,
   "type": "line",
   "text": "The text screen of the status lines (the raster split shows it below the picture). Its top rows are never shown, and the game keeps a flag there for each sprite shape, $0400 + the shape's number: $FF when it faces as drawn, toggled by flip_shape each time the shape is mirrored. A stage sets the first 28 to $FF, a ride all 256."
  },
  {
   "address": 2048,
   "type": "line",
   "text": "The character set of the text screen at $0400, which shows the status lines, the title's text and the hall of fame: ninety-six characters, $0800-$0AFF, in the order of the C64's lower-case set, a to z at $01-$1A, digits at $30-$39 and capitals at $41-$5A. Besides the letters it draws the peace token's four quarters ($1B-$1E), the arrow mark ($22), a solid block ($40) and small figures and faces for the bars ($23-$26, $2A, $2B)"
  },
  {
   "address": 2816,
   "type": "line",
   "text": "Ride 1's obstacles, pairs of a step along the map buffer and an object number from ride_objects (0 for none), ended by $FF at $0B31; place_object lays each one in"
  },
  {
   "address": 2866,
   "type": "line",
   "text": "Sixty-two bytes after ride 1's list that nothing reads, in the same form of step and object pairs: $FF then 0 for most, and a few objects between"
  },
  {
   "address": 2928,
   "type": "line",
   "text": "The train's obstacles, pairs of a step and an object number in the same form, ended by $FF at $0BA3"
  },
  {
   "address": 2980,
   "type": "line",
   "text": "Ninety-two bytes after the train's list that nothing reads: $AA and $FF fillers, then pairs that look like a picture's packed screen colours"
  },
  {
   "address": 3072,
   "type": "line",
   "text": "The game's entry: the loader jumps here when the tape has loaded, and a reset comes here through the CBM80 vectors at $8000. Turns the sprites off, copies three sprite shapes from $4000-$40BF into the stack page at $0101-$01C0, where unpacking a picture never reaches them (build_ride_screen copies them back to $7300), makes the border black, sets stage to 4 (the title) and runs on into show_picture."
  },
  {
   "address": 3099,
   "type": "line",
   "text": "Shows the picture for the stage in stage ($907B) and starts that stage. Jumped to from everywhere a stage ends, so it resets the stack pointer to $DF. Points BRK at brk_handler, installs irq_idle on raster line $D8 with CIA 1's interrupts off, wipes the bank-1 screen, sprites and bitmap ($4400-$7FFF) and colour RAM (clear_bank1), looks the picture up in picture_table and relocates the three addresses in its header, then unpacks its screen colours to $4400 and its colour-RAM nibbles to $8010 (unpack_runs), spreads the nibbles over colour RAM, unpacks its bitmap to $6000 (unpack_bitmap) and the sprite shapes packed under the I/O area at $D000 to $4800-$5FFF (unpack_rle), and goes on to start_stage."
  },
  {
   "address": 3109,
   "type": "line",
   "text": "X = $DF, the stack pointer this routine sets at $0C5E"
  },
  {
   "address": 3150,
   "type": "line",
   "text": "drawing_picture = $FF while the screen is wiped, which keeps irq_top from setting the background colour"
  },
  {
   "address": 3163,
   "type": "line",
   "text": "A picture's entry in picture_table is its address less one. Byte +0 is not read; bytes +1 to +6 are three addresses, assembled as if the picture lay at $A000, which this loop moves to where it really is: the start of its screen colours, of its colour-RAM nibbles, and the end of those nibbles. The bitmap's packed stream starts at +8."
  },
  {
   "address": 3247,
   "type": "line",
   "text": "VIC bank 1 ($4000-$7FFF), bitmap mode, multicolour, screen $4400 and bitmap $6000, dark grey background"
  },
  {
   "address": 3351,
   "type": "line",
   "text": "Each byte of the nibble buffer at $8010 makes two colour-RAM cells, the high nibble first, until colour RAM ends at $DBFF"
  },
  {
   "address": 3432,
   "type": "line",
   "text": "The picture's sprite shapes: packed at $D000 under the I/O area, unpacked to $4800-$5FFF"
  },
  {
   "address": 3460,
   "type": "line",
   "text": "Unpacks a picture's bitmap from the stream at (zpa_26) to (zpa_28), reading each byte with every ROM and the I/O area switched out, so the stream can lie under them. A byte other than $00, $55, $AA or $FF is copied as it is; one of those four is followed by a count, and is written that many times (a count of 0 means 256). Waits a little after every byte it writes (short_delay), so the picture appears as it is unpacked. Stops when the destination passes $7F3F, the end of the bitmap at $6000, or the source reaches the address in unpack_end ($90E8)."
  },
  {
   "address": 3579,
   "type": "line",
   "text": "Unpacks a stream of pairs, a count then a value, from (zpa_26) to (zpa_28): writes the value count times (0 means 256) until the source reaches the address in unpack_end ($90E8). Used for a picture's screen colours and for its colour-RAM nibbles. If the destination ever reaches page $CF it jumps to the KERNAL's reset routine at $FCE2, which restarts the machine; a picture's destinations are $4400 and $8010, so this never happens with the game's own pictures."
  },
  {
   "address": 3633,
   "type": "line",
   "text": "Waits a few dozen cycles (seven turns of a loop), keeping A: the pause after each byte unpack_bitmap writes."
  },
  {
   "address": 3644,
   "type": "line",
   "text": "The vertical fine scroll the raster handlers give $D011 (its low three bits): 3 on the title and in a stage's status lines; on a ride 3, 2 or 0 by level, which lifts the whole ride screen a line or three"
  },
  {
   "address": 3645,
   "type": "line",
   "text": "The obstacle band's horizontal fine scroll, 0 to 7, written to $D016 by irq_ride_4"
  },
  {
   "address": 3646,
   "type": "line",
   "text": "The fine scroll of the train's rows, or of ride 1's hills, 0 to 7, written by irq_ride"
  },
  {
   "address": 3647,
   "type": "line",
   "text": "Sprite 0's x, copied to $D000 by irq_bottom: the top of the archer or the Marshall; on a ride, the other half of the rider when he is thrown"
  },
  {
   "address": 3648,
   "type": "line",
   "text": "Sprite 0's y: $AA for the standing figure; marshall_dies drops it as he falls"
  },
  {
   "address": 3649,
   "type": "line",
   "text": "Sprite 1's x: the middle of the figure; the rider on a ride"
  },
  {
   "address": 3650,
   "type": "line",
   "text": "Sprite 1's y: $B1 for the standing figure"
  },
  {
   "address": 3651,
   "type": "line",
   "text": "Sprite 2's x: the bottom of the figure; the first of the horse's six sprites on a ride"
  },
  {
   "address": 3652,
   "type": "line",
   "text": "Sprite 2's y: $BF for the standing figure"
  },
  {
   "address": 3653,
   "type": "line",
   "text": "Sprite 3's x: the first duck, or the first gunman; the sprites from here on are indexed from it"
  },
  {
   "address": 3654,
   "type": "line",
   "text": "Sprite 3's y: the first duck's height, or the first gunman's; a hit duck falls to $AE"
  },
  {
   "address": 3655,
   "type": "line",
   "text": "Sprite 4's x: the second duck, or the second gunman"
  },
  {
   "address": 3656,
   "type": "line",
   "text": "Sprite 4's y: the second duck's or the second gunman's"
  },
  {
   "address": 3657,
   "type": "line",
   "text": "Sprite 5's x: the third duck, or the third gunman"
  },
  {
   "address": 3658,
   "type": "line",
   "text": "Sprite 5's y: the third duck's or the third gunman's"
  },
  {
   "address": 3659,
   "type": "line",
   "text": "Sprite 6's x: the arrow, which a hit duck carries eight pixels to its left; the fourth gunman"
  },
  {
   "address": 3660,
   "type": "line",
   "text": "Sprite 6's y: the arrow, ten lines above a hit duck; the fourth gunman's"
  },
  {
   "address": 3661,
   "type": "line",
   "text": "Sprite 7's x: the sight, where the arrow or the bullet goes"
  },
  {
   "address": 3662,
   "type": "line",
   "text": "Sprite 7's y: the sight's"
  },
  {
   "address": 3663,
   "type": "line",
   "text": "The eight sprites' ninth x bits, copied to $D010: a sprite past x 255 has its bit set"
  },
  {
   "address": 3664,
   "type": "line",
   "text": "Which sprites show, copied to $D015"
  },
  {
   "address": 3665,
   "type": "line",
   "text": "The border's colour, copied to $D020"
  },
  {
   "address": 3666,
   "type": "line",
   "text": "The background colour, copied to $D021 (irq_top sets it again on the bitmap)"
  },
  {
   "address": 3667,
   "type": "line",
   "text": "The first extra background colour, copied to $D022: 8 on a ride"
  },
  {
   "address": 3668,
   "type": "line",
   "text": "The second extra background colour, copied to $D023: 7 on a ride; $0E55, the third, is copied to $D024"
  },
  {
   "address": 3670,
   "type": "line",
   "text": "The sprites' first shared multicolour, copied to $D025"
  },
  {
   "address": 3671,
   "type": "line",
   "text": "The sprites' second shared multicolour, copied to $D026"
  },
  {
   "address": 3672,
   "type": "line",
   "text": "Sprite 0's colour, copied to $D027"
  },
  {
   "address": 3673,
   "type": "line",
   "text": "Sprite 1's colour, copied to $D028"
  },
  {
   "address": 3674,
   "type": "line",
   "text": "Sprite 2's colour, copied to $D029; the sprites' colours from here on are indexed from it"
  },
  {
   "address": 3675,
   "type": "line",
   "text": "Sprite 3's colour, copied to $D02A: a gunman turns white when he takes a place and when he is hit"
  },
  {
   "address": 3679,
   "type": "line",
   "text": "Sprite 7's colour, copied to $D02E: the sight, flipped between black and white every frame by irq_bottom so it flickers"
  },
  {
   "address": 3681,
   "type": "line",
   "text": "Sprite 0's shape, copied to $47F8 by irq_bottom ($43F8 on a ride)"
  },
  {
   "address": 3682,
   "type": "line",
   "text": "Sprite 1's shape: the archer's arm takes $50 to $54 for the arrow's angle; on a ride the rider, $CA or $CB"
  },
  {
   "address": 3683,
   "type": "line",
   "text": "Sprite 2's shape; on a ride the first of the horse's six (sprites 2 to 7)"
  },
  {
   "address": 3684,
   "type": "line",
   "text": "Sprite 3's shape: the first duck's wings ($58-$5B), or in the shoot-out the first gunman's own shape, 1 ($4040), or a puff of dust ($4D-$4F); on a ride one of the horse's six shapes. The pointers from here on are indexed from it"
  },
  {
   "address": 3685,
   "type": "line",
   "text": "Sprite 4's shape: the second duck's wings, or the second gunman's shape, 2 ($4080), or a puff of dust; on a ride one of the horse's shapes"
  },
  {
   "address": 3686,
   "type": "line",
   "text": "Sprite 5's shape: the third duck's wings, or the third gunman's shape, 3 ($40C0), or a puff of dust; on a ride one of the horse's shapes"
  },
  {
   "address": 3687,
   "type": "line",
   "text": "Sprite 6's shape: 1 ($4040) for the arrow, whose rows duck_loop rewrites for its angle; the fourth gunman's shape, 4 ($4100), or a puff of dust; on a ride one of the horse's shapes"
  },
  {
   "address": 3688,
   "type": "line",
   "text": "Sprite 7's shape: 0 ($4000), the sight"
  },
  {
   "address": 3689,
   "type": "line",
   "text": "Seventeen bytes, $0E69-$0E79, copied to $D000-$D010 by irq_ride_sprites: the eight wide bars under a ride's band, x $1F to $6F 48 pixels apart at y $A7, with the last three past x 255"
  },
  {
   "address": 3706,
   "type": "line",
   "text": "Twenty-four bytes after the bars' positions that no instruction addresses, $FF then zeros"
  },
  {
   "address": 3730,
   "type": "line",
   "text": "Four bytes, $0E92-$0E95: the rider's position (sprites 0 and 1, x and y) kept while he is thrown in a fall and put back after"
  },
  {
   "address": 3734,
   "type": "line",
   "text": "Forty bytes after rider_saved that no instruction addresses, all 0"
  },
  {
   "address": 3774,
   "type": "line",
   "text": "The ride's position in the map buffer, low byte ($0EBF high): the first of the forty columns copy_map_window shows; $8010 at ride 1's start, $81A0 at the train's"
  },
  {
   "address": 3775,
   "type": "line",
   "text": "map_pos's high byte"
  },
  {
   "address": 3776,
   "type": "line",
   "text": "The distance ridden, BCD hundredths of a mile, low byte; $0EC1 holds the miles. 0.01 a character"
  },
  {
   "address": 3777,
   "type": "line",
   "text": "distance's miles: ride 1 is won at 4; the train's track loops from 0.00 back to 3.99"
  },
  {
   "address": 3778,
   "type": "line",
   "text": "The ride's obstacles, nine of them, $0EC2-$0FA2: five rows of five characters each (25 bytes), object 1 first, laid into the map buffer by place_object"
  },
  {
   "address": 4003,
   "type": "line",
   "text": "Ride 1's hills, four rows of fifteen characters, drawn twice across the top of the screen by build_ride_screen"
  },
  {
   "address": 4063,
   "type": "line",
   "text": "Ride 1's clouds, two rows of seven characters, drawn above the hills"
  },
  {
   "address": 4077,
   "type": "line",
   "text": "Where the rider sits when the horse faces left: x $AE ($0FED) and y $6A ($0FEE)"
  },
  {
   "address": 4078,
   "type": "line",
   "text": "the rider's y facing left"
  },
  {
   "address": 4079,
   "type": "line",
   "text": "Where the rider sits when the horse faces right: x $A8 ($0FEF) and y $6A ($0FF0), the y he lands at after a jump"
  },
  {
   "address": 4080,
   "type": "line",
   "text": "the rider's y facing right, and after a jump"
  },
  {
   "address": 4081,
   "type": "line",
   "text": "The rider's y in each of a jump's fourteen frames, from $62 up to $5A and back"
  },
  {
   "address": 4095,
   "type": "line",
   "text": "The y of the horse's six sprites in a jump: $5F for the top three and $74 for the bottom three, eight lines above where they run"
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The last five bytes of jump_horse_y: $5F for the third top sprite and $74 for the bottom three"
  },
  {
   "address": 4101,
   "type": "line",
   "text": "The horse's six sprites' positions facing left: x $93, $AB and $C3 at y $67 and at y $7C"
  },
  {
   "address": 4113,
   "type": "line",
   "text": "The horse's six sprites' positions facing right: the same, with each row's x in the other order"
  },
  {
   "address": 4125,
   "type": "line",
   "text": "The horse's frame, 0 to $1E, taken from the list for what it is doing; its six shapes start at horse_frame\u00d76+16"
  },
  {
   "address": 4126,
   "type": "line",
   "text": "Frames to ride 1's hills' next pixel of scroll: 4 less the horse's speed, so the hills move slower than the band"
  },
  {
   "address": 4127,
   "type": "line",
   "text": "The horse's speed, -3 to 3, negative to the left, 0 standing; changed a step at a time by the stick"
  },
  {
   "address": 4128,
   "type": "line",
   "text": "Frames to the next copy of the horse's shapes and positions to the VIC, from 4"
  },
  {
   "address": 4129,
   "type": "line",
   "text": "Set every fourth frame by irq_ride_control, cleared by the ride's loop when it takes the horse's next frame"
  },
  {
   "address": 4130,
   "type": "line",
   "text": "The shape being turned in set_horse_shapes, horse_frame\u00d76+16 up"
  },
  {
   "address": 4131,
   "type": "line",
   "text": "Frames before the stick can change the horse's speed again: 15 after a change, more when the train speeds up; a jump at speed 1 needs it below 9"
  },
  {
   "address": 4132,
   "type": "line",
   "text": "Not 0 while the horse turns round, which plays the frames at $1065"
  },
  {
   "address": 4133,
   "type": "line",
   "text": "Not 0 while the horse jumps, which plays the frames at $1056 with the heights at $0FF1"
  },
  {
   "address": 4134,
   "type": "line",
   "text": "Set when the speed changes and cleared every frame by irq_ride_control; nothing reads it"
  },
  {
   "address": 4135,
   "type": "line",
   "text": "The sprites that touched another sprite this frame, read from $D01E by irq_bottom: the arrow hitting a duck"
  },
  {
   "address": 4136,
   "type": "line",
   "text": "Which of sprites 5, 6 and 7, the horse's legs, touch the band this frame, from $D01F by irq_ride_sprites"
  },
  {
   "address": 4137,
   "type": "line",
   "text": "Not 0 while a fall is under way, so the collision test does not start another"
  },
  {
   "address": 4138,
   "type": "line",
   "text": "Twelve bytes no instruction addresses: $FF, 0, then 5, 9, 14 up to 45, steps of four and a half"
  },
  {
   "address": 4150,
   "type": "line",
   "text": "The rider's bob: flipped between 0 and $FF every second animation step; the rider's shape ($90EF) becomes $CB on a flip to $FF and $CA on a flip to 0"
  },
  {
   "address": 4151,
   "type": "line",
   "text": "Steps to the next flip of $1036, from 2"
  },
  {
   "address": 4152,
   "type": "line",
   "text": "The horse's frames while it stands, speed 0: $17, $18 and $19, three steps each, $FF to start again"
  },
  {
   "address": 4162,
   "type": "line",
   "text": "The horse's frames at one or two steps of speed: 9 to $11, one step each"
  },
  {
   "address": 4172,
   "type": "line",
   "text": "The horse's frames at full speed, three steps: 0 to 8, one step each"
  },
  {
   "address": 4182,
   "type": "line",
   "text": "The horse's frames in a jump: $12 to $16, three steps each but the first, two"
  },
  {
   "address": 4197,
   "type": "line",
   "text": "The horse's frames as it turns round: $1E down to $1A, three steps each"
  },
  {
   "address": 4213,
   "type": "line",
   "text": "Two bytes after the frame lists that no instruction addresses: $28 and $14, 40 and 20"
  },
  {
   "address": 4215,
   "type": "line",
   "text": "A credits line for the title's bottom row, forty screen codes: \" DESIGN AND PROGRAMMING BY JOHN DARNELL \""
  },
  {
   "address": 4255,
   "type": "line",
   "text": "The third credits line, forty screen codes: \"A MASTERTRONIC PRESENTATION\", centred"
  },
  {
   "address": 4295,
   "type": "line",
   "text": "The train's carriages, five rows of twenty characters ($10C7-$112A), drawn twice across the top of the screen by build_ride_screen"
  },
  {
   "address": 4395,
   "type": "line",
   "text": "The arrow's shape at nine angles, sixteen bytes each: eight rows of two bytes, which duck_loop copies into the bottom rows of sprite shape 1 ($4067-$407E)"
  },
  {
   "address": 4539,
   "type": "line",
   "text": "The duck being moved, 2 down to 0"
  },
  {
   "address": 4540,
   "type": "line",
   "text": "duck_index\u00d72: the duck's x and y in the shadow registers, from spr3_x"
  },
  {
   "address": 4541,
   "type": "line",
   "text": "The ducks' wing shapes, $58 to $5B, and $FF to start again"
  },
  {
   "address": 4546,
   "type": "line",
   "text": "Where the three ducks start a stage: x $30 y $30, x $70 y $50, x 0 y $A0"
  },
  {
   "address": 4552,
   "type": "line",
   "text": "The three ducks' places in wing_frames"
  },
  {
   "address": 4555,
   "type": "line",
   "text": "Passes of the ducks' loop to the falling duck's next increase of fall_speed, from 3"
  },
  {
   "address": 4556,
   "type": "line",
   "text": "Lines a hit duck drops each pass of the ducks' loop, 0 at the hit, one more every three passes"
  },
  {
   "address": 4557,
   "type": "line",
   "text": "Passes of the ducks' loop a hit duck lies on the ground, from 5, before it is counted"
  },
  {
   "address": 4558,
   "type": "line",
   "text": "The three ducks' state: 0 flying, $FF hit and falling"
  },
  {
   "address": 4559,
   "type": "line",
   "text": "duck_falling for duck 1"
  },
  {
   "address": 4560,
   "type": "line",
   "text": "duck_falling for duck 2"
  },
  {
   "address": 4561,
   "type": "line",
   "text": "Sets up stage 1, the ducks in the canyon, and runs it: ends by jumping to duck_loop, whose RTS returns to start_play's caller and so to ride 1. Clears ducks_killed, ducks_home and tokens, sets ducks_per_token by level (3, 4 or 5), gives ten arrows (BCD $10), blanks the status lines, walks the archer in from the left edge (walk_right) until his sprites pass x 255 and stands him at x 257, places the three ducks from $11C2, turns on the archer, the ducks and the sight, writes the status text ($8FB9: \"Birdies Killed\" and \"Birdies Home\") and \"Score\", draws the ten arrows, starts the drum (effects bit 4), adds 10 points and puts the sight at x $A0, y $A0."
  },
  {
   "address": 4817,
   "type": "line",
   "text": "Forty-seven bytes after start_ducks that nothing runs or reads"
  },
  {
   "address": 4864,
   "type": "line",
   "text": "The title picture's header: its entry in picture_table points here. Bytes 1 to 6 are the addresses of its screen colours, its colour-RAM nibbles and their end, assembled for $A000 and moved by show_picture ($1806, $18D0, $1946)"
  },
  {
   "address": 4872,
   "type": "line",
   "text": "The title's bitmap, packed for unpack_bitmap ($00, $55, $AA and $FF followed by a count): the \"Welcome to KANE\" sign's upper half, character rows 0 to 11 and the first eleven cells of row 12, unpacked to $6000"
  },
  {
   "address": 5745,
   "type": "line",
   "text": "The title's packed bitmap from row 12, column 11, to row 24: the rest of the sign and the black below it"
  },
  {
   "address": 6150,
   "type": "line",
   "text": "The title's screen colours, packed for unpack_runs (pairs of a count and a value): the two colours of each 4 by 8 cell, unpacked to $4400"
  },
  {
   "address": 6352,
   "type": "line",
   "text": "The title's colour-RAM colours, packed in pairs of a count and a byte that holds two cells' colours, the high nibble first: spread over $D800-$DBFF by show_picture"
  },
  {
   "address": 6470,
   "type": "line",
   "text": "Ten bytes before duck_loop that nothing runs or reads"
  },
  {
   "address": 6480,
   "type": "line",
   "text": "The ducks' loop, one pass every three to four frames (delay_count from $19, about 57,600 cycles; 3.7 frames a pass measured live): moves the ducks (move_ducks), reads the stick and moves the sight six pixels a step, from its start at x 160, y 160 to x 28-184 and y 46-160. With no arrow in the air it sets the archer's pose and the arrow's angle from the sight's position, and fire shoots: one arrow less, the arrow starts at x 255, y 170, and its step is the distance to the sight over 16 when the sight is 112 pixels or more to its left and over 8 when it is nearer, so an arrow shot at a sight high above the archer reaches it in half the passes and flies faster. The arrow's shape is drawn for its angle from the nine shapes at $112B, and the whistle sound starts. A shot whose upward step was 9 or more makes the next one wait ten passes (shot_wait). The stage ends when 39 ducks have got home or the arrows run out: with no token it is game over and the title; otherwise the archer walks off to the right, the bonus is tokens\u00d73 lots of 99, counted onto the score, and duck_loop returns."
  },
  {
   "address": 6797,
   "type": "line",
   "text": "No arrow in the air: the angle. zpa_11 = (190 - sight y) \u00d7 16 over zpa_13 = (255 - sight x)/2 + 26 (divide); a quarter of the quotient, at most 8, is the arrow's frame, and half of it picks the archer's arm: $54 below 4, $52 below 6, $50 below 9, $51 above"
  },
  {
   "address": 6895,
   "type": "line",
   "text": "The end test: 39 home (BCD), or no arrows left"
  },
  {
   "address": 7004,
   "type": "line",
   "text": "Moves the arrow by its step, up and left (arrow_dx, arrow_dy), unless a hit duck is falling, when the arrow stays where it is. Once it is level with the sight or past it, it flies on until it leaves the top or left of the screen (y below 20 or x below 10); then it is taken away and the sight shows again, and a steep arrow (upward step 9 or more) sets shot_wait to 10."
  },
  {
   "address": 7093,
   "type": "line",
   "text": "Moves the three ducks (move_duck for duck 2, 1 and 0)."
  },
  {
   "address": 7107,
   "type": "line",
   "text": "Moves duck duck_index (sprite 3, 4 or 5), once a pass of the ducks' loop. A duck that is flying and touches the arrow (the VIC's sprite collision bits, kept in collisions by irq_bottom) is hit: it plays the hit sample (play_hit) and scores 99 on level 1, 149 on level 2 and 198 on level 3. A hit duck falls faster and faster (fall_speed, one more every three passes) with the arrow stuck in it; when it reaches the ground (y 174) and five passes more, ducks_killed goes up by one (it stops at 30), the tokens become ducks_killed over ducks_per_token and the new token is drawn, an arrow is given back (up to ten), and the duck starts again from the left. A flying duck flaps its wings (the shapes at $11BD) and moves right by its speed; when it passes x 496, well off the right of the screen, ducks_home goes up by one and it starts again. A duck starts at x 0 at a height of 11\u00d7(5 to 15), not the height of another duck, with speed 2 on level 1, 2 or 3 on level 2 and 2 to 4 on level 3, all chosen from CIA 1's timer."
  },
  {
   "address": 7224,
   "type": "line",
   "text": "The hit duck has landed: the count, the tokens, the arrow back"
  },
  {
   "address": 7360,
   "type": "line",
   "text": "The duck flies: the next wing shape from $11BD, the list ending with $FF"
  },
  {
   "address": 7407,
   "type": "line",
   "text": "Off the right edge: one more duck home, drawn as a bar"
  },
  {
   "address": 7446,
   "type": "line",
   "text": "The duck starts again: x 0, a speed, a height"
  },
  {
   "address": 7574,
   "type": "line",
   "text": "Fifty-six bytes before draw_token that no code reaches: an unused routine that waits for the raster to wrap and then for two lines to pass ($1D96-$1DB4), and one that prints A as two digits at $0770 and $0771 ($1DB5-$1DCD)"
  },
  {
   "address": 7605,
   "type": "line",
   "text": "Prints the BCD byte in A as two digits at $0770+Y and $0771+Y, row 22, the first left out when it is 0. Never called."
  },
  {
   "address": 7630,
   "type": "line",
   "text": "Draws peace token number tokens as a two-by-two block of characters $1B-$1E in yellow, with the carry set, at column 2\u00d7tokens+8 on row 23 ($07A1), or on row 22 ($0779) in a riding stage (in_ride set). With the carry clear it blanks the place after it instead, the token just lost."
  },
  {
   "address": 7729,
   "type": "line",
   "text": "Draws the arrows (or bullets) left as a row of the mark in arrow_char on row 21 from column 16, one for each of arrows (BCD), spaces for the rest of the ten, in purple."
  },
  {
   "address": 7781,
   "type": "line",
   "text": "Adds the BCD byte in A to pending ($8FA4-$8FA7), the points still to be counted onto the score. Returns with the zero flag from the top byte's add."
  },
  {
   "address": 7815,
   "type": "line",
   "text": "Draws a count as a bar: the BCD byte in A, as a number, is the count of cells filled with character bar_char in colour bar_colour, from (zpa_26) on the screen and (zpa_28) in colour RAM, bar_width cells to a row before it goes on in the next row."
  },
  {
   "address": 7874,
   "type": "line",
   "text": "The rest of move_duck: moves the duck right by its speed, setting its position bit past 255; a falling duck drops by fall_speed and carries the arrow ten lines above and eight pixels left of it"
  },
  {
   "address": 7940,
   "type": "line",
   "text": "Blacks out the background and turns the sprites off, clears the bitmap from $7FFF down to $6000 a byte at a time with a pause after each, so the picture is wiped from the bottom up, with drawing_picture set, then clears colour RAM (clear_colours)."
  },
  {
   "address": 7984,
   "type": "line",
   "text": "Waits until pending is 0: until the score has counted every point up."
  },
  {
   "address": 7995,
   "type": "line",
   "text": "Starts a riding stage, ride 1 (stage 1) or the train (stage 2), and runs it. Also the restart: F1 during a ride and a lost token come back here. Installs irq_idle, sets in_ride, blanks the screen and the sprites, clears the ride's counters, puts the ride at its start (map_pos $8010, distance 0.00 for ride 1; $81A0 and 4.00 for the train), starts the tune (the train has the train's sound instead: music_off and hoofbeats set), builds the screen (build_ride_screen, copy_map_window), writes \"Score\", installs irq_ride, sets the train's coach count by level (3, 7 or 11) and draws the tokens. The train gets its status text ($9043) and its sound's settings; ride 1 its two lines ($900B, $9027: \"Time Remaining\" and \"Distance To Go\"). Sets two minutes on the clock and adds 2 points, the A left from setting the minutes. Then runs the loop at ride_loop."
  },
  {
   "address": 8012,
   "type": "line",
   "text": "Raster handler that acknowledges the interrupt and returns: installed while a picture or a stage is set up."
  },
  {
   "address": 8020,
   "type": "line",
   "text": "The ride's set-up proper"
  },
  {
   "address": 8080,
   "type": "line",
   "text": "flip_base $40: the ride's shapes are mirrored from $4000"
  },
  {
   "address": 8192,
   "type": "line",
   "text": "CLI. The copy in copy_map_window names $2000 in its two instructions, which it writes over before they run, so the tracer took this address for a table"
  },
  {
   "address": 8350,
   "type": "line",
   "text": "The ride's main loop. Nothing on its ordinary path waits, so it runs many times a frame (54 passes a frame on the train, measured live); the work done once a frame is in the raster handlers. Once the train is caught or 20 coaches ahead, every pass also clears the obstacles again (clear_obstacles), which slows a pass to about two and a half frames. F1 restarts the ride (start_ride) with no token lost and the clock and distance back at the start. For ride 1 it goes to ride1_step. For the train: the hoofbeats' volume rises as the coach count falls, the distance wraps from 0.00 back to 3.99 (the track loops: the train ride has no clock), as the hoofbeats' period ($9820) shortens the train speeds up (train_speed -1 at $13, -2 at $0E, and at $0B the horse's speed is set to -1, each with fifty frames before the stick works again), and when the coach count reaches 0 the train is caught: the obstacles are cleared, the engine is drawn in on the left from the columns at $8F5D, and the train slows until it stops. Then the bonus: 30, 50 or 70 lots of 99 by level, and tokens\u00d75 lots of 99 three times; and the next level (ducks, stage 1, level up) or after level 3 the ending (stage 3), or the title when the ride was a practice."
  },
  {
   "address": 8501,
   "type": "line",
   "text": "The coach count is 0: the train is caught"
  },
  {
   "address": 8720,
   "type": "line",
   "text": "The train has stopped: the bonus and the next stage"
  },
  {
   "address": 8817,
   "type": "line",
   "text": "After the train: the next level's ducks (stage 1, level + 1), or after level 3 the ending (stage 3)"
  },
  {
   "address": 8843,
   "type": "line",
   "text": "The train's ride, a pass of ride_loop. The track loops: at 4.00 miles the distance goes back to 0.01 (and at 0.00, in ride_loop, on to 3.99). When the coach count reaches 20 the obstacles are cleared, on every pass from then on, and $3B is set to the count, which stops the end of each scrolling train row being wrapped round; from 22, every ten passes (about 25 frames, as clear_obstacles slows each pass) the hoofbeats grow quieter and the horse slows a step, and fifty passes after it stands a token is lost (game over with none left, otherwise the ride starts again). Otherwise each time the count reaches a new low, 49, 74 or 75 points by level are added three times, and the count is shown on row 17."
  },
  {
   "address": 9011,
   "type": "line",
   "text": "Ride 1. At 4.00 miles the ride is won: the time bonus adds 15, 20 or 25 points by level (BCD) a number of times held in zpa_10. With a minute or more left that number is the clock's seconds, a BCD byte, plus $50 as a plain binary sum: 128 times at 1.30, 168 at 1.58. With under a minute left nothing sets it, and zpa_10 still holds the 0 that the end of unpack_rle or of a sample left there, so the loop runs 256 times, the biggest bonus. Then the shoot-out follows (stage 0). When the clock reaches 0.00 a token is lost: game over if it was the last, otherwise the ride starts again. Otherwise shows the distance to go, 4.00 less the distance, on row 17."
  },
  {
   "address": 9154,
   "type": "line",
   "text": "A fall (falls set by the collision test in irq_ride_sprites): the horse stops, one token less, the rider (sprite 1) is thrown in an arc in eight steps, the sample at $9E00 plays (play_whinny), and after thirty frame_delay waits, with no token left, it is game over. Otherwise the ride moves on three characters at a time the way the horse faced until the horse touches nothing. \"F1 WILL RESTART LEVEL\" then flashes on row 16"
  },
  {
   "address": 9533,
   "type": "line",
   "text": "Game over from a ride: wipes the bank-1 screen (clear_bank1), turns the music back on and goes to the title."
  },
  {
   "address": 9692,
   "type": "line",
   "text": "The horse's animation, every fourth frame (counted by irq_ride_control): the rider's shape changes every other step, so he bobs in the saddle, and the horse's frames come from the list for what it is doing: standing ($1038), turning round ($1065), one or two steps of speed ($1042), three ($104C), or jumping ($1056, with the rider's heights at $0FF1)"
  },
  {
   "address": 10056,
   "type": "line",
   "text": "Turns the six shapes of the horse's current frame (horse_frame\u00d76+16 on) to face walk_dir (flip_shape where they do not) and sets them as its animation (set_horse_frames)."
  },
  {
   "address": 10107,
   "type": "line",
   "text": "JMP ride_loop"
  },
  {
   "address": 10110,
   "type": "line",
   "text": "Puts the horse facing right: its sprites' positions from $1011, the rider's two shapes ($CA, $CB) turned to face right, and the rider's place from $0FEF."
  },
  {
   "address": 10154,
   "type": "line",
   "text": "Puts the horse facing left: positions from $1005, the rider's shapes turned, and the rider's place from $0FED."
  },
  {
   "address": 10198,
   "type": "line",
   "text": "Waits for the ride's frame to end twice: until the IRQ vector is irq_ride and then is not, two times over."
  },
  {
   "address": 10227,
   "type": "line",
   "text": "Raster handler of the rides, line 1 (the top): VIC bank 1, multicolour text from the character set at $7800 with the screen at $4000, the train's fine scroll (train_scroll) and the screen's vertical scroll, the shadow sprite registers copied to the VIC with the pointers at $43F8, background blue, multicolours orange and brown (yellow on the train), sprites in front. On the train it swaps two of the character set's pieces every frame ($7BC8 and $7CE0, the wheels and the smoke); on ride 1 it counts the clock down a second every 50 frames and shows it on row 17 (zpa_48.zpa_47 minutes and seconds, BCD). Then counts the score (count_score) and plays the music (play_music). Next handler line $55."
  },
  {
   "address": 10483,
   "type": "line",
   "text": "Raster line $55: the multicolour bit set in $D016. Next handler line $6A."
  },
  {
   "address": 10514,
   "type": "line",
   "text": "Raster line $6A: the background orange. Next handler line $7D."
  },
  {
   "address": 10544,
   "type": "line",
   "text": "Raster line $7D: multicolours yellow and brown, and the obstacle band's fine scroll (band_scroll) in $D016. Next handler line $81."
  },
  {
   "address": 10593,
   "type": "line",
   "text": "Raster line $81: every sprite behind the background, and the sprite-to-background collisions cleared by reading them. Next handler line $9A."
  },
  {
   "address": 10624,
   "type": "line",
   "text": "Raster line $9A: reuses all eight sprites lower down the screen, doubled in width, as solid bars of shape 15 in the border's colour at the positions in $0E69. Checks the sprites' collisions with the background: when sprites 5, 6 or 7 have touched it, no fall is under way, and the fifteen characters at $4213 (row 13 from column 11) are all 0, it sets falls and freezes the horse's shapes. Next handler line $A8."
  },
  {
   "address": 10743,
   "type": "line",
   "text": "Raster line $A8: the text screen for the status lines (VIC bank 0, character set $0800, screen $0400, black). Next handler line $AF."
  },
  {
   "address": 10789,
   "type": "line",
   "text": "Raster line $AF: sprites off. Every fourth frame copies the horse's new shapes ($90EE) and positions ($91B6) to the shadow registers. Reads the stick: left and right change the horse's speed one step (from -3 to 3; 0 is standing) with fifteen frames between changes, and fire starts a jump while the horse is moving (at speed 1 either way, not in the six frames after a change of speed). Then scrolls the obstacle band by the speed, a character at a time moving map_pos and the distance (0.01 mile a character; ride 1 stops at 4.00 miles going right and at 0.00 going left), and on the train scrolls the train's rows by the difference of the horse's speed and the train's (train_speed), the coach count changing by one every twenty characters. Next handler irq_ride on line 1."
  },
  {
   "address": 11438,
   "type": "line",
   "text": "BIT $1EA5: hides the LDA $1E at $2CAF, where a train that is not stopping branches in to wrap the row's first character round; a stopping train puts a 0 there instead"
  },
  {
   "address": 11483,
   "type": "line",
   "text": "Turns the BCD byte in A into two digit codes for the screen ($30-$39): the low digit's in A, the high digit's in X."
  },
  {
   "address": 11501,
   "type": "line",
   "text": "Draws the peace tokens on the status line, one icon for each token from 1 up to the count in tokens ($8FAC), by calling draw_token with the carry set for each. It always draws the first, so when tokens is 0 it draws one and leaves tokens at 1."
  },
  {
   "address": 11528,
   "type": "line",
   "text": "Builds the screen of a riding stage, ride 1 (stage 1) or the train (stage 2). Makes sprite shape 15 ($03C0 and $43C0, both VIC banks) a solid bar 24 pixels wide and 8 lines high, sets the shadow colours of $D021-$D023 to 8, 7 and 9, clears the map buffer, clears the screen at $4000-$42FF, colours the top five rows 1 (8 for the train) and the rest $0D, then lays the stage's objects into the map buffer from its placement list ($0B00 for ride 1, $0B70 for the train: pairs of a step to move along the buffer and an object number, 0 for none, $FF to end; place_object). Copies the ride's character set from under the KERNAL ($F6C0-$FEBF) to $7800, draws the scenery (the train's twenty-by-five carriages twice across, with a row of $77 below, or ride 1's hills and clouds), unpacks the ride's sprite shapes from $DA50 to $4400-$77FF, puts back the three shapes kept in the stack page at $7300, fills the first page of the text screen with $FF, and sets up the sprites: the horse's frames (set_horse_frames), positions from $1005, colours, sprite 1 multicolour, every sprite behind the background, and the falls count ($8FAD) to 0."
  },
  {
   "address": 11878,
   "type": "line",
   "text": "Ride 1's scenery: four rows of fifteen characters from $0FA3 at row 5 columns 0 and 25, then two rows of seven from $0FDF at row 3 columns 0 and 25"
  },
  {
   "address": 12024,
   "type": "line",
   "text": "Both stages: the ride's sprite shapes and the three kept in the stack page, then the sprites' starting state"
  },
  {
   "address": 12155,
   "type": "line",
   "text": "Copies ride object number A (from 1) out of the object table at $0EC2, 25 bytes each, as five rows of five characters into the map buffer at (zpa_26). The buffer's rows are 400 bytes apart, the length of the ride. Keeps zpa_26 and zpa_27."
  },
  {
   "address": 12241,
   "type": "line",
   "text": "Multiplies zpa_05 by zpa_06, both unsigned bytes: the product in zpa_07 (low byte) and zpa_08 (high byte). Leaves zpa_06 at 0."
  },
  {
   "address": 12270,
   "type": "line",
   "text": "Divides the 16-bit number in zpa_11 (low) and zpa_12 (high) by zpa_13 by subtracting it over and over: the quotient in zpa_14, the remainder in zpa_15 and in A. If the quotient passes 255 (a divisor of 0 does that) it runs on into show_timer_hex below instead of returning."
  },
  {
   "address": 12302,
   "type": "line",
   "text": "Prints the low byte of CIA 1's timer A as two hex digits (print_hex) at $0749 plus that same value, again and again until the low byte reads 0, then returns. Reached only by falling out of divide when the quotient passes 255; the aiming code's divisor is never 0, so it does not run in play."
  },
  {
   "address": 12315,
   "type": "line",
   "text": "Draws the ride's obstacle band: copies forty characters from each of the map buffer's five rows, starting at the ride's position in map_pos ($0EBE), to screen rows 10 to 14 ($4190-$425F). Keeps its source and destination in its own instructions: map_src at $3036 and band_dest at $3039."
  },
  {
   "address": 12342,
   "type": "line",
   "text": "The operand of the copy's LDA: the address in the map buffer of the row being copied, set from map_pos and moved on 400 bytes a row by copy_map_window"
  },
  {
   "address": 12343,
   "type": "line",
   "text": "map_src's high byte"
  },
  {
   "address": 12345,
   "type": "line",
   "text": "The operand of the copy's STA: the screen row being written, $4190 first, moved on forty bytes a row by copy_map_window"
  },
  {
   "address": 12346,
   "type": "line",
   "text": "band_dest's high byte"
  },
  {
   "address": 12387,
   "type": "line",
   "text": "Picks the six sprite shapes from A\u00d76+16 on and stores them as two three-frame animations: shapes 0, 2 and 4 of the six in $90F0-$90F2 and shapes 1, 3 and 5 in $90F3-$90F5."
  },
  {
   "address": 12422,
   "type": "line",
   "text": "Unpacks a stream from (zpa_26) to (zpa_28), reading it with every ROM and the I/O area switched out, until the destination reaches the address in zpa_32 and zpa_33. A byte other than $00 or $FF is copied; $00 or $FF is followed by a count of how many times to write it. Unpacks a picture's sprite shapes ($D000) and a riding stage's ($DA50)."
  },
  {
   "address": 12529,
   "type": "line",
   "text": "Clears the bank-1 screen, sprite shapes and bitmap ($4400-$7FFF) a byte at a time, waiting A turns of a loop after each byte, then runs on into clear_colours."
  },
  {
   "address": 12558,
   "type": "line",
   "text": "Sets every cell of colour RAM ($D800-$DBFF) to 0, black. The end of clear_bank1, also jumped to on its own."
  },
  {
   "address": 12582,
   "type": "line",
   "text": "Clears $8010-$880F, eight pages counted from $8010: the riding stages' map buffer, five rows of 400 bytes at $8010-$87DF, and the 48 bytes after it, up to the byte before gunman_step ($8810)."
  },
  {
   "address": 12607,
   "type": "line",
   "text": "Sets to 0 every byte from 5 to $5D in $8000-$87FF, keeping 0 to 4 and $5E up: takes the obstacles out of the map buffer. It starts at $8000, below the buffer, so it also clears bytes of the CBM80 header there: the high bytes of the two vectors ($8001, $8003, both $0C), the \"8\" and \"0\" of the signature ($8007, $8008) and $800D. Until the next stage writes the header again, a reset finds no signature and starts BASIC, and the game is lost."
  },
  {
   "address": 12642,
   "type": "line",
   "text": "RTI: the NMI handler while the game runs, so the RESTORE key does nothing."
  },
  {
   "address": 12643,
   "type": "line",
   "text": "Runs after show_picture. Points BRK at brk_handler and NMI at nmi_ignore, writes the CBM80 signature with both vectors at $0C00 into $8000-$8008 (so a reset restarts the game), clears music_off and practice, sets the bitmap screen's $D011 value ($3B) and the text screen's fine scroll (3), and goes by stage: 3 is the ending, which follows here, 4 the title (title_screen) and anything else start_play."
  },
  {
   "address": 12702,
   "type": "line",
   "text": "The ending. Starts the tune, clears the status lines, draws the tokens left, installs irq_bottom, and slows the tune at the places listed at $8E5D (twice: see there); then plays the ending's sample at $FCC0 (play_ending_sample), shows the ending text a line at a time from $8CAC (irq_bottom scrolls it), waits for the last line, waits $C2 times frame_delay (about ten seconds), clears the bitmap and goes to the title."
  },
  {
   "address": 12880,
   "type": "line",
   "text": "The title (stage 4). Installs irq_title, checks the last score against the hall of fame and takes the player's initials if it is in (check_high_score), clears the score, writes the title text ($8EF0-$8F5C), sets stage to 1 and starts the tune (start_tune). Then waits: F1 opens the practice menu, fire on the joystick in port 2 starts a game at level 1, F7 shows the hall of fame until fire is pressed, and every so often the bottom line changes between three credits lines."
  },
  {
   "address": 13032,
   "type": "line",
   "text": "F7: the hall of fame, with \"PRESS FIRE BUTTON\" under it, until fire on port 2; then back to the title"
  },
  {
   "address": 13066,
   "type": "line",
   "text": "The credits line on row 24 changes every 200 turns of the wait, in turn: the graphics credit at $3E3F (light blue), the line at $1077 (purple) and the line at $109F (light red)"
  },
  {
   "address": 13164,
   "type": "line",
   "text": "F1 on the title. Asks \"LEVEL 1 2 OR 3 ?\" and waits for 1, 2 or 3 (level), shows the four stages and waits for F1 (the ducks: stage 1 through show_picture), F3 (ride 1: stage 1 straight into the ride), F5 (the shoot-out: stage 0 through show_picture) or F7 (the train: stage 2 straight into the ride). practice was set by the F1 that came here, and show_picture's start_stage clears it again, so only the two rides start with it set."
  },
  {
   "address": 13361,
   "type": "line",
   "text": "Raster handler of the title, line 1: VIC bank 1, multicolour bitmap at $6000 with the screen at $4400, black border and background; next handler irq_title_text on line $AB; then plays the tune (play_music)."
  },
  {
   "address": 13418,
   "type": "line",
   "text": "Raster handler of the title, line $AB: VIC bank 0, text from the character set at $0800 with the screen at $0400, the text screen's fine scroll from text_scroll, sprites off; next handler irq_title on line 1."
  },
  {
   "address": 13475,
   "type": "line",
   "text": "Fire on the title: a new game at level 0 with the music off while show_picture draws the canyon"
  },
  {
   "address": 13487,
   "type": "line",
   "text": "Starts the stage in stage after its picture is drawn (the shoot-out, 0, or the ducks, 1). Clears the shoot-out's counters and the sprite expansion, priority and multicolour, places and colours the Marshall's sprites from $9091, $90C4 and $90D5, empties the gunmen's table, clears the sound chip (clear_sid), installs irq_bottom, and for stage 1 goes to start_ducks. For the shoot-out it draws the tokens and the score, walks the Marshall in from the left, writes the status line ($8FE2), puts the sight in the middle, gives him six bullets and runs the shoot-out's loop below."
  },
  {
   "address": 13818,
   "type": "line",
   "text": "The shoot-out's loop, one pass every two to three frames (frame_delay; 2.8 frames a pass measured live): reads the stick, runs the gunmen (gunmen_appear, gunmen_aim, dust_puffs) and then moves the Marshall and his sight: up and down move the sight three lines at a time, between y $30 and the Marshall's y; left and right walk the Marshall, six pixels a step (three for the first step after he has stood still), and the sight follows his x (walking off the left edge needs bit 0 of $0E4F, his position past 255); fire shoots if he stands still and has a bullet"
  },
  {
   "address": 13986,
   "type": "line",
   "text": "Fire: one bullet less, the gun raised for twelve passes of the loop (the shot is checked on the third, check_shot), the shot's sound"
  },
  {
   "address": 14132,
   "type": "line",
   "text": "Checks the Marshall's shot against each gunman that is showing (the sixteen slots at $914D), using the gunman's position at $9169 and the size of his shape from $91CA: a hit when the sight ($0E4D, $0E4E) is inside the box. A hit turns the gunman's sprite white and, the first time, plays the hit sample (play_hit), adds one to bad_guys_killed, takes one from bad_guys_left, and gives (level+1)\u00d72 lots of 99 points. The twelfth ($12 in BCD) ends the stage with a bonus, waits for it to be counted onto the score (wait_points) and goes to the train ride (stage 2). The bonus loop loads 5 into Y, which nothing uses, and repeats on a flag that the add leaves clear, so the bonus is 99 points for each level up to this one, (level+1)\u00d799. The BRK at $379A would stop the game if a slot were not in the table at $9165."
  },
  {
   "address": 14337,
   "type": "line",
   "text": "Waits by counting a 16-bit loop down from $1400 (frame_delay_lo, frame_delay_hi): about 46,000 of the processor's cycles, which with the interrupts and the cycles the video chip takes is between two and a half and three frames. Entered at $380B with frame_delay_hi set first, a shorter or longer wait."
  },
  {
   "address": 14347,
   "type": "line",
   "text": "Counts frame_delay_lo and frame_delay_hi ($90A2, $90A3) down to zero: the wait itself, entered here with frame_delay_hi already set."
  },
  {
   "address": 14358,
   "type": "line",
   "text": "Writes A as two hexadecimal digits in yellow at $0749+Y and $074A+Y, the status line, keeping A."
  },
  {
   "address": 14393,
   "type": "line",
   "text": "Turns a value 0-15 in A into a screen code: $30-$39 for 0-9, and 1-6, the codes of A-F, for 10-15."
  },
  {
   "address": 14403,
   "type": "line",
   "text": "Puts the figure's three sprites ($0E40, $0E42, $0E44 their y positions $AA, $B1 and $BF) in their standing shapes $3F, $41 and $40, with black and white colours. Used by the archer and the Marshall."
  },
  {
   "address": 14447,
   "type": "line",
   "text": "Moves the figure's three sprites left by the step in walk_step (6, or the value set before the call), animating them (walk_animate); the sight (sprite 7) takes the same x. Clears a sprite's position bit in $0E4F, and the sight's, when it passes 0. Does nothing while sprite 0 is at the left edge (x below 16 with no position bit). Resets walk_step to 6."
  },
  {
   "address": 14516,
   "type": "line",
   "text": "Moves the figure's three sprites right by walk_step, animating them; the sight (sprite 7) takes the same x. Sets a sprite's position bit in $0E4F, and the sight's, when it passes 255. In the shoot-out, once the Marshall is past x 383, off the right edge of the screen, his bullets are put back to six, and past x 399 he moves no further. Resets walk_step to 6."
  },
  {
   "address": 14610,
   "type": "line",
   "text": "Steps the walking figure's animation: every seventh call the three sprites take the shapes listed at $90BA-$90BC, the middle sprite's alternating between its listed shape and the one it shows less one; on the other calls each sprite shows its shape less one. Each shape is turned to face walk_dir first (face_shape)."
  },
  {
   "address": 14706,
   "type": "line",
   "text": "face_shape for the shape one below A."
  },
  {
   "address": 14714,
   "type": "line",
   "text": "Makes sure sprite shape A faces the way in walk_dir (1 left, $FF right), keeping A, X and Y. The way each shape faces is kept at $0400 plus the shape's low five bits, the top row of the text screen, which the bitmap covers; when it differs, the shape is mirrored where it lies (flip_shape, from flip_base $48: the shapes at $4800)."
  },
  {
   "address": 14742,
   "type": "line",
   "text": "Turns the figure to face left unless facing is already 1, the value it writes: from $FF (right) and from 0 (standing or firing). Its three sprites take the shapes listed at $90BA, each turned to face walk_dir, and the animation restarts."
  },
  {
   "address": 14773,
   "type": "line",
   "text": "Turns the figure to face right unless facing is already $FF, the value it writes. Its three sprites take the shapes listed at $90BD, the third then $2E, and the animation restarts."
  },
  {
   "address": 14809,
   "type": "line",
   "text": "Raster handler of the stages, line 216: switches to the text screen for the status lines (VIC bank 0, text from the character set at $0800, screen $0400, black background, fine scroll from text_scroll), copies the shadow registers to the VIC (positions $0E3F-$0E4F to $D000-$D010, colours $0E51-$0E60 to $D020-$D02F, enable $0E50 to $D015, pointers $0E61-$0E68 to $47F8), keeps the sprite collisions in $1027, and flips $0E5F, sprite 7's colour, between 0 and 1 each frame so the sight flickers. In the ending it scrolls the ending text up a pixel every tenth frame and a line every eight pixels. Then plays the music (play_music) in the ending and the effects (play_effects) in a stage, unless a sample is playing. Next handler irq_top on line 1."
  },
  {
   "address": 14975,
   "type": "line",
   "text": "The ending's text: when a line has scrolled, rows 21-23 of the text screen move up a line and the next line of the ending text, thirty characters at (ending_ptr), is written on row 24. A line that starts with $FF is blank and one byte long. After 23 lines ending_running is cleared."
  },
  {
   "address": 15113,
   "type": "line",
   "text": "Raster handler of the stages, line 1: VIC bank 1 with the bitmap at $6000 and the screen at $4400, multicolour, $D011 from bitmap_d011, and the background dark grey in the shoot-out (stage 0) or white in the others, unless a picture is being drawn. Then moves points onto the score (count_score) and returns. Next handler irq_bottom on the line in bottom_line ($9086)."
  },
  {
   "address": 15180,
   "type": "line",
   "text": "BIT $01A9: hides the LDA #$01 at $3B4D, where the other stages branch in, so the shoot-out (stage 0) gets $0B, dark grey, and the others 1, white"
  },
  {
   "address": 15195,
   "type": "line",
   "text": "Pulls Y, X and A off the stack and returns from the interrupt: the end of every raster handler, as the KERNAL's own handler ends."
  },
  {
   "address": 15201,
   "type": "line",
   "text": "The BRK handler: saves A, X and Y, resets the CIAs and the interrupt vectors (the KERNAL's IOINIT and restore_vectors), the screen editor (CINT), and jumps to $C057. That address holds picture data in the game, so a BRK would crash it; the only BRK in the code is the check in check_shot."
  },
  {
   "address": 15221,
   "type": "line",
   "text": "Saves A, X and Y in zpa_0A, zpa_0B and zpa_0C."
  },
  {
   "address": 15228,
   "type": "line",
   "text": "Loads A, X and Y back from zpa_0A, zpa_0B and zpa_0C."
  },
  {
   "address": 15235,
   "type": "line",
   "text": "Writes 0 to the sound chip's registers $D400-$D416, silencing the three voices."
  },
  {
   "address": 15246,
   "type": "line",
   "text": "Copies the KERNAL's table of vectors ($FD30-$FD4F) back into $0314-$0333."
  },
  {
   "address": 15258,
   "type": "line",
   "text": "Moves points from pending ($8FA4-$8FA7) onto the score ($8FA8-$8FAB), both four BCD bytes, low first, in decimal mode: 1 a frame while fewer than 100 are waiting, $99 while 1000 or more, and between them $0B, which is not a BCD number. Taken from pending and added to the score in decimal mode, $0B leaves digits above 9 in the bytes, and the adds after it carry them on as extra points: a bonus of 594 puts 706 on the score, one of 1920 puts 2096 (live). Then writes the score's eight digits, without leading zeros, in yellow at (score_at) and into score_text ($8E41) and last_score_text ($8F51). Returns at once when nothing is pending."
  },
  {
   "address": 15442,
   "type": "line",
   "text": "Draws the shoot-out's status: bad_guys_killed as a bar of character $24 on row 22 from column 0, then a bar of $12 (twelve) $20 characters from column 27, overwritten by a bar of bad_guys_left in $24 (draw_bar)."
  },
  {
   "address": 15517,
   "type": "line",
   "text": "Clears rows 16 to 23 of the text screen in green and writes the hall of fame: its two title lines ($8C48, $8C5E) in light blue and the five entries ($8C74, eleven characters each: three initials and eight digits)."
  },
  {
   "address": 15601,
   "type": "line",
   "text": "Compares score_text with the five hall of fame entries, best first. When it beats one, moves that entry and the ones below it down a place (the fifth falls off), writes the score into the free place with three spaces for the initials, shows the table and takes the initials from the keyboard: letters A to Z and the space, three at most (a fourth starts again from the first), RETURN to finish, with a flashing cursor. Then waits and goes to the title."
  },
  {
   "address": 15878,
   "type": "line",
   "text": "Points zpa_26 at hall of fame entry zpa_0D ($8C74 + 11\u00d7zpa_0D) and zpa_28 at the one after it; also sets zpa_0E to zpa_0D."
  },
  {
   "address": 15918,
   "type": "line",
   "text": "\"PRESS FIRE BUTTON\", seventeen screen codes, written under the hall of fame"
  },
  {
   "address": 15935,
   "type": "line",
   "text": "The first of the title's three credits lines, forty screen codes: \"GRAPHICS: J.DARNELL N.BAIKALOFF J.PORCH\""
  },
  {
   "address": 15975,
   "type": "line",
   "text": "A space after the graphics credit that nothing reads"
  },
  {
   "address": 15976,
   "type": "line",
   "text": "Passes of the title's wait loop to the next count of $3E69"
  },
  {
   "address": 15977,
   "type": "line",
   "text": "The title's credits line changes when this has counted 200 of $3E68's rounds"
  },
  {
   "address": 15978,
   "type": "line",
   "text": "A byte between the credit counters that nothing reads"
  },
  {
   "address": 15979,
   "type": "line",
   "text": "Which credits line the title shows: 3 the graphics credit, 2 the design credit, 1 Mastertronic's"
  },
  {
   "address": 15980,
   "type": "line",
   "text": "A byte after credit_line that nothing reads, 10"
  },
  {
   "address": 15981,
   "type": "line",
   "text": "The reset header start_stage copies to $8000: the cold and warm start vectors, both $0C00, and the letters CBM80 ($C3 $C2 $CD $38 $30) that make the KERNAL jump through them on a reset"
  },
  {
   "address": 15990,
   "type": "line",
   "text": "Rounds of the hoofbeats' other pattern the caught train plays as it stops, from 10, before the bonus is counted"
  },
  {
   "address": 15991,
   "type": "line",
   "text": "Runs the gunmen, every fifth call (gunmen_step) from the shoot-out's loop. Each of the four gunman sprites (3 to 6) that is showing a gunman is animated (gunman_step). One that is free counts down its own delay ($913A, reloaded from $9142) and then takes a hiding place: one of the sixteen, chosen at random from CIA 1's timer and the raster line, that has not had its gunman hit, trying up to 255 times (after that its delay is left at 0, so its next try is 256 steps away). The test for a place in use reads place_used at the gunman's number ($3ED4, LDA $914D,X) instead of the place's, so a gunman can take a place another gunman is in, and is turned away while place 0, 1, 2 or 3 (his own number) is taken. The sprite turns white, the place is marked in use ($914D), and the sprite goes to the place's position from place_x ($9169, whose bit 0 is the position's ninth bit) and place_y ($916A)."
  },
  {
   "address": 16041,
   "type": "line",
   "text": "A place at random, 0 to 15: CIA 1's timer A, both bytes, and the raster line together"
  },
  {
   "address": 16065,
   "type": "line",
   "text": "JMP $37E3, into check_shot's bonus: never runs, since it follows the JMP above it and nothing jumps here"
  },
  {
   "address": 16084,
   "type": "line",
   "text": "Should test the chosen place, place_used,Y; tests place_used,X, X being the gunman's number"
  },
  {
   "address": 16185,
   "type": "line",
   "text": "Leftover: a NOP, then an older build of gunman_step's first part, $3F3A-$3FFF, as DATA2 brought it, the same bytes as $8810-$88D5. Nothing runs or reads them"
  },
  {
   "address": 16383,
   "type": "line",
   "text": "The base start indexes from to copy the three shapes ($3FFF+X, X from $C0 down to 1); the byte itself is the older build's last"
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Three sprite shapes, $4000-$40BF, the rider thrown from his horse: start copies them into the stack page ($0101-$01C0) before the game draws anything at $4000, and build_ride_screen puts them back at $7300 as shapes $CC-$CE on every ride. Once the game runs, $4000-$43FF is VIC bank 1's first kilobyte: the shapes 0 to 3 of the stages and a ride's text screen"
  },
  {
   "address": 16431,
   "type": "line",
   "text": "In play, the sight's shape (sprite shape 0) from its sixteenth byte: start_play writes sight_shape here"
  },
  {
   "address": 16448,
   "type": "line",
   "text": "In play, sprite shape 1: the arrow, or the first gunman's shape, drawn by gunman_step"
  },
  {
   "address": 16487,
   "type": "line",
   "text": "In play, the arrow's rows in shape 1, written from arrow_frames"
  },
  {
   "address": 16544,
   "type": "line",
   "text": "In play on the train, the screen's row 4: the engine is drawn in on the left from here, a row 40 bytes on at $40C8, $40F0, $4118 and $4140"
  },
  {
   "address": 16576,
   "type": "line",
   "text": "Sixty-four zeros after the three shapes, the end of DATA2"
  },
  {
   "address": 16584,
   "type": "line",
   "text": "the engine's second row on the train's screen"
  },
  {
   "address": 16624,
   "type": "line",
   "text": "the engine's third row on the train's screen"
  },
  {
   "address": 32768,
   "type": "line",
   "text": "DATA3's own reset header: cold and warm start vectors at $8010, where the older build begins, and CBM80; start_stage replaces it with cbm80_header before play. clear_obstacles clears $8001 and $8003, the vectors' high bytes"
  },
  {
   "address": 32777,
   "type": "line",
   "text": "Seven bytes after DATA3's header that nothing reads"
  },
  {
   "address": 32784,
   "type": "line",
   "text": "An older build of the game's code, $8010-$8727, as DATA3 brought it: the code from check_shot's end to gunmen_appear's ($37F3-$3EE6 today), assembled $4819 to $481D bytes higher. Nothing runs it: from the first ride on, $8010-$87DF is the rides' map buffer, five rows of 400 characters, and clear_map clears it to $880F"
  },
  {
   "address": 33792,
   "type": "line",
   "text": "The older build from the middle of its count_score on"
  },
  {
   "address": 34560,
   "type": "line",
   "text": "The older build's last forty bytes, zeros to $880E, and a stray $86 at $880F before gunman_step"
  },
  {
   "address": 34832,
   "type": "line",
   "text": "Animates gunman X (0-3, sprite 3+X) in his hiding place, drawing into his sprite shape (1+X, at $4040+X\u00d764) from the bottom row up. A hit gunman dissolves: each step clears random pixels of his shape until it is empty, and the place is freed (gunman_gone). Otherwise he comes out of the place over 5, 6 or 7 steps, by its kind ($916C): kinds 0 and 1 rise from below, 5 or 6 rows of $9116 or $911B drawn a row more each step; kind 2 slides in from the right (the eleven rows at $9121 shifted right less each step) and kind 3 from the left ($912C shifted left). The way is kept as a letter in gunman_way ($9148): $42 B, $52 R, $4C L; waits seven steps; fires once (effects bit 6 and gunman_fires); and goes back the way he came, after which the place is freed."
  },
  {
   "address": 35122,
   "type": "line",
   "text": "Frees gunman X's sprite and his hiding place, and reloads his delay from $9142."
  },
  {
   "address": 35280,
   "type": "line",
   "text": "Points Y at the last row of gunman X's sprite shape ($4040 + X\u00d764 + $3E, its last byte but one) and loads X from zpa_04."
  },
  {
   "address": 35294,
   "type": "line",
   "text": "Mirrors sprite shape Y left to right where it lies: toggles its facing byte at $0400+Y, finds its address (flip_base\u00d7256 + Y\u00d764, shape_address) and, row by row for its 21 rows, reverses the order of the three bytes and the bits of each byte (mirror_byte)."
  },
  {
   "address": 35324,
   "type": "line",
   "text": "Mirrors the row at zpa_03 in the shape at (zpa_26): its three bytes in reverse order, each through mirror_byte; moves zpa_03 on three."
  },
  {
   "address": 35363,
   "type": "line",
   "text": "Mirrors a byte of a sprite: its eight bits in reverse order, through $90F6 (the high nibble) and $9106 (the low nibble). Right for the shoot-out's sprites and the horse's, which are not multicolour. The rider's two shapes ($CA, $CB) are multicolour and are mirrored too: there the two bits of each pixel swap as well, so colours 01 and 10 trade places, which does not show because both are white ($D025 and $D028 are 1 on a ride). $00 and $FF come back as they are."
  },
  {
   "address": 35398,
   "type": "line",
   "text": "Puts the address of shape A (counting from flip_base: A\u00d764 + flip_base\u00d7256) in zpa_26 and zpa_27."
  },
  {
   "address": 35425,
   "type": "line",
   "text": "Every other call moves the gunmen's aim (aim_x, 9 bits, $91B6 and $91C6) towards the Marshall's x, and keeps the distance between them in aim_dist ($91C7, $91C8), so that the longer he stands, the closer the aim. It moves by aim_step pixels (zpa_42, 1 in the shoot-out), and goes no further left than x 32 or right than x 316."
  },
  {
   "address": 35473,
   "type": "line",
   "text": "Three instructions no branch reaches, between two branches that cover every case: would clear aim_dist"
  },
  {
   "address": 35559,
   "type": "line",
   "text": "Adds aim_step with the carry the 16-bit subtraction at $8AC9 left: set, when the aim is left of x 256 and the Marshall to its right, so the aim moves 2"
  },
  {
   "address": 35570,
   "type": "line",
   "text": "A gunman fires at the aim. While the Marshall walks (facing not 0) the shot does nothing. When he stands and the aim is within 8 pixels of him, he is hit: marshall_hit ($91B5) is set to 6 and the shoot-out's loop runs marshall_dies six passes later. Otherwise the shot kicks up dust: a free gunman sprite shows shape $4D at the aim, up to 15 lines above its y, for nine passes (dust_puffs)."
  },
  {
   "address": 35702,
   "type": "line",
   "text": "Animates the puffs of dust from gunman_fires, once a pass of the shoot-out's loop: each is hidden for its first six passes, shows shapes $4D, $4E and $4F in its last three, and is then put away, its sprite's shape back to its gunman's (1+X)."
  },
  {
   "address": 35781,
   "type": "line",
   "text": "The Marshall is hit: after five frame_delay waits (wait_frames) the hit sample plays (play_hit, volume 4, rate $80), he falls in three shapes, one token is lost, and with no token left the game is over (the title); otherwise the shoot-out goes on."
  },
  {
   "address": 35904,
   "type": "line",
   "text": "Waits frame_delay X times: X \u00d7 about 46,000 cycles, two and a half to three frames each."
  },
  {
   "address": 35911,
   "type": "line",
   "text": "Not 0 when the stage was started from the practice menu; checked after the train, which then goes back to the title"
  },
  {
   "address": 35912,
   "type": "line",
   "text": "The hall of fame's first title line, twenty-two screen codes: \"HALL OF FAME AND WORTH\""
  },
  {
   "address": 35934,
   "type": "line",
   "text": "The hall of fame's second title line: \"  INITIALS SCORE\""
  },
  {
   "address": 35956,
   "type": "line",
   "text": "The hall of fame, five entries of eleven screen codes, best first: three initials then the score, eight characters. As loaded: ABC 65432, 54321, 43210, 32101 and 21012"
  },
  {
   "address": 35967,
   "type": "line",
   "text": "The second entry: ABC, 54321"
  },
  {
   "address": 35978,
   "type": "line",
   "text": "The third entry: ABC, 43210"
  },
  {
   "address": 35989,
   "type": "line",
   "text": "The fourth entry: ABC, 32101"
  },
  {
   "address": 36000,
   "type": "line",
   "text": "The fifth entry: ABC, 21012"
  },
  {
   "address": 36011,
   "type": "line",
   "text": "Set to $FF when the caught train comes to a stop, which takes the stick away from the horse while the stopping sound plays out; cleared for the next ride"
  },
  {
   "address": 36012,
   "type": "line",
   "text": "The ending's text, a line of thirty screen codes at a time, a line that starts with $FF blank and one byte long: \"SO WAR WITH THE WAGARI INDIANS WAS FINALLY ENDED.\" ... \"OUR HERO WENT ON TO BECOME A LEGEND IN HIS OWN TIME, PREFFERING ONLY TO BE KNOWN AS... 'THE MARSHALL OF KANE'\" ... \"FUTURE GENERATIONS WILL ALWAYS REMEMBER HIS ACTS OF BRAVERY WITH ADMIRATION AND GRATITUDE.\" ... \"WE THE AUTHORS WOULD LIKE TO ECHO THE PRESIDENT'S FEELINGS AND SAY...... 'WELL DONE'.\" ... \"YOUR SCORE IN THIS GAME WAS\", then the score"
  },
  {
   "address": 36417,
   "type": "line",
   "text": "The ending's last line: twenty-five screen codes into which count_score writes the score as it counts, and which check_high_score compares with the hall of fame"
  },
  {
   "address": 36442,
   "type": "line",
   "text": "Frames to the ending text's next pixel of scroll, from 10"
  },
  {
   "address": 36443,
   "type": "line",
   "text": "Not 0 while the ending's text is still coming up: cleared after its 23rd line"
  },
  {
   "address": 36444,
   "type": "line",
   "text": "The value irq_top writes to $D011: $3B, the bitmap shown, once start_stage has set it"
  },
  {
   "address": 36445,
   "type": "line",
   "text": "The places where the ending's loop ($31DC) slows the tune a step (tempo+1), as voice 1's low byte less $22: $14, $19, $1E, $23, $25, $27, $28, $29, $32. Voice 1 moves two bytes an event from $22, so only even places come. The loop takes the first place, then starts its index at 1 and moves it on after each slowing, so it skips $19: it slows at $14 and $1E, then waits for $23, which never comes, and the loop ends at $2B. The tune slows twice."
  },
  {
   "address": 36454,
   "type": "line",
   "text": "The practice menu's question, twenty-seven screen codes: \"LEVEL 1 2 OR 3 ?\""
  },
  {
   "address": 36481,
   "type": "line",
   "text": "The practice menu's first line: \"Press F1 For Bow And Arrow.\""
  },
  {
   "address": 36509,
   "type": "line",
   "text": "The practice menu's second line: \"F3 For Horse Ride 1.\""
  },
  {
   "address": 36537,
   "type": "line",
   "text": "The practice menu's third line: \"F5 For Shoot Out.\""
  },
  {
   "address": 36564,
   "type": "line",
   "text": "The practice menu's fourth line: \"F7 For Horse Ride 2.\""
  },
  {
   "address": 36592,
   "type": "line",
   "text": "The title's first line: \"Press Fire To Start\""
  },
  {
   "address": 36621,
   "type": "line",
   "text": "The title's second line: \"F1 For Practice\""
  },
  {
   "address": 36649,
   "type": "line",
   "text": "The title's third line: \"F7 For Score Table\""
  },
  {
   "address": 36675,
   "type": "line",
   "text": "The title's fourth line: \"Previous Score\", followed by last_score_text"
  },
  {
   "address": 36689,
   "type": "line",
   "text": "The last game's score, twelve screen codes written by count_score, shown on the title after \"Previous Score\""
  },
  {
   "address": 36701,
   "type": "line",
   "text": "The engine that is drawn in on the left when the train is caught: the top row of its twelve columns, a character number less $65 for each (0 for none); drawn a column at a time from the right"
  },
  {
   "address": 36713,
   "type": "line",
   "text": "The engine's second row, twelve columns"
  },
  {
   "address": 36725,
   "type": "line",
   "text": "The engine's third row, twelve columns"
  },
  {
   "address": 36737,
   "type": "line",
   "text": "The engine's fourth row, twelve columns"
  },
  {
   "address": 36749,
   "type": "line",
   "text": "The engine's bottom row, twelve columns: its wheels"
  },
  {
   "address": 36761,
   "type": "line",
   "text": "Not 0 on a ride, where play_music plays the hoofbeats (hoof_sound) instead of turning the volume off"
  },
  {
   "address": 36762,
   "type": "line",
   "text": "Passes of ride_loop since the engine was whole; at 37 the caught train starts to slow"
  },
  {
   "address": 36763,
   "type": "line",
   "text": "Passes of ride_loop between the horse's slowing steps once the train is 22 coaches ahead: 10, and 50 once the horse stands, after which a token is lost"
  },
  {
   "address": 36764,
   "type": "line",
   "text": "A byte after $8F9B that no instruction addresses, 3"
  },
  {
   "address": 36765,
   "type": "line",
   "text": "The times left to rewrite \"F1 WILL RESTART LEVEL\" after a fall, from 16, each time in the colour of this count"
  },
  {
   "address": 36766,
   "type": "line",
   "text": "Passes of the ride's loop to the next rewrite of that line"
  },
  {
   "address": 36767,
   "type": "line",
   "text": "The train's wheels and smoke: flipped every frame by irq_ride between 0 and $FF, choosing which of the two pieces it copies into the character set"
  },
  {
   "address": 36768,
   "type": "line",
   "text": "Not 0 to keep play_music from playing the tune: set while a picture is drawn, on the train, and when a ride ends"
  },
  {
   "address": 36769,
   "type": "line",
   "text": "$FF while a picture is drawn or wiped, which keeps irq_top from setting the background colour"
  },
  {
   "address": 36770,
   "type": "line",
   "text": "The level, 0 to 2 (shown as 1 to 3); one more after each train"
  },
  {
   "address": 36771,
   "type": "line",
   "text": "Ducks to shoot for each peace token: 3, 4 or 5 by level"
  },
  {
   "address": 36772,
   "type": "line",
   "text": "Points still to be counted onto the score, four BCD bytes, $8FA4 the lowest two digits"
  },
  {
   "address": 36773,
   "type": "line",
   "text": "pending's third and fourth digits"
  },
  {
   "address": 36774,
   "type": "line",
   "text": "pending's fifth and sixth digits"
  },
  {
   "address": 36775,
   "type": "line",
   "text": "pending's top two digits"
  },
  {
   "address": 36776,
   "type": "line",
   "text": "The score, four BCD bytes, $8FA8 the lowest two digits"
  },
  {
   "address": 36777,
   "type": "line",
   "text": "the score's third and fourth digits"
  },
  {
   "address": 36778,
   "type": "line",
   "text": "the score's fifth and sixth digits"
  },
  {
   "address": 36779,
   "type": "line",
   "text": "the score's top two digits"
  },
  {
   "address": 36780,
   "type": "line",
   "text": "The peace tokens, the player's lives: earned in the ducks, one lost at each fall, at a ride's clock running out and when the Marshall is shot; none left is game over"
  },
  {
   "address": 36781,
   "type": "line",
   "text": "Set to $FF by irq_ride_sprites when the horse's legs touch an obstacle, which starts a fall"
  },
  {
   "address": 36782,
   "type": "line",
   "text": "Frames to ride 1's clock's next second, from 50"
  },
  {
   "address": 36783,
   "type": "line",
   "text": "Passes of the ducks' loop before the archer can shoot again after a steep shot, from 10"
  },
  {
   "address": 36784,
   "type": "line",
   "text": "The arrows left in the ducks, or bullets in the shoot-out, BCD: ten arrows, six bullets"
  },
  {
   "address": 36785,
   "type": "line",
   "text": "Ducks that flew off the right of the screen, BCD; at 39 the stage ends"
  },
  {
   "address": 36786,
   "type": "line",
   "text": "Ducks shot, BCD, at most 30; tokens are ducks_killed over ducks_per_token"
  },
  {
   "address": 36787,
   "type": "line",
   "text": "Two bytes after ducks_killed that no instruction addresses"
  },
  {
   "address": 36789,
   "type": "line",
   "text": "The arrow's step left each pass of the ducks' loop"
  },
  {
   "address": 36790,
   "type": "line",
   "text": "The arrow's step up each pass of the ducks' loop"
  },
  {
   "address": 36791,
   "type": "line",
   "text": "A byte no instruction addresses"
  },
  {
   "address": 36792,
   "type": "line",
   "text": "The arrow's angle, 0 to 8: which of the nine shapes at $112B it shows"
  },
  {
   "address": 36793,
   "type": "line",
   "text": "The ducks' status line, forty-one screen codes: \"Birdies Killed\" and \"Birdies Home\""
  },
  {
   "address": 36834,
   "type": "line",
   "text": "The shoot-out's status line, forty-one screen codes: \"Bad Guys Killed\" and \"Bad Guys Left\""
  },
  {
   "address": 36875,
   "type": "line",
   "text": "Ride 1's first status line, twenty-eight screen codes: \"Time Remaining  000  Minutes\""
  },
  {
   "address": 36903,
   "type": "line",
   "text": "Ride 1's second status line: \"Distance To Go  0.0   Miles\""
  },
  {
   "address": 36931,
   "type": "line",
   "text": "The train's status line: \"Distance To Go  .0  Coaches\", whose numbers the train's loop writes over"
  },
  {
   "address": 36959,
   "type": "line",
   "text": "\"Score \", six screen codes, written before the score in every stage"
  },
  {
   "address": 36965,
   "type": "line",
   "text": "\"F1 WILL RESTART LEVEL\", twenty-one screen codes, flashed on row 16 after a fall"
  },
  {
   "address": 36986,
   "type": "line",
   "text": "$FF while the arrow is in the air, 0 when the archer can shoot"
  },
  {
   "address": 36987,
   "type": "line",
   "text": "The stage: 0 the shoot-out, 1 the ducks (and ride 1), 2 the train, 3 the ending, 4 the title"
  },
  {
   "address": 36988,
   "type": "line",
   "text": "Each stage's picture, an address less one for each, low byte first: the town ($A000) for the shoot-out, the canyon ($B1B0) for the ducks, the town again for 2, the ending ($C610) and the title ($1300)"
  },
  {
   "address": 36989,
   "type": "line",
   "text": "picture_table's high bytes, read as $907D+X"
  },
  {
   "address": 36998,
   "type": "line",
   "text": "The raster line of irq_bottom, $D8 (216): where the status lines begin"
  },
  {
   "address": 36999,
   "type": "line",
   "text": "Ten bytes after bottom_line that no instruction addresses"
  },
  {
   "address": 37009,
   "type": "line",
   "text": "The sight: sixteen bytes copied into sprite shape 0 at $402F by start_play, a small open diamond"
  },
  {
   "address": 37025,
   "type": "line",
   "text": "The joystick in port 2 as read from $DC00 this frame, shifted out a bit at a time to test up, down, left, right and fire (0 is pressed)"
  },
  {
   "address": 37026,
   "type": "line",
   "text": "frame_delay's count, low byte"
  },
  {
   "address": 37027,
   "type": "line",
   "text": "frame_delay's count, high byte: $14 in frame_delay, $19 in the ducks' loop"
  },
  {
   "address": 37028,
   "type": "line",
   "text": "The eight bits, $01 to $80, one for each sprite: ORed into spr_x_msb and spr_enable"
  },
  {
   "address": 37036,
   "type": "line",
   "text": "The eight bits' complements, $FE to $7F: ANDed to clear a sprite's bit"
  },
  {
   "address": 37044,
   "type": "line",
   "text": "Set when the figure walks on this pass of the shoot-out's loop, or when the band moves a character on a ride (copy_map_window then redraws it)"
  },
  {
   "address": 37045,
   "type": "line",
   "text": "Which way the figure or the horse faces: 1 left, $FF right; 0 when the Marshall stands or fires"
  },
  {
   "address": 37046,
   "type": "line",
   "text": "The place in the horse's frame list, or the figure's step"
  },
  {
   "address": 37047,
   "type": "line",
   "text": "$FF while the Marshall's gun is raised after a shot"
  },
  {
   "address": 37048,
   "type": "line",
   "text": "Passes of the loop the gun stays raised, from 12; the shot is checked at 3"
  },
  {
   "address": 37049,
   "type": "line",
   "text": "Passes of the loop after the gun is lowered before he can shoot again, from 5"
  },
  {
   "address": 37050,
   "type": "line",
   "text": "The walking figure's three shapes facing left: $26, $3B, $2D"
  },
  {
   "address": 37051,
   "type": "line",
   "text": "The middle sprite's walking shape, $3B"
  },
  {
   "address": 37052,
   "type": "line",
   "text": "The bottom sprite's walking shape, $2D"
  },
  {
   "address": 37053,
   "type": "line",
   "text": "The walking figure's three shapes facing right: the same three"
  },
  {
   "address": 37056,
   "type": "line",
   "text": "Flipped each time walk_animate changes the shapes, so the middle sprite alternates"
  },
  {
   "address": 37057,
   "type": "line",
   "text": "Pixels the figure walks each step: 6, which walk_left and walk_right put back after each step, and 3 once the Marshall has stood still ($372C), so his first step is short; in the ducks, duck 0's speed, with ducks 1 and 2's at $90C2 and $90C3"
  },
  {
   "address": 37058,
   "type": "line",
   "text": "Duck 1's speed, 2 to 4"
  },
  {
   "address": 37059,
   "type": "line",
   "text": "Duck 2's speed, 2 to 4"
  },
  {
   "address": 37060,
   "type": "line",
   "text": "The sprites' positions at the start of the ducks and the shoot-out, sixteen bytes copied to spr0_x: the figure at x $A0 (y $AA, $B1, $BF), sprites 3 to 6 at 0, the sight at x $A0 y $20"
  },
  {
   "address": 37077,
   "type": "line",
   "text": "The colours at the start of the ducks and the shoot-out, sixteen bytes copied to border_colour: black border, dark grey background, the figure black and white, the rest white"
  },
  {
   "address": 37093,
   "type": "line",
   "text": "Three bytes after start_colours that no instruction addresses"
  },
  {
   "address": 37096,
   "type": "line",
   "text": "Where unpack_bitmap and unpack_runs stop reading, low byte ($90E9 high)"
  },
  {
   "address": 37097,
   "type": "line",
   "text": "unpack_end's high byte"
  },
  {
   "address": 37098,
   "type": "line",
   "text": "The page flip_shape counts shapes from: $48 for the stages' shapes at $4800, $40 for a ride's"
  },
  {
   "address": 37100,
   "type": "line",
   "text": "Rows left to mirror in flip_shape, from 21"
  },
  {
   "address": 37101,
   "type": "line",
   "text": "The way the figure's or horse's shapes must face: 1 left, $FF right (face_shape mirrors those that do not)"
  },
  {
   "address": 37102,
   "type": "line",
   "text": "The eight sprite shapes for the next copy to spr0_ptr: on a ride, sprite 0's ($CE, the thrown rider's other half, in a fall), the rider's and the horse's six; in the stages, the walking figure's three"
  },
  {
   "address": 37103,
   "type": "line",
   "text": "The rider's shape on a ride: $CA or $CB as he bobs in the saddle, $CC and then $CD as he is thrown in a fall"
  },
  {
   "address": 37104,
   "type": "line",
   "text": "The horse's six shapes, $90F0-$90F5, set by set_horse_frames: the frame's shapes 0, 2 and 4 in $90F0-$90F2 and 1, 3 and 5 in $90F3-$90F5"
  },
  {
   "address": 37105,
   "type": "line",
   "text": "the horse's second top shape"
  },
  {
   "address": 37106,
   "type": "line",
   "text": "the horse's third top shape"
  },
  {
   "address": 37107,
   "type": "line",
   "text": "the horse's first bottom shape"
  },
  {
   "address": 37108,
   "type": "line",
   "text": "the horse's second bottom shape"
  },
  {
   "address": 37109,
   "type": "line",
   "text": "the horse's third bottom shape"
  },
  {
   "address": 37110,
   "type": "line",
   "text": "The nibble with its four bits reversed, sixteen bytes, for a byte's high half: 0, 8, 4, $C ..."
  },
  {
   "address": 37126,
   "type": "line",
   "text": "The nibble with its four bits reversed and shifted up, sixteen bytes, for a byte's low half: 0, $80, $40, $C0 ..."
  },
  {
   "address": 37142,
   "type": "line",
   "text": "The rows of a gunman of kind 0 rising into view: five bytes"
  },
  {
   "address": 37147,
   "type": "line",
   "text": "The rows of a gunman of kind 1 rising into view: six bytes"
  },
  {
   "address": 37153,
   "type": "line",
   "text": "The eleven rows of a gunman of kind 2, sliding in from the right"
  },
  {
   "address": 37164,
   "type": "line",
   "text": "The eleven rows of a gunman of kind 3, sliding in from the left"
  },
  {
   "address": 37175,
   "type": "line",
   "text": "Gunmen hit in the shoot-out, BCD; the twelfth ends it"
  },
  {
   "address": 37176,
   "type": "line",
   "text": "Cleared by start_play with bad_guys_killed; nothing reads it"
  },
  {
   "address": 37177,
   "type": "line",
   "text": "Calls of gunmen_appear left before the gunmen's next step: 10 as the game loads, then 5 each time"
  },
  {
   "address": 37178,
   "type": "line",
   "text": "Each gunman's steps before he takes a hiding place, four bytes, reloaded from $9142: a step is a call of gunmen_appear that gets past gunmen_step, every fifth pass of the shoot-out's loop, about fourteen frames"
  },
  {
   "address": 37182,
   "type": "line",
   "text": "Each gunman's steps out in the open before he fires, from 7"
  },
  {
   "address": 37186,
   "type": "line",
   "text": "The four gunmen's delays: 10, 20, 30 and 40 steps"
  },
  {
   "address": 37190,
   "type": "line",
   "text": "Steps a gunman takes to come out, 5, 6 or 7 by kind"
  },
  {
   "address": 37191,
   "type": "line",
   "text": "A row counter: gunman_step's rows (from 10); in the ending, the line count to 23"
  },
  {
   "address": 37192,
   "type": "line",
   "text": "The way the gunman comes out: $42 B (below), $52 R (right), $4C L (left)"
  },
  {
   "address": 37193,
   "type": "line",
   "text": "Four bytes cleared by start_play that nothing reads"
  },
  {
   "address": 37194,
   "type": "line",
   "text": "The second of the four bytes start_play clears and nothing reads"
  },
  {
   "address": 37195,
   "type": "line",
   "text": "The third of the four bytes start_play clears and nothing reads"
  },
  {
   "address": 37196,
   "type": "line",
   "text": "The fourth of the four bytes start_play clears and nothing reads"
  },
  {
   "address": 37197,
   "type": "line",
   "text": "Sixteen bytes, one for each hiding place: $FF while a gunman is in it"
  },
  {
   "address": 37213,
   "type": "line",
   "text": "Four bytes after place_used that no instruction addresses"
  },
  {
   "address": 37217,
   "type": "line",
   "text": "Each gunman's rows in view, four bytes: up by one each step as he comes out, down as he goes back"
  },
  {
   "address": 37221,
   "type": "line",
   "text": "Each gunman's hiding place, 0 to 15, four bytes"
  },
  {
   "address": 37225,
   "type": "line",
   "text": "The sixteen hiding places, four bytes each: x (its bit 0 the ninth bit), y, a flag set when its gunman has been hit, and its kind, 0 to 3. Place 0: x $72, y $3A, kind 0"
  },
  {
   "address": 37226,
   "type": "line",
   "text": "place 0's y, and the base the places' y are read from"
  },
  {
   "address": 37227,
   "type": "line",
   "text": "place 0's hit flag, and the base of the flags: cleared for all sixteen by start_play"
  },
  {
   "address": 37228,
   "type": "line",
   "text": "place 0's kind, and the base of the kinds; places 1 to 15 follow, and a seventeenth at $91A9 that nothing reads"
  },
  {
   "address": 37292,
   "type": "line",
   "text": "The seventeenth place's kind, 0: nothing reads the seventeenth place"
  },
  {
   "address": 37293,
   "type": "line",
   "text": "Each gunman's state, four bytes: $FF once he is fully out"
  },
  {
   "address": 37297,
   "type": "line",
   "text": "Each gunman's sprite, four bytes: $FF while it shows a gunman"
  },
  {
   "address": 37301,
   "type": "line",
   "text": "Set to 6 when a gunman's shot hits the Marshall; marshall_dies runs when it has counted down"
  },
  {
   "address": 37302,
   "type": "line",
   "text": "In the shoot-out, the gunmen's aim, x (with $91C6 its ninth bit); on a ride, sprite 0's x in the horse's sixteen positions, $91B6-$91C5, copied to spr0_x every fourth frame"
  },
  {
   "address": 37303,
   "type": "line",
   "text": "In the shoot-out, the y the dust of a missed shot rises from, $BF; on a ride, sprite 0's y"
  },
  {
   "address": 37304,
   "type": "line",
   "text": "On a ride, the rider's x (sprite 1)"
  },
  {
   "address": 37305,
   "type": "line",
   "text": "On a ride, the rider's y (sprite 1): the jump moves it"
  },
  {
   "address": 37306,
   "type": "line",
   "text": "On a ride, the horse's six sprites' x and y, twelve bytes"
  },
  {
   "address": 37318,
   "type": "line",
   "text": "The gunmen's aim's ninth x bit"
  },
  {
   "address": 37319,
   "type": "line",
   "text": "The distance from the aim to the Marshall, low byte"
  },
  {
   "address": 37320,
   "type": "line",
   "text": "aim_dist's high byte"
  },
  {
   "address": 37321,
   "type": "line",
   "text": "Calls of gunmen_aim to its next move, 2: every other call"
  },
  {
   "address": 37322,
   "type": "line",
   "text": "A hit box for each kind of gunman, four bytes: how far left of the place's x and right of it, and above its y and below, the sight may be for a hit"
  },
  {
   "address": 37323,
   "type": "line",
   "text": "the hit box's right"
  },
  {
   "address": 37324,
   "type": "line",
   "text": "the hit box's top"
  },
  {
   "address": 37325,
   "type": "line",
   "text": "the hit box's bottom, then kinds 1 to 3"
  },
  {
   "address": 37338,
   "type": "line",
   "text": "Each gunman sprite's puff of dust, four bytes: $FF while it shows one"
  },
  {
   "address": 37342,
   "type": "line",
   "text": "Passes of the shoot-out's loop left of each puff, from 9"
  },
  {
   "address": 37346,
   "type": "line",
   "text": "place_object keeps src_ptr here, low byte ($91E3 high)"
  },
  {
   "address": 37347,
   "type": "line",
   "text": "saved_ptr's high byte"
  },
  {
   "address": 37349,
   "type": "line",
   "text": "Bits left in the sample byte playing, from 8"
  },
  {
   "address": 37351,
   "type": "line",
   "text": "The sound effects, run by irq_bottom in every stage: each bit set in effects ($23) runs its effect for this frame: bit 7 the Marshall's shot (shot_sound), bit 6 a gunman's shot (gunman_shot_sound), bit 5 a falling whistle (whistle_sound), bit 4 the canyon's drum (drum_sound). Then ends the interrupt."
  },
  {
   "address": 37390,
   "type": "line",
   "text": "The Marshall's shot: a burst of noise on voice 3 for twenty frames (shot_time), then clears bit 7 of effects."
  },
  {
   "address": 37447,
   "type": "line",
   "text": "A gunman's shot: a burst of noise on voice 2 a little higher, twenty frames (gunman_shot_time), then clears bit 6 of effects."
  },
  {
   "address": 37507,
   "type": "line",
   "text": "Frames left of a gunman's shot, from 20 down"
  },
  {
   "address": 37508,
   "type": "line",
   "text": "two NOPs ($EA) after gunman_shot_time, never read"
  },
  {
   "address": 37510,
   "type": "line",
   "text": "A falling whistle on voice 2: noise whose pitch drops as whistle_step climbs by $20 a frame; after seven steps clears bit 5 of effects."
  },
  {
   "address": 37576,
   "type": "line",
   "text": "The whistle's step, 0 to $E0 in steps of $20"
  },
  {
   "address": 37577,
   "type": "line",
   "text": "The canyon's drum: every fifteen frames voice 1 strikes a triangle note, the high one ($0C00) on one beat in four and the low one ($0864) on the others, each cut off ten frames later."
  },
  {
   "address": 37685,
   "type": "line",
   "text": "Frames to the next drum beat, from 15"
  },
  {
   "address": 37686,
   "type": "line",
   "text": "The beat in the bar of four, counted down; beat 3 is the high drum"
  },
  {
   "address": 37687,
   "type": "line",
   "text": "Plays the hit sample at $F3F0-$F6AF, a cry: when a duck or a gunman is hit, and when the Marshall is. The caller sets sample_volume and sample_rate first."
  },
  {
   "address": 37705,
   "type": "line",
   "text": "Plays the ending's sample at $FCC0-$FF8F, a man's voice saying \"Well done\"."
  },
  {
   "address": 37723,
   "type": "line",
   "text": "Plays the sample at $9E00-$9FFE when the rider falls."
  },
  {
   "address": 37739,
   "type": "line",
   "text": "All three: wait for raster line $14 and then $13 (a whole frame), mark a sample playing, silence the sound chip and play the sample. Each block of the stream is a volume byte (15 at most, less sample_volume, at least 1), then sixteen bytes, eight bits each: a bit 1 sets voice 1 to a pulse with its test bit set and 0 to a pulse alone, timed by CIA 2's timer A to sample_rate. The game stops while a sample plays."
  },
  {
   "address": 37853,
   "type": "line",
   "text": "The CMP's operand, the timer value that ends each bit's wait: written from sample_rate before a sample plays"
  },
  {
   "address": 37960,
   "type": "line",
   "text": "Subtracted from each block's volume byte while a sample plays: 6 for a duck, 9 for a gunman, 4 when the Marshall is hit, 0 for the whinny and the ending"
  },
  {
   "address": 37961,
   "type": "line",
   "text": "The length of a sample's bits, copied into the wait at $93DD: $C8 for a duck, $96 for a gunman, $80 for the Marshall, $70 for the whinny and the ending"
  },
  {
   "address": 37962,
   "type": "line",
   "text": "$FF while a sample plays, which stops irq_bottom playing the music and effects"
  },
  {
   "address": 37963,
   "type": "line",
   "text": "Starts the tune from its beginning (tune_reset), silences the voices, sets the tempo to 6 frames a step, and except on the train ride sets the filter and volume from $96A8."
  },
  {
   "address": 38005,
   "type": "line",
   "text": "Called at the end of irq_title, irq_bottom and irq_ride: plays the tune (music_step) while music_off is 0; while it is set, plays the hoofbeats (hoof_sound) if hoofbeats is set and otherwise turns the volume off. Ends the interrupt."
  },
  {
   "address": 38034,
   "type": "line",
   "text": "The music player, once a frame: every tempo frames each of the three voices counts down its note's length and reads its next event when it runs out. An event is two bytes: the first's top two bits, when not 0, choose one of three instruments for the voice (load_instrument_1, _2 or _3) and its low six bits are the length in steps; the second is the note, 0 for a rest (the gate turned off) and otherwise a number less 6 into the frequency table at $9D26. Two frames before a note ends its gate is turned off. Writes the three voices' registers and the filter routing on those frames and on the frames it reads events. On the other frames it restarts the tune if voice 1 has reached $9A3C, the end of its part."
  },
  {
   "address": 38428,
   "type": "line",
   "text": "Points the three voices at the start of their parts, $9822, $9A3C and $9BD4, each three steps from its first event."
  },
  {
   "address": 38464,
   "type": "line",
   "text": "Frames per step of the tune, 6; the ending slows it"
  },
  {
   "address": 38465,
   "type": "line",
   "text": "Frames left in this step"
  },
  {
   "address": 38466,
   "type": "line",
   "text": "Steps left in voice 1's note"
  },
  {
   "address": 38467,
   "type": "line",
   "text": "Steps left in voice 2's note"
  },
  {
   "address": 38468,
   "type": "line",
   "text": "Steps left in voice 3's note"
  },
  {
   "address": 38469,
   "type": "line",
   "text": "Copies instrument (bits 7-6 of A) for voice 1, seven bytes from the address in the table at $9693, into voice 1's register copy at $96DA."
  },
  {
   "address": 38495,
   "type": "line",
   "text": "Copies instrument (bits 7-6 of A) for voice 2, five bytes from the address in the table at $9699, into voice 2's register copy at $96E5."
  },
  {
   "address": 38521,
   "type": "line",
   "text": "Copies instrument (bits 7-6 of A) for voice 3, five bytes from the address in the table at $969F, into voice 3's register copy at $96EC."
  },
  {
   "address": 38545,
   "type": "line",
   "text": "The BPL's operand, $F8. load_instrument_1 reads its addresses from $9691+Y and $9692+Y, with Y 2, 4 or 6, so its table starts at $9693"
  },
  {
   "address": 38546,
   "type": "line",
   "text": "RTS: the end of load_instrument_3, and the base of load_instrument_1's high bytes"
  },
  {
   "address": 38547,
   "type": "line",
   "text": "The instruments' addresses: three words for voice 1 ($9693), three for voice 2 ($9699) and three for voice 3 ($969F), indexed by 2, 4 or 6. The tables start inside the code: $9691-$9692 and $9697-$9698 are never read, and $9692 is load_instrument_3's RTS."
  },
  {
   "address": 38551,
   "type": "line",
   "text": "Voice 1's third instrument, $96B3; also the base load_instrument_2 indexes from, so voice 2's table starts at $9699"
  },
  {
   "address": 38552,
   "type": "line",
   "text": "the high byte of voice 1's third instrument, and voice 2's base for its high bytes"
  },
  {
   "address": 38557,
   "type": "line",
   "text": "Voice 2's third instrument, $96C4; also the base load_instrument_3 indexes from, so voice 3's table starts at $969F"
  },
  {
   "address": 38558,
   "type": "line",
   "text": "the high byte of voice 2's third instrument, and voice 3's base for its high bytes"
  },
  {
   "address": 38565,
   "type": "line",
   "text": "Voice 1's three instruments, seven bytes each: pulse width (low, high), control, attack-decay, sustain-release, and two bytes copied to $96DF-$96E0 that are never written to the chip. All three are pulse waves ($41). The first's last four bytes are also filter_setup."
  },
  {
   "address": 38568,
   "type": "line",
   "text": "Written to $D415-$D418 by start_tune: filter cutoff $26, $91, resonance and routing $87, mode and volume $1A. The same four bytes are the end of voice 1's first instrument."
  },
  {
   "address": 38586,
   "type": "line",
   "text": "Voice 2's three instruments, five bytes each (pulse width, control, attack-decay, sustain-release), from $96BA, $96BF and $96C4; then voice 3's three, from $96C9, $96CE and $96D3."
  },
  {
   "address": 38616,
   "type": "line",
   "text": "Voice 1's register copy, written to $D400-$D406 every frame: frequency (low, high), pulse width (low, high), control, attack-decay, sustain-release"
  },
  {
   "address": 38617,
   "type": "line",
   "text": "voice 1's frequency, high byte"
  },
  {
   "address": 38618,
   "type": "line",
   "text": "voice 1's pulse width and the rest of its instrument, from load_instrument_1"
  },
  {
   "address": 38620,
   "type": "line",
   "text": "Voice 1's control byte; bit 0 is the gate, set for a note and cleared for a rest or just before the next event"
  },
  {
   "address": 38625,
   "type": "line",
   "text": "Written to $D417 every frame: the filter's resonance and routing, without voice 2 when $96F3 is set and voice 3 when $96F5 is"
  },
  {
   "address": 38627,
   "type": "line",
   "text": "Voice 2's register copy, written to $D407-$D40D every frame"
  },
  {
   "address": 38628,
   "type": "line",
   "text": "voice 2's frequency, high byte"
  },
  {
   "address": 38629,
   "type": "line",
   "text": "voice 2's pulse width and the rest of its instrument, from load_instrument_2"
  },
  {
   "address": 38631,
   "type": "line",
   "text": "Voice 2's control byte, bit 0 the gate"
  },
  {
   "address": 38634,
   "type": "line",
   "text": "Voice 3's register copy, written to $D40E-$D414 every frame"
  },
  {
   "address": 38635,
   "type": "line",
   "text": "voice 3's frequency, high byte"
  },
  {
   "address": 38636,
   "type": "line",
   "text": "voice 3's pulse width and the rest of its instrument, from load_instrument_3"
  },
  {
   "address": 38638,
   "type": "line",
   "text": "Voice 3's control byte, bit 0 the gate"
  },
  {
   "address": 38643,
   "type": "line",
   "text": "not 0 to keep voice 2 out of the filter; written by nothing, so always 0"
  },
  {
   "address": 38645,
   "type": "line",
   "text": "not 0 to keep voice 3 out of the filter; written by nothing, so always 0"
  },
  {
   "address": 38646,
   "type": "line",
   "text": "Nine bytes after the voices' copies that nothing reads"
  },
  {
   "address": 38655,
   "type": "line",
   "text": "The riding stages' sound, run by play_music when hoofbeats ($8F99) is set, once a frame: the volume from $9821, and a counter (gallop_count, $9818) running down from the period in $9820. In the gallop, at 7 it strikes voices 1 and 2 with noise and voice 3 too, and shortens the period by one (down to 10); at 4 it cuts all three. When $981C is not 0 (counted down at random moments from CIA 1's timer, and at each beat once the period is below 12) it plays one other beat in its place: the count starts again at $11, voices 1 and 2 strike a triangle note at 15 and are cut at 12, without voice 3, and the gallop goes on."
  },
  {
   "address": 38936,
   "type": "line",
   "text": "hoof_sound's counter, down from the period in $9820 (from 40 at the train's start): the gallop strikes at 7 and cuts at 4, the other beat strikes at 15 and cuts at 12"
  },
  {
   "address": 38937,
   "type": "line",
   "text": "Set to 1 for the train; nothing reads it"
  },
  {
   "address": 38938,
   "type": "line",
   "text": "Frames to hoof_sound's next run: it reloads 1, so it runs every frame once started"
  },
  {
   "address": 38939,
   "type": "line",
   "text": "Random moments left before $981C is counted down, from 3"
  },
  {
   "address": 38940,
   "type": "line",
   "text": "Not 0 to start hoof_sound's other beat; counted down at random moments, and at each beat once the period is below 12"
  },
  {
   "address": 38941,
   "type": "line",
   "text": "Not 0 while the other beat plays, which leaves voice 3 out"
  },
  {
   "address": 38942,
   "type": "line",
   "text": "Set to 4 for the train; nothing reads it"
  },
  {
   "address": 38944,
   "type": "line",
   "text": "The gallop's period in frames: 20 at the train's start, shortened by one at each beat by hoof_sound down to 10 (the ride's loop speeds the train up as it shortens), and lengthened by 20 every 50 passes of ride_loop as the caught train slows"
  },
  {
   "address": 38945,
   "type": "line",
   "text": "The hoofbeats' volume, written to $D418: louder as the coach count falls"
  },
  {
   "address": 38946,
   "type": "line",
   "text": "The tune's voice 1, $9822-$9A3B: two-byte events (instrument and length, then the note) read by music_step. The tune is the finale of Rossini's William Tell overture, its trumpet call and then the gallop, played on the title and on ride 1 and slowed down for the ending"
  },
  {
   "address": 39484,
   "type": "line",
   "text": "The tune's voice 2, $9A3C-$9BD3, in the same two-byte events; music_step starts the whole tune again when voice 1 reaches this address"
  },
  {
   "address": 39892,
   "type": "line",
   "text": "The tune's voice 3, $9BD4-$9D25, in the same two-byte events"
  },
  {
   "address": 40230,
   "type": "line",
   "text": "The music's frequency table: two bytes a note, the high byte first, 0 then $010C rising a semitone each, ninety-six entries to $EEF8"
  },
  {
   "address": 40231,
   "type": "line",
   "text": "The low byte of each note's frequency, read as note_freqs_lo+X with X the note's number times two"
  },
  {
   "address": 40422,
   "type": "line",
   "text": "Twenty-six bytes after the frequency table that nothing reads: $FD $2E 0 and then $A9s"
  },
  {
   "address": 40448,
   "type": "line",
   "text": "The horse's whinny when the rider falls, $9E00-$9FFE, played by play_whinny: blocks of a volume byte and sixteen bytes of one-bit sound. Its last seven bytes read \"AZOOM-C\" in ASCII, a scrap of text the sample's length takes in"
  },
  {
   "address": 40959,
   "type": "line",
   "text": "The one byte DATA3 does not reach: it still holds DATA1's byte here"
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The town's header, for the shoot-out and before the train: its entry in picture_table points here. Bytes 1 to 6 hold the addresses of its screen colours ($AD6F), its colour-RAM nibbles ($B033) and their end ($B1AF), assembled for $A000, where it lies"
  },
  {
   "address": 40968,
   "type": "line",
   "text": "The town's bitmap, packed for unpack_bitmap and unpacked to $6000: character rows 0 to 3 and the first cell of row 4, the sky with the sun over the hills and the roofs of the saloon, the bank and the store"
  },
  {
   "address": 41751,
   "type": "line",
   "text": "The town's packed bitmap, row 4 from its second cell to row 6: the saloon's sign and upper windows, the little red house down the street, the bank's sign"
  },
  {
   "address": 42531,
   "type": "line",
   "text": "The town's packed bitmap, rows 7 to 10: the saloon's doors, the hitching rails, the bank's door and the store's sign"
  },
  {
   "address": 43414,
   "type": "line",
   "text": "The town's packed bitmap, rows 11 to 24: the stagecoach and the barrels, the street, and the black below it where the status lines go"
  },
  {
   "address": 44399,
   "type": "line",
   "text": "The town's screen colours, packed in pairs of a count and a value for unpack_runs: each cell's two colours, unpacked to $4400"
  },
  {
   "address": 45107,
   "type": "line",
   "text": "The town's colour-RAM colours, packed in pairs of a count and a byte of two cells' colours (high nibble first), spread over colour RAM by show_picture"
  },
  {
   "address": 45487,
   "type": "line",
   "text": "A byte between the town and the canyon that nothing reads"
  },
  {
   "address": 45488,
   "type": "line",
   "text": "The canyon's header, for the ducks: bytes 1 to 6 are its three addresses assembled as if it lay at $A000 ($AE9A, $B220, $B456), which show_picture moves by $11B0 to $C04A, $C3D0 and $C606"
  },
  {
   "address": 45496,
   "type": "line",
   "text": "The canyon's bitmap, packed for unpack_bitmap: rows 0 to 4, the sky between the canyon's grey walls"
  },
  {
   "address": 46383,
   "type": "line",
   "text": "The canyon's packed bitmap, rows 5 to 8: the walls and the pale mountain far off between them"
  },
  {
   "address": 47218,
   "type": "line",
   "text": "The canyon's packed bitmap, rows 9 to 12: the walls coming down to the river"
  },
  {
   "address": 48037,
   "type": "line",
   "text": "The canyon's packed bitmap, rows 13 to 16: the river, the tepees on the yellow bank to the right, the brown ground"
  },
  {
   "address": 48936,
   "type": "line",
   "text": "The canyon's packed bitmap, rows 17 to 20 (to column 23): the ground with its tufts of grass"
  },
  {
   "address": 49152,
   "type": "line",
   "text": "The canyon's packed bitmap from $C000 to its end at $C049: the rest of row 20 and rows 21 to 24, the black where the status lines go"
  },
  {
   "address": 49226,
   "type": "line",
   "text": "The canyon's screen colours, packed in count and value pairs for unpack_runs"
  },
  {
   "address": 49239,
   "type": "line",
   "text": "brk_handler jumps here, into the canyon's packed screen colours: a BRK in play would run these bytes as code. The only BRK is the impossible case in check_shot"
  },
  {
   "address": 49303,
   "type": "line",
   "text": "The canyon's packed screen colours from $C097, past the address brk_handler jumps to, to $C3CF"
  },
  {
   "address": 50128,
   "type": "line",
   "text": "The canyon's colour-RAM colours, packed in count and value pairs, two cells to a value"
  },
  {
   "address": 50694,
   "type": "line",
   "text": "Ten bytes between the canyon and the ending that nothing reads"
  },
  {
   "address": 50704,
   "type": "line",
   "text": "The ending's header: its three addresses assembled for $A000 ($A60D, $A7E9, $A963) and moved by $2610 to $CC1D, $CDF9 and $CF73"
  },
  {
   "address": 50712,
   "type": "line",
   "text": "The ending's bitmap, packed for unpack_bitmap: rows 0 to 6 and the first ten cells of row 7, the President's office: a map of the United States left of the left grey pillar, a portrait right of the right one, and the desk between them with the flag on it"
  },
  {
   "address": 51649,
   "type": "line",
   "text": "The ending's packed bitmap from row 7, column 10, to row 24: the desk's front, the blue floor and the black below"
  },
  {
   "address": 52253,
   "type": "line",
   "text": "The ending's screen colours, packed in count and value pairs"
  },
  {
   "address": 52729,
   "type": "line",
   "text": "The ending's colour-RAM colours, packed in count and value pairs"
  },
  {
   "address": 53107,
   "type": "line",
   "text": "Leftover after the ending, $CF73-$CFFF: a routine that prints a byte as hex through the KERNAL's CHROUT and PLOT, and fillers. Nothing calls it"
  },
  {
   "address": 53248,
   "type": "line",
   "text": "The shoot-out's and the ducks' sprite shapes, packed for unpack_rle ($00 or $FF followed by a count) and unpacked by show_picture to $4800-$5FFF, shapes $20 to $7F. This first part makes $20 to $34: the walking figure's hat and head ($20-$26), its legs ($27-$2F) and its first bodies"
  },
  {
   "address": 54234,
   "type": "line",
   "text": "The stages' packed shapes $35 to $49: the figure's bodies and arms, the standing figure ($3F-$41), the gun raised ($42-$44) and the first of the Marshall's fall ($48, $49)"
  },
  {
   "address": 55230,
   "type": "line",
   "text": "The stages' packed shapes $4A to $7F: the rest of the Marshall's fall ($4A-$4C), the puffs of dust ($4D-$4F), the archer's arm with the bow at five angles ($50-$54), the duck's four wing positions ($58-$5B), and spare shapes to $7F, nearly empty"
  },
  {
   "address": 55884,
   "type": "line",
   "text": "Four bytes after the stages' sprites that nothing reads: the end of a copying loop, INY, BNE and INC"
  },
  {
   "address": 55888,
   "type": "line",
   "text": "The rides' sprite shapes, packed for unpack_rle and unpacked by build_ride_screen to $4400-$77FF, shapes $10 to $DF. The horse is six sprites, so frame f is shapes 16+6f to 21+6f. This part makes shapes $10 to $2C: the gallop's frames 0 to 4"
  },
  {
   "address": 56868,
   "type": "line",
   "text": "The rides' packed shapes $2D to $48: the gallop's frames 5 to 8 and the first shapes of the trot (frame 9)"
  },
  {
   "address": 57344,
   "type": "line",
   "text": "The ride's packed shapes from $E000 to $E1EE, the same stream as ride_sprites_2"
  },
  {
   "address": 57839,
   "type": "line",
   "text": "The rides' packed shapes $49 to $60: the trot's frames 9 to 13"
  },
  {
   "address": 58804,
   "type": "line",
   "text": "The rides' packed shapes $61 to $7A: the trot's frames 13 to 17"
  },
  {
   "address": 59791,
   "type": "line",
   "text": "The rides' packed shapes $7B to $9A: the jump's frames $12 to $16 (shapes $7C-$99)"
  },
  {
   "address": 60039,
   "type": "line",
   "text": "In ROM, the KERNAL's keyboard scan (SCNKEY), which check_high_score calls with the KERNAL in; the RAM here is the jump's packed shapes"
  },
  {
   "address": 60103,
   "type": "line",
   "text": "The jump's packed shapes from $EAC7, past the KERNAL's SCNKEY address, to $ED76"
  },
  {
   "address": 60791,
   "type": "line",
   "text": "The rides' packed shapes $9B to $B5: the horse standing (frames $17-$19, shapes $9A-$AB) and the first of its turn"
  },
  {
   "address": 61762,
   "type": "line",
   "text": "The rides' packed shapes $B6 to $DF: the rest of the turn (frames $1A-$1E, to shape $C9), the rider's two shapes ($CA, $CB), and spare shapes, $CC to $CE replaced by thrown_rider"
  },
  {
   "address": 62405,
   "type": "line",
   "text": "Leftover after the rides' sprites, $F3C5-$F3EF: zeros and a copying routine's first instructions. Nothing reads them"
  },
  {
   "address": 62448,
   "type": "line",
   "text": "The hit sample, a cry, when a duck, a gunman or the Marshall is hit: $F3F0-$F6AF, played by play_hit, blocks of a volume byte and sixteen bytes of one-bit sound"
  },
  {
   "address": 63152,
   "type": "line",
   "text": "Sixteen bytes between the hit sample and the ride's characters that nothing reads: a copying routine's first instructions and zeros"
  },
  {
   "address": 63168,
   "type": "line",
   "text": "The rides' character set, copied by build_ride_screen to $7800, 2 KB to $FEBF. Characters 0 to $7F: the hills, the clouds, the band's ground and the obstacles, fences, rocks and bushes"
  },
  {
   "address": 64192,
   "type": "line",
   "text": "The rides' characters $80 to $BF: the train's carriages, wheels and smoke, and more obstacles. The copy also takes $FCC0-$FEBF, the start of the ending's sample, as characters $C0 to $FF, which no screen shows"
  },
  {
   "address": 64704,
   "type": "line",
   "text": "The ending's sample, $FCC0-$FF8F, a man's voice saying \"Well done\", played by play_ending_sample: blocks of a volume byte and sixteen bytes of one-bit sound. Its first 512 bytes are also the rides' characters $C0 to $FF"
  },
  {
   "address": 64738,
   "type": "line",
   "text": "In ROM, the KERNAL's reset routine, which unpack_runs jumps to if its destination ever reaches page $CF; the RAM here is the ending's sample"
  },
  {
   "address": 64802,
   "type": "line",
   "text": "The ending's sample from $FD22, past the KERNAL's reset address"
  },
  {
   "address": 64816,
   "type": "line",
   "text": "The KERNAL's table of vectors in ROM, read by restore_vectors (the RAM beneath is the ride's character set)"
  },
  {
   "address": 64880,
   "type": "line",
   "text": "The ending's sample from $FD70, past the KERNAL's vector table restore_vectors reads in ROM"
  },
  {
   "address": 64931,
   "type": "line",
   "text": "In ROM, the KERNAL's IOINIT, which brk_handler calls; the RAM here is the ending's sample"
  },
  {
   "address": 64995,
   "type": "line",
   "text": "The ending's sample from $FDE3, past the KERNAL's IOINIT address, to $FF5A"
  },
  {
   "address": 65371,
   "type": "line",
   "text": "In ROM, the KERNAL's CINT, which brk_handler calls; the RAM here is the ending sample's end"
  },
  {
   "address": 65424,
   "type": "line",
   "text": "Leftover after the ending's sample, $FF90-$FFFF: zeros, a routine that copies $5000 up under the KERNAL, and fillers. Nothing runs it in the game, and the KERNAL stays in, so the vectors at $FFFA are never read from RAM"
  },
  {
   "address": 65508,
   "type": "line",
   "text": "In ROM, the KERNAL's GETIN, which check_high_score calls to read a key; the RAM here is the leftover"
  }
 ]
}