{
 "schema": 1,
 "platform": "c64",
 "game": "power-drift",
 "build": "Activision original disk, PAL, Securispeed loader (C64 Preservation Project: power_drift[activision_1989](pal).g64)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    0,
    255,
    "runtime: zero page, the game's pointers, counters and the multiplexer's sprite records (named in the listing)"
   ],
   [
    1024,
    2047,
    "the loader's code and buffers, left in memory after the hand-over at $0834; nothing in the game reads them"
   ],
   [
    21359,
    21503,
    "runtime: the game's variables (speed, places, score, clock, course and stage), set at each start"
   ],
   [
    21504,
    22527,
    "runtime: the colour buffer the view is drawn into, copied to colour RAM after each flip (copy_colours)"
   ],
   [
    49237,
    49332,
    "runtime: the sound driver's workspace for its three voices, cleared by sound_reset"
   ],
   [
    49337,
    49408,
    "runtime: the sound driver's shadow registers and effect state, cleared by sound_reset"
   ],
   [
    57344,
    57543,
    "runtime: the panel's five rows at the top of the race screen, drawn by draw_panel and updated each frame"
   ],
   [
    59584,
    60415,
    "runtime: the view screen at $E800 below the sprites (rows 5 to 24) and its sprite pointers"
   ],
   [
    60416,
    61439,
    "runtime: the second view screen, also the select and text screens, and its sprite pointers"
   ],
   [
    64016,
    65535,
    "runtime: characters $42 to $FF of the race set, copied in each stage from the character blocks and setup_stage, and the NMI and IRQ vectors setup_interrupts writes; as loaded, filler and a copy of the KERNAL's vector table that nothing reads"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2047,
   "type": "Undefined"
  },
  {
   "start": 2048,
   "end": 2099,
   "type": "Byte"
  },
  {
   "start": 2100,
   "end": 2645,
   "type": "Code"
  },
  {
   "start": 2646,
   "end": 2654,
   "type": "Byte"
  },
  {
   "start": 2655,
   "end": 2956,
   "type": "Code"
  },
  {
   "start": 2957,
   "end": 2994,
   "type": "Byte"
  },
  {
   "start": 2995,
   "end": 3050,
   "type": "Word"
  },
  {
   "start": 3051,
   "end": 3113,
   "type": "Byte"
  },
  {
   "start": 3114,
   "end": 3995,
   "type": "Code"
  },
  {
   "start": 3996,
   "end": 4100,
   "type": "Byte"
  },
  {
   "start": 4101,
   "end": 4258,
   "type": "Code"
  },
  {
   "start": 4259,
   "end": 4275,
   "type": "Byte"
  },
  {
   "start": 4276,
   "end": 4300,
   "type": "Code"
  },
  {
   "start": 4301,
   "end": 4313,
   "type": "Byte"
  },
  {
   "start": 4314,
   "end": 4558,
   "type": "Code"
  },
  {
   "start": 4559,
   "end": 4740,
   "type": "Byte"
  },
  {
   "start": 4741,
   "end": 4764,
   "type": "Word"
  },
  {
   "start": 4765,
   "end": 4872,
   "type": "Byte"
  },
  {
   "start": 4873,
   "end": 4896,
   "type": "Word"
  },
  {
   "start": 4897,
   "end": 5004,
   "type": "Byte"
  },
  {
   "start": 5005,
   "end": 5048,
   "type": "Code"
  },
  {
   "start": 5049,
   "end": 5088,
   "type": "Byte"
  },
  {
   "start": 5089,
   "end": 5290,
   "type": "Code"
  },
  {
   "start": 5291,
   "end": 5314,
   "type": "Word"
  },
  {
   "start": 5315,
   "end": 5467,
   "type": "Byte"
  },
  {
   "start": 5468,
   "end": 5716,
   "type": "Code"
  },
  {
   "start": 5717,
   "end": 5766,
   "type": "Byte"
  },
  {
   "start": 5767,
   "end": 5960,
   "type": "Code"
  },
  {
   "start": 5961,
   "end": 5992,
   "type": "Byte"
  },
  {
   "start": 5993,
   "end": 6008,
   "type": "Word"
  },
  {
   "start": 6009,
   "end": 6044,
   "type": "Byte"
  },
  {
   "start": 6045,
   "end": 6130,
   "type": "Code"
  },
  {
   "start": 6131,
   "end": 6198,
   "type": "Byte"
  },
  {
   "start": 6199,
   "end": 6536,
   "type": "Code"
  },
  {
   "start": 6537,
   "end": 6547,
   "type": "Byte"
  },
  {
   "start": 6548,
   "end": 6632,
   "type": "Code"
  },
  {
   "start": 6633,
   "end": 6679,
   "type": "Byte"
  },
  {
   "start": 6680,
   "end": 6759,
   "type": "Code"
  },
  {
   "start": 6760,
   "end": 6774,
   "type": "Byte"
  },
  {
   "start": 6775,
   "end": 6912,
   "type": "Code"
  },
  {
   "start": 6913,
   "end": 8388,
   "type": "Word"
  },
  {
   "start": 8389,
   "end": 9000,
   "type": "Byte"
  },
  {
   "start": 9001,
   "end": 9029,
   "type": "Code"
  },
  {
   "start": 9030,
   "end": 11019,
   "type": "Word"
  },
  {
   "start": 11020,
   "end": 11124,
   "type": "Code"
  },
  {
   "start": 11125,
   "end": 11200,
   "type": "Word"
  },
  {
   "start": 11201,
   "end": 11673,
   "type": "Byte"
  },
  {
   "start": 11674,
   "end": 11738,
   "type": "Code"
  },
  {
   "start": 11739,
   "end": 11912,
   "type": "Word"
  },
  {
   "start": 11913,
   "end": 11970,
   "type": "Code"
  },
  {
   "start": 11971,
   "end": 12042,
   "type": "Word"
  },
  {
   "start": 12043,
   "end": 12124,
   "type": "Code"
  },
  {
   "start": 12125,
   "end": 12262,
   "type": "Word"
  },
  {
   "start": 12263,
   "end": 12342,
   "type": "Code"
  },
  {
   "start": 12343,
   "end": 12492,
   "type": "Word"
  },
  {
   "start": 12493,
   "end": 12595,
   "type": "Code"
  },
  {
   "start": 12596,
   "end": 12653,
   "type": "Byte"
  },
  {
   "start": 12654,
   "end": 12827,
   "type": "Word"
  },
  {
   "start": 12828,
   "end": 12901,
   "type": "Code"
  },
  {
   "start": 12902,
   "end": 12944,
   "type": "Byte"
  },
  {
   "start": 12945,
   "end": 13381,
   "type": "Code"
  },
  {
   "start": 13382,
   "end": 13392,
   "type": "Byte"
  },
  {
   "start": 13393,
   "end": 14076,
   "type": "Code"
  },
  {
   "start": 14077,
   "end": 14130,
   "type": "Byte"
  },
  {
   "start": 14131,
   "end": 14160,
   "type": "Word"
  },
  {
   "start": 14161,
   "end": 14180,
   "type": "Byte"
  },
  {
   "start": 14181,
   "end": 14220,
   "type": "Word"
  },
  {
   "start": 14221,
   "end": 14240,
   "type": "Byte"
  },
  {
   "start": 14241,
   "end": 14280,
   "type": "Word"
  },
  {
   "start": 14281,
   "end": 14300,
   "type": "Byte"
  },
  {
   "start": 14301,
   "end": 14340,
   "type": "Word"
  },
  {
   "start": 14341,
   "end": 14360,
   "type": "Byte"
  },
  {
   "start": 14361,
   "end": 14400,
   "type": "Word"
  },
  {
   "start": 14401,
   "end": 14420,
   "type": "Byte"
  },
  {
   "start": 14421,
   "end": 14440,
   "type": "Word"
  },
  {
   "start": 14441,
   "end": 14750,
   "type": "Code"
  },
  {
   "start": 14751,
   "end": 14752,
   "type": "Byte"
  },
  {
   "start": 14753,
   "end": 15138,
   "type": "Code"
  },
  {
   "start": 15139,
   "end": 15202,
   "type": "Byte"
  },
  {
   "start": 15203,
   "end": 15234,
   "type": "Word"
  },
  {
   "start": 15235,
   "end": 15866,
   "type": "Code"
  },
  {
   "start": 15867,
   "end": 15882,
   "type": "Byte"
  },
  {
   "start": 15883,
   "end": 15932,
   "type": "Word"
  },
  {
   "start": 15933,
   "end": 17493,
   "type": "Byte"
  },
  {
   "start": 17494,
   "end": 17643,
   "type": "Code"
  },
  {
   "start": 17644,
   "end": 17747,
   "type": "Byte"
  },
  {
   "start": 17748,
   "end": 17966,
   "type": "Code"
  },
  {
   "start": 17967,
   "end": 20003,
   "type": "Byte"
  },
  {
   "start": 20004,
   "end": 20052,
   "type": "Code"
  },
  {
   "start": 20053,
   "end": 20072,
   "type": "Word"
  },
  {
   "start": 20073,
   "end": 20294,
   "type": "Code"
  },
  {
   "start": 20295,
   "end": 20314,
   "type": "Word"
  },
  {
   "start": 20315,
   "end": 20796,
   "type": "Code"
  },
  {
   "start": 20797,
   "end": 20864,
   "type": "Byte"
  },
  {
   "start": 20865,
   "end": 21238,
   "type": "Code"
  },
  {
   "start": 21239,
   "end": 21241,
   "type": "Undefined"
  },
  {
   "start": 21242,
   "end": 21342,
   "type": "Code"
  },
  {
   "start": 21343,
   "end": 21358,
   "type": "Byte"
  },
  {
   "start": 21359,
   "end": 22527,
   "type": "Undefined"
  },
  {
   "start": 22528,
   "end": 47093,
   "type": "Byte"
  },
  {
   "start": 47094,
   "end": 47103,
   "type": "Undefined"
  },
  {
   "start": 47104,
   "end": 47106,
   "type": "Code"
  },
  {
   "start": 47107,
   "end": 47113,
   "type": "Byte"
  },
  {
   "start": 47114,
   "end": 47274,
   "type": "Code"
  },
  {
   "start": 47275,
   "end": 47276,
   "type": "Byte"
  },
  {
   "start": 47277,
   "end": 48122,
   "type": "Code"
  },
  {
   "start": 48123,
   "end": 48125,
   "type": "Byte"
  },
  {
   "start": 48126,
   "end": 49179,
   "type": "Code"
  },
  {
   "start": 49180,
   "end": 49191,
   "type": "Undefined"
  },
  {
   "start": 49192,
   "end": 49236,
   "type": "Code"
  },
  {
   "start": 49237,
   "end": 49332,
   "type": "Undefined"
  },
  {
   "start": 49333,
   "end": 49336,
   "type": "Byte"
  },
  {
   "start": 49337,
   "end": 49408,
   "type": "Undefined"
  },
  {
   "start": 49409,
   "end": 49718,
   "type": "Byte"
  },
  {
   "start": 49719,
   "end": 49728,
   "type": "Word"
  },
  {
   "start": 49729,
   "end": 50361,
   "type": "Byte"
  },
  {
   "start": 50362,
   "end": 50417,
   "type": "Word"
  },
  {
   "start": 50418,
   "end": 51031,
   "type": "Byte"
  },
  {
   "start": 51032,
   "end": 51695,
   "type": "Word"
  },
  {
   "start": 51696,
   "end": 59583,
   "type": "Byte"
  },
  {
   "start": 59584,
   "end": 61439,
   "type": "Undefined"
  },
  {
   "start": 61440,
   "end": 64015,
   "type": "Byte"
  },
  {
   "start": 64016,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "cpu_ddr",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpa_02",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 12,
   "name": "zpa_0C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpa_13",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20,
   "name": "zpa_14",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21,
   "name": "zpa_15",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22,
   "name": "zpa_16",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 23,
   "name": "zpa_17",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 25,
   "name": "zpa_19",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26,
   "name": "zpa_1A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27,
   "name": "zpa_1B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28,
   "name": "zpa_1C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "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": 32,
   "name": "zpa_20",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpa_23",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "zpa_2C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "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": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpf_31",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpf_35",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpf_39",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "zpf_3D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpa_45",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "zpp_46",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpa_47",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 72,
   "name": "zpa_48",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 73,
   "name": "zpa_49",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 74,
   "name": "zpf_4A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpf_4B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpf_4C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpf_4D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 90,
   "name": "zpf_5A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "zpf_5B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "zpf_5C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 93,
   "name": "zpf_5D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "zpf_6A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpf_6B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 108,
   "name": "zpf_6C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpf_6D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpf_7A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpf_7B",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpf_7C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpf_7D",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "f_0085",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpf_8A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 154,
   "name": "zpf_9A",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "zpf_AA",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpf_BA",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 201,
   "name": "zpf_C9",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 202,
   "name": "zpf_CA",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 203,
   "name": "zpf_CB",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "zpa_D1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 218,
   "name": "zpa_DA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 219,
   "name": "zpa_DB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 220,
   "name": "zpa_DC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 221,
   "name": "zpa_DD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 222,
   "name": "zpa_DE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 223,
   "name": "zpa_DF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 224,
   "name": "zpa_E0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 225,
   "name": "zpp_E1",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 226,
   "name": "zpa_E2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpp_E3",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 228,
   "name": "zpa_E4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 229,
   "name": "zpa_E5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 230,
   "name": "zpa_E6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 231,
   "name": "zpf_E7",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 241,
   "name": "zpa_F1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 244,
   "name": "a_00F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 245,
   "name": "a_00F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 246,
   "name": "zpa_F6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 247,
   "name": "zpa_F7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 248,
   "name": "zpa_F8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 249,
   "name": "zpa_F9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 250,
   "name": "zpa_FA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 251,
   "name": "zpa_FB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 255,
   "name": "zpa_FF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2048,
   "name": "signature_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2100,
   "name": "game_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2138,
   "name": "b_085A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2159,
   "name": "stage_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2220,
   "name": "race_frame_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2245,
   "name": "b_08C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2306,
   "name": "b_0902",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2317,
   "name": "stage_won",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2327,
   "name": "b_0917",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2329,
   "name": "b_0919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2350,
   "name": "b_092E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2394,
   "name": "game_over",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2411,
   "name": "course_complete",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2420,
   "name": "panel_faces_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2456,
   "name": "r_0998",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2457,
   "name": "high_score_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2459,
   "name": "b_099B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2495,
   "name": "b_09BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2517,
   "name": "b_09D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2555,
   "name": "b_09FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2567,
   "name": "b_0A07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2598,
   "name": "b_0A26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2609,
   "name": "b_0A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2621,
   "name": "r_0A3D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2622,
   "name": "show_game_over",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2627,
   "name": "b_0A43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2646,
   "name": "str_game_over",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2655,
   "name": "text_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2698,
   "name": "name_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2711,
   "name": "b_0A97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2732,
   "name": "b_0AAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2752,
   "name": "b_0AC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2793,
   "name": "b_0AE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2800,
   "name": "b_0AF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2843,
   "name": "b_0B1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2862,
   "name": "b_0B2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2931,
   "name": "b_0B73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2951,
   "name": "b_0B87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2957,
   "name": "str_name_entry",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2967,
   "name": "name_entry_letters",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2995,
   "name": "name_entry_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2996,
   "name": "name_entry_cells_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3051,
   "name": "high_score_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3055,
   "name": "high_score_names_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3087,
   "name": "high_score_scores",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3088,
   "name": "high_score_scores_mid",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3089,
   "name": "high_score_scores_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3090,
   "name": "high_score_scores_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3091,
   "name": "high_score_scores_1_mid",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3092,
   "name": "high_score_scores_1_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3114,
   "name": "draw_high_scores",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3135,
   "name": "b_0C3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3175,
   "name": "b_0C67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3186,
   "name": "draw_score_name",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3196,
   "name": "b_0C7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3212,
   "name": "draw_score_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3309,
   "name": "select_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3356,
   "name": "draw_course_pictures",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3358,
   "name": "b_0D1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3386,
   "name": "b_0D3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3449,
   "name": "b_0D79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3511,
   "name": "b_0DB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3529,
   "name": "b_0DC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3581,
   "name": "driver_cursor_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3596,
   "name": "b_0E0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3630,
   "name": "b_0E2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3664,
   "name": "b_0E50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3684,
   "name": "b_0E64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3690,
   "name": "lower_kart",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 3728,
   "name": "b_0E90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3748,
   "name": "b_0EA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3783,
   "name": "b_0EC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3837,
   "name": "j_0EFD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3850,
   "name": "b_0F0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3975,
   "name": "b_0F87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3990,
   "name": "b_0F96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3996,
   "name": "course_picture_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4001,
   "name": "course_picture_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4006,
   "name": "course_picture_sources",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4011,
   "name": "lowered_kart_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4015,
   "name": "lowered_kart_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4019,
   "name": "lowered_kart_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4023,
   "name": "str_copyright",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4062,
   "name": "str_select_course",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4101,
   "name": "draw_face_first",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4131,
   "name": "draw_face_second",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4168,
   "name": "draw_face_cells",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4172,
   "name": "b_104C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4187,
   "name": "congratulations",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4194,
   "name": "b_1062",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4199,
   "name": "b_1067",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4225,
   "name": "b_1081",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4238,
   "name": "b_108E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4259,
   "name": "str_congratulations",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4276,
   "name": "show_bonus",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4278,
   "name": "b_10B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4301,
   "name": "str_bonus",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4314,
   "name": "count_bonus",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4357,
   "name": "draw_bonus_digits",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4378,
   "name": "draw_panel",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4380,
   "name": "b_111C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4406,
   "name": "b_1136",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4440,
   "name": "b_1158",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4490,
   "name": "b_118A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4514,
   "name": "b_11A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4559,
   "name": "panel_row3_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4599,
   "name": "panel_row3_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4639,
   "name": "panel_row4_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4679,
   "name": "panel_row4_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4719,
   "name": "panel_rival_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4730,
   "name": "panel_rival_slots",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4741,
   "name": "face_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4742,
   "name": "face_pointers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4765,
   "name": "face_cells",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4873,
   "name": "face2_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4874,
   "name": "face2_pointers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4897,
   "name": "face2_cells",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5005,
   "name": "draw_stage_marks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5007,
   "name": "b_138F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5020,
   "name": "b_139C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5024,
   "name": "draw_course_letter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5032,
   "name": "b_13A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5049,
   "name": "course_letter_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5069,
   "name": "course_letter_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5089,
   "name": "update_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5096,
   "name": "b_13E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5126,
   "name": "b_1406",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5129,
   "name": "b_1409",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5135,
   "name": "r_140F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5136,
   "name": "b_1410",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5141,
   "name": "show_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5198,
   "name": "b_144E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5212,
   "name": "show_place_operand_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5213,
   "name": "show_place_operand_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5275,
   "name": "b_149B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5291,
   "name": "place_number_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5292,
   "name": "place_number_pointers_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5315,
   "name": "panel_slot_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5327,
   "name": "place_suffix",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5339,
   "name": "cell_offsets_3x3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5348,
   "name": "slot_marker_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5360,
   "name": "place_number_cells",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5468,
   "name": "drop_kart_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5487,
   "name": "b_156F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5586,
   "name": "drop_kart_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5595,
   "name": "b_15DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5622,
   "name": "b_15F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5627,
   "name": "r_15FB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5628,
   "name": "wipe_wedge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5666,
   "name": "b_1622",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5671,
   "name": "b_1627",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5704,
   "name": "b_1648",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5717,
   "name": "wipe_rows_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5725,
   "name": "wipe_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5732,
   "name": "wipe_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5739,
   "name": "wipe_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5746,
   "name": "wipe_first_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5753,
   "name": "wipe_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5760,
   "name": "wipe_slope",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5767,
   "name": "kart_spin",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5812,
   "name": "b_16B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5829,
   "name": "b_16C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5838,
   "name": "b_16CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5900,
   "name": "b_170C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5915,
   "name": "b_171B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5946,
   "name": "b_173A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5949,
   "name": "b_173D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5961,
   "name": "spin_kart_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5969,
   "name": "spin_kart_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5977,
   "name": "spin_kart_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5985,
   "name": "spin_head_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5993,
   "name": "spin_head_tables",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5994,
   "name": "spin_head_tables_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6009,
   "name": "head_behind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6021,
   "name": "head_looking_back",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6033,
   "name": "head_front",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6045,
   "name": "start_lights",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6049,
   "name": "b_17A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6109,
   "name": "b_17DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6131,
   "name": "start_band3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6148,
   "name": "start_band2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6165,
   "name": "start_band3_off",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6182,
   "name": "start_band2_off",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6199,
   "name": "draw_horizon_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6261,
   "name": "b_1875",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6263,
   "name": "b_1877",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6264,
   "name": "horizon_lower_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6265,
   "name": "horizon_lower_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6267,
   "name": "horizon_lower_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6268,
   "name": "horizon_lower_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6286,
   "name": "b_188E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6292,
   "name": "b_1894",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6350,
   "name": "b_18CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6352,
   "name": "b_18D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6353,
   "name": "horizon_upper_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6354,
   "name": "horizon_upper_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6356,
   "name": "horizon_upper_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6357,
   "name": "horizon_upper_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6375,
   "name": "b_18E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6381,
   "name": "r_18ED",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6382,
   "name": "copy_kart_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6384,
   "name": "b_18F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6404,
   "name": "sort_karts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6408,
   "name": "b_1908",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6428,
   "name": "b_191C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6443,
   "name": "b_192B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6463,
   "name": "b_193F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6470,
   "name": "r_1946",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6471,
   "name": "reset_kart_order",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6473,
   "name": "b_1949",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6480,
   "name": "move_rivals",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6482,
   "name": "b_1952",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6497,
   "name": "b_1961",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6528,
   "name": "b_1980",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6530,
   "name": "b_1982",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6537,
   "name": "rival_top_speeds",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6548,
   "name": "place_finisher",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6614,
   "name": "b_19D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6626,
   "name": "r_19E2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6627,
   "name": "b_19E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6633,
   "name": "podium_labels",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6680,
   "name": "clear_text_screen",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6698,
   "name": "b_1A2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6720,
   "name": "set_kart_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6742,
   "name": "b_1A56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6760,
   "name": "kart_body_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6770,
   "name": "kart_head_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6775,
   "name": "scenery_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6777,
   "name": "b_1A79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6784,
   "name": "b_1A80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6788,
   "name": "next_scenery_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6794,
   "name": "read_scenery_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6809,
   "name": "b_1A99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6831,
   "name": "b_1AAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6839,
   "name": "scenery_list_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6860,
   "name": "b_1ACC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6879,
   "name": "b_1ADF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6881,
   "name": "b_1AE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6897,
   "name": "b_1AF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6913,
   "name": "scenery_a1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6971,
   "name": "scenery_a2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7029,
   "name": "scenery_a3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7093,
   "name": "scenery_a4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7153,
   "name": "scenery_a5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7209,
   "name": "scenery_b1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7269,
   "name": "scenery_b2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7329,
   "name": "scenery_b3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7383,
   "name": "scenery_b4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7441,
   "name": "scenery_b5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7503,
   "name": "scenery_c1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7561,
   "name": "scenery_c2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7617,
   "name": "scenery_c3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7683,
   "name": "scenery_c4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7747,
   "name": "scenery_c5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7803,
   "name": "scenery_d1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7859,
   "name": "scenery_d2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7919,
   "name": "scenery_d3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7975,
   "name": "scenery_d4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8031,
   "name": "scenery_d5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8093,
   "name": "scenery_e1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8147,
   "name": "scenery_e2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8207,
   "name": "scenery_e3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8263,
   "name": "scenery_e4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8327,
   "name": "scenery_e5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8389,
   "name": "scenery_streams",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8881,
   "name": "scenery_stream_unused",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8953,
   "name": "scenery_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9001,
   "name": "track_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9005,
   "name": "j_232D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9021,
   "name": "rts_233D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9022,
   "name": "b_233E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9030,
   "name": "track_a1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9096,
   "name": "track_a2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9166,
   "name": "track_a3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9250,
   "name": "track_a4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9338,
   "name": "track_a5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9438,
   "name": "track_b1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9512,
   "name": "track_b2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9592,
   "name": "track_b3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9650,
   "name": "track_b4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9732,
   "name": "track_b5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9820,
   "name": "track_c1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9876,
   "name": "track_c2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9964,
   "name": "track_c3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10044,
   "name": "track_c4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10126,
   "name": "track_c5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10198,
   "name": "track_d1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10280,
   "name": "track_d2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10352,
   "name": "track_d3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10452,
   "name": "track_d4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10538,
   "name": "track_d5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10632,
   "name": "track_e1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10704,
   "name": "track_e2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10776,
   "name": "track_e3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10858,
   "name": "track_e4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10932,
   "name": "track_e5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11020,
   "name": "piece_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11048,
   "name": "b_2B28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11055,
   "name": "piece_bend_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11090,
   "name": "piece_bend_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11125,
   "name": "bend_road_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11126,
   "name": "bend_road_offsets_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11163,
   "name": "bend_scenery_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11164,
   "name": "bend_scenery_offsets_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11201,
   "name": "bend_offset_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11674,
   "name": "piece_descent",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11731,
   "name": "r_2DD3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11732,
   "name": "b_2DD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11739,
   "name": "descent_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11740,
   "name": "descent_widths_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11797,
   "name": "descent_scenery_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11798,
   "name": "descent_scenery_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11855,
   "name": "descent_kart_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11856,
   "name": "descent_kart_heights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11913,
   "name": "piece_level_out",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11964,
   "name": "b_2EBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11971,
   "name": "level_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11972,
   "name": "level_widths_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11995,
   "name": "level_scenery_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11996,
   "name": "level_scenery_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12019,
   "name": "level_kart_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12020,
   "name": "level_kart_heights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12043,
   "name": "piece_straight_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12052,
   "name": "piece_straight_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12061,
   "name": "b_2F1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12068,
   "name": "piece_climb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12124,
   "name": "r_2F5C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12125,
   "name": "climb_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12126,
   "name": "climb_widths_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12171,
   "name": "climb_scenery_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12172,
   "name": "climb_scenery_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12217,
   "name": "climb_kart_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12218,
   "name": "climb_kart_heights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12263,
   "name": "piece_descent_straight",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12318,
   "name": "r_301E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12319,
   "name": "b_301F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12326,
   "name": "b_3026",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12343,
   "name": "descent2_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12344,
   "name": "descent2_widths_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12393,
   "name": "descent2_scenery_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12394,
   "name": "descent2_scenery_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12443,
   "name": "descent2_kart_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12444,
   "name": "descent2_kart_heights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12493,
   "name": "piece_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12535,
   "name": "piece_crest",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12588,
   "name": "r_312C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12589,
   "name": "b_312D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12596,
   "name": "jump_gap_from",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12625,
   "name": "jump_gap_to",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12654,
   "name": "crest_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12655,
   "name": "crest_widths_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12712,
   "name": "crest_scenery_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12713,
   "name": "crest_scenery_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12770,
   "name": "crest_kart_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12771,
   "name": "crest_kart_heights_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12828,
   "name": "bend_drift",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12863,
   "name": "b_323F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12871,
   "name": "b_3247",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12877,
   "name": "b_324D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12899,
   "name": "b_3263",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12901,
   "name": "r_3265",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12902,
   "name": "bend_pull_right_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12907,
   "name": "bend_pull_right_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12912,
   "name": "bend_pull_left_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12917,
   "name": "bend_pull_left_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12922,
   "name": "jump_head_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12945,
   "name": "move_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12951,
   "name": "b_3297",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12959,
   "name": "b_329F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12967,
   "name": "b_32A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12995,
   "name": "b_32C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13035,
   "name": "b_32EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13065,
   "name": "b_3309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13089,
   "name": "j_3321",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13105,
   "name": "b_3331",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13107,
   "name": "b_3333",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13121,
   "name": "b_3341",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13129,
   "name": "b_3349",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13136,
   "name": "b_3350",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13167,
   "name": "b_336F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13173,
   "name": "b_3375",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13180,
   "name": "j_337C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13199,
   "name": "move_on",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13298,
   "name": "b_33F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13313,
   "name": "b_3401",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13319,
   "name": "gear_change",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13375,
   "name": "r_343F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13376,
   "name": "b_3440",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13382,
   "name": "gear_arrow_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13384,
   "name": "gear_arrow_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13386,
   "name": "gear_colour_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13388,
   "name": "gear_colour_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13390,
   "name": "podium_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13393,
   "name": "add_speed_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13426,
   "name": "draw_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13446,
   "name": "b_3486",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13466,
   "name": "b_349A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13488,
   "name": "race_clock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13569,
   "name": "b_3501",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13570,
   "name": "r_3502",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13571,
   "name": "speed_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13600,
   "name": "j_3520",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13625,
   "name": "r_3539",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13626,
   "name": "slow_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13656,
   "name": "setup_stage",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13874,
   "name": "b_3632",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13876,
   "name": "b_3634",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13878,
   "name": "stage_chars_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13921,
   "name": "b_3661",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13961,
   "name": "b_3689",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13984,
   "name": "b_36A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14008,
   "name": "b_36B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14029,
   "name": "b_36CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14052,
   "name": "b_36E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14060,
   "name": "reset_kart_height",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14077,
   "name": "scenery_counter_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14081,
   "name": "rival_start_coarse",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14092,
   "name": "rival_start_fine",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14103,
   "name": "rival_lanes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14114,
   "name": "driver_kart_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14126,
   "name": "kart_colour_choices",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14131,
   "name": "course_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14132,
   "name": "course_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14141,
   "name": "course_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14161,
   "name": "course_a_looks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14181,
   "name": "course_a_horizons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14201,
   "name": "course_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14221,
   "name": "course_b_looks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14241,
   "name": "course_b_horizons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14261,
   "name": "course_c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14281,
   "name": "course_c_looks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14301,
   "name": "course_c_horizons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14321,
   "name": "course_d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14341,
   "name": "course_d_looks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14361,
   "name": "course_d_horizons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14381,
   "name": "course_e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14401,
   "name": "course_e_looks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14421,
   "name": "course_e_horizons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14441,
   "name": "pause_on_space",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14448,
   "name": "b_3870",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14458,
   "name": "b_387A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14468,
   "name": "b_3884",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14478,
   "name": "r_388E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14479,
   "name": "wait_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14494,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14517,
   "name": "seed_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14530,
   "name": "setup_video",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14596,
   "name": "copy_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14598,
   "name": "b_3906",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14639,
   "name": "b_392F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14680,
   "name": "b_3958",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14721,
   "name": "b_3981",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14737,
   "name": "set_view_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14751,
   "name": "view_d018",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14753,
   "name": "clear_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14761,
   "name": "b_39A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14825,
   "name": "b_39E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14829,
   "name": "b_39ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14892,
   "name": "rts_3A2C",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14893,
   "name": "hide_rival_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14897,
   "name": "b_3A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14903,
   "name": "place_rivals",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14914,
   "name": "b_3A42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14942,
   "name": "b_3A5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14974,
   "name": "b_3A7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14982,
   "name": "b_3A86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14996,
   "name": "b_3A94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15017,
   "name": "b_3AA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15093,
   "name": "b_3AF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15131,
   "name": "b_3B1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15138,
   "name": "r_3B22",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15139,
   "name": "rival_scale",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15171,
   "name": "rival_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15203,
   "name": "rival_picture_routines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15204,
   "name": "rival_picture_routines_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15235,
   "name": "rival_near",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15301,
   "name": "rival_close",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15355,
   "name": "rival_middle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15409,
   "name": "rival_far_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15431,
   "name": "rival_far_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15453,
   "name": "rival_far_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15475,
   "name": "call_02",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15478,
   "name": "draw_scenery",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15484,
   "name": "j_3C7C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15506,
   "name": "b_3C92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15514,
   "name": "b_3C9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15528,
   "name": "b_3CA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15549,
   "name": "b_3CBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15650,
   "name": "b_3D22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15653,
   "name": "b_3D25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15719,
   "name": "b_3D67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15744,
   "name": "b_3D80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15851,
   "name": "b_3DEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15854,
   "name": "b_3DEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15859,
   "name": "b_3DF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15866,
   "name": "r_3DFA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15867,
   "name": "scenery_scale",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15883,
   "name": "scenery_pictures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15884,
   "name": "scenery_pictures_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15933,
   "name": "scenery_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15958,
   "name": "scenery_type_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16022,
   "name": "scenery_type_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16086,
   "name": "scenery_type_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16150,
   "name": "scenery_type_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16214,
   "name": "scenery_type_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16278,
   "name": "scenery_type_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16342,
   "name": "scenery_type_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16406,
   "name": "scenery_type_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16470,
   "name": "scenery_type_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16534,
   "name": "scenery_type_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16598,
   "name": "scenery_type_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16662,
   "name": "scenery_type_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16726,
   "name": "scenery_type_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16790,
   "name": "scenery_type_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16854,
   "name": "scenery_type_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16918,
   "name": "scenery_type_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16982,
   "name": "scenery_type_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17046,
   "name": "scenery_type_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17110,
   "name": "scenery_type_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17174,
   "name": "scenery_type_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17238,
   "name": "scenery_type_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17302,
   "name": "scenery_type_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17366,
   "name": "scenery_type_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17430,
   "name": "scenery_type_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17494,
   "name": "draw_tiles",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17531,
   "name": "r_447B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 17532,
   "name": "b_447C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17550,
   "name": "j_448E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 17594,
   "name": "b_44BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17597,
   "name": "b_44BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17607,
   "name": "b_44C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17625,
   "name": "b_44D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17637,
   "name": "b_44E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17643,
   "name": "r_44EB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 17644,
   "name": "back_screen_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17646,
   "name": "row_offset_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17697,
   "name": "row_offset_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 17748,
   "name": "r_4554",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 17749,
   "name": "draw_road",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 17798,
   "name": "j_4586",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 17813,
   "name": "b_4595",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17832,
   "name": "b_45A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17847,
   "name": "b_45B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17855,
   "name": "b_45BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17869,
   "name": "b_45CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17890,
   "name": "b_45E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17914,
   "name": "b_45FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17922,
   "name": "b_4602",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17928,
   "name": "b_4608",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17941,
   "name": "b_4615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17949,
   "name": "j_461D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 17967,
   "name": "road_flat_widths",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17977,
   "name": "road_flat_scenery_rows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17993,
   "name": "road_flat_kart_heights",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18025,
   "name": "road_profiles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19049,
   "name": "road_profiles_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20004,
   "name": "road_left_edge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20015,
   "name": "b_4E2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20027,
   "name": "b_4E3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20033,
   "name": "j_4E41",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 20053,
   "name": "left_edge_routines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20054,
   "name": "left_edge_routines_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20073,
   "name": "left_edge_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20088,
   "name": "b_4E78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20093,
   "name": "b_4E7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20098,
   "name": "left_edge_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20109,
   "name": "b_4E8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20114,
   "name": "left_edge_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20126,
   "name": "left_edge_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20144,
   "name": "r_4EB0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20145,
   "name": "left_edge_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20169,
   "name": "left_edge_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20198,
   "name": "left_edge_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20211,
   "name": "b_4EF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20216,
   "name": "left_edge_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20228,
   "name": "left_edge_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20245,
   "name": "road_right_edge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20256,
   "name": "b_4F20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20268,
   "name": "b_4F2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20274,
   "name": "j_4F32",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 20295,
   "name": "right_edge_routines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20296,
   "name": "right_edge_routines_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20315,
   "name": "right_edge_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20330,
   "name": "b_4F6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20335,
   "name": "b_4F6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20340,
   "name": "right_edge_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20351,
   "name": "b_4F7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20356,
   "name": "right_edge_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20369,
   "name": "r_4F91",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 20370,
   "name": "right_edge_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20393,
   "name": "right_edge_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20423,
   "name": "right_edge_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20460,
   "name": "right_edge_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20472,
   "name": "b_4FF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20477,
   "name": "right_edge_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20488,
   "name": "right_edge_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20504,
   "name": "wait_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20506,
   "name": "b_501A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20511,
   "name": "setup_interrupts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20572,
   "name": "start_race_irqs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20581,
   "name": "enable_raster",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 20606,
   "name": "nmi_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20607,
   "name": "irq_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20637,
   "name": "b_509D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20651,
   "name": "sprite_band_irq",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 20663,
   "name": "b_50B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20793,
   "name": "b_5139",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20797,
   "name": "sprite_bands",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20798,
   "name": "band_on_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20799,
   "name": "band_on_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20800,
   "name": "band_on_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20801,
   "name": "band_x0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20805,
   "name": "band_x1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20809,
   "name": "band_x2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20813,
   "name": "band_x3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20817,
   "name": "band_y0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20821,
   "name": "band_y1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20825,
   "name": "band_y2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20829,
   "name": "band_y3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20833,
   "name": "band_pointer0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20837,
   "name": "band_pointer1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20841,
   "name": "band_pointer2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20845,
   "name": "band_pointer3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20849,
   "name": "band_colour0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20851,
   "name": "start_light_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20853,
   "name": "band_colour1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20855,
   "name": "start_light_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20857,
   "name": "band_colour2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20859,
   "name": "start_light_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20861,
   "name": "band_colour3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20865,
   "name": "text_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20874,
   "name": "select_irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20908,
   "name": "select_irq_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20940,
   "name": "race_irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21025,
   "name": "b_5221",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21042,
   "name": "b_5232",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21084,
   "name": "panel_irq_lower",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21116,
   "name": "race_irq_view",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21143,
   "name": "b_5297",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21212,
   "name": "kart_mux_wait",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 21242,
   "name": "kart_mux_irq",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 21261,
   "name": "b_530D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21285,
   "name": "b_5325",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21316,
   "name": "b_5344",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21343,
   "name": "sprite_and_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21347,
   "name": "sprite_and_masks_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21351,
   "name": "sprite_or_bits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21355,
   "name": "sprite_or_bits_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21359,
   "name": "a_536F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21360,
   "name": "a_5370",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21361,
   "name": "a_5371",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21362,
   "name": "a_5372",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21363,
   "name": "a_5373",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21364,
   "name": "f_5374",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21368,
   "name": "a_5378",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21376,
   "name": "a_5380",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21377,
   "name": "a_5381",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21378,
   "name": "f_5382",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21388,
   "name": "a_538C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21390,
   "name": "f_538E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21400,
   "name": "a_5398",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21402,
   "name": "f_539A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21412,
   "name": "a_53A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21414,
   "name": "a_53A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21415,
   "name": "a_53A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21416,
   "name": "a_53A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21417,
   "name": "a_53A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21418,
   "name": "a_53AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21419,
   "name": "a_53AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21420,
   "name": "f_53AC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21431,
   "name": "a_53B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21432,
   "name": "f_53B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21443,
   "name": "f_53C3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21453,
   "name": "a_53CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21454,
   "name": "a_53CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21455,
   "name": "a_53CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21456,
   "name": "a_53D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21457,
   "name": "a_53D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21458,
   "name": "a_53D2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21459,
   "name": "a_53D3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21460,
   "name": "a_53D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21461,
   "name": "a_53D5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21462,
   "name": "a_53D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21463,
   "name": "a_53D7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21464,
   "name": "a_53D8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21465,
   "name": "a_53D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21466,
   "name": "a_53DA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21467,
   "name": "a_53DB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21468,
   "name": "a_53DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21469,
   "name": "a_53DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21470,
   "name": "a_53DE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21471,
   "name": "a_53DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21472,
   "name": "a_53E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21473,
   "name": "a_53E1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21474,
   "name": "a_53E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21475,
   "name": "a_53E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21476,
   "name": "a_53E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21477,
   "name": "a_53E5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21478,
   "name": "a_53E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21479,
   "name": "a_53E7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21480,
   "name": "a_53E8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21481,
   "name": "a_53E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21482,
   "name": "a_53EA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21483,
   "name": "a_53EB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21484,
   "name": "a_53EC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21485,
   "name": "a_53ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21486,
   "name": "a_53EE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21487,
   "name": "a_53EF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21488,
   "name": "a_53F0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21489,
   "name": "f_53F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21494,
   "name": "a_53F6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21495,
   "name": "f_53F7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21498,
   "name": "a_53FA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21703,
   "name": "f_54C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21743,
   "name": "f_54EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21783,
   "name": "f_5517",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21823,
   "name": "f_553F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21863,
   "name": "f_5567",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21903,
   "name": "f_558F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21904,
   "name": "f_5590",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21943,
   "name": "f_55B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21983,
   "name": "f_55DF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22023,
   "name": "f_5607",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22063,
   "name": "f_562F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22103,
   "name": "f_5657",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22143,
   "name": "f_567F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22183,
   "name": "f_56A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22223,
   "name": "f_56CF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22263,
   "name": "f_56F7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22303,
   "name": "f_571F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22343,
   "name": "f_5747",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22383,
   "name": "f_576F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22423,
   "name": "f_5797",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22463,
   "name": "f_57BF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22528,
   "name": "bytes_5800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22560,
   "name": "chars_5820",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23264,
   "name": "chars_5820_9a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23960,
   "name": "chars_5D98",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24664,
   "name": "chars_5D98_9a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25360,
   "name": "chars_6310",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26064,
   "name": "chars_6310_9a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26760,
   "name": "chars_6888",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27464,
   "name": "chars_6888_9a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28160,
   "name": "tiles_6E00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29184,
   "name": "tiles_7200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30208,
   "name": "tiles_7600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31232,
   "name": "tiles_7A00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32256,
   "name": "tiles_7E00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "tiles_8000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33280,
   "name": "tiles_8200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34304,
   "name": "tiles_8600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35328,
   "name": "tiles_8A00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36352,
   "name": "tiles_8E00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37376,
   "name": "tiles_9200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38400,
   "name": "tiles_9600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39424,
   "name": "tiles_9A00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40448,
   "name": "tiles_9E00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "tiles_A000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41472,
   "name": "tiles_A200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42496,
   "name": "tiles_A600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43520,
   "name": "tiles_AA00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44544,
   "name": "tiles_AE00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45568,
   "name": "tiles_B200",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46592,
   "name": "tiles_B600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46725,
   "name": "stage_chars_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46838,
   "name": "tiles_B6F6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46981,
   "name": "stage_chars_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47104,
   "name": "sound_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47107,
   "name": "sound_rts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47108,
   "name": "sound_tune",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47109,
   "name": "sound_effect",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47110,
   "name": "sound_music_off",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47111,
   "name": "sound_effects_off",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47112,
   "name": "sound_engine_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47113,
   "name": "sound_nop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47114,
   "name": "sound_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47158,
   "name": "sound_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 47180,
   "name": "b_B84C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47265,
   "name": "b_B8A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47275,
   "name": "sound_bytes_B8AB",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47277,
   "name": "sound_voices",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47287,
   "name": "b_B8B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47480,
   "name": "b_B978",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47564,
   "name": "j_B9CC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47663,
   "name": "b_BA2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47713,
   "name": "b_BA61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47723,
   "name": "b_BA6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47765,
   "name": "j_BA95",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47809,
   "name": "b_BAC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47845,
   "name": "j_BAE5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47893,
   "name": "r_BB15",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47894,
   "name": "sound_voice_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47924,
   "name": "rts_BB34",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47925,
   "name": "sound_read_pattern",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 47936,
   "name": "b_BB40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47959,
   "name": "b_BB57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47974,
   "name": "j_BB66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48009,
   "name": "j_BB89",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48017,
   "name": "b_BB91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48032,
   "name": "b_BBA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48044,
   "name": "b_BBAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48057,
   "name": "b_BBB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48061,
   "name": "b_BBBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48062,
   "name": "length_table_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48063,
   "name": "length_table_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48069,
   "name": "length_table2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48070,
   "name": "length_table2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48081,
   "name": "b_BBD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48085,
   "name": "sound_command",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48103,
   "name": "b_BBE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48121,
   "name": "command_jump_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48122,
   "name": "command_jump_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48123,
   "name": "command_table",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48126,
   "name": "command_jumps",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48168,
   "name": "sound_slides",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48203,
   "name": "b_BC4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48212,
   "name": "b_BC54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48239,
   "name": "b_BC6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48245,
   "name": "b_BC75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48278,
   "name": "j_BC96",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48298,
   "name": "b_BCAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48306,
   "name": "b_BCB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48332,
   "name": "b_BCCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48340,
   "name": "b_BCD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48347,
   "name": "b_BCDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48360,
   "name": "b_BCE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48372,
   "name": "b_BCF4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48413,
   "name": "b_BD1D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48437,
   "name": "j_BD35",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48443,
   "name": "cmd_next_pattern",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48462,
   "name": "b_BD4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48475,
   "name": "b_BD5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48478,
   "name": "b_BD5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48486,
   "name": "b_BD66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48503,
   "name": "b_BD77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48506,
   "name": "b_BD7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48522,
   "name": "cmd_set_registers",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48530,
   "name": "b_BD92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48541,
   "name": "b_BD9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48553,
   "name": "b_BDA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48556,
   "name": "cmd_set_effect_registers",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48564,
   "name": "b_BDB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48575,
   "name": "b_BDBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48587,
   "name": "b_BDCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48590,
   "name": "cmd_goto",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48598,
   "name": "b_BDD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48611,
   "name": "b_BDE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48622,
   "name": "cmd_slide",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48632,
   "name": "b_BDF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48643,
   "name": "b_BE03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48654,
   "name": "b_BE0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48665,
   "name": "b_BE19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48675,
   "name": "b_BE23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48694,
   "name": "cmd_slide_off",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48702,
   "name": "b_BE3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48711,
   "name": "cmd_tone",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48726,
   "name": "b_BE56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48741,
   "name": "b_BE65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48749,
   "name": "cmd_vibrato",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48757,
   "name": "b_BE75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48770,
   "name": "b_BE82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48781,
   "name": "b_BE8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48810,
   "name": "b_BEAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48813,
   "name": "cmd_vibrato_off",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48827,
   "name": "b_BEBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48830,
   "name": "cmd_pulse_sweep",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48838,
   "name": "b_BEC6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48857,
   "name": "b_BED9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48860,
   "name": "cmd_pulse_sweep_off",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48874,
   "name": "b_BEEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48877,
   "name": "cmd_instrument",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48885,
   "name": "b_BEF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48898,
   "name": "b_BF02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48916,
   "name": "b_BF14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48919,
   "name": "sound_end_effect",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48940,
   "name": "r_BF2C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48941,
   "name": "cmd_effect_release",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48952,
   "name": "b_BF38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48970,
   "name": "b_BF4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48983,
   "name": "b_BF57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49004,
   "name": "r_BF6C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49005,
   "name": "sound_silence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49010,
   "name": "b_BF72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49018,
   "name": "sound_clear_voices",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49023,
   "name": "b_BF7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49031,
   "name": "sound_clear_registers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49036,
   "name": "b_BF8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49044,
   "name": "sound_start_tune",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49113,
   "name": "sound_wave_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49130,
   "name": "b_BFEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49164,
   "name": "b_C00C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49168,
   "name": "b_C010",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49169,
   "name": "j_C011",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 49179,
   "name": "r_C01B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 49180,
   "name": "sound_engine_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49192,
   "name": "sound_silent_patterns",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 49237,
   "name": "f_C055",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49239,
   "name": "a_C057",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49240,
   "name": "a_C058",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49241,
   "name": "a_C059",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49242,
   "name": "a_C05A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49243,
   "name": "a_C05B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49244,
   "name": "a_C05C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49245,
   "name": "a_C05D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49246,
   "name": "a_C05E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49263,
   "name": "a_C06F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49264,
   "name": "a_C070",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49265,
   "name": "a_C071",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49266,
   "name": "a_C072",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49267,
   "name": "a_C073",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49268,
   "name": "a_C074",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49269,
   "name": "a_C075",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49270,
   "name": "a_C076",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49287,
   "name": "a_C087",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49288,
   "name": "a_C088",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49289,
   "name": "a_C089",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49290,
   "name": "a_C08A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49291,
   "name": "a_C08B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49292,
   "name": "a_C08C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49293,
   "name": "a_C08D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49294,
   "name": "a_C08E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49309,
   "name": "a_C09D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49310,
   "name": "a_C09E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49311,
   "name": "a_C09F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49312,
   "name": "a_C0A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49313,
   "name": "a_C0A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49314,
   "name": "a_C0A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49315,
   "name": "a_C0A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49316,
   "name": "a_C0A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49321,
   "name": "a_C0A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49322,
   "name": "a_C0AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49323,
   "name": "a_C0AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49325,
   "name": "a_C0AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49326,
   "name": "a_C0AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49328,
   "name": "a_C0B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49330,
   "name": "a_C0B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49331,
   "name": "a_C0B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49332,
   "name": "a_C0B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49333,
   "name": "silent_pattern",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49335,
   "name": "silent_order",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49337,
   "name": "a_C0B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49338,
   "name": "a_C0BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49339,
   "name": "a_C0BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49340,
   "name": "a_C0BC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49342,
   "name": "a_C0BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49343,
   "name": "a_C0BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49344,
   "name": "a_C0C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49345,
   "name": "a_C0C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49346,
   "name": "a_C0C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49347,
   "name": "a_C0C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49348,
   "name": "a_C0C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49349,
   "name": "a_C0C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49350,
   "name": "a_C0C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49351,
   "name": "a_C0C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49352,
   "name": "a_C0C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49353,
   "name": "a_C0C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49354,
   "name": "a_C0CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49355,
   "name": "a_C0CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49356,
   "name": "a_C0CC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49357,
   "name": "a_C0CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49358,
   "name": "a_C0CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49359,
   "name": "a_C0CF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49360,
   "name": "a_C0D0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49361,
   "name": "a_C0D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49362,
   "name": "a_C0D2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49365,
   "name": "f_C0D5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49373,
   "name": "a_C0DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49374,
   "name": "a_C0DE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49375,
   "name": "a_C0DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49376,
   "name": "a_C0E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49377,
   "name": "a_C0E1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49378,
   "name": "a_C0E2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49379,
   "name": "a_C0E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49380,
   "name": "a_C0E4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49381,
   "name": "a_C0E5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49382,
   "name": "a_C0E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49383,
   "name": "a_C0E7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49384,
   "name": "a_C0E8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49385,
   "name": "a_C0E9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49409,
   "name": "tune2_lengths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49497,
   "name": "tune1_lengths",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49565,
   "name": "note_frequencies",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49713,
   "name": "silent_wave",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49719,
   "name": "effect_table",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49729,
   "name": "wave_tables",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49956,
   "name": "effect_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49990,
   "name": "effect_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50019,
   "name": "effect_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50044,
   "name": "effect_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50067,
   "name": "wave_tables_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50362,
   "name": "tune_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50386,
   "name": "tune1_orders",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50418,
   "name": "tune1_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50881,
   "name": "rest_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50897,
   "name": "unused_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51032,
   "name": "tune2_orders",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51696,
   "name": "tune2_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52344,
   "name": "tune2_unused_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52485,
   "name": "tune2_patterns_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53217,
   "name": "after_music",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "sprites_40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54272,
   "name": "sprites_50",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "sprites_60",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55308,
   "name": "f_D80C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55312,
   "name": "f_D810",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55332,
   "name": "f_D824",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55415,
   "name": "a_D877",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55416,
   "name": "f_D878",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55441,
   "name": "f_D891",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55448,
   "name": "a_D898",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55449,
   "name": "a_D899",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55456,
   "name": "f_D8A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55471,
   "name": "f_D8AF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55480,
   "name": "f_D8B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55481,
   "name": "f_D8B9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55488,
   "name": "a_D8C0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55489,
   "name": "a_D8C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55495,
   "name": "f_D8C7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55535,
   "name": "f_D8EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55575,
   "name": "f_D917",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55615,
   "name": "f_D93F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55655,
   "name": "f_D967",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55695,
   "name": "f_D98F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55735,
   "name": "f_D9B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55775,
   "name": "f_D9DF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55791,
   "name": "f_D9EF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55795,
   "name": "f_D9F3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55815,
   "name": "f_DA07",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55816,
   "name": "f_DA08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55855,
   "name": "f_DA2F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55895,
   "name": "f_DA57",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55935,
   "name": "f_DA7F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55975,
   "name": "f_DAA7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56015,
   "name": "f_DACF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56055,
   "name": "f_DAF7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56095,
   "name": "f_DB1F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56135,
   "name": "f_DB47",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56175,
   "name": "f_DB6F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56215,
   "name": "f_DB97",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56255,
   "name": "f_DBBF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56256,
   "name": "f_DBC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56320,
   "name": "sprites_70",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57356,
   "name": "f_E00C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57380,
   "name": "f_E024",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57383,
   "name": "a_E027",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57423,
   "name": "a_E04F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57463,
   "name": "a_E077",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57464,
   "name": "f_E078",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57470,
   "name": "a_E07E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57472,
   "name": "a_E080",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57473,
   "name": "a_E081",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57475,
   "name": "a_E083",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57489,
   "name": "f_E091",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57495,
   "name": "a_E097",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57504,
   "name": "f_E0A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57510,
   "name": "a_E0A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57511,
   "name": "a_E0A7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57512,
   "name": "a_E0A8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57513,
   "name": "a_E0A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57514,
   "name": "a_E0AA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57515,
   "name": "a_E0AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57519,
   "name": "f_E0AF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57535,
   "name": "a_E0BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57539,
   "name": "a_E0C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57540,
   "name": "a_E0C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57541,
   "name": "a_E0C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57544,
   "name": "sprite_83",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57600,
   "name": "sprites_84",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58360,
   "name": "a_E3F8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58367,
   "name": "a_E3FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58368,
   "name": "sprites_90",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59392,
   "name": "sprites_A0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59592,
   "name": "f_E8C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59632,
   "name": "f_E8F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59672,
   "name": "f_E918",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59712,
   "name": "f_E940",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59752,
   "name": "f_E968",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59792,
   "name": "f_E990",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59832,
   "name": "f_E9B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59872,
   "name": "f_E9E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59912,
   "name": "f_EA08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59952,
   "name": "f_EA30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59992,
   "name": "f_EA58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60032,
   "name": "f_EA80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60072,
   "name": "f_EAA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60112,
   "name": "f_EAD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60152,
   "name": "f_EAF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60192,
   "name": "f_EB20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60232,
   "name": "f_EB48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60272,
   "name": "f_EB70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60312,
   "name": "f_EB98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60352,
   "name": "f_EBC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60408,
   "name": "f_EBF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60409,
   "name": "a_EBF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60410,
   "name": "a_EBFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60411,
   "name": "a_EBFB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60412,
   "name": "f_EBFC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60432,
   "name": "f_EC10",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60435,
   "name": "a_EC13",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60436,
   "name": "a_EC14",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60437,
   "name": "a_EC15",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60536,
   "name": "f_EC78",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60555,
   "name": "f_EC8B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60576,
   "name": "f_ECA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60595,
   "name": "f_ECB3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60616,
   "name": "f_ECC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60656,
   "name": "f_ECF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60696,
   "name": "f_ED18",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60736,
   "name": "f_ED40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60776,
   "name": "f_ED68",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60816,
   "name": "f_ED90",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60856,
   "name": "f_EDB8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60896,
   "name": "f_EDE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60911,
   "name": "KERNAL_UNTLKj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 60915,
   "name": "f_EDF3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60936,
   "name": "f_EE08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 60976,
   "name": "f_EE30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61016,
   "name": "f_EE58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61056,
   "name": "f_EE80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61096,
   "name": "f_EEA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61136,
   "name": "f_EED0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61176,
   "name": "f_EEF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61216,
   "name": "f_EF20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61256,
   "name": "f_EF48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61296,
   "name": "f_EF70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61336,
   "name": "f_EF98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61376,
   "name": "f_EFC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61432,
   "name": "f_EFF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61433,
   "name": "a_EFF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61434,
   "name": "a_EFFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61435,
   "name": "a_EFFB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61436,
   "name": "f_EFFC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 61439,
   "name": "a_EFFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61440,
   "name": "panel_digits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61520,
   "name": "panel_letters",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61630,
   "name": "a_F0BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61631,
   "name": "a_F0BF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61632,
   "name": "panel_letters_o",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61728,
   "name": "panel_suffixes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61760,
   "name": "place_number_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61952,
   "name": "panel_marks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62032,
   "name": "course_picture_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62224,
   "name": "second_face_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62432,
   "name": "panel_ring_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62504,
   "name": "face_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62968,
   "name": "course_letter_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63080,
   "name": "course_scene_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 63488,
   "name": "race_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65416,
   "name": "f_FF88",
   "type": "Field",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The 6510's data direction register for the processor port at $01; no instruction in the game names it."
  },
  {
   "address": 2048,
   "type": "line",
   "text": "Text the programmer left in front of the game's first instruction, in PETSCII: two spaces, \"pbj gma89\", four returns, a colour code, spaces, \"POWERDRIFT TM\", returns and spaces. Nothing reads it; the loader's JMP $0834 lands just past it."
  },
  {
   "address": 2100,
   "type": "line",
   "text": "The game's entry from the loader, and where it comes back after every game: sets up the interrupts (setup_interrupts), the video chip (setup_video) and the random seed (seed_random), resets the sound driver (sound_reset) with $B806 set to 1, runs the course and driver select screen (select_screen), clears the score ($53DC-$53DE), the stage counter $53E5 and the five marks $53F1-$53F5, then resets the sound driver again with $B806 clear and $B804 = 2. Falls into stage_loop."
  },
  {
   "address": 2159,
   "type": "line",
   "text": "Sets up one stage and runs it. Builds the stage (setup_stage), resets the draw order of the twelve karts (reset_kart_order), sorts them (sort_karts), draws the panel (draw_panel) and one frame of the view into the back screen, flips the screens, points the raster chain at the race handler (start_race_irqs) and plays the start-lights sequence (start_lights). Then race_frame_loop."
  },
  {
   "address": 2220,
   "type": "line",
   "text": "One frame of the race, repeated until the stage ends. Pauses while space is held down (pause_on_space); when bit 5 of $5381 changes, redraws for the change (track_step, scenery_tick, bend_drift); moves the player (move_player), the rivals (move_rivals) and the places (update_place); then builds the next frame in the back screen: where the rivals are on screen (place_rivals), the karts in draw order (sort_karts) and their sprites (copy_kart_sprites), the view cleared (clear_view), the horizon (draw_horizon_rows), the road (draw_road) and the scenery (draw_scenery), waits for the next frame (wait_frame), flips the double buffer $2E and copies the colours (copy_colours). $53CF counts the frames after the finish: when it reaches zero the stage is over. While it is zero and $53AB is still clear, race_clock runs each frame."
  },
  {
   "address": 2317,
   "type": "line",
   "text": "The race is over with a place good enough to go on: ends the sound effect playing (sound_end_effect), shows BONUS and 45 minus the seconds of the race time (show_bonus), flashes the big place number at the right of the panel ten times between the sky colour $25 and white, counts the bonus into the score (count_bonus), waits 100 frames, and counts the stage. After the fifth stage of a course it goes to course_complete; otherwise back to stage_loop for the next stage."
  },
  {
   "address": 2394,
   "type": "line",
   "text": "The race ended with $53AB set: ends the sound effect playing (sound_end_effect), waits 250 frames, shows GAME OVER (show_game_over), checks the score against the high-score table (high_score_check) and goes back to game_start."
  },
  {
   "address": 2411,
   "type": "line",
   "text": "All five stages of the course are done: CONGRATULATIONS across the screen (congratulations), the high-score check (high_score_check), and back to game_start."
  },
  {
   "address": 2420,
   "type": "line",
   "text": "Called from $32C3 in the player's update. Every sixteenth call: points the first multiplexed sprite at the chosen driver's forward-facing head ($1779), puts the face last given its second picture back to its first (draw_face_first), and gives a random place from 5th to 12th ($5372 = 4 to 11) its second picture (draw_face_second), so the faces along the panel change expression one at a time."
  },
  {
   "address": 2457,
   "type": "line",
   "text": "Inserts the score $53DC-$53DE into the seven-entry table at $0C0F (three BCD bytes each, highest byte first) at the first place it beats, moving the lower entries and their names down one slot, and asks for a name (name_entry). Compares from the bottom entry upward."
  },
  {
   "address": 2622,
   "type": "line",
   "text": "Clears the screen to the plain text set (text_screen), writes GAME OVER from $0A56 in the middle of row 12 in colour 9, and waits 250 frames."
  },
  {
   "address": 2646,
   "type": "line",
   "text": "\"GAME OVER\" in the game's alphabet (digits 0-9 at $00-$09, A-N at $0A-$17, O written as zero, P-W at $18-$1F, space $20, X-Z at $21-$23, comma $7D)."
  },
  {
   "address": 2655,
   "type": "line",
   "text": "Stops CIA 1's timers and turns the sprites off, points the raster chain at $5181 (music only), sets the video chip to screen $EC00 with the character set at $F000, background grey ($0B) and multicolour 2 black, and clears the screen (clear_text_screen)."
  },
  {
   "address": 2698,
   "type": "line",
   "text": "Asks the player for three letters for the high-score table: NAME ENTRY at the top, a ring of 28 letters (A-Z, comma, end mark $7C) placed around the screen from the offsets at $0BB3. Waits for fire to be let go, then each 5 frames left and right move the highlight round the ring and fire takes the letter under it into $53F7 and shows it at $EDF3; the end mark or a third letter finishes."
  },
  {
   "address": 2957,
   "type": "line",
   "text": "\"NAME ENTRY\" in the game's alphabet."
  },
  {
   "address": 2967,
   "type": "line",
   "text": "The 28 letters of the name-entry ring in the game's alphabet: $7C (the end mark), A to Z with O written as zero, and a comma."
  },
  {
   "address": 2995,
   "type": "line",
   "text": "Screen offsets (low byte, high byte) of the 28 letters of the name-entry ring, from the top left round the screen."
  },
  {
   "address": 2996,
   "type": "line",
   "text": "The high bytes of name_entry_cells, read at its address + 1."
  },
  {
   "address": 3051,
   "type": "line",
   "text": "Nine slots of four bytes: the seven names of the high-score table (three letters and a space, in the game's alphabet: CJB, SAD, KOM, OTA, REE, MAT, LCY), then slot 7, which the shuffle in high_score_check writes into, and a ninth nothing uses."
  },
  {
   "address": 3055,
   "type": "line",
   "text": "The high-score names from slot 1 on, the address the shuffle in high_score_check writes a name one slot down to."
  },
  {
   "address": 3087,
   "type": "line",
   "text": "Nine slots of three BCD bytes, highest first: the seven scores of the table (200000, 190000, 180000, 170000, 150000, 140000, 130000 as shown, with the panel's zero after them), then slot 7, which takes a score that beats none, and a ninth nothing uses."
  },
  {
   "address": 3088,
   "type": "line",
   "text": "The middle byte of each high-score slot, read at high_score_scores + 1."
  },
  {
   "address": 3089,
   "type": "line",
   "text": "The low byte of each high-score slot, read at high_score_scores + 2."
  },
  {
   "address": 3090,
   "type": "line",
   "text": "The high-score slots from slot 1 on, where high_score_check moves a beaten score one slot down."
  },
  {
   "address": 3091,
   "type": "line",
   "text": "The middle byte of a high-score slot one down, high_score_check's destination."
  },
  {
   "address": 3092,
   "type": "line",
   "text": "The low byte of a high-score slot one down, high_score_check's destination."
  },
  {
   "address": 3114,
   "type": "line",
   "text": "Writes the high-score table on the select screen, rows 15 to 21 from column 11: the place 1 to 7 in colour 14, the name (draw_score_name) and the score (draw_score_digits). $5372 counts the rows."
  },
  {
   "address": 3186,
   "type": "line",
   "text": "Copies the four bytes of name slot $5372 from high_score_names to the screen at the row pointer $02/$03, offset Y, in colour 8."
  },
  {
   "address": 3212,
   "type": "line",
   "text": "Writes the score of slot $5372 from high_score_scores as six digits and a trailing zero, so 020000 reads 0200000, in colour 9."
  },
  {
   "address": 3309,
   "type": "line",
   "text": "The course and driver select screen. Points the raster chain at the select handler ($518A), sets the screen to $EC00 with the character set at $F000, grey border and background, multicolour 1 light grey, and clears it. The highlight starts on course C ($53E4 = 2) and the driver cursor on driver 1: $53B7 is set to 0, and driver_cursor_loop moves it on one before it first places the cursor. Draws the five course pictures (draw_course_pictures), the grey bars, the copyright and SELECT COURSE lines, the high-score table and the twelve faces, then runs the cursor until fire. Fire picks the driver under the cursor ($53B7) and the course highlighted ($53E4); then the chosen kart is lowered on its cable (from $0E6A)."
  },
  {
   "address": 3356,
   "type": "line",
   "text": "For each of the five courses, right to left: a 7 by 7 frame of tiles from $ADDE (stored 256 bytes a row), white round the highlighted course and black round the others; inside it the course's 5 by 5 picture from $9E00 + $0FA6,x in that course's colour from $0FA1; and the course letter A to E below, through the colour buffer at $5590. All drawn with the tile blitter draw_tiles into the back screen, then shown by copy_colours."
  },
  {
   "address": 3581,
   "type": "line",
   "text": "Moves sprite 7, the cursor, to the next of the twelve faces every 21 frames ($53B7 wraps 11 to 0), at X = $14E4,driver + 8 doubled, with the ninth bit in $D010. Between moves it watches the stick: fire leaves the loop; every 32nd frame left or right moves the course highlight $53E4 within 0 to 4 and redraws the pictures."
  },
  {
   "address": 3690,
   "type": "line",
   "text": "After fire on the select screen: clears to the plain screen, draws the chosen driver's second face at the top centre, and shows the kart as sprites 0 to 3 (positions and pointers from $0FAB, $0FAF, $0FB3) in a random colour from $372E, with the head in sprite 0 in orange. Then every 5 frames: the three columns of rope tiles in rows 0 to 11 are copied one row down, the hook picture from $80B4 (11 by 19 tiles) is drawn with its top at row $0D - 19, and the four sprites move 8 lines with it. $0D starts at $29 and steps by $5372: down by one to $1E, where the step turns to +1 and the head turns to the chosen driver's own ($1779), then up to $2A, where all eight sprites are switched on and the routine returns to start the race."
  },
  {
   "address": 3996,
   "type": "line",
   "text": "Screen column of each of the five course pictures on the select screen, minus one for the frame: 1, 9, 17, 25, 33."
  },
  {
   "address": 4001,
   "type": "line",
   "text": "Colour-RAM value of each course's picture: $0F, $0D, $0D, $0D, $0A, multicolour cells whose own colour is yellow, green, green, green and red."
  },
  {
   "address": 4006,
   "type": "line",
   "text": "Low bytes of each course picture's top-left tile in the sheet at page $9E: $84, $89, $8E, $93, $98, five tiles apart."
  },
  {
   "address": 4011,
   "type": "line",
   "text": "X positions of sprites 0 to 3 for the kart on the cable: $AE for the head, then $96, $AE and $C6 for the kart's three parts."
  },
  {
   "address": 4015,
   "type": "line",
   "text": "Starting Y positions of sprites 0 to 3 for the kart on the cable: $CC for the head, $E1 for the kart."
  },
  {
   "address": 4019,
   "type": "line",
   "text": "Sprite pointers for sprites 0 to 3 on the cable: $44, then $8A, $8B, $8C for the kart; sprite 0 is pointed at $89 straight after."
  },
  {
   "address": 4023,
   "type": "line",
   "text": "\"COPYRIGHT ACTIVISION,SEGA,CHRIS BUTLER\" in the game's alphabet, written on row 24 of the select screen."
  },
  {
   "address": 4062,
   "type": "line",
   "text": "\"SELECT COURSE AND DRIVER WITH JOYSTICK\" in the game's alphabet, row 13 of the select screen."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The last letters of str_select_course, STICK."
  },
  {
   "address": 4101,
   "type": "line",
   "text": "Puts back the first picture of the face last given its second (slot $5373 on the panel): the driver in $5374,slot, whose 3 by 3 cells come from face_pointers, drawn at row 0 of the panel screen $E000, column panel_slot_columns,slot, through draw_face_cells."
  },
  {
   "address": 4131,
   "type": "line",
   "text": "Draws the second picture (the change of expression) of the face in panel slot $5372, from face2_pointers, and remembers the slot in $5373 so draw_face_first can put it back."
  },
  {
   "address": 4168,
   "type": "line",
   "text": "Copies nine screen codes from ($0A) to the 3 by 3 block at ($0E), the offsets from cell_offsets_3x3 (three cells on each of three rows 40 apart). Colours are left as they are."
  },
  {
   "address": 4187,
   "type": "line",
   "text": "The end of a course: the plain text screen, then 128 times, every 5 frames, CONGRATULATIONS written at a random place on the screen at $EC00 in a random colour from 1 to 7 (with bit 3 set, so the cells are multicolour). The low byte of the place is below $EE so the word stays in its page; on the last page it can run past the screen's 1,000 cells into the bytes after them. Then waits 250 frames."
  },
  {
   "address": 4259,
   "type": "line",
   "text": "\" CONGRATULATIONS\" in the game's alphabet, 17 bytes with a space at each end, the text congratulations scatters over the screen."
  },
  {
   "address": 4276,
   "type": "line",
   "text": "After a stage: writes BONUS over the panel's TIME line (row 3) and puts 45 minus the seconds of the race time, in BCD, into $53EC, shown as two digits in columns 8 and 9 before the line's three zeros. The minutes are not looked at, and a seconds count above 45 wraps: SBC in decimal mode gives $45 - $50 = $95."
  },
  {
   "address": 4301,
   "type": "line",
   "text": "\"BONUS     000\" in the game's alphabet: the 13 cells show_bonus writes at the start of the panel's row 3."
  },
  {
   "address": 4314,
   "type": "line",
   "text": "Counts the bonus into the score: once a frame adds 1 to the score's middle BCD byte $53DD (carrying into $53DE), 1,000 points as the panel shows them, redraws the score (draw_score), takes 1 from $53EC and redraws its digits (draw_bonus_digits), until $53EC is zero. draw_score ends with CLD ($34AE), so the subtraction is binary although $53EC holds a BCD number: a bonus shown as 45 counts 69 times, and the digits pass through values such as $3F. The test comes after the subtraction, so a bonus of 0 counts 256 times."
  },
  {
   "address": 4357,
   "type": "line",
   "text": "Writes $53EC's two halves as characters at $E080 and $E081, row 3 columns 8 and 9 of the panel. The panel's characters $0A to $0F are the letters A to F, so a half above 9 shows as a hexadecimal digit."
  },
  {
   "address": 4378,
   "type": "line",
   "text": "Draws the race panel at the top of the screen at $E000 (rows 0 to 4). The big place number's cells at columns 36 to 38 and its suffix cell get colour 1. The eleven rivals' faces ($53AC lists their drivers) go in row 0 at the columns in panel_rival_columns, recorded in the slot order $5374 by panel_rival_slots, in colour 8; the player's driver $53B7 goes in slot 4, column 12. Rows 3 and 4 come from four 40-byte tables (TIME, STG and the gear's LO on row 3; SCORE, the course, LAP, HI and KM on row 4) with their colours. Then the course letter (draw_course_letter), the marks of the stages done (draw_stage_marks) and the score (draw_score), and blanks at $E027 and $E04F."
  },
  {
   "address": 4559,
   "type": "line",
   "text": "Row 3 of the race panel, 40 cells in the game's alphabet: TIME 0'00'00 (the apostrophes are $49), STG and five stage boxes ($40 to $44) at columns 25 to 29, and $45 L O at columns 31 to 33."
  },
  {
   "address": 4599,
   "type": "line",
   "text": "Colour RAM values for the 40 cells of panel_row3_text."
  },
  {
   "address": 4639,
   "type": "line",
   "text": "Row 4 of the race panel: SCORE 0000000, four course cells at columns 15 to 18 (draw_course_letter rewrites them), LAP and four lap boxes ($40 to $43) at columns 25 to 28, $46 H I at columns 31 to 33, and 000KM at columns 35 to 39."
  },
  {
   "address": 4679,
   "type": "line",
   "text": "Colour RAM values for the 40 cells of panel_row4_text."
  },
  {
   "address": 4719,
   "type": "line",
   "text": "Column in row 0 of each rival's face at the start of a stage: 0, 3, 6, 9, then 15 to 33 in steps of 3, leaving column 12, the fifth place, for the player."
  },
  {
   "address": 4730,
   "type": "line",
   "text": "The place slot (0 to 11) of each of the eleven rivals at the start of a stage: 0 to 3, then 5 to 11, so the player starts in slot 4, fifth."
  },
  {
   "address": 4741,
   "type": "line",
   "text": "Addresses of the twelve drivers' faces, 9 screen codes each (3 by 3 cells), the picture the panel and the select screen normally show. The faces follow from $129D."
  },
  {
   "address": 4742,
   "type": "line",
   "text": "The high bytes of face_pointers, read at its address + 1."
  },
  {
   "address": 4765,
   "type": "line",
   "text": "The twelve drivers' faces for the panel and the select screen, 3 by 3 cells each, nine bytes a face, in the panel's character set at $F000."
  },
  {
   "address": 4873,
   "type": "line",
   "text": "Addresses of the twelve drivers' second faces, the change of expression shown for a moment on the panel and when the kart is lowered on the select screen. The faces follow from $1321."
  },
  {
   "address": 4874,
   "type": "line",
   "text": "The high bytes of face2_pointers, read at its address + 1."
  },
  {
   "address": 4897,
   "type": "line",
   "text": "The twelve drivers' second faces, 3 by 3 cells each, nine bytes a face."
  },
  {
   "address": 5005,
   "type": "line",
   "text": "For each of the five stages with a mark in $53F1-$53F5 (non-zero), writes cell $C1 in the stage box at row 3, columns 25 to 29, in the mark's colour."
  },
  {
   "address": 5024,
   "type": "line",
   "text": "Writes the four cells of course $53E4 (A to E) into row 4, columns 15 to 18, from course_letter_cells, with colours from course_letter_colours."
  },
  {
   "address": 5049,
   "type": "line",
   "text": "Four cells for each course, stored right to left: the letter A to E (shown in column 18) and three cells of the strip before it."
  },
  {
   "address": 5069,
   "type": "line",
   "text": "Colour RAM values for course_letter_cells, four for each course."
  },
  {
   "address": 5089,
   "type": "line",
   "text": "Once a race frame until the player finishes ($53CF set): works out the player's place. The rivals keep their order (rival 0 is the fastest), so it looks from rival 10 upward for the first one ahead of the player, by laps ($53B8,x against $53A7), then the coarse position ($5382,x against $5380, a negative one counting as behind) and the fine one ($538E,x against $5381). The place is that rival's number plus one (0 is first). When it differs from $53D6 it starts sound effect 2 ($B805) and calls show_place."
  },
  {
   "address": 5141,
   "type": "line",
   "text": "Shows place X (0 to 11) on the panel: the suffix cell at $E077 (st, nd, rd or th, from place_suffix), sprite 7's position over the faces ($53EB from slot_marker_x), the big number at columns 36 to 38 (its source address is written into the LDA at $145B), and swaps the faces in the new and old slots, with the slot order $5374. When the player has moved up, the player's own face shows its second picture and the kart's head sprite turns to look back ($1785); when the player has dropped, the face of the driver now in the player's old slot shows its second picture. Clears $53F6, the counter of panel_faces_tick. Also called once at the start of a stage (from $36C8)."
  },
  {
   "address": 5212,
   "type": "line",
   "text": "The low byte of the address in the LDA at $145B, which show_place sets to the place's big number."
  },
  {
   "address": 5213,
   "type": "line",
   "text": "The high byte of the address in the LDA at $145B, set by show_place with the low byte."
  },
  {
   "address": 5291,
   "type": "line",
   "text": "Addresses of the big place numbers 1 to 12, 3 by 3 cells each, the data from $14F0."
  },
  {
   "address": 5292,
   "type": "line",
   "text": "The high bytes of place_number_pointers, read at its address + 1."
  },
  {
   "address": 5315,
   "type": "line",
   "text": "Column in row 0 of each of the twelve place slots on the panel, 3 apart: 0 to 33."
  },
  {
   "address": 5327,
   "type": "line",
   "text": "The suffix cell after the big place number, at $E077: $24 st, $25 nd, $26 rd, then $27 th for places 4 to 12."
  },
  {
   "address": 5339,
   "type": "line",
   "text": "Offsets of the nine cells of a 3 by 3 block on a 40-column screen: 0, 1, 2, 40, 41, 42, 80, 81, 82."
  },
  {
   "address": 5348,
   "type": "line",
   "text": "Sprite 7's X position, halved, over each of the twelve faces: $0C to $90 in steps of $0C. Used for the cursor on the select screen and for the marker over the player's face in the race."
  },
  {
   "address": 5360,
   "type": "line",
   "text": "The big numbers 1 to 12 drawn at the right of the panel, 3 by 3 cells each, nine bytes a number, spaces ($20) where a number is narrower."
  },
  {
   "address": 5468,
   "type": "line",
   "text": "After the kart has fallen off a raised stretch of track (called from $3346): calls hide_rival_sprites, copies and sorts the kart sprites, sets the kart straight, then eight times, two frames apart, clears the back screen, draws wipe wedge 0 to 7 into it (wipe_wedge) and flips the screens, with the horizon's colour change set early ($24 = $15); waits 50 frames, puts the road back under the middle of the kart ($2F = $E0), draws the view afresh with the road and scenery, and starts the kart dropping from the top of the view: $53E9 set, the head sprite's Y at $64, the speed at 2 ($53D5), $536F = 10, the speed read-out at 70 ($53DA/$53DB) and the frame counter $E5 reset."
  },
  {
   "address": 5586,
   "type": "line",
   "text": "While $53E9 is set, once a frame from the race's top-of-screen interrupt: the kart drops. The fall speed $53D5 grows by one every other frame and is added to the head sprite's Y ($5151); the kart's three sprites sit 21 lines below it. At line $E1 the drop ends ($53E9 cleared)."
  },
  {
   "address": 5628,
   "type": "line",
   "text": "Draws wedge X (0 to 6; 7 draws nothing) into the back screen and straight into colour RAM: for $166B+1 rows from the row and column given by wipe_rows_lo, wipe_rows_hi and wipe_columns, a first cell from wipe_first_char then cell 6 out to the edge of the screen in the direction wipe_direction, all in the sky colour $25; each row starts wipe_slope columns over from the one above."
  },
  {
   "address": 5717,
   "type": "line",
   "text": "Low byte of the screen offset of each wipe wedge's top row ($C8 is row 5, the top of the view); 0 at index 7 ends the wipe."
  },
  {
   "address": 5725,
   "type": "line",
   "text": "High byte of the screen offset of each wipe wedge's top row."
  },
  {
   "address": 5732,
   "type": "line",
   "text": "Starting column of each wipe wedge."
  },
  {
   "address": 5739,
   "type": "line",
   "text": "Rows of each wipe wedge, less one."
  },
  {
   "address": 5746,
   "type": "line",
   "text": "The screen code of each wedge row's first cell; the rest of the row is cell 6."
  },
  {
   "address": 5753,
   "type": "line",
   "text": "Column step along each wedge row: +1 fills to the right edge, -1 ($FF) to the left."
  },
  {
   "address": 5760,
   "type": "line",
   "text": "Column step from each wedge row to the next: +1, 0 or -1."
  },
  {
   "address": 5767,
   "type": "line",
   "text": "The player's update while the kart spins out (called from $329C): starts sound effect 3. While the spin counter $53D1 is above 1 it steps the spin frame $53E3 (0 to 7) every other race frame and takes 1 from $53D1 every eighth; the kart's sprites take that frame's pointers and the head's X from spin_kart_1 to spin_head_x, and the head the picture from the table spin_head_tables names for the frame. The road slides back one step a frame until the kart is in its middle ($2F towards $E0), the horizon scrolls by $53D1 columns ($53A8, 0 to 39), and $53D2 grows by $53D1, wrapping from $50 to $D6 + $53D1; while it is from 0 to $31, $53D3 = 4 x $53D2 + 10. Once the spin has slowed to 1 and $53D2 reaches $14, the spin ends (reset_kart_height), $53D0 is cleared, $EE and $AA are written to $F0BE and $F0BF (the last two lines of character $17 of the panel set, which hold those values already) and the sound effect is ended (sound_end_effect). Otherwise on to j_337C."
  },
  {
   "address": 5961,
   "type": "line",
   "text": "Sprite 1's pointer for each of the eight spin frames."
  },
  {
   "address": 5969,
   "type": "line",
   "text": "Sprite 2's pointer for each of the eight spin frames."
  },
  {
   "address": 5977,
   "type": "line",
   "text": "Sprite 3's pointer for each of the eight spin frames."
  },
  {
   "address": 5985,
   "type": "line",
   "text": "The head sprite's X position for each of the eight spin frames."
  },
  {
   "address": 5993,
   "type": "line",
   "text": "For each of the eight spin frames, the table of head pictures by driver: head_behind for frames 0 to 2, head_front for 3 to 7."
  },
  {
   "address": 5994,
   "type": "line",
   "text": "The high bytes of spin_head_tables, read at its address + 1."
  },
  {
   "address": 6009,
   "type": "line",
   "text": "Sprite pointer of each driver's head seen from behind, as the player sees their own kart in the race. Several drivers share $44 and $70."
  },
  {
   "address": 6021,
   "type": "line",
   "text": "Sprite pointer of each driver's head turned to look back, shown when the player overtakes."
  },
  {
   "address": 6033,
   "type": "line",
   "text": "Sprite pointer of each driver's head seen from the front, $8D to $98, for the kart turned round in a spin and for the finishers stacked on the podium."
  },
  {
   "address": 6045,
   "type": "line",
   "text": "The start of a stage. Fills bands 3 and 2 of the sprite table at $513D, every fourth byte from $5140 and $513F, from start_band3 and start_band2: band 3 is four red sprites side by side at line $5A, the START sign; band 2 is the three lights at line $82, light red, orange and green, dim. After 100 frames the first light turns red ($5173 = 2) and the second yellow ($5177 = 7); after 100 more the second goes back to orange and the third turns light green ($517B = $0D); 50 frames later both bands are switched off again from start_band3_off and start_band2_off, and the race begins."
  },
  {
   "address": 6131,
   "type": "line",
   "text": "The 17 values of band 3 of the sprite table for the start: on, X $8A, $A2, $BA, $D2, Y $5A for all four, pointers $69 to $6C, colour 2 (red) for all four. Written one every fourth byte from $5140."
  },
  {
   "address": 6148,
   "type": "line",
   "text": "The 17 values of band 2 for the start: on, X $50, $68, $80 (sprite 3 at 0), Y $82, pointers $6D, $6E, $6F (and $49), colours $0A, 8 and 5, the three lights unlit. Written one every fourth byte from $513F."
  },
  {
   "address": 6165,
   "type": "line",
   "text": "Band 3's values after the start: off, with a kart's positions, pointers and colours in place for a finisher."
  },
  {
   "address": 6182,
   "type": "line",
   "text": "Band 2's values after the start: off, with a kart's positions, pointers and colours in place for a finisher."
  },
  {
   "address": 6199,
   "type": "line",
   "text": "Copies the two horizon pictures into the back screen, 40 cells of each row from column $53A8 (so the horizon scrolls sideways as the track turns): the lower picture, from the address at $53ED/$53EE, up to three rows with its bottom row on screen row $53A9 (left out when $53A9 is 22 or more); then the upper one, from $53EF/$53F0, up to four rows with its bottom row on row $53A9 - 6. Neither goes above row 5, the view's first. The source and destination addresses are written into the LDA and STA of the copy loops at $1877 and $18D0."
  },
  {
   "address": 6264,
   "type": "line",
   "text": "The low byte of the LDA's address at $1877, the lower horizon picture's row, written by draw_horizon_rows."
  },
  {
   "address": 6265,
   "type": "line",
   "text": "The high byte of the LDA's address at $1877, stepped down a page for each row copied."
  },
  {
   "address": 6267,
   "type": "line",
   "text": "The low byte of the STA's address at $187A, the screen row the lower horizon row goes to."
  },
  {
   "address": 6268,
   "type": "line",
   "text": "The high byte of the STA's address at $187A, the back screen's page."
  },
  {
   "address": 6353,
   "type": "line",
   "text": "The low byte of the LDA's address at $18D0, the upper horizon picture's row, written by draw_horizon_rows."
  },
  {
   "address": 6354,
   "type": "line",
   "text": "The high byte of the LDA's address at $18D0, stepped down a page for each row copied."
  },
  {
   "address": 6356,
   "type": "line",
   "text": "The low byte of the STA's address at $18D3, the screen row the upper horizon row goes to."
  },
  {
   "address": 6357,
   "type": "line",
   "text": "The high byte of the STA's address at $18D3, the back screen's page."
  },
  {
   "address": 6382,
   "type": "line",
   "text": "Copies the twelve sprite records the rivals are drawn with (X halved $4A, Y $5A, pointer $6A, colour $7A) to the copies the raster interrupt reads ($8A, $9A, $AA, $BA), so the interrupt does not read records place_rivals is still building. The draw order $CA-$D5 has no copy: the interrupt reads it where sort_karts reorders it, just before this. A near rival takes up to four records, a distant one one."
  },
  {
   "address": 6404,
   "type": "line",
   "text": "Sorts the draw order $CA-$D5 of the twelve sprite records by their Y position $5A, largest first, with passes up and down the list (a cocktail sort) until a pass swaps nothing. The interrupt places the last four of the list, the records highest on the screen, first."
  },
  {
   "address": 6471,
   "type": "line",
   "text": "Sets the draw order $CA-$D5 to 0 to 11."
  },
  {
   "address": 6480,
   "type": "line",
   "text": "Once a race frame: each rival's speed $E7,x creeps up by 1 every other frame to its top speed in rival_top_speeds, and is added to its fine position $538E,x with the carry into $5382,x. A coarse position of 50 ($32) is a lap: $53B8,x counts it and the position starts again at 0. At the fourth lap the rival has finished (place_finisher)."
  },
  {
   "address": 6537,
   "type": "line",
   "text": "Top speed of each of the eleven rivals: $1E for rival 0 down to $0C for rival 10."
  },
  {
   "address": 6548,
   "type": "line",
   "text": "A rival (X) has finished. While podium places are left ($53AA, 3 at the start), puts the rival on the podium: band $53AA of the sprite table at $513D is switched on, its kart takes the rival's colour ($53C3,x), its head the rival's face from the front ($8D plus the driver number), and the place label for that band (podium_labels) is copied into the top five lines of that face's sprite in the video bank at $C000. When the last place goes, $53AB is set: the game is over."
  },
  {
   "address": 6633,
   "type": "line",
   "text": "Three sprite pictures five lines high, 3 bytes a line: \"3rd\", \"2nd\" and \"1st\", copied into the top of a podium face. The first finisher takes 1st (podium band 3, at the top), the second 2nd, the third 3rd."
  },
  {
   "address": 6680,
   "type": "line",
   "text": "Fills the colour buffer $5400-$57FF with 8 and the screen $EC00-$EFFF with spaces ($20)."
  },
  {
   "address": 6720,
   "type": "line",
   "text": "Points the player's kart sprites at steering frame $53E2 (0 hard left, 2 straight, 4 hard right): the head's X from kart_head_x and the first body sprite from kart_body_frames, the second and third the next two pointers. Every eight frames the body switches to a second set of pointers (index + 5), which differs from the first for every frame but the straight one."
  },
  {
   "address": 6760,
   "type": "line",
   "text": "Sprite 1's pointer for steering frames 0 to 4, then the second set used every other eight frames."
  },
  {
   "address": 6770,
   "type": "line",
   "text": "The head sprite's X position for steering frames 0 to 4."
  },
  {
   "address": 6775,
   "type": "line",
   "text": "Called when the track position moves on a step: each of the four scenery slots $31-$34 counts down, and a slot that runs out takes the next scenery record (next_scenery_record) and starts again from 15."
  },
  {
   "address": 6788,
   "type": "line",
   "text": "Reloads slot X's counter with 15 and makes it the newest slot ($42), then reads the next three-byte scenery record from the stream ($46) at $48 into $35,x, $3D,x and $39,x. After four records (offset 12) the stream moves to the next entry of the stage's list (scenery_list_next)."
  },
  {
   "address": 6794,
   "type": "line",
   "text": "The entry of next_scenery_record that leaves the slot's counter alone: reads the next three-byte record for slot X. setup_stage calls it for the four slots at the start."
  },
  {
   "address": 6839,
   "type": "line",
   "text": "Reads the entry at offset $49 of the stage's list at ($E3), two bytes each. An address below $4000 is the next scenery stream: it goes in $46/$47 and the stream starts at offset 0. $FF in the high byte starts the list again from 0. Any other address is a block of character pictures: 1,400 bytes ($578) from it are copied to $FA10-$FF87, characters $42 to $FF of the race's character set at $F800, and the list moves on to its next entry."
  },
  {
   "address": 6913,
   "type": "line",
   "text": "Course A, stage 1: the scenery list scenery_list_next reads, 28 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98, $6888 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 6971,
   "type": "line",
   "text": "Course A, stage 2: the scenery list scenery_list_next reads, 28 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7029,
   "type": "line",
   "text": "Course A, stage 3: the scenery list scenery_list_next reads, 31 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5D98, $6888, $5D98, $6888 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7093,
   "type": "line",
   "text": "Course A, stage 4: the scenery list scenery_list_next reads, 29 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98, $6310, $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7153,
   "type": "line",
   "text": "Course A, stage 5: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7209,
   "type": "line",
   "text": "Course B, stage 1: the scenery list scenery_list_next reads, 29 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5D98, $6888 and $6310 copied in at their places in the list; it starts with the stream at $22F9. After the last block comes one more stream, $21A9."
  },
  {
   "address": 7269,
   "type": "line",
   "text": "Course B, stage 2: the scenery list scenery_list_next reads, 29 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $6310, $5820 and $6310 copied in at their places in the list; it starts with the stream at $22F9. After the last block comes one more stream, $21A9."
  },
  {
   "address": 7329,
   "type": "line",
   "text": "Course B, stage 3: the scenery list scenery_list_next reads, 26 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character block $6310 copied in at its place in the list; it starts with the stream at $22F9. After the last block come 24 more streams: $2245 6 times, $22A5 5 times, $2245 twice, $22A5 twice, $2245 4 times and $22A5 5 times."
  },
  {
   "address": 7383,
   "type": "line",
   "text": "Course B, stage 4: the scenery list scenery_list_next reads, 28 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7441,
   "type": "line",
   "text": "Course B, stage 5: the scenery list scenery_list_next reads, 30 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5D98, $6310, $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9. After the last block come 3 more streams: $225D and $231D twice."
  },
  {
   "address": 7503,
   "type": "line",
   "text": "Course C, stage 1: the scenery list scenery_list_next reads, 28 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5820 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7561,
   "type": "line",
   "text": "Course C, stage 2: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5820 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7617,
   "type": "line",
   "text": "Course C, stage 3: the scenery list scenery_list_next reads, 32 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98, $6888, $5820, $6310, $5820, $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7683,
   "type": "line",
   "text": "Course C, stage 4: the scenery list scenery_list_next reads, 31 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5820, $5D98, $5820, $6310, $5820 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7747,
   "type": "line",
   "text": "Course C, stage 5: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7803,
   "type": "line",
   "text": "Course D, stage 1: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7859,
   "type": "line",
   "text": "Course D, stage 2: the scenery list scenery_list_next reads, 29 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5820, $5D98, $5820 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7919,
   "type": "line",
   "text": "Course D, stage 3: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 7975,
   "type": "line",
   "text": "Course D, stage 4: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 8031,
   "type": "line",
   "text": "Course D, stage 5: the scenery list scenery_list_next reads, 30 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98, $6888, $5D98, $5820 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 8093,
   "type": "line",
   "text": "Course E, stage 1: the scenery list scenery_list_next reads, 26 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character block $6310 copied in at its place in the list; it starts with the stream at $22F9. After the last block come 24 more streams: $22A5 6 times and $2245 18 times."
  },
  {
   "address": 8147,
   "type": "line",
   "text": "Course E, stage 2: the scenery list scenery_list_next reads, 29 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5820, $6888 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 8207,
   "type": "line",
   "text": "Course E, stage 3: the scenery list scenery_list_next reads, 27 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $5D98 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 8263,
   "type": "line",
   "text": "Course E, stage 4: the scenery list scenery_list_next reads, 31 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6888, $5D98, $6888, $5D98, $6888 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 8327,
   "type": "line",
   "text": "Course E, stage 5: the scenery list scenery_list_next reads, 30 two-byte entries and $FFFF: 25 scenery streams, four records each, and the character blocks $6310, $5D98, $5820, $6888 and $6310 copied in at their places in the list; it starts with the stream at $22F9."
  },
  {
   "address": 8389,
   "type": "line",
   "text": "The scenery streams the lists name, 12 bytes each to $2328: four records of three scenery types, the object on the left, over the road and on the right (0 for none), which next_scenery_record hands to the slot that has come round to the far end. 50 of the 51 streams are named by a list."
  },
  {
   "address": 8881,
   "type": "line",
   "text": "A scenery stream no list names: 6/0/2, 6/0/2, 6/0/2, 6/0/2 (left/middle/right types, four records)."
  },
  {
   "address": 8953,
   "type": "line",
   "text": "The stream every stage's list begins with, the first scenery of every stage: types 8 on the left and right and 1 over the road in its first record, nothing in the other three."
  },
  {
   "address": 9001,
   "type": "line",
   "text": "Runs the current piece of the track: entry $21 of the stage's piece list at ($E1) is the address of a piece routine, which it jumps to through $02/$03. An entry of $FFFF starts the list again from the top, the next lap. Called at the start of a stage and each time the player moves on a step (bit 5 of $5381 changes)."
  },
  {
   "address": 9021,
   "type": "line",
   "text": "An RTS after track_step's JMP that nothing reaches."
  },
  {
   "address": 9030,
   "type": "line",
   "text": "The pieces of course A, stage 1: two-byte addresses of piece routines, run in turn by track_step, $FFFF at the end. The 25 lists, five courses of five stages, follow each other to $2B0B; course_table points at them."
  },
  {
   "address": 9096,
   "type": "line",
   "text": "The pieces of course A, stage 2, for track_step."
  },
  {
   "address": 9166,
   "type": "line",
   "text": "The pieces of course A, stage 3, for track_step."
  },
  {
   "address": 9250,
   "type": "line",
   "text": "The pieces of course A, stage 4, for track_step."
  },
  {
   "address": 9338,
   "type": "line",
   "text": "The pieces of course A, stage 5, for track_step."
  },
  {
   "address": 9438,
   "type": "line",
   "text": "The pieces of course B, stage 1, for track_step."
  },
  {
   "address": 9512,
   "type": "line",
   "text": "The pieces of course B, stage 2, for track_step."
  },
  {
   "address": 9592,
   "type": "line",
   "text": "The pieces of course B, stage 3, for track_step."
  },
  {
   "address": 9650,
   "type": "line",
   "text": "The pieces of course B, stage 4, for track_step."
  },
  {
   "address": 9732,
   "type": "line",
   "text": "The pieces of course B, stage 5, for track_step."
  },
  {
   "address": 9820,
   "type": "line",
   "text": "The pieces of course C, stage 1, for track_step."
  },
  {
   "address": 9876,
   "type": "line",
   "text": "The pieces of course C, stage 2, for track_step."
  },
  {
   "address": 9964,
   "type": "line",
   "text": "The pieces of course C, stage 3, for track_step."
  },
  {
   "address": 10044,
   "type": "line",
   "text": "The pieces of course C, stage 4, for track_step."
  },
  {
   "address": 10126,
   "type": "line",
   "text": "The pieces of course C, stage 5, for track_step."
  },
  {
   "address": 10198,
   "type": "line",
   "text": "The pieces of course D, stage 1, for track_step."
  },
  {
   "address": 10280,
   "type": "line",
   "text": "The pieces of course D, stage 2, for track_step."
  },
  {
   "address": 10352,
   "type": "line",
   "text": "The pieces of course D, stage 3, for track_step."
  },
  {
   "address": 10452,
   "type": "line",
   "text": "The pieces of course D, stage 4, for track_step."
  },
  {
   "address": 10538,
   "type": "line",
   "text": "The pieces of course D, stage 5, for track_step."
  },
  {
   "address": 10632,
   "type": "line",
   "text": "The pieces of course E, stage 1, for track_step."
  },
  {
   "address": 10704,
   "type": "line",
   "text": "The pieces of course E, stage 2, for track_step."
  },
  {
   "address": 10776,
   "type": "line",
   "text": "The pieces of course E, stage 3, for track_step."
  },
  {
   "address": 10858,
   "type": "line",
   "text": "The pieces of course E, stage 4, for track_step."
  },
  {
   "address": 10932,
   "type": "line",
   "text": "The pieces of course E, stage 5, for track_step."
  },
  {
   "address": 11020,
   "type": "line",
   "text": "The first piece of every list: points the road's three row tables at the flat road (widths $462F, scenery rows $4639, kart heights $4649), puts the sky's end at $2B ($23, the high byte of the timer that changes the background at the horizon) and moves on at once to the next piece."
  },
  {
   "address": 11055,
   "type": "line",
   "text": "Ten steps: on each of the first nine the bend $2D moves one notch to the left (9 is straight, 0 the sharpest left bend, 18 the sharpest right), and the road's offsets by row ($27) and the scenery's ($29) are taken from bend_road_offsets and bend_scenery_offsets for the new bend. Into a left bend from straight, or out of a right bend."
  },
  {
   "address": 11090,
   "type": "line",
   "text": "Ten steps: on each of the first nine the bend $2D moves one notch to the right, with the road's and scenery's offsets for the new bend. Into a right bend from straight, or out of a left bend."
  },
  {
   "address": 11125,
   "type": "line",
   "text": "For each bend 0 to 18, the address of its list of sideways offsets of the road, one a row from the bottom. Left bends' lists run 0 to negative, right bends' 0 to positive; straight (9) is all zeros at $2CA2. The lists overlap in memory, each the start of a longer one."
  },
  {
   "address": 11126,
   "type": "line",
   "text": "The high bytes of bend_road_offsets, read at its address + 1."
  },
  {
   "address": 11163,
   "type": "line",
   "text": "For each bend 0 to 18, the address of its list of sideways offsets at each of the 16 scenery distances."
  },
  {
   "address": 11164,
   "type": "line",
   "text": "The high bytes of bend_scenery_offsets, read at its address + 1."
  },
  {
   "address": 11201,
   "type": "line",
   "text": "The offset lists bend_road_offsets and bend_scenery_offsets point into: signed column offsets growing with distance, from $EF to $11."
  },
  {
   "address": 11674,
   "type": "line",
   "text": "Runs until its step count reaches 29, each pointing the three row tables at the next set from descent_widths, descent_scenery_rows and descent_kart_heights; on steps 15 to 25 the horizon rises two units of the sky timer ($23) and one row of the horizon picture ($53A9)."
  },
  {
   "address": 11739,
   "type": "line",
   "text": "For each step of piece_descent, the address of the road's width list by row."
  },
  {
   "address": 11740,
   "type": "line",
   "text": "The high bytes of descent_widths, read at its address + 1."
  },
  {
   "address": 11797,
   "type": "line",
   "text": "For each step of piece_descent, the address of the screen row of each scenery distance."
  },
  {
   "address": 11798,
   "type": "line",
   "text": "The high bytes of descent_scenery_rows, read at its address + 1."
  },
  {
   "address": 11855,
   "type": "line",
   "text": "For each step of piece_descent, the address of the sprite Y of each rival distance."
  },
  {
   "address": 11856,
   "type": "line",
   "text": "The high bytes of descent_kart_heights, read at its address + 1."
  },
  {
   "address": 11913,
   "type": "line",
   "text": "Runs until its step count reaches 12, each step pointing the three row tables at the next set from level_widths onward; on each the horizon drops two units of $23 and one row of $53A9, and the raised-track count $53D4 goes down by one."
  },
  {
   "address": 11971,
   "type": "line",
   "text": "For each step of piece_level_out, the address of the road's width list by row."
  },
  {
   "address": 11972,
   "type": "line",
   "text": "The high bytes of level_widths, read at its address + 1."
  },
  {
   "address": 11995,
   "type": "line",
   "text": "For each step of piece_level_out, the address of the screen row of each scenery distance."
  },
  {
   "address": 11996,
   "type": "line",
   "text": "The high bytes of level_scenery_rows, read at its address + 1."
  },
  {
   "address": 12019,
   "type": "line",
   "text": "For each step of piece_level_out, the address of the sprite Y of each rival distance."
  },
  {
   "address": 12020,
   "type": "line",
   "text": "The high bytes of level_kart_heights, read at its address + 1."
  },
  {
   "address": 12043,
   "type": "line",
   "text": "Sixteen steps with nothing changed: straight on."
  },
  {
   "address": 12052,
   "type": "line",
   "text": "Four steps with nothing changed: straight on."
  },
  {
   "address": 12068,
   "type": "line",
   "text": "Runs until its step count reaches 23, each pointing the three row tables at the next set from climb_widths; from step 12 the horizon drops two units of $23 and one row of $53A9 a step, and the raised-track count $53D4 goes up by one, so from there the kart can fall off the side."
  },
  {
   "address": 12125,
   "type": "line",
   "text": "For each step of piece_climb, the address of the road's width list by row."
  },
  {
   "address": 12126,
   "type": "line",
   "text": "The high bytes of climb_widths, read at its address + 1."
  },
  {
   "address": 12171,
   "type": "line",
   "text": "For each step of piece_climb, the address of the screen row of each scenery distance."
  },
  {
   "address": 12172,
   "type": "line",
   "text": "The high bytes of climb_scenery_rows, read at its address + 1."
  },
  {
   "address": 12217,
   "type": "line",
   "text": "For each step of piece_climb, the address of the sprite Y of each rival distance."
  },
  {
   "address": 12218,
   "type": "line",
   "text": "The high bytes of climb_kart_heights, read at its address + 1."
  },
  {
   "address": 12263,
   "type": "line",
   "text": "Runs until its step count reaches 25, each pointing the three row tables at the next set from descent2_widths; on step 13 the bend is set straight at once ($2D = 9, both offset lists at $2CA2), and from step 14 the horizon rises two units of $23 and one row of $53A9 a step."
  },
  {
   "address": 12343,
   "type": "line",
   "text": "For each step of piece_descent_straight, the address of the road's width list by row."
  },
  {
   "address": 12344,
   "type": "line",
   "text": "The high bytes of descent2_widths, read at its address + 1."
  },
  {
   "address": 12393,
   "type": "line",
   "text": "For each step of piece_descent_straight, the address of the screen row of each scenery distance."
  },
  {
   "address": 12394,
   "type": "line",
   "text": "The high bytes of descent2_scenery_rows, read at its address + 1."
  },
  {
   "address": 12443,
   "type": "line",
   "text": "For each step of piece_descent_straight, the address of the sprite Y of each rival distance."
  },
  {
   "address": 12444,
   "type": "line",
   "text": "The high bytes of descent2_kart_heights, read at its address + 1."
  },
  {
   "address": 12493,
   "type": "line",
   "text": "A crest with a gap in the road: each step takes from jump_gap_from and jump_gap_to the rows of the road left out ($53E6) and the row where it stops ($53E7), so the near edge comes up the screen and the far side follows. From step 7 to step 21 the kart is in the air ($53E8 set: no steering or speed changes, but the sideways push $30 of the last frame on the ground goes on, and the head follows jump_head_y), and if the speed level $536F is below 10 on any of those steps the kart falls (drop_kart_back). Then the rest of piece_crest."
  },
  {
   "address": 12535,
   "type": "line",
   "text": "Runs until its step count reaches 29, each pointing the three row tables at the next set from crest_widths; from step 7 the horizon rises two units of $23 and one row of $53A9 a step."
  },
  {
   "address": 12596,
   "type": "line",
   "text": "For each of the 29 steps of piece_jump, the first road row drawn, from the bottom ($53E6): 0 until step 15, then 8 down to 0 as the far side comes up."
  },
  {
   "address": 12625,
   "type": "line",
   "text": "For each step of piece_jump, the road row where drawing stops ($53E7): 9 down to 2 as the gap comes near, 0 (no road) for steps 7 to 14, then 20."
  },
  {
   "address": 12654,
   "type": "line",
   "text": "For each step of piece_crest and piece_jump, the address of the road's width list by row."
  },
  {
   "address": 12655,
   "type": "line",
   "text": "The high bytes of crest_widths, read at its address + 1."
  },
  {
   "address": 12712,
   "type": "line",
   "text": "For each step of piece_crest and piece_jump, the address of the screen row of each scenery distance."
  },
  {
   "address": 12713,
   "type": "line",
   "text": "The high bytes of crest_scenery_rows, read at its address + 1."
  },
  {
   "address": 12770,
   "type": "line",
   "text": "For each step of piece_crest and piece_jump, the address of the sprite Y of each rival distance."
  },
  {
   "address": 12771,
   "type": "line",
   "text": "The high bytes of crest_kart_heights, read at its address + 1."
  },
  {
   "address": 12828,
   "type": "line",
   "text": "On each step in a bend ($2D not 9): the horizon picture scrolls a column ($53A8, 0 to 39, down in a left bend and up in a right one), and the road slides sideways against the kart ($2F) by the stage's pull, two values used on alternate race frames: bend_pull_right_a and _b in a right bend, bend_pull_left_a and _b in a left. The new $2F is kept only within $A8 to $1B, the same limits as steering."
  },
  {
   "address": 12902,
   "type": "line",
   "text": "Pull of a right bend on even race frames, by stage: 2, 2, 3, 4, 4."
  },
  {
   "address": 12907,
   "type": "line",
   "text": "Pull of a right bend on odd race frames, by stage: 2, 3, 3, 3, 3."
  },
  {
   "address": 12912,
   "type": "line",
   "text": "Pull of a left bend on even race frames, by stage: -2, -2, -3, -4, -4."
  },
  {
   "address": 12917,
   "type": "line",
   "text": "Pull of a left bend on odd race frames, by stage: -2, -3, -3, -3, -3."
  },
  {
   "address": 12922,
   "type": "line",
   "text": "The head sprite's Y for each step of a jump: from step 7 it rises from $CE to $BA and comes back to $CE; the kart follows 21 lines below."
  },
  {
   "address": 12945,
   "type": "line",
   "text": "The player's kart, once a race frame. After the finish ($53CF set) it does nothing; a spin hands over to kart_spin, and while the kart is dropped back onto the track ($53E9) it goes straight to move_on. In a jump ($53E8) it only sets the heights of the head and kart from jump_head_y, then the kart's picture and the road's sideways slide $30, which keeps the value it had at the take-off, and moves on: the stick does nothing in the air. Otherwise: the panel's faces (panel_faces_tick); when moving, left on the stick slides the road +3 a race frame and turns the kart one frame towards hard left every fourth race frame, right -3 and towards hard right; with neither the kart turns back towards straight every other frame. The road's offset $2F stays within $A8 to $1B. The kart is on the road while $2F is from $C0 to $FF. Off it, on a raised stretch ($53D4) it falls (drop_kart_back); then, there as anywhere off the road, above speed level 3 it slows down. Up accelerates (speed_up) every other race frame, to level 18 in low gear and 32 in high gear, where below level 14 it gains only one race frame in four; otherwise the kart slows every other frame (slow_down), twice when down is held. Then the kart moves on by its speed, laps and finishes, the score (add_speed_score) and the gear change on fire."
  },
  {
   "address": 13199,
   "type": "line",
   "text": "Adds the speed level $536F to the position $5380/$5381; 50 coarse steps are a lap ($53A7). After the fourth lap the race is over for the player: $53CF = 60 race frames to the end; rival 10 takes the kart's lane, position 0, speed and colour, so the kart drives on up the road as a rival while the view stays; band 0's sprites point at $89; and the player goes onto the podium as finisher 11 (place_finisher), with the stage's box ($53F1 + stage) marked in the colour of the place taken (podium_colours). Before that, each lap colours the lap boxes on row 4: the one for the lap done red, the next white."
  },
  {
   "address": 13319,
   "type": "line",
   "text": "Fire changes gear, once a press ($53D8 holds it until fire is let go): $53D9 0 is low, 1 high. The arrows in column 31 of rows 3 and 4 and the colours of LO and HI follow, from gear_arrow_lo, gear_arrow_hi, gear_colour_lo and gear_colour_hi."
  },
  {
   "address": 13382,
   "type": "line",
   "text": "The cell in front of LO (row 3, column 31) for low and high gear."
  },
  {
   "address": 13384,
   "type": "line",
   "text": "The cell in front of HI (row 4, column 31) for low and high gear."
  },
  {
   "address": 13386,
   "type": "line",
   "text": "The colour of LO for low and high gear: 9 when chosen, 12 when not."
  },
  {
   "address": 13388,
   "type": "line",
   "text": "The colour of HI for low and high gear: 12, then 9 when chosen."
  },
  {
   "address": 13390,
   "type": "line",
   "text": "The colour of a stage's mark by the podium places left after the player's finish: $0A for third, $0B for second, $0F for first."
  },
  {
   "address": 13393,
   "type": "line",
   "text": "Adds a quarter of the speed level (0 to 8) to the score $53DC-$53DE in decimal mode, each race frame, and falls into draw_score."
  },
  {
   "address": 13426,
   "type": "line",
   "text": "Writes the score's six BCD digits from $53DE down into row 4, columns 6 to 11 ($E0A6-$E0AB); column 12 stays the zero after them."
  },
  {
   "address": 13488,
   "type": "line",
   "text": "Every other race frame: adds one to the digit after the seconds, $53E1 (shown at $E083), which runs 0 to 5; the sixth carries a second into $53E0 (BCD, shown at $E080 and $E081), and 60 seconds a minute into $53DF ($E07E). The clock runs on race frames, not on the video's 50 a second."
  },
  {
   "address": 13571,
   "type": "line",
   "text": "If the speed level $536F is below 32: one level up, and 7 more on the km/h read-out $53DA/$53DB (BCD), shown at $E0C3-$E0C5."
  },
  {
   "address": 13626,
   "type": "line",
   "text": "If the speed level is above 0: one level down and 7 off the km/h read-out."
  },
  {
   "address": 13656,
   "type": "line",
   "text": "Sets up a stage before the start: clears the race's variables, puts the kart at position 2,0 with the road's offset $2F at $F4 and its position $53D2 at $14 and the horizon picture at row $0F, then reads the course's record from course_table: the stage's piece list ($E1), scenery list ($E3), raised-track count $53D4 and the view's multicolour $53EA, sky and ground colours $25 and $26, and the addresses of the two horizon pictures, the upper ($53EF) and the lower ($53ED). Copies 113 bytes from $B685 (or $B785 when the lower horizon picture is at $A5xx) to $FF88, the race set's last characters. Then the start piece, the bend straight, the first scenery, the kart's colour $53CE and the driver's head in band 0, the rivals' places, lanes, drivers and colours (rival_start_coarse, rival_start_fine, rival_lanes, the drivers before the player's in turn), the podium cleared, the player in fifth place, and the front faces' tops cleared of old labels."
  },
  {
   "address": 13878,
   "type": "line",
   "text": "The high byte of the LDA's address at $3634, $B6 or $B7, set by setup_stage to choose which 113 bytes go to $FF88."
  },
  {
   "address": 14060,
   "type": "line",
   "text": "Puts band 0's sprites back at the kart's normal height: head $CE, kart $E3."
  },
  {
   "address": 14077,
   "type": "line",
   "text": "The four scenery slots' first counts: 0, 4, 8 and 12, so the slots take records in turn."
  },
  {
   "address": 14081,
   "type": "line",
   "text": "The coarse start position of each rival: 2 for rivals 0 to 3, 1 for 4 to 7, 0 for 8 to 10; the player is at 2."
  },
  {
   "address": 14092,
   "type": "line",
   "text": "The fine start position of each rival, within its coarse step: $F0, $B4, $78, $3C for rivals 0 to 3, and so on, 60 apart."
  },
  {
   "address": 14103,
   "type": "line",
   "text": "Each rival's lane, the sideways offset its kart keeps: $08 or $28."
  },
  {
   "address": 14114,
   "type": "line",
   "text": "The colour of each driver's kart, by driver number."
  },
  {
   "address": 14126,
   "type": "line",
   "text": "Five kart colours, one picked at random for the player's kart on the select screen."
  },
  {
   "address": 14131,
   "type": "line",
   "text": "Address of each course's record, A to E: $373D, $3779, $37B5, $37F1, $382D."
  },
  {
   "address": 14132,
   "type": "line",
   "text": "The high bytes of course_table, read at its address + 1."
  },
  {
   "address": 14141,
   "type": "line",
   "text": "Course A's record, 60 bytes, two for each of the five stages in six groups of ten: the piece lists, the scenery lists, the raised-track count with the view's multicolour, the sky and ground colours, the upper and the lower horizon picture."
  },
  {
   "address": 14161,
   "type": "line",
   "text": "The rest of course A's record, two bytes a stage in groups of five: the raised-track count and the view's multicolour (0/$C, 0/$C, 0/$F, 0/$C, 11/$C), the sky and ground colours (3/5, 6/11, 6/12, 3/8, 3/5), then the horizons."
  },
  {
   "address": 14181,
   "type": "line",
   "text": "Course A's horizon pictures, the address of each picture's bottom row, one word a stage: the upper pictures ($B33F, $B33F, $B33F, $B33F, $A971), then the lower ($AF5D, $AF5D, $AF5D, $AF5D, $A571)."
  },
  {
   "address": 14201,
   "type": "line",
   "text": "Course B's record, laid out as course_a."
  },
  {
   "address": 14221,
   "type": "line",
   "text": "The rest of course B's record, two bytes a stage in groups of five: the raised-track count and the view's multicolour (0/$C, 0/$C, 100/$C, 0/$C, 0/$C), the sky and ground colours (6/5, 5/11, 4/13, 3/11, 3/11), then the horizons."
  },
  {
   "address": 14241,
   "type": "line",
   "text": "Course B's horizon pictures, the address of each picture's bottom row, one word a stage: the upper pictures ($A971, $B33F, $B33F, $B33F, $A971), then the lower ($A571, $AF5D, $A571, $A571, $A571)."
  },
  {
   "address": 14261,
   "type": "line",
   "text": "Course C's record, laid out as course_a."
  },
  {
   "address": 14281,
   "type": "line",
   "text": "The rest of course C's record, two bytes a stage in groups of five: the raised-track count and the view's multicolour (0/$C, 0/$C, 0/$C, 0/$C, 100/$C), the sky and ground colours (6/13, 2/9, 6/0, 3/11, 3/5), then the horizons."
  },
  {
   "address": 14301,
   "type": "line",
   "text": "Course C's horizon pictures, the address of each picture's bottom row, one word a stage: the upper pictures ($B33F, $B33F, $A971, $B33F, $B33F), then the lower ($A571, $AF5D, $A571, $AF5D, $AF5D)."
  },
  {
   "address": 14321,
   "type": "line",
   "text": "Course D's record, laid out as course_a."
  },
  {
   "address": 14341,
   "type": "line",
   "text": "The rest of course D's record, two bytes a stage in groups of five: the raised-track count and the view's multicolour (0/$C, 0/$C, 0/$C, 0/$C, 0/$C), the sky and ground colours (7/8, 6/9, 6/13, 3/9, 6/9), then the horizons."
  },
  {
   "address": 14361,
   "type": "line",
   "text": "Course D's horizon pictures, the address of each picture's bottom row, one word a stage: the upper pictures ($B33F, $B33F, $A971, $B33F, $B33F), then the lower ($A571, $AF5D, $A571, $A571, $AF5D)."
  },
  {
   "address": 14381,
   "type": "line",
   "text": "Course E's record, laid out as course_a."
  },
  {
   "address": 14401,
   "type": "line",
   "text": "The rest of course E's record, two bytes a stage in groups of five: the raised-track count and the view's multicolour (100/$C, 0/$B, 0/$F, 0/$C, 0/$C), the sky and ground colours (5/6, 6/0, 4/12, 6/5, 4/11), then the horizons."
  },
  {
   "address": 14421,
   "type": "line",
   "text": "Course E's horizon pictures, the address of each picture's bottom row, one word a stage: the upper pictures ($B33F, $A971, $B33F, $B33F, $A971), then the lower ($AF5D, $A571, $AF5D, $A571, $A571)."
  },
  {
   "address": 14441,
   "type": "line",
   "text": "Pauses the race while CIA 1's port B reads $EF (bit 4 low, the space bar): waits for it to be let go, pressed again, and let go again, a frame at a time."
  },
  {
   "address": 14479,
   "type": "line",
   "text": "Waits for raster line 0 X times, stepping the random generator twice each time, so a wait also stirs the random numbers."
  },
  {
   "address": 14494,
   "type": "line",
   "text": "Steps the 16-bit random generator at $5370/$5371: shifts it left a bit, then $5370 = ($5371 EOR $5370) + $5371 + the carry. Returns the new $5370 in A."
  },
  {
   "address": 14517,
   "type": "line",
   "text": "Seeds the random generator from the raster line: $5370 = $D012, $5371 = twice it, read again while that doubled value is zero."
  },
  {
   "address": 14530,
   "type": "line",
   "text": "Points the video chip at the top bank, $C000-$FFFF (CIA 2 port A bits 0 and 1 cleared), $D018 = $DE, multicolour text with 40 columns ($D016 = $18), multicolours $0C and 0, all eight sprites on and multicoloured with sprites 4 to 7 behind the background, black border, and sprite multicolours 0 and $0F."
  },
  {
   "address": 14596,
   "type": "line",
   "text": "Copies the colour buffer's rows 5 to 24 ($54C8-$57E7) to colour RAM ($D8C8-$DBE7), 40 cells of six rows a pass. Called after each flip of the view screens, so the colours follow the screen just drawn."
  },
  {
   "address": 14737,
   "type": "line",
   "text": "Sets the view screen in $D018 from view_d018 by $2E, keeping its low four bits."
  },
  {
   "address": 14751,
   "type": "line",
   "text": "Value for $D018 for each of the two view screens: $BE (screen $EC00) when $2E is 0, $AE (screen $E800) when it is 1; both with the race's character set at $F800."
  },
  {
   "address": 14753,
   "type": "line",
   "text": "Fills rows 5 to 24 of the screen being drawn into with $20 (sky): $E8C8-$EBE7 when $2E is 0, $ECC8-$EFE7 when it is 1."
  },
  {
   "address": 14892,
   "type": "line",
   "text": "An RTS used as a routine that does nothing: the picture routine of distant rivals, and the start address show_place's LDA at $145B keeps until it is rewritten."
  },
  {
   "address": 14893,
   "type": "line",
   "text": "Puts the Y of all twelve sprite records at $0A, above the screen."
  },
  {
   "address": 14903,
   "type": "line",
   "text": "Places the rivals on screen, rival 10 first: a rival up to one coarse step ahead (or on the lap line just behind it) is at distance d (0 to 31) in eighths of the fine step. Its X is its lane plus the road's offset, times the scale for d (rival_scale), plus the bend's scenery offset at d/2 and the road's position $53D3; off the right of the screen ($A0 or more) it is not drawn. Its Y comes from the row table ($43), 0 meaning hidden behind a crest; its picture from rival_pictures; a near rival adds more records (rival_picture_routines). At distance 1, in front of the kart (X from $3C to $59) and slower than it, a rival makes the player spin ($53D0, ten turns in $53D1). Stops at twelve records."
  },
  {
   "address": 15139,
   "type": "line",
   "text": "The scale of a rival's sideways position at each of the 32 distances, $90 down to 8."
  },
  {
   "address": 15171,
   "type": "line",
   "text": "The sprite pointer of a rival at each of the 32 distances, from the biggest ($8A) to the smallest ($49)."
  },
  {
   "address": 15203,
   "type": "line",
   "text": "For each pair of distances, the routine that adds a rival's other records: four records for distances 0 to 5, two for 6 to 11, none (an RTS at $3A2C) from 12."
  },
  {
   "address": 15204,
   "type": "line",
   "text": "The high bytes of rival_picture_routines, read at its address + 1."
  },
  {
   "address": 15235,
   "type": "line",
   "text": "A rival at distance 0 or 1: the same three body pointers and head as the player's kart, the head the driver's from behind in colour 8, 21 lines above; starts sound effect 2."
  },
  {
   "address": 15301,
   "type": "line",
   "text": "A rival at distance 2 or 3: three body records and the head, pointers $53, $55, $54."
  },
  {
   "address": 15355,
   "type": "line",
   "text": "A rival at distance 4 or 5: three body records and the head, pointers $4F, $51, $50."
  },
  {
   "address": 15409,
   "type": "line",
   "text": "A rival at distance 6 or 7: a second sprite, pointer $46, beside the first."
  },
  {
   "address": 15431,
   "type": "line",
   "text": "A rival at distance 8 or 9: a second sprite, pointer $4B."
  },
  {
   "address": 15453,
   "type": "line",
   "text": "A rival at distance 10 or 11: a second sprite, pointer $4D."
  },
  {
   "address": 15475,
   "type": "line",
   "text": "JMP ($02), the indirect call place_rivals makes."
  },
  {
   "address": 15478,
   "type": "line",
   "text": "Draws the scenery of the four slots into the back screen, from the newest ($42, the farthest) round to the oldest, the nearest, so near things are drawn over far ones. A slot at distance d ($31,x, 15 far to 0 near) holds up to three objects: on the left ($35,x), over the road ($3D,x) and on the right ($39,x). Each object's type gives its colour (scenery_colours) and its picture at d (width, height and source in the tile sheets, from the table scenery_pictures names); the sideways place is the road's offset $2F scaled by scenery_scale at d, plus the bend's offset ($29) and the road's position $53D2, the left object ending there and the right one starting a quarter of the scale further; the bottom row is ($2B) at d, 0 meaning out of sight. An object over the road is lifted by an eighth of the scale, except type $17. At distance 0, a left object starting left of column 18 while the kart is off the road's left side ($2F not negative), or a right object covering column 21, makes the kart spin ($53D0, ten turns). All drawn with the tile blitter draw_tiles."
  },
  {
   "address": 15867,
   "type": "line",
   "text": "The scale of the scenery's sideways place at each of the 16 distances: $88 at the nearest down to 8."
  },
  {
   "address": 15883,
   "type": "line",
   "text": "For each scenery type 0 to 24, the address of its 16 picture records, one per distance (type 0 is none)."
  },
  {
   "address": 15884,
   "type": "line",
   "text": "The high bytes of scenery_pictures, read at its address + 1."
  },
  {
   "address": 15933,
   "type": "line",
   "text": "The colour of each scenery type 0 to 24, a colour RAM value: 8 to $0F are multicolour cells."
  },
  {
   "address": 15958,
   "type": "line",
   "text": "Pictures of scenery type 13 at the 16 distances, nearest first, four bytes each: width and height in cells, and the address of the top-left cell in the tile sheets (rows 256 bytes apart)."
  },
  {
   "address": 16022,
   "type": "line",
   "text": "Pictures of scenery type 16 at the 16 distances: width, height, source."
  },
  {
   "address": 16086,
   "type": "line",
   "text": "Pictures of scenery type 8 at the 16 distances: width, height, source."
  },
  {
   "address": 16150,
   "type": "line",
   "text": "Pictures of scenery type 12 at the 16 distances: width, height, source."
  },
  {
   "address": 16214,
   "type": "line",
   "text": "Pictures of scenery type 9 at the 16 distances: width, height, source."
  },
  {
   "address": 16278,
   "type": "line",
   "text": "Pictures of scenery type 15 at the 16 distances: width, height, source."
  },
  {
   "address": 16342,
   "type": "line",
   "text": "Pictures of scenery type 1 at the 16 distances: width, height, source."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Scenery type 1's records from the source address of distance 10 on, to distance 15: the rest of the table at $3FD6."
  },
  {
   "address": 16406,
   "type": "line",
   "text": "Pictures of scenery type 19 at the 16 distances: width, height, source."
  },
  {
   "address": 16470,
   "type": "line",
   "text": "Pictures of scenery type 21 at the 16 distances: width, height, source."
  },
  {
   "address": 16534,
   "type": "line",
   "text": "Pictures of scenery type 23 at the 16 distances: width, height, source."
  },
  {
   "address": 16598,
   "type": "line",
   "text": "Pictures of scenery type 22 at the 16 distances: width, height, source."
  },
  {
   "address": 16662,
   "type": "line",
   "text": "Pictures of scenery type 6 at the 16 distances: width, height, source."
  },
  {
   "address": 16726,
   "type": "line",
   "text": "Pictures of scenery type 17 at the 16 distances: width, height, source."
  },
  {
   "address": 16790,
   "type": "line",
   "text": "Pictures of scenery type 18 at the 16 distances: width, height, source."
  },
  {
   "address": 16854,
   "type": "line",
   "text": "Pictures of scenery type 10 at the 16 distances: width, height, source."
  },
  {
   "address": 16918,
   "type": "line",
   "text": "Pictures of scenery type 11 at the 16 distances: width, height, source."
  },
  {
   "address": 16982,
   "type": "line",
   "text": "Pictures of scenery type 20 at the 16 distances: width, height, source."
  },
  {
   "address": 17046,
   "type": "line",
   "text": "Pictures of scenery type 14 at the 16 distances: width, height, source."
  },
  {
   "address": 17110,
   "type": "line",
   "text": "Pictures of scenery type 7 at the 16 distances: width, height, source."
  },
  {
   "address": 17174,
   "type": "line",
   "text": "Pictures of scenery type 5 at the 16 distances: width, height, source."
  },
  {
   "address": 17238,
   "type": "line",
   "text": "Pictures of scenery type 2 at the 16 distances: width, height, source."
  },
  {
   "address": 17302,
   "type": "line",
   "text": "Pictures of scenery type 3 at the 16 distances: width, height, source."
  },
  {
   "address": 17366,
   "type": "line",
   "text": "Pictures of scenery type 4 at the 16 distances: width, height, source."
  },
  {
   "address": 17430,
   "type": "line",
   "text": "Pictures of scenery type 24 at the 16 distances: width, height, source."
  },
  {
   "address": 17494,
   "type": "line",
   "text": "The tile blitter: copies a picture of $12 by $13 cells from ($0A), whose rows are 256 bytes apart, into the back screen with its bottom row at row $0D and its left at column $0C, in colour $14 through the colour buffer at $5400. A zero cell is left out, so the picture is cut round its shape. Cut at the left and right edges of the screen and at the bottom of the colour buffer; rows from -25 to 24 are allowed, so a picture can hang off the top."
  },
  {
   "address": 17644,
   "type": "line",
   "text": "High byte of the screen being drawn into, by $2E: $E8 (the screen at $E800) or $EC."
  },
  {
   "address": 17646,
   "type": "line",
   "text": "High byte of row x 40 for rows -25 to 25, added to the screen's page, and to $54 for the colour buffer."
  },
  {
   "address": 17697,
   "type": "line",
   "text": "Low byte of row x 40 for rows -25 to 25."
  },
  {
   "address": 17748,
   "type": "line",
   "text": "An RTS, where draw_road ends when a row has no width left or reaches the jump's gap (from $458B and $459B)."
  },
  {
   "address": 17749,
   "type": "line",
   "text": "Draws the road into the back screen a row at a time from row 24 upward. Row r (from 0 at the bottom) is left out below $53E6 and the road stops at $53E7 (a jump's gap) or at a zero width in the width list ($1E); a width of $80 is a row hidden behind a crest. The left edge is the road's position $53D2, plus the bend's offset for the row ($27), plus the road's offset $2F times the row's width times four, over 256; the right edge is the left plus the width, both cut to the screen. Between them it writes the road cell $01, then the left and right edges (road_left_edge, road_right_edge) from how far each has moved since the row below."
  },
  {
   "address": 17967,
   "type": "line",
   "text": "The flat road's width in cells for each row from the bottom: $22 (34) narrowing by four a row to 2, then 0, the end: nine rows."
  },
  {
   "address": 17977,
   "type": "line",
   "text": "The screen row of each of the 16 scenery distances on flat road: 24 for the nearest up to 16."
  },
  {
   "address": 17993,
   "type": "line",
   "text": "The sprite Y of a rival at each of the 32 distances on flat road: $E1 for the nearest up to $9D."
  },
  {
   "address": 18025,
   "type": "line",
   "text": "The width, scenery-row and kart-height lists of the hills, which the piece routines' tables point into, from here to $4E23: width lists end with 0 and use $80 for a row hidden behind a crest; kart heights of 0 hide a rival."
  },
  {
   "address": 19049,
   "type": "line",
   "text": "The road's width, scenery-row and kart-height lists for the hills, continued from road_profiles to $4E23."
  },
  {
   "address": 20004,
   "type": "line",
   "text": "Draws the road's left edge on this row: how far the edge has moved since the row below ($15 - $17, or 0 after a hidden row), plus 3 and kept from 0 to 9, picks one of ten routines from left_edge_routines. Routines 3 to 9 write one to five cells leftward from the column before the road; 0 to 2, for an edge moving out, write over the road's first cells. Some choose their cell from the fraction of the offset ($1C)."
  },
  {
   "address": 20053,
   "type": "line",
   "text": "The ten left-edge routines, by the edge's movement plus 3."
  },
  {
   "address": 20054,
   "type": "line",
   "text": "The high bytes of left_edge_routines, read at its address + 1."
  },
  {
   "address": 20073,
   "type": "line",
   "text": "An upright left edge: cell $29, $28 or $27 by the fraction $1C (below $40, below $C2, above)."
  },
  {
   "address": 20098,
   "type": "line",
   "text": "The left edge one column in: cell $26 or $21 by the fraction $1C."
  },
  {
   "address": 20114,
   "type": "line",
   "text": "The left edge two columns in: cells $23 and $22."
  },
  {
   "address": 20126,
   "type": "line",
   "text": "The left edge three columns in (also for four): cells $23, $24 and $22."
  },
  {
   "address": 20145,
   "type": "line",
   "text": "The left edge five columns in: cells $2A, $24 and $25 twice."
  },
  {
   "address": 20169,
   "type": "line",
   "text": "The left edge six or more columns in: cells $2A twice, $24 and $25 twice."
  },
  {
   "address": 20198,
   "type": "line",
   "text": "The left edge one column out: cell $1F or $1E by the fraction $1C, on the road's first cell."
  },
  {
   "address": 20216,
   "type": "line",
   "text": "The left edge two columns out: cells $1C and $1D over the road's first two cells."
  },
  {
   "address": 20228,
   "type": "line",
   "text": "The left edge three or more columns out: cells $1C, $0F and $1D over the road's first three cells."
  },
  {
   "address": 20245,
   "type": "line",
   "text": "Draws the road's right edge on this row, as road_left_edge does on the left: the movement $18 - $16 plus 3, kept from 0 to 9, picks one of right_edge_routines, which write rightward from column $16, stopping at column 40."
  },
  {
   "address": 20295,
   "type": "line",
   "text": "The ten right-edge routines, by the edge's movement plus 3."
  },
  {
   "address": 20296,
   "type": "line",
   "text": "The high bytes of right_edge_routines, read at its address + 1."
  },
  {
   "address": 20315,
   "type": "line",
   "text": "An upright right edge: cell $16, $17 or $18 by the fraction $1C."
  },
  {
   "address": 20340,
   "type": "line",
   "text": "The right edge one column in: cell $1B or $14 by the fraction $1C."
  },
  {
   "address": 20356,
   "type": "line",
   "text": "The right edge two columns in: cells $19 and $1A."
  },
  {
   "address": 20370,
   "type": "line",
   "text": "The right edge three columns in (also for four): cells $19, $15 and $1A."
  },
  {
   "address": 20393,
   "type": "line",
   "text": "The right edge five columns in: cells $2A, $15 and $25 twice."
  },
  {
   "address": 20423,
   "type": "line",
   "text": "The right edge six or more columns in: cells $2A twice, $15 and $25 twice."
  },
  {
   "address": 20460,
   "type": "line",
   "text": "The right edge one column out: cell $10 or $11 by the fraction $1C, on the road's last cell."
  },
  {
   "address": 20477,
   "type": "line",
   "text": "The right edge two columns out: cells $13 and $12 over the road's last two cells."
  },
  {
   "address": 20488,
   "type": "line",
   "text": "The right edge three or more columns out: cells $13, $0E and $12 over the road's last three cells."
  },
  {
   "address": 20504,
   "type": "line",
   "text": "Waits for the frame counter $E5 to change. The raster interrupt at the top of the screen adds one to it: the race's at $51DF and the select screen's at $518A."
  },
  {
   "address": 20511,
   "type": "line",
   "text": "Points the raster chain at race_irq_top, stops CIA 1's and CIA 2's timers and turns off CIA 1's interrupts, banks out the KERNAL ($01 bit 1 cleared, so $01 = $35), points the NMI vector at a lone RTI ($507E) and the IRQ vector at irq_handler, and sets the video chip's interrupt mask to $F0, no source enabled."
  },
  {
   "address": 20572,
   "type": "line",
   "text": "Points the raster chain at race_irq_top and falls into enable_raster."
  },
  {
   "address": 20581,
   "type": "line",
   "text": "Turns on the raster interrupt (mask $F1) at line $2F and CIA 1's interrupts from timers A and B ($83 to $DC0D)."
  },
  {
   "address": 20606,
   "type": "line",
   "text": "The NMI handler: a lone RTI, so RESTORE does nothing."
  },
  {
   "address": 20607,
   "type": "line",
   "text": "Every interrupt comes here. A raster interrupt is acknowledged and jumps through the pointer at $08/$09 with interrupts enabled again, so the handlers form a chain, each setting the next line and the next handler. A CIA 1 timer A interrupt, after eight NOPs, sets the background colour to $26: the change from sky to ground at the horizon. Otherwise it was timer B: sprite_band_irq."
  },
  {
   "address": 20651,
   "type": "line",
   "text": "CIA 1 timer B: places sprites 0 to 3 for band $E0 of sprite_bands (X, Y, colour and pointer for each, the pointer written into all three screens' pointer bytes). A band whose flag is clear is skipped back to band 0, the player's kart. While $E0 counts down from 3 to 0 the timer is restarted for $0900 cycles, about 36 lines, so the bands go down the screen."
  },
  {
   "address": 20797,
   "type": "line",
   "text": "Four bands of four sprites each, reused down the screen by sprite_band_irq: band 0 (index 0 of each field) is the player's kart at the bottom, bands 1 to 3 the finishers on the podium and, at the start, the lights and the START sign. Fields of four bytes, one per band: on flags at $513D, then each sprite's X ($5141 sprite 0, $5145, $5149, $514D), Y ($5151 to $515D), pointer ($5161 to $516D) and colour ($5171 to $517D). Band 0 is always on."
  },
  {
   "address": 20798,
   "type": "line",
   "text": "Band 1's on flag, the first podium place, which setup_stage clears with bands 2 and 3."
  },
  {
   "address": 20799,
   "type": "line",
   "text": "Band 2's on flag; start_lights writes band 2's values from here, one every fourth byte."
  },
  {
   "address": 20800,
   "type": "line",
   "text": "Band 3's on flag; start_lights writes band 3's values from here, one every fourth byte."
  },
  {
   "address": 20801,
   "type": "line",
   "text": "Sprite 0's X in bands 0 to 3. Sprite 0 is the driver's head."
  },
  {
   "address": 20805,
   "type": "line",
   "text": "Sprite 1's X in bands 0 to 3, the left of the kart."
  },
  {
   "address": 20809,
   "type": "line",
   "text": "Sprite 2's X in bands 0 to 3, the middle of the kart."
  },
  {
   "address": 20813,
   "type": "line",
   "text": "Sprite 3's X in bands 0 to 3, the right of the kart."
  },
  {
   "address": 20817,
   "type": "line",
   "text": "Sprite 0's Y in bands 0 to 3: $E3, $B8, $90, $68 at the start, the bands from the bottom up."
  },
  {
   "address": 20821,
   "type": "line",
   "text": "Sprite 1's Y in bands 0 to 3."
  },
  {
   "address": 20825,
   "type": "line",
   "text": "Sprite 2's Y in bands 0 to 3."
  },
  {
   "address": 20829,
   "type": "line",
   "text": "Sprite 3's Y in bands 0 to 3."
  },
  {
   "address": 20833,
   "type": "line",
   "text": "Sprite 0's pointer in bands 0 to 3: the driver's head."
  },
  {
   "address": 20837,
   "type": "line",
   "text": "Sprite 1's pointer in bands 0 to 3."
  },
  {
   "address": 20841,
   "type": "line",
   "text": "Sprite 2's pointer in bands 0 to 3."
  },
  {
   "address": 20845,
   "type": "line",
   "text": "Sprite 3's pointer in bands 0 to 3."
  },
  {
   "address": 20849,
   "type": "line",
   "text": "Sprite 0's colour in bands 0 to 3. $5173, band 2, is the first start light."
  },
  {
   "address": 20851,
   "type": "line",
   "text": "Band 2's sprite 0 colour: the first start light."
  },
  {
   "address": 20853,
   "type": "line",
   "text": "Sprite 1's colour in bands 0 to 3. $5177, band 2, is the second start light."
  },
  {
   "address": 20855,
   "type": "line",
   "text": "Band 2's sprite 1 colour: the second start light."
  },
  {
   "address": 20857,
   "type": "line",
   "text": "Sprite 2's colour in bands 0 to 3. $517B, band 2, is the third start light."
  },
  {
   "address": 20859,
   "type": "line",
   "text": "Band 2's sprite 2 colour: the third start light."
  },
  {
   "address": 20861,
   "type": "line",
   "text": "Sprite 3's colour in bands 0 to 3."
  },
  {
   "address": 20865,
   "type": "line",
   "text": "The raster handler of the text screens: plays the sound (sound_play) and returns, leaving the raster line where it was."
  },
  {
   "address": 20874,
   "type": "line",
   "text": "The select screen's raster handler at the top of the frame: adds one to the frame counter $E5, sets multicolour 2 to orange (8) and the next interrupt at line $5A, select_irq_mid."
  },
  {
   "address": 20908,
   "type": "line",
   "text": "The select screen's handler at line $5A: multicolour 2 light blue ($0E) from there down, and back to select_irq_top at line 0."
  },
  {
   "address": 20940,
   "type": "line",
   "text": "The race's first raster handler, at the top of the frame: starts timer B for $1400 cycles to place the first sprite band, sets $E0 = 3, adds one to the frame counter $E5, sets the sky colour $25 as the background, multicolours $0F and 8, and the panel's screen $E000 with the character set at $F000 ($D018 = $8C). Starts timer A for $24 x 256 cycles, the line where the sky turns to ground. Then the kart's drop (drop_kart_step) while $53E9 is set, a flash of the current stage's box every 16 frames, sprite 7 (pointer $83) at line $2E over the player's face ($53EB), and the sound (sound_play). Next: panel_irq_lower at line $4A."
  },
  {
   "address": 21084,
   "type": "line",
   "text": "At line $4A, the panel's rows 3 and 4: multicolour 2 black, and race_irq_view at line $5A."
  },
  {
   "address": 21116,
   "type": "line",
   "text": "At line $5A, the top of the view: the screen the game is not drawing into ($D018 from view_d018 by $2E), multicolour 1 from $53EA, multicolour 2 black. Places the four karts highest on the screen (the last four of the draw order $CA) in sprites 4 to 7, then hands over to kart_mux_irq, at a line set from kart slot 7's Y."
  },
  {
   "address": 21212,
   "type": "line",
   "text": "Sets the next raster interrupt seven lines above the next kart's Y, unless the beam is already past it, then the kart is placed at once."
  },
  {
   "address": 21239,
   "type": "line",
   "text": "JMP $5344, which nothing reaches: the handler address stored at $52CE is $52FA, just after it."
  },
  {
   "address": 21242,
   "type": "line",
   "text": "The kart multiplexer: takes the next kart in the draw order (slot $DC, going down the list), and once the hardware sprite $DB it is to reuse is 20 lines above the beam, gives it that kart's Y, X (doubled, with the ninth bit), pointer and colour. Sprites 4 to 7 are reused in turn. After the last kart: raster line 0 and race_irq_top."
  },
  {
   "address": 21343,
   "type": "line",
   "text": "AND masks clearing one bit of $D010 for sprites 0 to 7; the multiplexer uses those of sprites 4 to 7, from $5363."
  },
  {
   "address": 21347,
   "type": "line",
   "text": "The AND masks for sprites 4 to 7 the multiplexer indexes from here."
  },
  {
   "address": 21351,
   "type": "line",
   "text": "OR bits setting one bit of $D010 for sprites 0 to 7; the multiplexer uses those of sprites 4 to 7, from $536B."
  },
  {
   "address": 21355,
   "type": "line",
   "text": "The OR bits for sprites 4 to 7 the multiplexer indexes from here."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "32 bytes before the first character block: zeros with $BF $80 $02 $EF $E0 $02 $FF at $5819. No list, picture or routine reads them."
  },
  {
   "address": 22560,
   "type": "line",
   "text": "A block of 175 character pictures, 1,400 bytes, which scenery_list_next copies to $FA10 as characters $42 to $F0 of the race set when a stage's scenery list reaches it (13 times, in stages B2, C1, C2, C3, C4, D2, D5, E2 and E5). This first half holds characters $42 to $99."
  },
  {
   "address": 23264,
   "type": "line",
   "text": "The second half of the character block at $5820: characters $9A to $F0, as they are once copied to $FA10."
  },
  {
   "address": 23960,
   "type": "line",
   "text": "A block of 175 character pictures, 1,400 bytes, which scenery_list_next copies to $FA10 as characters $42 to $F0 of the race set when a stage's scenery list reaches it (25 times, in stages A1, A2, A3, A4, A5, B1, B4, B5, C3, C4, C5, D1, D2, D3, D4, D5, E3, E4 and E5). This first half holds characters $42 to $99."
  },
  {
   "address": 24664,
   "type": "line",
   "text": "The second half of the character block at $5D98: characters $9A to $F0, as they are once copied to $FA10."
  },
  {
   "address": 25360,
   "type": "line",
   "text": "A block of 175 character pictures, 1,400 bytes, which scenery_list_next copies to $FA10 as characters $42 to $F0 of the race set when a stage's scenery list reaches it (31 times, in stages A1, A2, A3, A4, A5, B1, B2, B3, B4, B5, C1, C2, C3, C4, C5, D1, D2, D3, D4, D5, E1, E2, E3, E4 and E5). This first half holds characters $42 to $99."
  },
  {
   "address": 26064,
   "type": "line",
   "text": "The second half of the character block at $6310: characters $9A to $F0, as they are once copied to $FA10."
  },
  {
   "address": 26760,
   "type": "line",
   "text": "A block of 175 character pictures, 1,400 bytes, which scenery_list_next copies to $FA10 as characters $42 to $F0 of the race set when a stage's scenery list reaches it (19 times, in stages A1, A2, A3, B1, B2, B4, B5, C1, C3, D5, E2, E4 and E5). This first half holds characters $42 to $99."
  },
  {
   "address": 27464,
   "type": "line",
   "text": "The second half of the character block at $6888: characters $9A to $F0, as they are once copied to $FA10."
  },
  {
   "address": 28160,
   "type": "line",
   "text": "The tile sheet: character codes in rows 256 bytes apart, from which draw_tiles cuts the scenery pictures, draw_horizon_rows the horizons, draw_course_pictures the select screen's frame and course pictures, and lower_kart its cable picture. $6E00-$71FF holds cells of scenery types 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23."
  },
  {
   "address": 29184,
   "type": "line",
   "text": "$7200-$75FF holds cells of scenery types 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23."
  },
  {
   "address": 30208,
   "type": "line",
   "text": "$7600-$79FF holds cells of scenery types 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23."
  },
  {
   "address": 31232,
   "type": "line",
   "text": "$7A00-$7DFF holds cells of scenery types 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23; 15 of its bytes are in no picture."
  },
  {
   "address": 32256,
   "type": "line",
   "text": "$7E00-$7FFF holds cells of scenery types 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23; 51 of its bytes are in no picture."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "$8000-$81FF holds cells of scenery types 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23 and the 11 by 19 picture lower_kart draws round the kart on its cable; 16 of its bytes are in no picture."
  },
  {
   "address": 33280,
   "type": "line",
   "text": "$8200-$85FF holds cells of scenery types 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23 and the 11 by 19 picture lower_kart draws round the kart on its cable; 32 of its bytes are in no picture."
  },
  {
   "address": 34304,
   "type": "line",
   "text": "$8600-$89FF holds cells of scenery types 2, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23 and the 11 by 19 picture lower_kart draws round the kart on its cable; 32 of its bytes are in no picture."
  },
  {
   "address": 35328,
   "type": "line",
   "text": "$8A00-$8DFF holds cells of scenery types 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 16, 17, 18, 20, 21, 22 and 23 and the 11 by 19 picture lower_kart draws round the kart on its cable; 51 of its bytes are in no picture."
  },
  {
   "address": 36352,
   "type": "line",
   "text": "$8E00-$91FF holds cells of scenery types 2, 3, 5, 6, 7, 8, 10, 11, 12, 14, 17, 18, 20, 21, 22 and 23 and the 11 by 19 picture lower_kart draws round the kart on its cable; 24 of its bytes are in no picture."
  },
  {
   "address": 37376,
   "type": "line",
   "text": "$9200-$95FF holds cells of scenery types 2, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 20, 21, 22 and 23 and the 11 by 19 picture lower_kart draws round the kart on its cable."
  },
  {
   "address": 38400,
   "type": "line",
   "text": "$9600-$99FF holds cells of scenery types 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 20, 21, 22 and 23; 6 of its bytes are in no picture."
  },
  {
   "address": 39424,
   "type": "line",
   "text": "$9A00-$9DFF holds cells of scenery types 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 17, 18, 20, 21, 22 and 23; 14 of its bytes are in no picture."
  },
  {
   "address": 40448,
   "type": "line",
   "text": "$9E00-$9FFF holds cells of scenery types 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 17, 18, 20, 21, 22 and 23 and the five course pictures of the select screen; 2 of its bytes are in no picture."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "$A000-$A1FF holds cells of scenery types 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 17, 18, 20, 21, 22 and 23 and the five course pictures of the select screen; 35 of its bytes are in no picture."
  },
  {
   "address": 41472,
   "type": "line",
   "text": "$A200-$A5FF holds cells of scenery types 2, 3, 5, 6, 7, 8, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23 and 24, the lower horizon picture that ends at $A571 and the five course pictures of the select screen; 37 of its bytes are in no picture."
  },
  {
   "address": 42496,
   "type": "line",
   "text": "$A600-$A9FF holds cells of scenery types 2, 4, 5, 6, 7, 8, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22, 23 and 24 and the upper horizon picture that ends at $A971; 9 of its bytes are in no picture."
  },
  {
   "address": 43520,
   "type": "line",
   "text": "$AA00-$ADFF holds cells of scenery types 1, 2, 3, 4, 5, 6, 7, 9, 10, 12, 13, 15, 16, 19, 20, 22, 23 and 24, the lower horizon picture that ends at $AF5D and the frame round the course pictures on the select screen; 34 of its bytes are in no picture."
  },
  {
   "address": 44544,
   "type": "line",
   "text": "$AE00-$B1FF holds cells of scenery types 1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 and 24, the lower horizon picture that ends at $AF5D, the upper horizon picture that ends at $B33F and the frame round the course pictures on the select screen; 20 of its bytes are in no picture."
  },
  {
   "address": 45568,
   "type": "line",
   "text": "$B200-$B5FF holds cells of scenery types 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 and 22, the upper horizon picture that ends at $B33F and the frame round the course pictures on the select screen; 117 of its bytes are in no picture."
  },
  {
   "address": 46592,
   "type": "line",
   "text": "$B600-$B684 holds cells of scenery types 9, 15, 16, 17 and 19; 1 of its bytes is in no picture."
  },
  {
   "address": 46725,
   "type": "line",
   "text": "113 bytes, characters $F1 to $FE of the race set and a byte of $FF, which setup_stage copies to $FF88 when the lower horizon picture is not at $A5xx: the horizon's own characters."
  },
  {
   "address": 46838,
   "type": "line",
   "text": "$B6F6-$B784 holds cells of scenery types 9, 15, 16, 17 and 19; 10 of its bytes are in no picture."
  },
  {
   "address": 46981,
   "type": "line",
   "text": "113 bytes, characters $F1 to $FE of the race set and a byte of $FF, which setup_stage copies to $FF88 when the lower horizon picture is at $A5xx: the horizon's own characters."
  },
  {
   "address": 47104,
   "type": "line",
   "text": "The sound driver's entry once a frame, from the race's top-of-screen interrupt and the text screens': JMP to sound_frame."
  },
  {
   "address": 47107,
   "type": "line",
   "text": "An RTS between the entry and the driver's switches."
  },
  {
   "address": 47108,
   "type": "line",
   "text": "The tune sound_reset starts: 1 on the name entry, 2 for the race; 0 is silence."
  },
  {
   "address": 47109,
   "type": "line",
   "text": "Written by the game to start a sound effect on voice 3: 2 when the place changes or a rival is alongside, 3 for a spin. sound_frame starts it and clears it. Effects 1 and 4 are stored but nothing in the game writes them here."
  },
  {
   "address": 47110,
   "type": "line",
   "text": "While not zero the music is not played, only the effects: game_start sets it for the select screen and clears it for the race."
  },
  {
   "address": 47111,
   "type": "line",
   "text": "While not zero no new effect starts. Nothing writes it, so it stays 0."
  },
  {
   "address": 47112,
   "type": "line",
   "text": "Set when effect 4 starts; while set, the end of any other effect starts effect 4 again (sound_end_effect). Only the routine at $C01C clears it, and nothing calls that."
  },
  {
   "address": 47113,
   "type": "line",
   "text": "A NOP byte after the switches."
  },
  {
   "address": 47114,
   "type": "line",
   "text": "Silences the chip (sound_silence), clears the driver's workspace (sound_clear_voices, sound_clear_registers), sets the volume from $C237 ($0F, full), points the three voices at the silent pattern (sound_silent_patterns), starts tune $B804 (sound_start_tune), and gates every voice off."
  },
  {
   "address": 47158,
   "type": "line",
   "text": "One frame of sound. Starts a new effect when $B805 holds one: its pattern from effect_table, effect 4 also setting $B808, and voice 3's effect state cleared. Then sound_voices, and $C0BA = the raster line when it ended."
  },
  {
   "address": 47275,
   "type": "line",
   "text": "Two bytes between sound_frame and sound_voices that nothing reads."
  },
  {
   "address": 47277,
   "type": "line",
   "text": "Steps each voice with sound_voice_step: the three music voices (unless $B806 is set), each with its state copied into $FA-$FF and back, its shadow registers at $C0BE, $C0C5 and $C0CC, its workspace at $C055, $C06D and $C085, and its control register's offset in $C0B9 (4, $0B, $12). While an effect plays ($C0BB), voice 3's gate-offs go to the spare buffer at $C0EC instead of the chip, and the effect is stepped as a fourth voice with its shadow registers at $C0E3. Then writes the shadow registers to the SID, voice 3 from the effect's when one plays."
  },
  {
   "address": 47894,
   "type": "line",
   "text": "One voice for one frame. While its note's length ($F8 + 0 and + 1) has not run out: one less, the next step of its wave table (sound_wave_step), and its slides (from $BC28). When it runs out, read the next pattern bytes (sound_read_pattern)."
  },
  {
   "address": 47924,
   "type": "line",
   "text": "An RTS after sound_voice_step's JMP to sound_slides that nothing reaches."
  },
  {
   "address": 47925,
   "type": "line",
   "text": "Reads the voice's pattern at ($FE). $FE introduces a command, its number an offset into the jump table at $BBFB. Otherwise the gate is turned off and the byte is a note: 0 a rest (the silent wave $C231), else the note's frequency from note_frequencies, the wave table from the voice's instrument ($F8 + $0A), and its vibrato restarted (+$13 from +$14, +$11 from +$12, +$10 = $99 when on). The next byte is the length: an index into the tune's length table (whose address sound_start_tune writes into both LDAs, at $BBBD and $BBC4, the second reading with X one higher), or 0 and a two-byte length after it. Then the first step of the wave table."
  },
  {
   "address": 48062,
   "type": "line",
   "text": "The low byte of the length table's address in the LDA at $BBBD, written by sound_start_tune."
  },
  {
   "address": 48063,
   "type": "line",
   "text": "The high byte of the length table's address in the LDA at $BBBD."
  },
  {
   "address": 48069,
   "type": "line",
   "text": "The low byte of the same address in the LDA at $BBC4, which reads each length's high byte."
  },
  {
   "address": 48070,
   "type": "line",
   "text": "The high byte of the same address in the LDA at $BBC4."
  },
  {
   "address": 48085,
   "type": "line",
   "text": "A pattern command: adds the byte after $FE to $BBFB and jumps there through the JMP at $BBF8, whose address it rewrites."
  },
  {
   "address": 48121,
   "type": "line",
   "text": "The low byte of the JMP at $BBF8, $FB plus the command's number."
  },
  {
   "address": 48122,
   "type": "line",
   "text": "The high byte of the JMP at $BBF8."
  },
  {
   "address": 48123,
   "type": "line",
   "text": "The commands' jump table, three bytes apiece, indexed by the command's number: 0 is three BRKs; 3 next pattern, 6 set registers, 9 slide, 12 slide off, 15 vibrato, 18 vibrato off, 21 pulse sweep, 24 pulse sweep off, 27 instrument, 30 end of effect, 33 set effect registers, 36 effect release, 39 go to, 42 tone. 18, 24 and 33 appear in no tune or effect; 36 only in effect 1 and 42 only in effect 4, which nothing starts."
  },
  {
   "address": 48126,
   "type": "line",
   "text": "The JMPs of commands 3 to 42, one a command, three bytes apart: cmd_next_pattern, cmd_set_registers, cmd_slide, cmd_slide_off, cmd_vibrato, cmd_vibrato_off, cmd_pulse_sweep, cmd_pulse_sweep_off, cmd_instrument, sound_end_effect, cmd_set_effect_registers, cmd_effect_release, cmd_goto and cmd_tone."
  },
  {
   "address": 48168,
   "type": "line",
   "text": "A voice's continuous changes, once a frame: the pulse sweep (+$17: 1 up, 2 down, by +$16, turning at $0F00 and at 0), the frequency slide (+$0C: 1 up, 2 down, by +$0D, to the target at +$0E/+$0F, where it stops) and, with no slide, the vibrato: after the delay +$11, every +$14 + 1 frames the bit pattern +$10 ($99 at each note) is rotated a place, and its low bit lowers the frequency by +$15 or raises it."
  },
  {
   "address": 48443,
   "type": "line",
   "text": "Command 3, the end of a pattern: takes the next pattern address from the voice's order list at ($FA). $FE then 0 in the list starts it again from its loop point (+8 and +9 of the workspace), $FE then another byte makes that byte the pattern's high byte."
  },
  {
   "address": 48522,
   "type": "line",
   "text": "Command 6: pairs of an index and a value into the shadow registers from $C0BE, until $FF."
  },
  {
   "address": 48556,
   "type": "line",
   "text": "Command 33: pairs of an index and a value into the bytes from $C0D5, until $FF; then on as command 6. No pattern that plays uses it."
  },
  {
   "address": 48590,
   "type": "line",
   "text": "Command 39: the pattern goes on at the address in the next two bytes. Effects 3 and 4 loop with it: effect 3 back to its last note, which sounds until kart_spin ends the effect (sound_end_effect from $16B1), effect 4 for ever."
  },
  {
   "address": 48622,
   "type": "line",
   "text": "Command 9: four bytes into +$0C to +$0F of the workspace: the slide's direction, its step, and the frequency it stops at."
  },
  {
   "address": 48694,
   "type": "line",
   "text": "Command 12: the slide off (+$0C = 0)."
  },
  {
   "address": 48711,
   "type": "line",
   "text": "Command 42: gate off, the frequency from the next two bytes straight into the effect's shadow registers ($C0E3/$C0E4), then on as a note with its length. Only effect 4 uses it."
  },
  {
   "address": 48749,
   "type": "line",
   "text": "Command 15: three bytes, the delay at each note's start (+$12), the frames between steps (+$14) and the step (+$15), and +$10 = $99, vibrato on."
  },
  {
   "address": 48813,
   "type": "line",
   "text": "Command 18: the vibrato off (+$10 = 0). No pattern that plays uses it."
  },
  {
   "address": 48830,
   "type": "line",
   "text": "Command 21: the pulse sweep's step into +$16, and +$17 = 1, sweeping up."
  },
  {
   "address": 48860,
   "type": "line",
   "text": "Command 24: the pulse sweep off (+$17 = 0). No pattern that plays uses it."
  },
  {
   "address": 48877,
   "type": "line",
   "text": "Command 27: the next two bytes, the address of a wave table, become the voice's instrument (+$0A/+$0B)."
  },
  {
   "address": 48919,
   "type": "line",
   "text": "Ends the effect playing: $C0BB and $B805 cleared and voice 3's sustain and release set to 0; if $B808 is set, effect 4 starts again. Command 30 ends every effect's pattern here, and the game calls it when a race ends and after a spin."
  },
  {
   "address": 48941,
   "type": "line",
   "text": "Command 36: reads $DC01 and ignores it, ORs the next byte into the effect's sustain and release ($C0E9), sets the effect's length ($C09D/$C09E) from the next two, and turns the gate off. No pattern that plays uses it."
  },
  {
   "address": 49005,
   "type": "line",
   "text": "Writes 0 to the SID's 28 registers $D400-$D41B."
  },
  {
   "address": 49018,
   "type": "line",
   "text": "Clears the three music voices' workspaces, $C055-$C09C."
  },
  {
   "address": 49031,
   "type": "line",
   "text": "Clears the music voices' shadow registers, $C0BE-$C0D2."
  },
  {
   "address": 49044,
   "type": "line",
   "text": "Starts tune $B804 from tune_table: the three voices' order lists into $C05D, $C075 and $C08D, and the tune's length table's address into the two LDAs at $BBBD and $BBC4."
  },
  {
   "address": 49113,
   "type": "line",
   "text": "The next step of the voice's wave table at ($FC): two bytes, the sustain and release and the control register (waveform and gate), until $FF, where the table stays. While an effect plays the volume is set to $0F again each step."
  },
  {
   "address": 49180,
   "type": "line",
   "text": "LDA #0, STA $B808, STA $B805, JSR $BF17: switches the engine-like effect 4 off for good. Nothing calls it."
  },
  {
   "address": 49192,
   "type": "line",
   "text": "Points the three voices' patterns at $C0B5 and their order lists at $C0B7, a pattern that ends at once and a list that loops on itself, so a voice with no tune is silent."
  },
  {
   "address": 49333,
   "type": "line",
   "text": "$FE $03: a pattern that is only the command to take the next one."
  },
  {
   "address": 49335,
   "type": "line",
   "text": "$FE $00: an order list that only says to start again from the voice's loop point, which sound_start_tune has set to the tune's own list."
  },
  {
   "address": 49409,
   "type": "line",
   "text": "Tune 2's note lengths in frames, two bytes each, by index: 0 (explicit), 3, 7, 11 and on in steps of four."
  },
  {
   "address": 49497,
   "type": "line",
   "text": "Tune 1's note lengths in frames, two bytes each, by index: 0 (explicit), 5, 11, 17 and on in steps of six."
  },
  {
   "address": 49565,
   "type": "line",
   "text": "The SID frequency of each note number, two bytes each: 0 for a rest, then $0314 upward, a semitone apart."
  },
  {
   "address": 49713,
   "type": "line",
   "text": "The wave table of a rest: sustain and release 0, control $11 (triangle, gate on) with nothing to sound, then $FF."
  },
  {
   "address": 49719,
   "type": "line",
   "text": "The volume, $0F, which sound_reset writes to $D418, and its pair; then the patterns of effects 1 to 4: $C324, $C346, $C363, $C37C."
  },
  {
   "address": 49729,
   "type": "line",
   "text": "The instruments: lists of steps of two bytes, sustain and release then waveform and gate, each ended by $FF, one step a frame (noise $81, triangle $11, pulse $41, sawtooth $21), to $C323."
  },
  {
   "address": 49956,
   "type": "line",
   "text": "Effect 1's pattern. Nothing in the game starts it."
  },
  {
   "address": 49990,
   "type": "line",
   "text": "Effect 2's pattern: a place won or lost, or a rival alongside."
  },
  {
   "address": 50019,
   "type": "line",
   "text": "Effect 3's pattern: the spin. It ends with command 39 back to its last note, so the note holds until kart_spin ends the effect."
  },
  {
   "address": 50044,
   "type": "line",
   "text": "Effect 4's pattern: a steady tone at $0BB8 with a sweeping pulse, which loops with command 39 until another effect stops it, an engine's hum. Nothing in the game starts it."
  },
  {
   "address": 50067,
   "type": "line",
   "text": "More instruments, steps of two bytes ended by $FF, to $C4B9."
  },
  {
   "address": 50362,
   "type": "line",
   "text": "Eight bytes a tune: the order lists of voices 1, 2 and 3 and the length table. Tune 0 is all zeros; tune 1, the name entry's, from $C4C2; tune 2, the race's, from $C4CA."
  },
  {
   "address": 50386,
   "type": "line",
   "text": "Tune 1's order lists: the pattern addresses of voice 1 from $C4D2, voice 2 from $C4E4, voice 3 from $C4EE, each ended by $FE $00 to loop."
  },
  {
   "address": 50418,
   "type": "line",
   "text": "Tune 1's patterns: notes (a note number then a length index) and commands ($FE and a number), to $C6C0. $C60A-$C65D is a pattern no order list names."
  },
  {
   "address": 50881,
   "type": "line",
   "text": "Short patterns of a single rest, which tune 2's order lists use for bars of silence."
  },
  {
   "address": 50897,
   "type": "line",
   "text": "Patterns no order list names, in the form of tune 1's, to $C757."
  },
  {
   "address": 51032,
   "type": "line",
   "text": "Tune 2's order lists: voice 1 from $C758, voice 2 from $C89E, voice 3 from $C97C, each ended by $FE $00 to loop."
  },
  {
   "address": 51696,
   "type": "line",
   "text": "Tune 2's patterns, to $CC77."
  },
  {
   "address": 52344,
   "type": "line",
   "text": "Patterns no order list names, $CC78-$CD04."
  },
  {
   "address": 52485,
   "type": "line",
   "text": "Tune 2's patterns, continued to $CFE0."
  },
  {
   "address": 53217,
   "type": "line",
   "text": "Bytes after the last pattern that nothing reads, to $CFFF."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "Sprites $40 to $4F (64 bytes each, the bank at $C000, so pointer x 64): $40 to $42 the kart side on, spin frame 4; $43 the first part of spin frame 7; $44 a driver's head from behind, which three drivers share, and the head on the cable; then the rivals too far off to need a head: $45 and $46 at distances 6 and 7, $4A and $4B at 8 and 9, $4C and $4D at 10 and 11, $47 at 12 to 17, $48 at 18 to 23, $49 at 24 to 31; $4E and $4F the first two of the rival at distances 4 and 5."
  },
  {
   "address": 54272,
   "type": "line",
   "text": "Sprites $50 to $5F: $50 and $51 the rest of the rival at distances 4 and 5, $52 to $55 the rival at 2 and 3, $56 the middle of spin frame 5; $57 to $5F the kart's second set of steering frames, shown every other eight frames: frame 1 ($57-$59), frame 0, hard left ($5A-$5C), and frame 3 ($5D-$5F)."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "Sprites $60 to $6F, in the RAM under the colour RAM: $60 to $62 the second set's frame 4, hard right; $63 to $68 drivers' heads from behind; $69 to $6C the START sign, four sprites side by side; $6D to $6F the three start lights."
  },
  {
   "address": 55308,
   "type": "line",
   "text": "Colour RAM, row 0 column 12, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 12 of sprite $60."
  },
  {
   "address": 55312,
   "type": "line",
   "text": "Colour RAM, row 0 column 16, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 16 of sprite $60."
  },
  {
   "address": 55332,
   "type": "line",
   "text": "Colour RAM, row 0 column 36, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 36 of sprite $60."
  },
  {
   "address": 55396,
   "type": "line",
   "text": "Bytes 36 to 54 of sprite $61, the middle of the second steering set's frame 4."
  },
  {
   "address": 55415,
   "type": "line",
   "text": "Colour RAM, row 2 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 55 of sprite $61."
  },
  {
   "address": 55416,
   "type": "line",
   "text": "Colour RAM, row 3 column 0, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 56 of sprite $61."
  },
  {
   "address": 55441,
   "type": "line",
   "text": "Colour RAM, row 3 column 25, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 17 of sprite $62."
  },
  {
   "address": 55448,
   "type": "line",
   "text": "Colour RAM, row 3 column 32, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 24 of sprite $62."
  },
  {
   "address": 55449,
   "type": "line",
   "text": "Colour RAM, row 3 column 33, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 25 of sprite $62."
  },
  {
   "address": 55456,
   "type": "line",
   "text": "Colour RAM, row 4 column 0, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 32 of sprite $62."
  },
  {
   "address": 55471,
   "type": "line",
   "text": "Colour RAM, row 4 column 15, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 47 of sprite $62."
  },
  {
   "address": 55480,
   "type": "line",
   "text": "Colour RAM, row 4 column 24, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 56 of sprite $62."
  },
  {
   "address": 55481,
   "type": "line",
   "text": "Colour RAM, row 4 column 25, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 57 of sprite $62."
  },
  {
   "address": 55488,
   "type": "line",
   "text": "Colour RAM, row 4 column 32, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 0 of sprite $63."
  },
  {
   "address": 55489,
   "type": "line",
   "text": "Colour RAM, row 4 column 33, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 1 of sprite $63."
  },
  {
   "address": 55495,
   "type": "line",
   "text": "Colour RAM, row 4 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 7 of sprite $63."
  },
  {
   "address": 55535,
   "type": "line",
   "text": "Colour RAM, row 5 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 47 of sprite $63."
  },
  {
   "address": 55575,
   "type": "line",
   "text": "Colour RAM, row 6 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 23 of sprite $64."
  },
  {
   "address": 55615,
   "type": "line",
   "text": "Colour RAM, row 7 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 63 of sprite $64."
  },
  {
   "address": 55655,
   "type": "line",
   "text": "Colour RAM, row 8 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 39 of sprite $65."
  },
  {
   "address": 55695,
   "type": "line",
   "text": "Colour RAM, row 9 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 15 of sprite $66."
  },
  {
   "address": 55735,
   "type": "line",
   "text": "Colour RAM, row 10 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 55 of sprite $66."
  },
  {
   "address": 55775,
   "type": "line",
   "text": "Colour RAM, row 11 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 31 of sprite $67."
  },
  {
   "address": 55791,
   "type": "line",
   "text": "Colour RAM, row 12 column 15, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 47 of sprite $67."
  },
  {
   "address": 55795,
   "type": "line",
   "text": "Colour RAM, row 12 column 19, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 51 of sprite $67."
  },
  {
   "address": 55815,
   "type": "line",
   "text": "Colour RAM, row 12 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 7 of sprite $68."
  },
  {
   "address": 55816,
   "type": "line",
   "text": "Colour RAM, row 13 column 0, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 8 of sprite $68."
  },
  {
   "address": 55855,
   "type": "line",
   "text": "Colour RAM, row 13 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 47 of sprite $68."
  },
  {
   "address": 55895,
   "type": "line",
   "text": "Colour RAM, row 14 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 23 of sprite $69."
  },
  {
   "address": 55935,
   "type": "line",
   "text": "Colour RAM, row 15 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 63 of sprite $69."
  },
  {
   "address": 55975,
   "type": "line",
   "text": "Colour RAM, row 16 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 39 of sprite $6A."
  },
  {
   "address": 56015,
   "type": "line",
   "text": "Colour RAM, row 17 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 15 of sprite $6B."
  },
  {
   "address": 56055,
   "type": "line",
   "text": "Colour RAM, row 18 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 55 of sprite $6B."
  },
  {
   "address": 56095,
   "type": "line",
   "text": "Colour RAM, row 19 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 31 of sprite $6C."
  },
  {
   "address": 56135,
   "type": "line",
   "text": "Colour RAM, row 20 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 7 of sprite $6D."
  },
  {
   "address": 56175,
   "type": "line",
   "text": "Colour RAM, row 21 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 47 of sprite $6D."
  },
  {
   "address": 56215,
   "type": "line",
   "text": "Colour RAM, row 22 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 23 of sprite $6E."
  },
  {
   "address": 56255,
   "type": "line",
   "text": "Colour RAM, row 23 column 39, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 63 of sprite $6E."
  },
  {
   "address": 56256,
   "type": "line",
   "text": "Colour RAM, row 24 column 0, which the game reaches with the I/O switched in (see the references); the RAM under it holds byte 0 of sprite $6F."
  },
  {
   "address": 56320,
   "type": "line",
   "text": "Sprites $70 to $7F: $70 a head from behind that three drivers share; the kart's first set of steering frames, $71-$73 frame 1, $74-$76 frame 0, hard left (also spin frame 2), $77-$79 frame 3, $7A-$7C frame 4, hard right (also spin frame 0); $7D to $7F spin frame 6."
  },
  {
   "address": 57544,
   "type": "line",
   "text": "Bytes 8 to 63 of sprite $83, the chequered marker over the panel's faces (sprite 7 in the panel band, and the cursor on the select screen). Its first eight bytes, $E0C0-$E0C7, are the panel's row 4, columns 32 to 39; the marker sits at Y $2E, so its first rows are under the top border."
  },
  {
   "address": 57600,
   "type": "line",
   "text": "Sprites $84 to $8F, in the part of the screen at $E000 below the panel's five rows: $84 and $85 the rest of spin frame 7; $86 to $88 spin frame 3; $89 empty, for a sprite that shows nothing; $8A to $8C the kart straight on (steering frame 2, spin frame 1, the sides of spin frame 5, the nearest rival and the kart on the cable); $8D to $8F the first three drivers' heads from the front."
  },
  {
   "address": 58360,
   "type": "line",
   "text": "The panel screen's sprite 0 pointer, which sprite_band_irq writes with each band's pointer as it places the band; the same byte is byte 56 of sprite $8F, the third driver's face from the front, near the bottom of its picture."
  },
  {
   "address": 58367,
   "type": "line",
   "text": "The panel screen's sprite 7 pointer, $83, the marker, written by race_irq_top; it is the spare 64th byte of sprite $8F."
  },
  {
   "address": 58368,
   "type": "line",
   "text": "Sprites $90 to $9F: $90 to $98 the other nine drivers' heads from the front (head_front), then the heads turned to look back (head_looking_back): $99 to $9F."
  },
  {
   "address": 59392,
   "type": "line",
   "text": "Sprites $A0 to $A2, in rows 0 to 4 of the view screen at $E800, which the view band never shows: $A0 the last head looking back; $A1 and $A2 bands of stripes, which no table or routine in the game points a sprite at."
  },
  {
   "address": 61440,
   "type": "line",
   "text": "The panel's and the text screens' character set, at $F000 ($D018 points there for the panel band, the select screen and the text screens), multicolour: characters $00 to $09, the digits 0 to 9."
  },
  {
   "address": 61520,
   "type": "line",
   "text": "Characters $0A to $23 of the panel set, the letters A to Z, which are also the course letters in the select screen's pictures."
  },
  {
   "address": 61630,
   "type": "line",
   "text": "Row 6 of character $17, the letter N, which kart_spin writes with $EE, the value it already holds."
  },
  {
   "address": 61631,
   "type": "line",
   "text": "Row 7 of the letter N, which kart_spin writes with $AA, the value it already holds."
  },
  {
   "address": 61632,
   "type": "line",
   "text": "Characters $18 to $23 of the panel set, the letters O to Z."
  },
  {
   "address": 61728,
   "type": "line",
   "text": "Characters $24 to $27 of the panel set: st, nd, rd and th, for the place on the panel."
  },
  {
   "address": 61760,
   "type": "line",
   "text": "Characters $28 to $3F of the panel set: the pieces the big place number at the right of the panel is built of, three by three cells (place_number_cells)."
  },
  {
   "address": 61952,
   "type": "line",
   "text": "Characters $40 to $49 of the panel set: $40 to $44 the boxes of the panel, $45 to $48 the gear marks, $49 the apostrophe of the clock."
  },
  {
   "address": 62032,
   "type": "line",
   "text": "Characters $4A to $61 of the panel set: $4A to $5F cells of the select screen's course pictures, $61 a cell of the cable picture."
  },
  {
   "address": 62224,
   "type": "line",
   "text": "Characters $62 to $7B of the panel set: cells of the large faces drawn at the top of the screen as the kart is lowered (face2_cells)."
  },
  {
   "address": 62432,
   "type": "line",
   "text": "Characters $7C to $84 of the panel set: $7C the end mark and $7D the comma of the name entry's ring, $7E to $84 cells of the cable picture."
  },
  {
   "address": 62504,
   "type": "line",
   "text": "Characters $85 to $BE of the panel set: the cells of the twelve drivers' faces on the panel and the select screen, three by three (face_cells); the large faces use some of them too."
  },
  {
   "address": 62968,
   "type": "line",
   "text": "Characters $BF to $CC of the panel set: $BF and $C0 the course strip of the panel, $C1 a stage mark, $C2 to $CC the cells of the course letter (course_letter_cells)."
  },
  {
   "address": 63080,
   "type": "line",
   "text": "Characters $CD to $FF of the panel set: $CD to $FD cells of the course pictures, $CF also the frame round them, $FE and $FF cells of the cable picture."
  },
  {
   "address": 63488,
   "type": "line",
   "text": "The race's character set at $F800 ($D018 points there for the view band), multicolour, characters $00 to $41, which stay put; $42 to $FF are copied in each stage (the character blocks and setup_stage). $01 is the road, $02 to $06 the wipe between stages, $0E to $2A the road's edges, $20 the empty sky cell; the upper horizon picture at $B33F is built of road and edge cells, and the lower one at $AF5D uses some, and the scenery pictures use $00, $01, $04, $06 to $0D, $20 and $2B to $41."
  }
 ]
}