{
 "schema": 1,
 "platform": "c64",
 "game": "barbarian",
 "part": "tournament",
 "build": "Palace Software disk, 1987, two sides (C64 Preservation Project G64s, barbarian_s1[palace_1987](!) and barbarian_s2[palace_1987](!), SHA-256 1db548f7... and 204d8daf...)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    18424,
    18431,
    "screen RAM"
   ],
   [
    0,
    255,
    "zero page: the processor port and the game's variables, set at run time"
   ],
   [
    512,
    2048,
    "the sound driver's variables, the eight sprite slots, the mirror and mask tables (built at the start), the cell stashes (filled at the start) and the compose buffer, all written at run time; at the hand-over the loader is still there"
   ],
   [
    2049,
    2111,
    "the place of fighter block 0: block number 0 means none, so these 63 zero bytes are never read"
   ],
   [
    18424,
    18431,
    "the sprite pointers after the screen, written every frame by sprite_registers"
   ],
   [
    42685,
    47804,
    "the arena buffer, the strip's clean copy and the backdrop swap's buffer: zeros in the load, written at run time, with two runs of 32 zero bytes between them that nothing uses"
   ],
   [
    53132,
    53247,
    "the end of the table file loaded at $CB00: 116 bytes of $FF that nothing reads"
   ],
   [
    64516,
    64575,
    "bytes the file loaded at $E000 carries between the music and the scene shapes: $00 and $FF in turn, the pattern of memory nothing wrote, never read"
   ],
   [
    65408,
    65535,
    "the same pattern at the end of that file, to $FFEF, except $FFD0-$FFEF: 6502 code and then Z80 code, each writing the Commodore 128's MMU registers ($FF00 and $D505) to change processors, which no instruction of the game reaches (likely left in the file by a C128 used to save it); then the hardware vectors, which the game writes at the start"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2111,
   "type": "Undefined"
  },
  {
   "start": 2112,
   "end": 18423,
   "type": "Byte"
  },
  {
   "start": 18424,
   "end": 18431,
   "type": "Undefined"
  },
  {
   "start": 18432,
   "end": 32587,
   "type": "Byte"
  },
  {
   "start": 32588,
   "end": 32767,
   "type": "Word"
  },
  {
   "start": 32768,
   "end": 32776,
   "type": "Byte"
  },
  {
   "start": 32777,
   "end": 40703,
   "type": "Code"
  },
  {
   "start": 40704,
   "end": 41153,
   "type": "Word"
  },
  {
   "start": 41154,
   "end": 41169,
   "type": "Byte"
  },
  {
   "start": 41170,
   "end": 41221,
   "type": "Address"
  },
  {
   "start": 41222,
   "end": 41397,
   "type": "Byte"
  },
  {
   "start": 41398,
   "end": 41625,
   "type": "Address"
  },
  {
   "start": 41626,
   "end": 42684,
   "type": "Byte"
  },
  {
   "start": 42685,
   "end": 47804,
   "type": "Undefined"
  },
  {
   "start": 47805,
   "end": 47852,
   "type": "Address"
  },
  {
   "start": 47853,
   "end": 48347,
   "type": "Byte"
  },
  {
   "start": 48348,
   "end": 48407,
   "type": "Address"
  },
  {
   "start": 48408,
   "end": 48597,
   "type": "Byte"
  },
  {
   "start": 48598,
   "end": 48779,
   "type": "Address"
  },
  {
   "start": 48780,
   "end": 49959,
   "type": "Byte"
  },
  {
   "start": 49960,
   "end": 49983,
   "type": "Address"
  },
  {
   "start": 49984,
   "end": 51453,
   "type": "Byte"
  },
  {
   "start": 51454,
   "end": 51469,
   "type": "Address"
  },
  {
   "start": 51470,
   "end": 51765,
   "type": "Byte"
  },
  {
   "start": 51766,
   "end": 51947,
   "type": "Address"
  },
  {
   "start": 51948,
   "end": 52307,
   "type": "Byte"
  },
  {
   "start": 52308,
   "end": 52351,
   "type": "Address"
  },
  {
   "start": 52352,
   "end": 52488,
   "type": "Byte"
  },
  {
   "start": 52489,
   "end": 52496,
   "type": "Address"
  },
  {
   "start": 52497,
   "end": 52546,
   "type": "Byte"
  },
  {
   "start": 52547,
   "end": 52550,
   "type": "Address"
  },
  {
   "start": 52551,
   "end": 52558,
   "type": "Byte"
  },
  {
   "start": 52559,
   "end": 52582,
   "type": "Address"
  },
  {
   "start": 52583,
   "end": 52823,
   "type": "Byte"
  },
  {
   "start": 52824,
   "end": 52827,
   "type": "Address"
  },
  {
   "start": 52828,
   "end": 53025,
   "type": "Byte"
  },
  {
   "start": 53026,
   "end": 53043,
   "type": "Word"
  },
  {
   "start": 53044,
   "end": 53115,
   "type": "Byte"
  },
  {
   "start": 53116,
   "end": 53131,
   "type": "Word"
  },
  {
   "start": 53132,
   "end": 53247,
   "type": "Undefined"
  },
  {
   "start": 53248,
   "end": 64515,
   "type": "Byte"
  },
  {
   "start": 64516,
   "end": 64575,
   "type": "Undefined"
  },
  {
   "start": 64576,
   "end": 65407,
   "type": "Byte"
  },
  {
   "start": 65408,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "cpu_port_direction",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "sprite_xy",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 3,
   "name": "zpf_03",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "sprite_x_msb",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 23,
   "name": "sprite_enable",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41,
   "name": "sprite_colours",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 49,
   "name": "sid_shadow",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 50,
   "name": "zpf_32",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpf_33",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 52,
   "name": "zpf_34",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 53,
   "name": "zpf_35",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpf_36",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpf_37",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "cutoff_low_shadow",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 71,
   "name": "cutoff_high_shadow",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "filter_route_shadow",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 73,
   "name": "volume_shadow",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 74,
   "name": "sprite_pointers",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 83,
   "name": "zpa_53",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 84,
   "name": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 85,
   "name": "zpa_55",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 87,
   "name": "zpa_57",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 88,
   "name": "zpa_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 89,
   "name": "zpa_59",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "anim_script",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 93,
   "name": "anim_pos",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 95,
   "name": "zpa_5F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 96,
   "name": "zpa_60",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpa_61",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 98,
   "name": "zpa_62",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 99,
   "name": "zpa_63",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 100,
   "name": "zpa_64",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 102,
   "name": "zpa_66",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 103,
   "name": "move",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "frame_index",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 107,
   "name": "next_move",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 109,
   "name": "stick",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 111,
   "name": "pose",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 113,
   "name": "column",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 114,
   "name": "zpa_72",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 115,
   "name": "zpa_73",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 116,
   "name": "zpa_74",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpa_79",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpa_7A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpa_7D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 126,
   "name": "zpa_7E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "zpa_7F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 128,
   "name": "zpa_80",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpa_81",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 130,
   "name": "zpa_82",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpa_83",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "zpa_84",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 133,
   "name": "zpa_85",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpa_86",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 135,
   "name": "zpa_87",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpa_88",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 137,
   "name": "zpa_89",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpa_8A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 139,
   "name": "zpa_8B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 140,
   "name": "zpa_8C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 141,
   "name": "zpa_8D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 142,
   "name": "zpa_8E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 143,
   "name": "zpa_8F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 144,
   "name": "zpa_90",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 145,
   "name": "facing",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 146,
   "name": "zpa_92",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "strength",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 149,
   "name": "idle_count",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 150,
   "name": "zpa_96",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 151,
   "name": "zpa_97",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 152,
   "name": "sound_busy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 153,
   "name": "fighter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 154,
   "name": "zpa_9A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 155,
   "name": "zpa_9B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 156,
   "name": "zpa_9C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 157,
   "name": "zpa_9D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 158,
   "name": "zpa_9E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 159,
   "name": "zpa_9F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 163,
   "name": "zpa_A3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpa_A6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpa_A7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpa_A8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 169,
   "name": "zpa_A9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "distance",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 171,
   "name": "zpa_AB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 172,
   "name": "zpa_AC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 174,
   "name": "step_columns",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 175,
   "name": "dead",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 176,
   "name": "goblin_on",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 177,
   "name": "dragging",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 178,
   "name": "roll_past",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 179,
   "name": "demo",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 180,
   "name": "bout_state",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 181,
   "name": "walking_back",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 182,
   "name": "winner",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 183,
   "name": "flip_request",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 184,
   "name": "sound_mode",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 185,
   "name": "started",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 186,
   "name": "select_mode",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 187,
   "name": "scene_flag",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 188,
   "name": "scene_flag_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 189,
   "name": "players",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 190,
   "name": "level",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 191,
   "name": "zpa_BF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpa_C0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "paused",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 194,
   "name": "zpa_C2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "gap",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 196,
   "name": "backdrop",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 197,
   "name": "goblin_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 198,
   "name": "zpa_C6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 199,
   "name": "points_index",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 200,
   "name": "clock",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 201,
   "name": "clock_frames",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 202,
   "name": "wait_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 203,
   "name": "scene_number",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 204,
   "name": "star_kind",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 205,
   "name": "ai_counter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 206,
   "name": "irq_busy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 207,
   "name": "zpa_CF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpa_D0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 209,
   "name": "zpa_D1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpa_D2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 211,
   "name": "zpa_D3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 212,
   "name": "zpa_D4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 213,
   "name": "zpa_D5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 214,
   "name": "zpa_D6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 215,
   "name": "zpa_D7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 216,
   "name": "zpa_D8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 217,
   "name": "zpa_D9",
   "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": "sound_requests",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 222,
   "name": "zpa_DE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 223,
   "name": "zpa_DF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 224,
   "name": "volume",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 225,
   "name": "fading_in",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 226,
   "name": "fading_out",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 227,
   "name": "fade_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "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": "zpa_E7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 232,
   "name": "zpa_E8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 233,
   "name": "zpa_E9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 234,
   "name": "zpa_EA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 235,
   "name": "sweep_delay",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 236,
   "name": "zpa_EC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 237,
   "name": "zpa_ED",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 512,
   "name": "fx_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 521,
   "name": "fx_counts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 530,
   "name": "note_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 531,
   "name": "f_0213",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 536,
   "name": "note_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 537,
   "name": "f_0219",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 542,
   "name": "read_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 543,
   "name": "f_021F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 548,
   "name": "saved_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 549,
   "name": "f_0225",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 554,
   "name": "pulse_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 555,
   "name": "f_022B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 560,
   "name": "sweep_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 561,
   "name": "f_0231",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 562,
   "name": "a_0232",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 566,
   "name": "ins_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 569,
   "name": "fx_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 572,
   "name": "fx_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 575,
   "name": "fx_done",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 578,
   "name": "fx_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 581,
   "name": "fx_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 584,
   "name": "ins_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 587,
   "name": "fx_pair",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 590,
   "name": "pitch_index",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 593,
   "name": "voice_sequence",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 596,
   "name": "saved_sequence",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 599,
   "name": "sweep_counts",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 602,
   "name": "slot_motion",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 603,
   "name": "a_025B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 604,
   "name": "a_025C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 605,
   "name": "f_025D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 610,
   "name": "slot_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 613,
   "name": "f_0265",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 618,
   "name": "slot_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 621,
   "name": "f_026D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 626,
   "name": "slot_command",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 629,
   "name": "f_0275",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 634,
   "name": "slot_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 642,
   "name": "slot_x_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 650,
   "name": "slot_y_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 658,
   "name": "slot_sequence",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 659,
   "name": "a_0293",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 660,
   "name": "a_0294",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 661,
   "name": "f_0295",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 666,
   "name": "slot_picture_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 669,
   "name": "f_029D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 674,
   "name": "slot_read_index",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 677,
   "name": "f_02A5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 682,
   "name": "mirror_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 938,
   "name": "mask_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1194,
   "name": "cell_stash",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1450,
   "name": "colour_stash",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1482,
   "name": "compose_buffer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1738,
   "name": "f_06CA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1793,
   "name": "f_0701",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2112,
   "name": "fighter_blocks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3136,
   "name": "fighter_blocks_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4096,
   "name": "fighter_blocks_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5120,
   "name": "fighter_blocks_48",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6144,
   "name": "fighter_blocks_64",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7168,
   "name": "fighter_blocks_80",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8192,
   "name": "fighter_blocks_96",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9216,
   "name": "fighter_blocks_112",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10240,
   "name": "fighter_blocks_128",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11264,
   "name": "fighter_blocks_144",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12288,
   "name": "fighter_blocks_160",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13312,
   "name": "fighter_blocks_176",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14336,
   "name": "fighter_blocks_192",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15360,
   "name": "fighter_blocks_208",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "fighter_blocks_224",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17408,
   "name": "screen_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18424,
   "name": "f_47F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18432,
   "name": "shapes_raised",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19264,
   "name": "shapes_raised_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20096,
   "name": "shape_blood",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20160,
   "name": "shapes_head",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20608,
   "name": "shapes_spurt",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20864,
   "name": "shape_shadow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20928,
   "name": "shapes_goblin",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21696,
   "name": "shapes_body",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22720,
   "name": "shapes_body_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23744,
   "name": "shapes_body_32",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24576,
   "name": "bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25536,
   "name": "bitmap_row_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 26496,
   "name": "bitmap_row_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27456,
   "name": "bitmap_row_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28416,
   "name": "bitmap_row_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29376,
   "name": "bitmap_row_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30336,
   "name": "bitmap_row_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31296,
   "name": "bitmap_row_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32256,
   "name": "bitmap_row_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32576,
   "name": "backdrop_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32578,
   "name": "fighter_start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32580,
   "name": "walk_back_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32582,
   "name": "shape_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32584,
   "name": "step_flip",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32586,
   "name": "turn_shift",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32588,
   "name": "screen_row_address",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32638,
   "name": "column_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32718,
   "name": "bitmap_row_address",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "cbm80_vectors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32777,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32782,
   "name": "restart",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32954,
   "name": "b_80BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32955,
   "name": "main_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33030,
   "name": "reset_sprite_slots",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33032,
   "name": "b_8108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33062,
   "name": "reset_fighters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33064,
   "name": "b_8128",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33094,
   "name": "reset_strength",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33111,
   "name": "reset_score_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33129,
   "name": "b_8169",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33139,
   "name": "build_mirror_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33141,
   "name": "b_8175",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33144,
   "name": "b_8178",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33164,
   "name": "build_mask_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33166,
   "name": "b_818E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33170,
   "name": "b_8192",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33186,
   "name": "b_81A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33204,
   "name": "run_snakes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33206,
   "name": "b_81B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33213,
   "name": "b_81BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33217,
   "name": "anim_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33280,
   "name": "j_8200",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33308,
   "name": "b_821C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33319,
   "name": "b_8227",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33333,
   "name": "b_8235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33350,
   "name": "b_8246",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33357,
   "name": "anim_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33361,
   "name": "b_8251",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33365,
   "name": "b_8255",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33413,
   "name": "show_mode",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33422,
   "name": "b_828E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33427,
   "name": "j_8293",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33431,
   "name": "show_middle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33459,
   "name": "b_82B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33482,
   "name": "b_82CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33495,
   "name": "j_82D7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33501,
   "name": "show_strength",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33503,
   "name": "b_82DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33552,
   "name": "clock_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33572,
   "name": "b_8324",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33593,
   "name": "b_8339",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33597,
   "name": "b_833D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33629,
   "name": "r_835D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33630,
   "name": "walk_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33651,
   "name": "b_8373",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33666,
   "name": "b_8382",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33691,
   "name": "b_839B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33712,
   "name": "r_83B0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33713,
   "name": "time_bonus",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33737,
   "name": "b_83C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33787,
   "name": "b_83FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33792,
   "name": "walk_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33822,
   "name": "b_841E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33831,
   "name": "j_8427",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33841,
   "name": "r_8431",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33842,
   "name": "b_8432",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33856,
   "name": "b_8440",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33877,
   "name": "b_8455",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33902,
   "name": "b_846E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33921,
   "name": "b_8481",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33933,
   "name": "b_848D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33942,
   "name": "b_8496",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33946,
   "name": "b_849A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33950,
   "name": "start_ending",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33959,
   "name": "b_84A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33981,
   "name": "drax_throws",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34057,
   "name": "b_8509",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34063,
   "name": "b_850F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34081,
   "name": "r_8521",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34082,
   "name": "star_strikes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34098,
   "name": "b_8532",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34123,
   "name": "b_854B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34143,
   "name": "star_dodged",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 34162,
   "name": "reach_drax",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34190,
   "name": "j_858E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34231,
   "name": "b_85B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34254,
   "name": "b_85CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34274,
   "name": "b_85E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34285,
   "name": "r_85ED",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34286,
   "name": "set_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34297,
   "name": "draw_fighters_once",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34310,
   "name": "wait_ticks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34312,
   "name": "b_8608",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34317,
   "name": "stop_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34321,
   "name": "b_8611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34338,
   "name": "read_players",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34344,
   "name": "b_8628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34350,
   "name": "r_862E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34351,
   "name": "read_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34365,
   "name": "b_863D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34407,
   "name": "r_8667",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34408,
   "name": "find_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34414,
   "name": "b_866E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34421,
   "name": "r_8675",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34422,
   "name": "stick_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34441,
   "name": "b_8689",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34444,
   "name": "j_868C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34470,
   "name": "b_86A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34473,
   "name": "stick_to_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34491,
   "name": "b_86BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34509,
   "name": "r_86CD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34510,
   "name": "idle_taunt",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34526,
   "name": "b_86DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34530,
   "name": "b_86E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34558,
   "name": "b_86FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34562,
   "name": "b_8702",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34565,
   "name": "r_8705",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34566,
   "name": "computer_moves",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34602,
   "name": "b_872A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34668,
   "name": "b_876C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34692,
   "name": "r_8784",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34693,
   "name": "times8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34709,
   "name": "read_poses",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34711,
   "name": "b_8797",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34730,
   "name": "b_87AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34738,
   "name": "check_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34754,
   "name": "b_87C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34767,
   "name": "r_87CF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34768,
   "name": "hit_test",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34800,
   "name": "b_87F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34846,
   "name": "b_881E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34858,
   "name": "b_882A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34878,
   "name": "b_883E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34881,
   "name": "attack_index",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34885,
   "name": "b_8845",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34893,
   "name": "r_884D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34894,
   "name": "hit_record_at",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34913,
   "name": "hit_effect",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34946,
   "name": "b_8882",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34953,
   "name": "b_8889",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34974,
   "name": "b_889E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34995,
   "name": "b_88B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34998,
   "name": "hit_blood",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35031,
   "name": "b_88D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35042,
   "name": "b_88E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35076,
   "name": "r_8904",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35077,
   "name": "hit_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35124,
   "name": "r_8934",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35125,
   "name": "add_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35128,
   "name": "b_8938",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35140,
   "name": "b_8944",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35148,
   "name": "get_distance",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35159,
   "name": "b_8957",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35164,
   "name": "j_895C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35167,
   "name": "animate_fighters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35178,
   "name": "b_896A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35180,
   "name": "b_896C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35196,
   "name": "b_897C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35205,
   "name": "b_8985",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35208,
   "name": "animate_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35222,
   "name": "j_8996",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35224,
   "name": "b_8998",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35247,
   "name": "b_89AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35272,
   "name": "b_89C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35302,
   "name": "b_89E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35312,
   "name": "b_89F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35319,
   "name": "b_89F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35331,
   "name": "b_8A03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35372,
   "name": "b_8A2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35388,
   "name": "b_8A3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35393,
   "name": "clear_compose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35396,
   "name": "b_8A44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35409,
   "name": "compose_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35411,
   "name": "b_8A53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35446,
   "name": "b_8A76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35464,
   "name": "b_8A88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35469,
   "name": "b_8A8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35481,
   "name": "r_8A99",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35482,
   "name": "mirror_compose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35494,
   "name": "b_8AA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35496,
   "name": "b_8AA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35504,
   "name": "b_8AB0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35510,
   "name": "b_8AB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35527,
   "name": "b_8AC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35532,
   "name": "move_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35579,
   "name": "b_8AFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35596,
   "name": "r_8B0C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35597,
   "name": "limit_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35616,
   "name": "b_8B20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35621,
   "name": "b_8B25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35627,
   "name": "b_8B2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35630,
   "name": "limit_forward",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35648,
   "name": "b_8B40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35654,
   "name": "b_8B46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35657,
   "name": "check_overlap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35673,
   "name": "b_8B59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35677,
   "name": "j_8B5D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35704,
   "name": "b_8B78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35707,
   "name": "b_8B7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35710,
   "name": "draw_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35717,
   "name": "b_8B85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35720,
   "name": "j_8B88",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35752,
   "name": "b_8BA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35779,
   "name": "b_8BC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35800,
   "name": "b_8BD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35806,
   "name": "b_8BDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35815,
   "name": "b_8BE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35824,
   "name": "draw_fighter_clip",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35858,
   "name": "b_8C12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35889,
   "name": "b_8C31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35918,
   "name": "b_8C4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35924,
   "name": "b_8C54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35933,
   "name": "b_8C5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35942,
   "name": "save_strip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35944,
   "name": "b_8C68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35996,
   "name": "clear_strip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35998,
   "name": "b_8C9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36050,
   "name": "show_strip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36052,
   "name": "b_8CD4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36104,
   "name": "flip_sprite_shapes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36124,
   "name": "b_8D1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36126,
   "name": "b_8D1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36182,
   "name": "b_8D56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36186,
   "name": "r_8D5A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36187,
   "name": "swap_cells_13",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36223,
   "name": "swap_cells_23",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36259,
   "name": "swap_4x4_cells",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36263,
   "name": "b_8DA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36265,
   "name": "b_8DA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36309,
   "name": "b_8DD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36311,
   "name": "b_8DD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36353,
   "name": "swap_shape_bank",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36371,
   "name": "b_8E13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36373,
   "name": "b_8E15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36398,
   "name": "b_8E2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36408,
   "name": "b_8E38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36412,
   "name": "scene_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36435,
   "name": "b_8E53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36452,
   "name": "b_8E64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36503,
   "name": "r_8E97",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36504,
   "name": "swap_backdrop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36508,
   "name": "b_8E9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36557,
   "name": "lift_arena",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36568,
   "name": "b_8ED8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36572,
   "name": "b_8EDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36574,
   "name": "b_8EDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36608,
   "name": "drop_arena",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36622,
   "name": "b_8F0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36626,
   "name": "b_8F12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36628,
   "name": "b_8F14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36654,
   "name": "arena_byte_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36718,
   "name": "swap_stash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36736,
   "name": "b_8F80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36738,
   "name": "b_8F82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36759,
   "name": "swap_arena_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36777,
   "name": "b_8FA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36779,
   "name": "b_8FAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36835,
   "name": "b_8FE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36845,
   "name": "b_8FED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36849,
   "name": "place_overlays",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36856,
   "name": "b_8FF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36907,
   "name": "b_902B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36916,
   "name": "b_9034",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36923,
   "name": "b_903B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36935,
   "name": "b_9047",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36940,
   "name": "place_overlay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36957,
   "name": "b_905D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36984,
   "name": "b_9078",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36999,
   "name": "j_9087",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37016,
   "name": "place_sprite_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37031,
   "name": "b_90A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37070,
   "name": "b_90CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37075,
   "name": "j_90D3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37080,
   "name": "end_roll_past",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37086,
   "name": "b_90DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37101,
   "name": "b_90ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37106,
   "name": "r_90F2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37107,
   "name": "j_90F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37109,
   "name": "b_90F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37125,
   "name": "decapitate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37127,
   "name": "b_9107",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37140,
   "name": "b_9114",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37144,
   "name": "j_9118",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37187,
   "name": "b_9143",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37240,
   "name": "b_9178",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37244,
   "name": "j_917C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37264,
   "name": "winner_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37299,
   "name": "b_91B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37303,
   "name": "j_91B7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37308,
   "name": "start_goblin",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37330,
   "name": "b_91D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37353,
   "name": "b_91E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37390,
   "name": "r_920E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37391,
   "name": "colour_pillar_tops",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37393,
   "name": "b_9211",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37453,
   "name": "colour_strip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37455,
   "name": "b_924F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37511,
   "name": "init_vars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37559,
   "name": "fill_cell_stash",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37561,
   "name": "b_92B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37579,
   "name": "reset_clock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37588,
   "name": "clear_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37592,
   "name": "b_92D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37624,
   "name": "print_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37638,
   "name": "b_9306",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37689,
   "name": "b_9339",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37706,
   "name": "j_934A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37713,
   "name": "b_9351",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37769,
   "name": "b_9389",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37771,
   "name": "b_938B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37782,
   "name": "b_9396",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37786,
   "name": "glyph_address",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37812,
   "name": "read_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37850,
   "name": "b_93DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37869,
   "name": "b_93ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37910,
   "name": "b_9416",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37926,
   "name": "b_9426",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37940,
   "name": "b_9434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37977,
   "name": "b_9459",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37981,
   "name": "b_945D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38004,
   "name": "b_9474",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38016,
   "name": "b_9480",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38041,
   "name": "b_9499",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38056,
   "name": "b_94A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38065,
   "name": "fade_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38073,
   "name": "b_94B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38083,
   "name": "pause_delay",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38085,
   "name": "b_94C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38087,
   "name": "b_94C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38098,
   "name": "restart_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38127,
   "name": "b_94EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38147,
   "name": "b_9503",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38154,
   "name": "b_950A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38161,
   "name": "irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38179,
   "name": "b_9523",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38194,
   "name": "b_9532",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38204,
   "name": "b_953C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38210,
   "name": "nmi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38211,
   "name": "raster_irq",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38242,
   "name": "b_9562",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38296,
   "name": "b_9598",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38300,
   "name": "r_959C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38301,
   "name": "sprite_motion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38303,
   "name": "b_959F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38318,
   "name": "b_95AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38325,
   "name": "b_95B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38332,
   "name": "b_95BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38339,
   "name": "b_95C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38343,
   "name": "move_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38362,
   "name": "r_95DA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38363,
   "name": "move_down",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38382,
   "name": "r_95EE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38383,
   "name": "move_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38422,
   "name": "b_9616",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38441,
   "name": "r_9629",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38442,
   "name": "move_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38490,
   "name": "b_965A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38509,
   "name": "r_966D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38510,
   "name": "goblin",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38523,
   "name": "r_967B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38524,
   "name": "goblin_kicks_head",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38582,
   "name": "b_96B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38625,
   "name": "r_96E1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38626,
   "name": "goblin_drags",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38655,
   "name": "b_96FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38668,
   "name": "r_970C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38669,
   "name": "goblin_grabs_body",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38686,
   "name": "b_971E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38721,
   "name": "r_9741",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38722,
   "name": "goblin_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38751,
   "name": "sprite_pictures",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38753,
   "name": "b_9761",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38768,
   "name": "b_9770",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38772,
   "name": "step_sequence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38848,
   "name": "b_97C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38861,
   "name": "b_97CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38874,
   "name": "b_97DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38891,
   "name": "b_97EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38895,
   "name": "b_97EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38908,
   "name": "b_97FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38927,
   "name": "b_980F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38943,
   "name": "b_981F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38962,
   "name": "motion_scripts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38964,
   "name": "b_9834",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38972,
   "name": "j_983C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38976,
   "name": "b_9840",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38984,
   "name": "step_motion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39054,
   "name": "b_988E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39058,
   "name": "b_9892",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39093,
   "name": "b_98B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39113,
   "name": "b_98C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39138,
   "name": "b_98E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39158,
   "name": "b_98F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39181,
   "name": "reset_motion",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39193,
   "name": "sprite_registers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39195,
   "name": "b_991B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39205,
   "name": "b_9925",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39224,
   "name": "tick_counters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39226,
   "name": "b_993A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39232,
   "name": "b_9940",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39257,
   "name": "b_9959",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39263,
   "name": "r_995F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39264,
   "name": "sound_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39272,
   "name": "b_9968",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39279,
   "name": "b_996F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39304,
   "name": "j_9988",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39349,
   "name": "b_99B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39370,
   "name": "r_99CA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39371,
   "name": "b_99CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39383,
   "name": "play_note",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39514,
   "name": "do_command",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39546,
   "name": "b_9A7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39550,
   "name": "b_9A7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39572,
   "name": "b_9A94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39576,
   "name": "cmd_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39600,
   "name": "cmd_restart",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39621,
   "name": "cmd_end",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39638,
   "name": "cmd_instrument",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39801,
   "name": "b_9B79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39810,
   "name": "b_9B82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39816,
   "name": "cmd_long",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39863,
   "name": "cmd_goto",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39892,
   "name": "cmd_tempo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39916,
   "name": "cmd_call",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39957,
   "name": "cmd_return",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39980,
   "name": "cmd_filter",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40033,
   "name": "b_9C61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40085,
   "name": "advance_offset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40099,
   "name": "r_9CA3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40100,
   "name": "count_durations",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40102,
   "name": "b_9CA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40146,
   "name": "b_9CD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40155,
   "name": "r_9CDB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40156,
   "name": "voice_effects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40158,
   "name": "b_9CDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40198,
   "name": "b_9D06",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40202,
   "name": "b_9D0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40228,
   "name": "b_9D24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40230,
   "name": "b_9D26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40259,
   "name": "pitch_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40289,
   "name": "b_9D61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40292,
   "name": "b_9D64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40330,
   "name": "r_9D8A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40331,
   "name": "pulse_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40349,
   "name": "b_9D9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40378,
   "name": "r_9DBA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40379,
   "name": "slide_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40399,
   "name": "b_9DCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40420,
   "name": "r_9DE4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40421,
   "name": "filter_sweep",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40429,
   "name": "j_9DED",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40446,
   "name": "r_9DFE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40447,
   "name": "b_9DFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40462,
   "name": "b_9E0E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40476,
   "name": "filter_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40496,
   "name": "set_cutoff",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40522,
   "name": "start_request",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40540,
   "name": "b_9E5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40587,
   "name": "fade_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40612,
   "name": "b_9EA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40626,
   "name": "r_9EB2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40627,
   "name": "silence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40631,
   "name": "b_9EB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40642,
   "name": "b_9EC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40652,
   "name": "b_9ECC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40660,
   "name": "write_sid",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40662,
   "name": "b_9ED6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40671,
   "name": "effects_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40677,
   "name": "b_9EE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40685,
   "name": "b_9EED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40694,
   "name": "b_9EF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40703,
   "name": "r_9EFF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40704,
   "name": "note_freqs",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "note_freqs_128",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41088,
   "name": "length_ticks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41120,
   "name": "tempo_latches",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41154,
   "name": "sid_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41157,
   "name": "voice_times3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41160,
   "name": "command_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41170,
   "name": "command_handlers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41190,
   "name": "filter_settings",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41222,
   "name": "filter_00",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41233,
   "name": "filter_01",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41244,
   "name": "filter_02",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41255,
   "name": "filter_03",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41266,
   "name": "filter_04",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41277,
   "name": "filter_05",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41288,
   "name": "filter_06",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41299,
   "name": "filter_07",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41310,
   "name": "filter_08",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41321,
   "name": "filter_09",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41332,
   "name": "filter_10",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41343,
   "name": "filter_11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41354,
   "name": "filter_12",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41365,
   "name": "filter_13",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41376,
   "name": "filter_14",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41387,
   "name": "filter_15",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41398,
   "name": "sequence_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41626,
   "name": "seq_D7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41635,
   "name": "seq_D8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41636,
   "name": "seq_D9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41637,
   "name": "seq_DA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41645,
   "name": "seq_DB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41650,
   "name": "seq_DC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41656,
   "name": "seq_DD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41666,
   "name": "seq_DE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41676,
   "name": "seq_DF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41685,
   "name": "seq_E0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41694,
   "name": "seq_E1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41701,
   "name": "seq_E2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41739,
   "name": "seq_E3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41752,
   "name": "seq_E4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41775,
   "name": "seq_E5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41776,
   "name": "seq_E6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41777,
   "name": "seq_E7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41778,
   "name": "seq_E8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41779,
   "name": "seq_E9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41790,
   "name": "seq_EA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41799,
   "name": "seq_EB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41808,
   "name": "seq_EC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41854,
   "name": "seq_ED",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41899,
   "name": "seq_EE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41906,
   "name": "seq_EF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41915,
   "name": "seq_F0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41922,
   "name": "seq_F1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41929,
   "name": "instruments",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42685,
   "name": "arena_buffer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42717,
   "name": "f_A6DD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43037,
   "name": "f_A81D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43357,
   "name": "f_A95D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43677,
   "name": "f_AA9D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 43997,
   "name": "f_ABDD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44317,
   "name": "f_AD1D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44637,
   "name": "f_AE5D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 44957,
   "name": "f_AF9D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 45277,
   "name": "strip_copy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45597,
   "name": "f_B21D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 45917,
   "name": "f_B35D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46237,
   "name": "f_B49D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46557,
   "name": "f_B5DD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 46877,
   "name": "f_B71D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47197,
   "name": "f_B85D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47517,
   "name": "f_B99D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 47805,
   "name": "message_pointers",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47853,
   "name": "msg_80",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47860,
   "name": "msg_81",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47890,
   "name": "msg_82",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47898,
   "name": "msg_83",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47906,
   "name": "msg_84",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47914,
   "name": "msg_85",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47924,
   "name": "msg_86",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47930,
   "name": "msg_87",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47939,
   "name": "msg_88",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47948,
   "name": "msg_89",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47969,
   "name": "msg_8A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47987,
   "name": "msg_strength_00",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48007,
   "name": "msg_strength_01",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48027,
   "name": "msg_strength_02",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48047,
   "name": "msg_strength_03",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48067,
   "name": "msg_strength_04",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48087,
   "name": "msg_strength_05",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48107,
   "name": "msg_strength_06",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48127,
   "name": "msg_strength_07",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48147,
   "name": "msg_strength_08",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48167,
   "name": "msg_strength_09",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48187,
   "name": "msg_strength_10",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48207,
   "name": "msg_strength_11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48227,
   "name": "msg_strength_12",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48247,
   "name": "font_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48260,
   "name": "font_glyphs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48273,
   "name": "strength_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48275,
   "name": "score_ten",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48280,
   "name": "snake_scripts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48288,
   "name": "snake_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48298,
   "name": "snake_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48308,
   "name": "snake_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48328,
   "name": "snake_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48348,
   "name": "move_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48408,
   "name": "mv_stand",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48411,
   "name": "mv_walk_forward",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48417,
   "name": "mv_walk_back",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48423,
   "name": "mv_web_of_death",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48429,
   "name": "mv_jump",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48435,
   "name": "mv_leg_chop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48442,
   "name": "mv_crouch",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48445,
   "name": "mv_flying_neck_chop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48454,
   "name": "mv_headless_body",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48464,
   "name": "mv_body_chop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48471,
   "name": "mv_protect_body",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48475,
   "name": "mv_neck_chop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48482,
   "name": "mv_kick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48488,
   "name": "mv_recoil",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48493,
   "name": "mv_overhead_chop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48500,
   "name": "mv_head_butt",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48505,
   "name": "mv_protect_head",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48510,
   "name": "mv_roll_forward",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48516,
   "name": "mv_roll_back",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48523,
   "name": "mv_victory",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48538,
   "name": "mv_stand_up",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48541,
   "name": "mv_95",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48544,
   "name": "mv_lower_the_guard",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48547,
   "name": "mv_crouch_down",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48550,
   "name": "mv_end_of_the_roll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48553,
   "name": "mv_knocked_down",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48559,
   "name": "mv_taunt",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48569,
   "name": "mv_fall_dead",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48578,
   "name": "mv_kick_then_victory",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48585,
   "name": "mv_turn_round",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48591,
   "name": "drawn_last",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48595,
   "name": "no_input_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48598,
   "name": "frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48780,
   "name": "frame_00",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48796,
   "name": "frame_01",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48812,
   "name": "frame_02",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48828,
   "name": "frame_03",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48844,
   "name": "frame_04",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48860,
   "name": "frame_05",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48876,
   "name": "frame_06",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48892,
   "name": "frame_07",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48908,
   "name": "frame_08",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48932,
   "name": "frame_09",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48956,
   "name": "frame_0a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48972,
   "name": "frame_0b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48988,
   "name": "frame_0c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49004,
   "name": "frame_0d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49020,
   "name": "frame_0e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49044,
   "name": "frame_0f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49068,
   "name": "frame_10",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49092,
   "name": "frame_11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49108,
   "name": "frame_12",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49124,
   "name": "frame_13",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49140,
   "name": "frame_14",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "frame_15",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49168,
   "name": "frame_16",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49184,
   "name": "frame_17",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49200,
   "name": "frame_18",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49216,
   "name": "frame_19",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49232,
   "name": "frame_1a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49248,
   "name": "frame_1b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49264,
   "name": "frame_1c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49280,
   "name": "frame_1d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49296,
   "name": "frame_1e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49312,
   "name": "frame_1f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49332,
   "name": "frame_20",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49348,
   "name": "frame_21",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49360,
   "name": "frame_22",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49376,
   "name": "frame_23",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49392,
   "name": "frame_24",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49408,
   "name": "frame_25",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49424,
   "name": "frame_26",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49440,
   "name": "frame_27",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49452,
   "name": "frame_28",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49468,
   "name": "frame_29",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49484,
   "name": "frame_2a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49496,
   "name": "frame_2b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49512,
   "name": "frame_2c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49528,
   "name": "frame_2d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49544,
   "name": "frame_2e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49560,
   "name": "frame_2f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49576,
   "name": "frame_30",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49592,
   "name": "frame_31",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49616,
   "name": "frame_32",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49632,
   "name": "frame_33",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49648,
   "name": "frame_34",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49664,
   "name": "frame_35",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49680,
   "name": "frame_36",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49696,
   "name": "frame_37",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49712,
   "name": "frame_3c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49728,
   "name": "frame_4b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49744,
   "name": "frame_4c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49760,
   "name": "frame_4d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49776,
   "name": "frame_4e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49792,
   "name": "frame_4f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49808,
   "name": "frame_50",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49824,
   "name": "frame_52",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49840,
   "name": "frame_53",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49856,
   "name": "frame_54",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49872,
   "name": "frame_55",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49888,
   "name": "frame_56",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49904,
   "name": "frame_57",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49920,
   "name": "frame_58",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49936,
   "name": "frame_59",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49948,
   "name": "attack_poses",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49960,
   "name": "hit_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49984,
   "name": "hits_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50099,
   "name": "hits_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50216,
   "name": "hits_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50339,
   "name": "hits_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50452,
   "name": "hits_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50569,
   "name": "hits_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50670,
   "name": "hits_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50753,
   "name": "hits_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50814,
   "name": "hits_8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50913,
   "name": "hits_9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51006,
   "name": "hits_10",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51099,
   "name": "hits_11",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51208,
   "name": "hit_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51364,
   "name": "hit_sounds",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51379,
   "name": "hit_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51400,
   "name": "hit_points",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51425,
   "name": "move_sound_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51432,
   "name": "move_sound_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51439,
   "name": "move_sound_requests",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51446,
   "name": "level_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51454,
   "name": "ai_level_picks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51470,
   "name": "ai_level_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51502,
   "name": "ai_level_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51534,
   "name": "ai_level_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51566,
   "name": "ai_level_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51598,
   "name": "ai_level_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51630,
   "name": "ai_level_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51662,
   "name": "ai_level_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51694,
   "name": "ai_level_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51726,
   "name": "distance_class",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51766,
   "name": "ai_pose_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 51948,
   "name": "ai_row_c980",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51956,
   "name": "ai_row_c988",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51964,
   "name": "ai_row_c990",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51972,
   "name": "ai_row_c998",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51980,
   "name": "ai_row_c9a0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51988,
   "name": "ai_row_c9a8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51996,
   "name": "ai_row_c9b0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52004,
   "name": "ai_row_c9b8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52012,
   "name": "ai_row_c9c0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52020,
   "name": "ai_row_c9c8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52036,
   "name": "ai_row_c9d8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52044,
   "name": "ai_row_c9e0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52052,
   "name": "ai_row_c9e8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52060,
   "name": "ai_row_c9f0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52068,
   "name": "ai_row_c9f8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52076,
   "name": "ai_row_ca00",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52084,
   "name": "ai_row_ca08",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52100,
   "name": "ai_row_ca18",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52108,
   "name": "ai_row_ca20",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52116,
   "name": "ai_row_ca28",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52124,
   "name": "ai_choices",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52308,
   "name": "picture_sequences",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52352,
   "name": "pseq_the_head_rolling_facing_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52362,
   "name": "pseq_the_head_rolling_facing_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52372,
   "name": "pseq_blood_spurting_from_the_neck",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52384,
   "name": "pseq_the_head_s_shadow",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52389,
   "name": "pseq_head_at_rest",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52399,
   "name": "pseq_the_goblin_s_top_half_walking",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52407,
   "name": "pseq_the_goblin_s_bottom_half_walking",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52415,
   "name": "pseq_the_goblin_s_top_half_grabbing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52421,
   "name": "pseq_the_goblin_s_bottom_half_grabbing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52427,
   "name": "pseq_a_blood_splash",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52432,
   "name": "pseq_8b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52437,
   "name": "pseq_8c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52442,
   "name": "pseq_8d",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52447,
   "name": "pseq_8e",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52452,
   "name": "pseq_8f",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52457,
   "name": "pseq_90",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52462,
   "name": "pseq_91",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52467,
   "name": "pseq_92",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52472,
   "name": "pseq_93",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52477,
   "name": "pseq_94",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52482,
   "name": "pseq_95",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52489,
   "name": "scene_records",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52497,
   "name": "scene_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52509,
   "name": "scene_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52521,
   "name": "scene_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52533,
   "name": "scene_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52545,
   "name": "star_motions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52547,
   "name": "dodge_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52551,
   "name": "dodge_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52555,
   "name": "dodge_low",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52559,
   "name": "motion_script_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52583,
   "name": "mot_standing_still",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52588,
   "name": "mot_the_head_flying_off_to_the_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52661,
   "name": "mot_the_head_flying_off_to_the_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52734,
   "name": "mot_the_shadow_following_the_head_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52739,
   "name": "mot_the_shadow_following_the_head_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52744,
   "name": "mot_the_goblin_walking_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52752,
   "name": "mot_the_head_kicked_away",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52778,
   "name": "mot_the_shadow_following_the_kicked_head",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52782,
   "name": "mot_the_goblin_s_top_half_grabbing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52788,
   "name": "mot_the_goblin_s_bottom_half_grabbing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52794,
   "name": "mot_star_high",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52798,
   "name": "mot_star_low",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52806,
   "name": "death_x_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52808,
   "name": "head_sequences",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52810,
   "name": "rest_sequences",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52812,
   "name": "kick_sequences",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52814,
   "name": "grab_sequences",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52816,
   "name": "head_motions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52818,
   "name": "shadow_motions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52820,
   "name": "kick_motions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52822,
   "name": "grab_motions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52824,
   "name": "stick_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52828,
   "name": "stick_list_right",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52837,
   "name": "stick_list_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52846,
   "name": "move_rows_free",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52874,
   "name": "move_rows_fire",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 52902,
   "name": "move_rows",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53010,
   "name": "sprite_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53018,
   "name": "sprite_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53026,
   "name": "block_corners",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53044,
   "name": "block_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53107,
   "name": "cell_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53116,
   "name": "strip_row_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 53248,
   "name": "stashed_arena",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54272,
   "name": "stashed_arena_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "stashed_arena_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56320,
   "name": "stashed_arena_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57344,
   "name": "stashed_screen",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58368,
   "name": "stashed_colour_ram",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59392,
   "name": "font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59776,
   "name": "snake_pictures",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60800,
   "name": "sequences_b3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 60822,
   "name": "seq_81",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 60870,
   "name": "seq_82",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 60928,
   "name": "seq_83",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 60996,
   "name": "seq_84",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61062,
   "name": "seq_85",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61152,
   "name": "seq_86",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61162,
   "name": "seq_87",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61170,
   "name": "seq_88",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61190,
   "name": "seq_89",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61228,
   "name": "seq_8A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61264,
   "name": "seq_8B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61568,
   "name": "seq_8C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61587,
   "name": "seq_8D",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61678,
   "name": "seq_8E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61705,
   "name": "seq_8F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61874,
   "name": "seq_90",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61909,
   "name": "seq_91",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61994,
   "name": "seq_92",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62028,
   "name": "seq_93",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62088,
   "name": "seq_94",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62096,
   "name": "seq_95",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62150,
   "name": "seq_96",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62175,
   "name": "seq_97",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62288,
   "name": "seq_98",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62309,
   "name": "seq_99",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62318,
   "name": "seq_9A",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62354,
   "name": "seq_9B",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62379,
   "name": "seq_9C",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62496,
   "name": "seq_9D",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62567,
   "name": "seq_9E",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62682,
   "name": "seq_9F",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62762,
   "name": "seq_A0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62783,
   "name": "seq_A1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62927,
   "name": "seq_A2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63066,
   "name": "seq_A3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63080,
   "name": "seq_A4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63107,
   "name": "seq_A5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63134,
   "name": "seq_A6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63150,
   "name": "seq_A7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63167,
   "name": "seq_A8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63206,
   "name": "seq_A9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63262,
   "name": "seq_AA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63271,
   "name": "seq_AB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63298,
   "name": "seq_AC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63315,
   "name": "seq_AD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63335,
   "name": "seq_AE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63342,
   "name": "seq_AF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63351,
   "name": "seq_B0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63360,
   "name": "seq_B1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63377,
   "name": "seq_B2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63394,
   "name": "seq_B3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63411,
   "name": "seq_B4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63511,
   "name": "seq_B5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63586,
   "name": "seq_B6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63654,
   "name": "seq_B7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63763,
   "name": "seq_B8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63768,
   "name": "seq_B9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63773,
   "name": "seq_BA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63795,
   "name": "seq_BB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63818,
   "name": "seq_BC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63846,
   "name": "seq_BD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63860,
   "name": "seq_BE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63865,
   "name": "seq_BF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63870,
   "name": "seq_C0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63883,
   "name": "seq_C1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63916,
   "name": "seq_C2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63979,
   "name": "seq_C3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63984,
   "name": "seq_C4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63989,
   "name": "seq_C5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64022,
   "name": "seq_C6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64085,
   "name": "seq_C7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64090,
   "name": "seq_C8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64095,
   "name": "seq_C9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64106,
   "name": "seq_CA",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64123,
   "name": "seq_CB",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64130,
   "name": "seq_CC",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64137,
   "name": "seq_CD",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64238,
   "name": "seq_CE",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64350,
   "name": "seq_CF",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64361,
   "name": "seq_D0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64376,
   "name": "seq_D1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64383,
   "name": "seq_D2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64404,
   "name": "seq_D3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64496,
   "name": "seq_D4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64504,
   "name": "seq_D5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64510,
   "name": "seq_D6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64576,
   "name": "scene_shapes",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 2,
   "type": "line",
   "text": "The sprites' X and Y shadow, two bytes a sprite, copied to $D000-$D00F each frame (sprite_registers)."
  },
  {
   "address": 18,
   "type": "line",
   "text": "The shadow of the sprites' X ninth bits ($D010)."
  },
  {
   "address": 23,
   "type": "line",
   "text": "The shadow of the sprite enable register ($D015)."
  },
  {
   "address": 41,
   "type": "line",
   "text": "The shadow of the eight sprite colours ($D027-$D02E)."
  },
  {
   "address": 49,
   "type": "line",
   "text": "The shadow of the SID's 25 registers, written to $D400-$D418 by write_sid."
  },
  {
   "address": 70,
   "type": "line",
   "text": "The shadow of the filter cutoff's low three bits ($D415)."
  },
  {
   "address": 71,
   "type": "line",
   "text": "The shadow of the filter cutoff's high eight bits ($D416)."
  },
  {
   "address": 72,
   "type": "line",
   "text": "The shadow of the resonance and voice routing ($D417)."
  },
  {
   "address": 73,
   "type": "line",
   "text": "The shadow of the filter mode and volume ($D418)."
  },
  {
   "address": 74,
   "type": "line",
   "text": "The shadow of the eight sprite pointers, copied to $47F8-$47FF."
  },
  {
   "address": 91,
   "type": "line",
   "text": "Each fighter's snake script, bit 7 set while it runs."
  },
  {
   "address": 93,
   "type": "line",
   "text": "The offset of the next entry in each snake script."
  },
  {
   "address": 103,
   "type": "line",
   "text": "Each fighter's move, bit 7 set while it runs."
  },
  {
   "address": 105,
   "type": "line",
   "text": "The index of each fighter's next entry in its move's frame list."
  },
  {
   "address": 107,
   "type": "line",
   "text": "The row entry of the move each fighter last started, set with move ($67): negative while a move started with bit 7 still holds the stick, cleared by animate_fighter when the move's list reaches its command. Only stick_to_move reads it."
  },
  {
   "address": 109,
   "type": "line",
   "text": "Each fighter's stick, the switch bits pressed-is-1."
  },
  {
   "address": 111,
   "type": "line",
   "text": "The frame each fighter shows."
  },
  {
   "address": 113,
   "type": "line",
   "text": "Each fighter's column, 0 to 39."
  },
  {
   "address": 145,
   "type": "line",
   "text": "Each fighter's facing: 0 right, 1 left."
  },
  {
   "address": 147,
   "type": "line",
   "text": "Each fighter's strength, 12 to 0."
  },
  {
   "address": 149,
   "type": "line",
   "text": "Each fighter's idle counter, counted down once a frame."
  },
  {
   "address": 152,
   "type": "line",
   "text": "Set while the sequencer runs (sound_tick)."
  },
  {
   "address": 153,
   "type": "line",
   "text": "The fighter being animated or drawn."
  },
  {
   "address": 170,
   "type": "line",
   "text": "The columns between the two fighters."
  },
  {
   "address": 174,
   "type": "line",
   "text": "The step of the frame being applied."
  },
  {
   "address": 175,
   "type": "line",
   "text": "The loser's number with bit 7 once a fighter is dead."
  },
  {
   "address": 176,
   "type": "line",
   "text": "Negative while the goblin is on screen."
  },
  {
   "address": 177,
   "type": "line",
   "text": "Negative while the goblin drags the body."
  },
  {
   "address": 178,
   "type": "line",
   "text": "$84 while one fighter rolls under the other's jump."
  },
  {
   "address": 179,
   "type": "line",
   "text": "Not 0 while the demo plays."
  },
  {
   "address": 180,
   "type": "line",
   "text": "Negative during the walk-on, 0 in the fight."
  },
  {
   "address": 181,
   "type": "line",
   "text": "Negative while the fighters walk back after a time-out."
  },
  {
   "address": 182,
   "type": "line",
   "text": "The winner's number with bit 7 while its time bonus is owed."
  },
  {
   "address": 183,
   "type": "line",
   "text": "Bit 7 asks for fighter 1's body pieces to be mirrored; bit 0 says which way they face."
  },
  {
   "address": 184,
   "type": "line",
   "text": "Negative while the title tune plays (F3)."
  },
  {
   "address": 185,
   "type": "line",
   "text": "$80 once F7 has started a game."
  },
  {
   "address": 186,
   "type": "line",
   "text": "$80 between F1 and F7."
  },
  {
   "address": 187,
   "type": "line",
   "text": "Negative while the ending runs, from start_ending to the restart: it stops the fight's stick, computer, hit and walk-on work, lets drax_throws and scene_sprites run, and makes restart_game put Drax back in his arch and the scene's sprite shapes away."
  },
  {
   "address": 188,
   "type": "line",
   "text": "Negative once the barbarian has reached Drax (reach_drax): the throws stop, and restart_game puts Mariana back in her arch too."
  },
  {
   "address": 189,
   "type": "line",
   "text": "0 for one player, 1 for two. This side only ever sets 0 (init_vars and F1), so the two-player paths of its code never run."
  },
  {
   "address": 190,
   "type": "line",
   "text": "The skill level, 0 to 7."
  },
  {
   "address": 193,
   "type": "line",
   "text": "Negative while the interrupt's sprite work is stopped."
  },
  {
   "address": 195,
   "type": "line",
   "text": "The overlap of the two fighters, from check_overlap."
  },
  {
   "address": 196,
   "type": "line",
   "text": "Which backdrop is on screen, 0 or 1."
  },
  {
   "address": 197,
   "type": "line",
   "text": "The goblin's column, from goblin_column."
  },
  {
   "address": 199,
   "type": "line",
   "text": "The points of the last hit, for hit_score."
  },
  {
   "address": 200,
   "type": "line",
   "text": "The two-player clock in seconds."
  },
  {
   "address": 201,
   "type": "line",
   "text": "Frames to the next second of the clock."
  },
  {
   "address": 202,
   "type": "line",
   "text": "Frames left for wait_ticks."
  },
  {
   "address": 203,
   "type": "line",
   "text": "Which scene record scene_sprites shows: 1, Drax throwing, for the pass after each throw, and 0, Drax standing, the rest of the time (drax_throws); then 2, Mariana (reach_drax)."
  },
  {
   "address": 204,
   "type": "line",
   "text": "The kind of star in flight, picked at random as Drax throws it: 0 high, 1 low (drax_throws). It chooses the star's motion and the moves that dodge it."
  },
  {
   "address": 205,
   "type": "line",
   "text": "The computer's pick counter."
  },
  {
   "address": 206,
   "type": "line",
   "text": "Negative while the interrupt's frame work runs."
  },
  {
   "address": 221,
   "type": "line",
   "text": "The three voices' requests, a sequence number each, taken by start_request."
  },
  {
   "address": 224,
   "type": "line",
   "text": "The volume, 0 to 15."
  },
  {
   "address": 225,
   "type": "line",
   "text": "Negative while the volume fades in; the low seven bits are the ticks between steps."
  },
  {
   "address": 226,
   "type": "line",
   "text": "Negative while the volume fades out."
  },
  {
   "address": 227,
   "type": "line",
   "text": "Ticks to the fade's next step."
  },
  {
   "address": 235,
   "type": "line",
   "text": "The filter sweep's ticks between steps, 0 for no sweep."
  },
  {
   "address": 512,
   "type": "line",
   "text": "Each voice's three effect steps, from its instrument."
  },
  {
   "address": 521,
   "type": "line",
   "text": "Each voice's three effect counts."
  },
  {
   "address": 530,
   "type": "line",
   "text": "Each voice's note length in ticks."
  },
  {
   "address": 536,
   "type": "line",
   "text": "Each voice's ticks left on its note."
  },
  {
   "address": 542,
   "type": "line",
   "text": "Each voice's offset into its sequence."
  },
  {
   "address": 548,
   "type": "line",
   "text": "The offset $F7 keeps for $F8."
  },
  {
   "address": 554,
   "type": "line",
   "text": "Each voice's pulse width from its instrument."
  },
  {
   "address": 560,
   "type": "line",
   "text": "The filter sweep's three steps."
  },
  {
   "address": 566,
   "type": "line",
   "text": "Each voice's instrument effect flags."
  },
  {
   "address": 569,
   "type": "line",
   "text": "Each voice's running effect flags."
  },
  {
   "address": 572,
   "type": "line",
   "text": "Each voice's ticks to its next effect step."
  },
  {
   "address": 575,
   "type": "line",
   "text": "Each voice's steps done of its current pair."
  },
  {
   "address": 578,
   "type": "line",
   "text": "Each voice's current pair's count."
  },
  {
   "address": 581,
   "type": "line",
   "text": "Each voice's current pair's step."
  },
  {
   "address": 584,
   "type": "line",
   "text": "Each voice's delay between effect steps."
  },
  {
   "address": 587,
   "type": "line",
   "text": "Each voice's current pair, 0 to 2."
  },
  {
   "address": 590,
   "type": "line",
   "text": "Each voice's pitch, an index into note_freqs."
  },
  {
   "address": 593,
   "type": "line",
   "text": "Each voice's sequence, bit 7 set while it plays."
  },
  {
   "address": 596,
   "type": "line",
   "text": "The sequence $F7 keeps for $F8."
  },
  {
   "address": 599,
   "type": "line",
   "text": "The filter sweep's three counts."
  },
  {
   "address": 602,
   "type": "line",
   "text": "Each sprite slot's motion script, bit 7 set while it runs."
  },
  {
   "address": 610,
   "type": "line",
   "text": "Frames left on each slot's motion step."
  },
  {
   "address": 618,
   "type": "line",
   "text": "Each slot's offset into its motion script."
  },
  {
   "address": 626,
   "type": "line",
   "text": "The command of each slot's motion step."
  },
  {
   "address": 634,
   "type": "line",
   "text": "Each slot's direction bits: 1 up, 2 down, 4 left, 8 right."
  },
  {
   "address": 642,
   "type": "line",
   "text": "Each slot's X speed."
  },
  {
   "address": 650,
   "type": "line",
   "text": "Each slot's Y speed."
  },
  {
   "address": 658,
   "type": "line",
   "text": "Each slot's picture sequence, bit 7 set while it runs."
  },
  {
   "address": 666,
   "type": "line",
   "text": "Frames left on each slot's picture."
  },
  {
   "address": 674,
   "type": "line",
   "text": "Each slot's index into its picture sequence."
  },
  {
   "address": 682,
   "type": "line",
   "text": "Each byte value mirrored as four multicolour pixels (build_mirror_table)."
  },
  {
   "address": 938,
   "type": "line",
   "text": "The see-through mask of each byte of fighter graphics (build_mask_table)."
  },
  {
   "address": 1194,
   "type": "line",
   "text": "The stash swap_cells_13 and swap_cells_23 use, $FF from the start."
  },
  {
   "address": 1450,
   "type": "line",
   "text": "The colour stash those swaps use, $0E from the start."
  },
  {
   "address": 1482,
   "type": "line",
   "text": "The compose buffer, nine bytes by 63 lines."
  },
  {
   "address": 2112,
   "type": "line",
   "text": "The fighters' graphics: 239 blocks of 63 bytes on a 64-byte stride from $0840, block n at $0800 + 64 n, each three bytes (twelve multicolour pixels) by 21 lines, as a sprite is stored. compose_frame builds each frame from nine of them, three rows of three. Blocks 1 to 16."
  },
  {
   "address": 3136,
   "type": "line",
   "text": "Fighter graphics, blocks 17 to 31."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "Fighter graphics, blocks 32 to 47."
  },
  {
   "address": 5120,
   "type": "line",
   "text": "Fighter graphics, blocks 48 to 63."
  },
  {
   "address": 6144,
   "type": "line",
   "text": "Fighter graphics, blocks 64 to 79."
  },
  {
   "address": 7168,
   "type": "line",
   "text": "Fighter graphics, blocks 80 to 95."
  },
  {
   "address": 8192,
   "type": "line",
   "text": "Fighter graphics, blocks 96 to 111."
  },
  {
   "address": 9216,
   "type": "line",
   "text": "Fighter graphics, blocks 112 to 127."
  },
  {
   "address": 10240,
   "type": "line",
   "text": "Fighter graphics, blocks 128 to 143."
  },
  {
   "address": 11264,
   "type": "line",
   "text": "Fighter graphics, blocks 144 to 159."
  },
  {
   "address": 12288,
   "type": "line",
   "text": "Fighter graphics, blocks 160 to 175."
  },
  {
   "address": 13312,
   "type": "line",
   "text": "Fighter graphics, blocks 176 to 191."
  },
  {
   "address": 14336,
   "type": "line",
   "text": "Fighter graphics, blocks 192 to 207."
  },
  {
   "address": 15360,
   "type": "line",
   "text": "Fighter graphics, blocks 208 to 223."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Fighter graphics, blocks 224 to 239."
  },
  {
   "address": 17408,
   "type": "line",
   "text": "The bitmap's screen colours, 1,000 bytes for 25 rows of 40 cells: the high four bits the colour of a cell's %01 pixels, the low four its %10 pixels (the colour RAM holds the %11 colour). Rows 7 to 22, columns 4 to 35, are the arena of the backdrop on screen, which swap_arena_colours exchanges with $E11C; rows 14 to 21 of it are set to the fighters' colours by colour_strip. Then 16 bytes after the 1,000, $98 each, which nothing reads."
  },
  {
   "address": 18432,
   "type": "line",
   "text": "Sprite shapes $20 to $2C: the parts of a frame that rise above the strip the fighters are drawn in (the top of the head, a fist, the sword), drawn by place_overlay in pairs at X offsets 0 and 24, or one alone at 24 (shape $0A, the overhead chop's frames $1F and $48), multicolour, medium grey."
  },
  {
   "address": 19264,
   "type": "line",
   "text": "Sprite shapes $2D to $39: the same 13 shapes mirrored, for a fighter facing left (shape_offset)."
  },
  {
   "address": 20096,
   "type": "line",
   "text": "Sprite shape $3A, picture $1A: the blood splash (sequence $8A)."
  },
  {
   "address": 20160,
   "type": "line",
   "text": "Sprite shapes $3B to $41, pictures $1B to $21: the head rolling (sequences $80, $81) and at rest ($84)."
  },
  {
   "address": 20608,
   "type": "line",
   "text": "Sprite shapes $42 to $45, pictures $22 to $25: the blood spurting from the neck (sequence $82)."
  },
  {
   "address": 20864,
   "type": "line",
   "text": "Sprite shape $46, picture $26: the head's shadow (sequence $83)."
  },
  {
   "address": 20928,
   "type": "line",
   "text": "Sprite shapes $47 to $52, pictures $27 to $32: the goblin, a top and a bottom half for each picture, walking (sequences $86, $87) and grabbing ($88, $89)."
  },
  {
   "address": 21696,
   "type": "line",
   "text": "Sprite shapes $53 to $7F: 45 body pieces for fighter 1 to wear over its frame (place_overlay), of which 43 are worn: no frame names shapes $44 and $4D (pointers $64 and $6D), though both hold pictures; hi-res in the skill level's colour; flip_sprite_shapes mirrors them all when fighter 1 turns. The first thirteen are exchanged with the shapes at $FC40 by swap_shape_bank, in the ending."
  },
  {
   "address": 22720,
   "type": "line",
   "text": "Sprite shapes $63 to $72: fighter 1's body pieces, continued. $64 and $6D are the two no frame names."
  },
  {
   "address": 23744,
   "type": "line",
   "text": "Sprite shapes $73 to $7F: fighter 1's body pieces, continued."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "The multicolour bitmap as loaded, 25 rows of 40 cells, 320 bytes a row: the title BARBARIAN, the strength displays and the scores at the top (rows 0 to 6), the pillars with their snakes down both sides (columns 0 to 3 and 36 to 39), the arena of the first backdrop, Drax's throne room, Drax on his throne and Mariana at his side, between them (rows 7 to 22, columns 4 to 35; rows 14 to 21 are the strip the fighters are drawn in) and the row for DEMO, or 1PLR at the bottom. Rows 0 to 2."
  },
  {
   "address": 25536,
   "type": "line",
   "text": "The bitmap, rows 3 to 5."
  },
  {
   "address": 26496,
   "type": "line",
   "text": "The bitmap, rows 6 to 8."
  },
  {
   "address": 27456,
   "type": "line",
   "text": "The bitmap, rows 9 to 11."
  },
  {
   "address": 28416,
   "type": "line",
   "text": "The bitmap, rows 12 to 14."
  },
  {
   "address": 29376,
   "type": "line",
   "text": "The bitmap, rows 15 to 17."
  },
  {
   "address": 30336,
   "type": "line",
   "text": "The bitmap, rows 18 to 20."
  },
  {
   "address": 31296,
   "type": "line",
   "text": "The bitmap, rows 21 to 23."
  },
  {
   "address": 32256,
   "type": "line",
   "text": "The bitmap, rows 24 to 24."
  },
  {
   "address": 32576,
   "type": "line",
   "text": "The background colour of the arena band for each backdrop, set by raster_irq at line $72: dark grey ($0B) for both. This and the tables after it sit in the 192 bytes after the bitmap's 8,000."
  },
  {
   "address": 32578,
   "type": "line",
   "text": "Each fighter's column at the start of a bout: 0 for fighter 0 and 31 for fighter 1, off the arena's edges, so they walk on."
  },
  {
   "address": 32580,
   "type": "line",
   "text": "The column each fighter walks back to after a bout or a time-out: 3 for fighter 0, 28 for fighter 1."
  },
  {
   "address": 32582,
   "type": "line",
   "text": "Added to an overlay sprite's shape by facing: 0 facing right, 13 facing left, where the mirrored copies of the 13 raised-part shapes start."
  },
  {
   "address": 32584,
   "type": "line",
   "text": "Turns a frame's step bits for the facing: 0 facing right; $0C facing left, which swaps the back (bit 2) and forward (bit 3) bits by exclusive or."
  },
  {
   "address": 32586,
   "type": "line",
   "text": "Columns added to a fighter's column when it turns round, by its new facing: 3 facing right, -3 ($FD) facing left, so it turns on the spot."
  },
  {
   "address": 32588,
   "type": "line",
   "text": "The screen address of each of the 25 cell rows, $4400 + 40 x row."
  },
  {
   "address": 32638,
   "type": "line",
   "text": "Eight times n for n = 0 to 39: a column's offset into a bitmap row, two bytes each. Also used for a fighter's X (place_sprite_x) and the arena buffer."
  },
  {
   "address": 32718,
   "type": "line",
   "text": "The bitmap address of each of the 25 cell rows, $6000 + 320 x row."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The cartridge signature the KERNAL looks for at $8000 on a reset: the cold-start vector, the warm-start vector (the one RESTORE takes) and the bytes $C3 $C2 $CD $38 $30, \"CBM80\" in PETSCII. Both vectors point to start ($8009), so a reset or RESTORE restarts the game instead of BASIC. The loader's last instruction, jmp ($8000), also starts the game through the first vector."
  },
  {
   "address": 32777,
   "type": "line",
   "text": "The game's entry, from the loader's jmp ($8000) or a reset. Turns interrupts off and sets sound_mode ($B8) to 0, the sound effects (the tune off), then falls into restart."
  },
  {
   "address": 32782,
   "type": "line",
   "text": "The common start and the target of the Q key's restart (restart_game, $94D2): sets the game's variables (init_vars), the processor port ($00 = $2F, $01 = $25: the I/O chips in, BASIC and the KERNAL out), the video chip's bank 1 ($4000-$7FFF) through CIA 2, the hardware IRQ vector to irq ($9511) and the NMI vector to nmi ($9542). Then the video chip: multicolour bitmap ($D011 = $3B, $D016 = $18), the screen at $4400 and the bitmap at $6000 ($D018 = $18), sprite multicolours black and light red, and a raster interrupt at line $FA. Clears the sprites, saves the arena strip, colours the panel, resets the sprite slots and both fighters, and builds the mirror and mask tables. With the tune off (sound_mode positive) it stops CIA 2's timers, turns every CIA interrupt off, then starts CIA 1's timer A (latch $2710, the sound's effects) and timer B (latch $5161, the sound's sequencer) with their interrupts on, silences the sound and fades the volume in. A restart with the tune playing leaves the timers and the sound as they are. Then it enables interrupts and runs main_loop."
  },
  {
   "address": 32955,
   "type": "line",
   "text": "The game's loop, one pass at a time, about five passes a second in play: the panel's animations, the panel's label, the middle number and the strength display, the two-player timeout, the players' sticks, the computer's moves, the arena redrawn from its clean copy, each fighter's next frame, the poses, the decapitation, the goblin, the sprite overlays, the arena copied to the screen, the distance, the hits, the sprite shapes mirrored when asked, the end of a roll past (end_roll_past), the walk-on that starts a bout (walk_on), the walk-off that ends one (walk_off), the idle fighters, the keyboard, and last Drax's throws (drax_throws) and the ending's sprites (scene_sprites), which do nothing outside the ending. Never returns: the jmp at $8103 closes the loop."
  },
  {
   "address": 33030,
   "type": "line",
   "text": "Clears the eight sprite slots the interrupt moves and animates (motion script, picture sequence, direction, speeds and their counters) and sets each sequence's read index to 2, its first entry."
  },
  {
   "address": 33062,
   "type": "line",
   "text": "Puts both fighters back at the start of a bout: frame 0 of no next move, the start column from fighter_start_x ($7F42), the move $80 (standing), facing as their number (player 1, number 0, faces right; number 1 faces left), the panel animation and full strength (reset_strength), and the score shown as 00000 (reset_score_text). Leaves bout_state ($B4) at $FF, the walk-on."
  },
  {
   "address": 33094,
   "type": "line",
   "text": "For fighter X, with A = the panel animation to run: starts that animation at its first entry (bit 7 set in anim_script, $5B), sets the strength to 12 ($93) and the idle counter ($95) to $FF."
  },
  {
   "address": 33111,
   "type": "line",
   "text": "Writes \"00000\" over fighter X's score in its panel message (message $87 or $88, characters 3 to 7)."
  },
  {
   "address": 33139,
   "type": "line",
   "text": "Fills mirror_table ($02AA-$03A9) with each byte value's mirror image as a multicolour pixel row: the four two-bit pixels in the opposite order. The fighters facing left and the mirrored sprite shapes are drawn through it."
  },
  {
   "address": 33164,
   "type": "line",
   "text": "Fills mask_table ($03AA-$04A9): for each byte of fighter graphics, a mask with %11 where a two-bit pixel is 00 (see-through) and %00 where it is drawn. draw_fighter ANDs the background with it before ORing in the fighter."
  },
  {
   "address": 33204,
   "type": "line",
   "text": "Steps the snake animations at the top of the side pillars, one picture each pass: for each fighter (1, then 0) whose anim_script ($5B,x) has bit 7 set, runs anim_step."
  },
  {
   "address": 33217,
   "type": "line",
   "text": "One step of fighter X's snake animation. The script is snake_scripts[$5B,x AND $7F] ($BC98): a header of column, row, width and height in cells, then two-byte entries from offset 4. anim_pos ($5D,x) is the offset of the entry to read. An entry of 4 or more is the address of a picture, copied into the bitmap (anim_draw) at the header's place, and the offset moves on by 2: one picture a pass. An entry below 4 is a command: 0 starts the script again, 1 jumps to the offset in the byte after it (plus 4), 2 starts the script numbered in the byte after it and runs its first step at once, 3 stops (bit 7 of $5B,x cleared, the last picture stays)."
  },
  {
   "address": 33357,
   "type": "line",
   "text": "Copies a picture of $AB cells by $AC cells into the bitmap: from (pointer $75) eight bytes a cell, a row of cells at a time, to (pointer $77), the next row of the bitmap 320 bytes on. The pictures are kept in the bitmap's own order, a cell's eight bytes after another's."
  },
  {
   "address": 33413,
   "type": "line",
   "text": "Prints the label under the arena: DEMO (message $84) while the demo plays, else 1PLR or 2PLR (message $82 plus players, $BD)."
  },
  {
   "address": 33431,
   "type": "line",
   "text": "Prints the two digits between the scores (message $86): in a two-player game the clock ($C8) in seconds, else a 0 and the skill level ($BE), so a one-player game shows 00 to 07."
  },
  {
   "address": 33501,
   "type": "line",
   "text": "Prints both strength displays and both scores. For each fighter the strength (0 to 12, $93,x) picks one of the messages $8B-$97, two rows of six half circles; the column (0 for player 1, 34 for player 2, from strength_columns at $BC91) is written into both of its records before it is printed. Then prints the fighter's score, message $87 or $88."
  },
  {
   "address": 33552,
   "type": "line",
   "text": "The end of a two-player fight on time. When the clock ($C8) has run out in a two-player game, outside the demo and with no fighter rolled past the other ($B2 positive), it sets walking_back ($B5) and walks each fighter back (move $82) to its mark (walk_back_x, $7F44, by facing), standing it there (move $80). When both stand, it clears walking_back, restores both strengths and snakes, sets bout_state ($B4) to $80 for a new walk-on and changes the backdrop (swap_backdrop)."
  },
  {
   "address": 33630,
   "type": "line",
   "text": "The start of each bout. While bout_state ($B4) is negative, outside the select mode, both fighters walk forward (move $81) until they are less than 6 columns apart; the first pass pays any time bonus still owed (time_bonus), resets the clock and starts the walk-on tune ($89-$8B on the three voices) unless voice 1 is busy. Once they are close it sets bout_state to 0, the fight, sets both idle counters ($95, $96) to $FF and, with the tune off, fades the sound out and back in for the effects."
  },
  {
   "address": 33713,
   "type": "line",
   "text": "In a two-player game, outside the demo, when a fighter has just won (winner, $B6, negative), counts the clock down to 0, adding 10 points (score_ten, $BC93) to the winner's score for each second left, printing the score and the clock at each step and waiting a frame between them (wait_ticks). Clears $B6."
  },
  {
   "address": 33792,
   "type": "line",
   "text": "After a death (dead, $AF, negative) and once the loser's body has been dragged off (its column 40 or more), turns the winner back to its usual facing if it faces the other way (move $9D; fighter 0 faces right, fighter 1 left), then walks it back to its mark (move $82, walk_back_x at $7F44). When it stands there, the bout is over: both fighters are reset at their start columns with full strength (scores reset too in the demo), bout_state goes to $FF for a walk-on, and bit 7 of the death, goblin and drag flags is cleared. When fighter 1 lost with its sprite shapes mirrored, it asks for them to be mirrored back (flip_request, $B7). Then: the demo changes backdrop; a one-player game the player lost waits 200 frames and restarts in the demo; a one-player game the player won goes up a skill level and changes the backdrop, or, after the win at level 7, starts the ending (start_ending). The two-player path, which pays the time bonus, never runs on this side."
  },
  {
   "address": 33950,
   "type": "line",
   "text": "The win at skill level 7, the eighth fight, ends the tournament. bout_state ($B4) is set to the backdrop's number, 0 or 1, so the walk-on that walk_off asked for does not start, and if the throne room (backdrop 0) is up swap_backdrop changes to the hall of arches, where Drax stands in the left-hand arch and Mariana in the right. A game won bout by bout is in the hall already: the backdrop changes with every win, and level 7 is the eighth bout. Then any mirroring of fighter 1's pieces still asked for is done (flip_sprite_shapes), scene_flag ($BB) is set, the fighters are drawn once (draw_fighters_once) and, 50 frames later, Drax leaves his arch (swap_cells_13) and the scene's sprite shapes come in (swap_shape_bank). From here the main loop's drax_throws and scene_sprites run the ending."
  },
  {
   "address": 33981,
   "type": "line",
   "text": "Drax's throws, once a main-loop pass while the ending runs (scene_flag, $BB, negative) and the barbarian has not reached him (scene_flag_2, $BC, positive). On a pass with scene_number ($CB) at 0 and no star in flight, Drax throws one from sprite 4: picture sequence $95, X 255 at the right with the ninth bit clear, Y $A2, and a motion script from star_motions picked by bit 0 of the raster line ($D012), $8A high or $8B low, the pick kept in star_kind ($CC); the throw's sound, $DD, goes to all three voices. scene_number goes to 1 with each throw and back to 0 on the next pass, and stays 0 while the star flies: scene_sprites shows Drax throwing for one pass and standing the rest of the time. Once the star's column (its X / 8, less 6) is left of the barbarian's, star_strikes decides whether it hits, and reach_drax whether he has got to Drax."
  },
  {
   "address": 34082,
   "type": "line",
   "text": "The star has reached the barbarian (fighter 0). If his move is one of the dodges for its kind (dodge_lists, by star_kind: a crouch, a leg chop or a roll under a high star, a jump over a low one), the star goes (star_dodged). Otherwise he falls dead (move $9B), the fighters are drawn until 150 frames have passed (draw_fighters_once), YOUR END HAS COME is printed (message $89), and 200 frames later the game restarts in the demo (restart_game)."
  },
  {
   "address": 34143,
   "type": "line",
   "text": "Takes the dodged star away: sprite 4's picture sequence and motion script stop and the sprite is switched off."
  },
  {
   "address": 34162,
   "type": "line",
   "text": "Once the barbarian stands at column 28 or beyond, he has reached Drax: scene_flag_2 ($BC) is set, which ends the throws, and sprites 0 to 4 are switched off (stop_sprites), so Drax and his star vanish. The barbarian stands (move $80) for 25 frames, then walks back (move $82) to his mark, column 3 (walk_back_x), the fighters drawn every 5 frames. The walk-on tune plays ($89, $8A and $8B on the three voices) and, 50 frames later, Mariana leaves her arch (swap_cells_23) and stands in the arena as sprites (scene record 2, scene_sprites). The barbarian walks forward (move $81) to column 23 and raises his sword (move $93); 150 frames later THANKS BIG BOY is printed (message $8A), and 250 frames after that the game restarts in the demo (restart_game). Below column 28 it returns at once."
  },
  {
   "address": 34286,
   "type": "line",
   "text": "Starts the barbarian (fighter 0) on move $80 + A from its first frame: next_move = A, move = A + $80, frame index 0."
  },
  {
   "address": 34297,
   "type": "line",
   "text": "One frame of the fighters outside the main loop, for the ending's waits: the strip cleared (clear_strip), both fighters moved on and drawn (animate_fighters), their overlay sprites placed (place_overlays) and the strip shown (show_strip)."
  },
  {
   "address": 34310,
   "type": "line",
   "text": "Waits A frames: sets wait_count ($CA), which the interrupt's work at line $FA (tick_counters, $9938) counts down, and loops until it is 0. A frame in which the interrupt's work is still busy from the last one does not count."
  },
  {
   "address": 34317,
   "type": "line",
   "text": "Switches off sprite slots 0 to 4 (sequence and motion cleared, their bits out of the sprite enable shadow $17). Used by restart_game."
  },
  {
   "address": 34338,
   "type": "line",
   "text": "Reads the sticks of the human players outside the demo: fighter 0 alone in a one-player game, both in a two-player game ($BD), through read_stick."
  },
  {
   "address": 34351,
   "type": "line",
   "text": "Turns fighter X's joystick into a move. Does nothing during a death, the walk-back on time, a roll past, the walk-on or the select mode, nor while the fighter is in one of the three moves listed at no_input_moves ($BDD3: $9B, the fall to death; $88, the headless body; $93). Reads the port (player 1 on port 2 through $DC00 with X = 0, player 2 on port 1 through $DC01), keeps the five switch bits as pressed-is-1, finds the direction in the stick list for the fighter's facing (stick_lists, $CE58), and passes it to stick_to_move."
  },
  {
   "address": 34408,
   "type": "line",
   "text": "Keeps the stick value in stick ($6D,x) and finds its direction (bits 0-3) in the nine-entry list at (pointer $81): Y = 0 none, 1 forward, 2 back, 3 down, 4 up, 5 down and forward, 6 up and forward, 7 down and back, 8 up and back (the lists swap left and right by facing)."
  },
  {
   "address": 34422,
   "type": "line",
   "text": "Picks the row of moves the stick can lead to from fighter X's current move: move_rows_free ($CE6E) without fire, move_rows_fire ($CE8A) with fire, row k at move_rows + 9 * k ($CEA6). Leaves the row's address in pointer $87 and Y as the direction."
  },
  {
   "address": 34473,
   "type": "line",
   "text": "Starts the move the row gives for direction Y, unless the move under way still holds the stick (next_move, $6B,x, negative) or the row gives that same move, and leaves the taunt ($9A) alone while its direction would keep it. The new move goes in move ($67,x) with bit 7, the row's entry as it stands in next_move ($6B,x), and the frame index ($69,x) back to 0. Every entry but stand and the two walks has bit 7, so such a move holds the stick until its list reaches its command, where animate_fighter clears next_move."
  },
  {
   "address": 34510,
   "type": "line",
   "text": "For the human fighters, in play (not the demo, a death, the walk-on, the walk-back or the select mode): when a fighter's stick has been left alone until its idle counter ($95,x, counted down by the interrupt once a frame from $FF) reaches 0, it starts move $9A, frames $52, $53, $54, $53, $54, $53, $54 and back to standing; any stick input sets the counter back to $FF. A fighter in one of the moves at no_input_moves ($BDD3) is left alone."
  },
  {
   "address": 34566,
   "type": "line",
   "text": "The computer's fighters: both in the demo, fighter 1 in a one-player game, none in a two-player game; nothing during a roll past, a death, the walk-on, the select mode or the walk-back. For the fighter X it reads its opponent's pose ($6F) and the distance between them ($AA, distance_class $CA0E): ai_pose_rows ($CA36) gives the pose's row of eight, the distance class picks a list of eight stick values (ai_choices, $CB9C + 8 * n), and the skill level's 32-entry list (ai_level_picks, $C8FE) picks one of the eight, indexed by ai_counter ($CD AND $1F). In the demo the counter is taken from the low bytes of CIA 1's two timers; in a game it only goes up by one each call, so the computer works through its 32 entries in order. The stick value goes through the same find_stick, stick_row and stick_to_move as a player's, with the stick list for facing right."
  },
  {
   "address": 34693,
   "type": "line",
   "text": "A times 8 as a 16-bit number: low byte in A, high byte in $88."
  },
  {
   "address": 34709,
   "type": "line",
   "text": "Sets each fighter's pose ($6F,x), the frame it shows now: the entry of its move's frame list (move_frames, $BCDC) just before the frame index ($69,x), or the first when the index is 0. The hits and the computer read the pose."
  },
  {
   "address": 34738,
   "type": "line",
   "text": "Tests both fighters' blows (hit_test, fighter 1 then 0) unless a roll past, a death, the walk-on, the select mode, the walk-back on time or the flag at $BB is under way; after a blow that killed (dead, $AF, negative) it gives the winner its move (winner_move)."
  },
  {
   "address": 34768,
   "type": "line",
   "text": "Whether fighter X's blow lands on the other fighter. Only some poses are blows: the twelve in attack_poses ($C31C), each with a list in hit_lists ($C328) of pairs (the victim's pose, a hit record) ending in $FF. When the victim's pose (below $5B) is in the list and the fighters are less than 8 columns apart, bit (distance) of the record's first byte says whether the blow reaches. When it does not, a later pair for the same pose is tried, but its record is not read from hit_records: hit_record_at builds the address's high byte in $88, which is cleared only once, before the loop ($87EE), so a second call starts from what the first left there and reads four bytes elsewhere in memory. The first record that reaches (hit_records, $C808, four bytes) then gives the victim's new move (0 for none), the sound and damage (hit_effect), and the blood and the points (hit_blood, hit_score). One blow a call, and none once a fighter is dead."
  },
  {
   "address": 34881,
   "type": "line",
   "text": "Y = the index of fighter X's pose in attack_poses ($C31C, twelve entries), or $FF when the pose is not a blow."
  },
  {
   "address": 34894,
   "type": "line",
   "text": "Sets pointer $87 to hit record n (the byte at (pointer $8B),Y): hit_records ($C808) plus four times n."
  },
  {
   "address": 34913,
   "type": "line",
   "text": "The record's third byte. Its high four bits pick a sound from hit_sounds ($C8A4, three bytes, a request for each voice, 0 for none), which goes into the three voices' requests ($DD-$DF) with interrupts off. A low four bits other than 0 make the blow hurt: the victim's snake starts its hit animation (script 2 or 3) if it is not already moving, and its strength ($93,x) goes down by one of its 12 points, whatever the value. At 0 the victim is dead: dead ($AF) gets its number with bit 7, and its move becomes $9B, the fall."
  },
  {
   "address": 34998,
   "type": "line",
   "text": "The record's fourth byte, high four bits: 0 for none, else a sprite from hit_sprites ($C8B3, three bytes: picture sequence, Y position, column offset) in the first free sprite slot of the eight (sequence $0292,x not negative), placed from the attacker's column and facing (place_sprite_x), where the blow lands. The low four bits are kept in $C7 for hit_score. Does nothing when all eight slots are busy."
  },
  {
   "address": 35077,
   "type": "line",
   "text": "Adds the points the record's fourth byte names (1 to 4, from hit_points, $C8C8, five decimal digits each) to the attacker's score in its panel message."
  },
  {
   "address": 35125,
   "type": "line",
   "text": "Adds five decimal digits (pointer $5F, offsets 0 to 4) to a five-digit ASCII number (pointer $7F, offsets 0 to 4), last digit first, with the carry passed on and the result kept as ASCII."
  },
  {
   "address": 35148,
   "type": "line",
   "text": "distance ($AA) = the difference between the two fighters' columns ($71, $72)."
  },
  {
   "address": 35167,
   "type": "line",
   "text": "Moves both fighters on by one frame (animate_fighter), drawing them into the arena buffer in turn: fighter 1 first, then 0 on top of it, unless fighter 1 is in one of the moves at drawn_last ($BDCF: $9B the fall, $88 the headless body, $8B, $87), when fighter 0 goes first. None in the select mode; with the flag at $BB set, only fighter 0."
  },
  {
   "address": 35208,
   "type": "line",
   "text": "One frame of fighter X. First the move's sounds: when the move and frame index match an entry of move_sound_moves and move_sound_frames ($C8E1, $C8E8, seven entries), the sound move_sound_requests ($C8EF) is asked of voices 1 and 2. Then the next entry of the move's frame list (move_frames, $BCDC): a frame number goes on (the index moves past it, and next_move, $6B,x, is cleared when the list's command follows, so another move may start), or $FF and a command: 0 loops to the first frame, 1 sets the move to 1, 2 jumps to the index in the next byte, 3 starts the move in the next byte (for the turn, move $9D, also flipping the facing, shifting the column by turn_shift at $7F4A and, for fighter 1, asking for its sprite shapes to be mirrored), anything else holds the last frame. The frame's descriptor (frames, $BDD6) is then composed and drawn: clear_compose, move_fighter, compose_frame, draw_fighter."
  },
  {
   "address": 35393,
   "type": "line",
   "text": "Clears the compose buffer $05CA-$0800 (nine bytes by 63 lines)."
  },
  {
   "address": 35409,
   "type": "line",
   "text": "Builds the fighter's frame in the compose buffer, nine bytes (36 multicolour pixels) wide and 63 lines tall, from the descriptor's first nine bytes: three rows of three block numbers, 0 for none. Block n is the 63 bytes at $0800 + 64 * n, three bytes a line for 21 lines, as a sprite is stored; each nonzero byte goes to its place through block_corners ($CF22) and block_offsets ($CF34). A fighter facing left ($91,x not 0) is then mirrored (mirror_compose)."
  },
  {
   "address": 35482,
   "type": "line",
   "text": "Mirrors the compose buffer left to right: each of its 63 lines of nine bytes is reversed and each byte turned through mirror_table ($02AA)."
  },
  {
   "address": 35532,
   "type": "line",
   "text": "Moves fighter X by the frame descriptor's bytes 9 and 10: byte 9's bit 2 moves it back by byte 10's columns and bit 3 moves it forward, both for a fighter facing right (step_flip, $7F48, swaps them for one facing left). Each step keeps the fighter inside the arena (limit_back, limit_forward) and out of the other fighter (check_overlap)."
  },
  {
   "address": 35597,
   "type": "line",
   "text": "Takes the step ($AE) off fighter X's column, keeping it at 3 or more for a fighter facing right and 0 or more for one facing left."
  },
  {
   "address": 35630,
   "type": "line",
   "text": "Adds the step ($AE) to fighter X's column, keeping it at 28 or less for a fighter facing left; for one facing right only a sum of 32 or more is put back to 28."
  },
  {
   "address": 35657,
   "type": "line",
   "text": "How far the two fighters overlap after a step, as a negative number, or a positive one when they do not ($C3, the gap from fighter 0 to fighter 1 as they face). A fighter rolling forward (move $91) into the other in a jump (move $84) sets roll_past ($B2) to $84 and returns a positive number, so it rolls under. During a death the number returned is always positive. move_fighter pushes the fighter back by a negative result."
  },
  {
   "address": 35710,
   "type": "line",
   "text": "Draws the compose buffer into the arena buffer at fighter X's column: 62 of its 63 lines, eight lines to a cell row (strip_row_offsets, $CF7C), its nine bytes a line into nine cells (cell_offsets, $CF73). Each nonzero byte is drawn through mask_table: the arena's byte ANDed with the mask and ORed with the fighter's, so the background shows through the see-through pixels. The arena buffer has the bitmap's layout, 320 bytes a cell row, from $A6BD for column 0. During a death the drawing is clipped (draw_fighter_clip)."
  },
  {
   "address": 35824,
   "type": "line",
   "text": "draw_fighter for a fighter being dragged off: the same drawing, but bytes for column 40 and beyond are left out."
  },
  {
   "address": 35942,
   "type": "line",
   "text": "Copies the arena strip of the bitmap, cell rows 14 to 21, columns 4 to 35 (eight runs of 256 bytes from $71A0), into the clean copy at $B0DD, which keeps the bitmap's 320 bytes a row, so it runs to $BA9C. Run when a backdrop is set up."
  },
  {
   "address": 35996,
   "type": "line",
   "text": "Copies the clean copy ($B0DD) over the arena buffer ($A6DD onwards), wiping the last frame's fighters."
  },
  {
   "address": 36050,
   "type": "line",
   "text": "Copies the arena buffer back into the bitmap's strip ($71A0 onwards), the eight cell rows of 256 bytes, showing the new frame."
  },
  {
   "address": 36104,
   "type": "line",
   "text": "When flip_request ($B7) is negative, clears its bit 7 and mirrors the 45 sprite shapes at $54C0-$5FFF (sprite pointers $53-$7F), fighter 1's coloured body pieces: in each of a shape's 21 lines the three bytes change places end for end and each goes through mirror_table ($02AA). Bit 0 of $B7 then says which way the shapes face (1: mirrored, for fighter 1 facing right). The turn asks for this when fighter 1 turns round; the end of a bout, the F1 key and the restart ask for it again to put them back."
  },
  {
   "address": 36187,
   "type": "line",
   "text": "Exchanges the 4-by-4-cell picture at cell row 9, column 13 of the bitmap ($6BA8) with the stash at $04AA, and its colour RAM ($D975) with the stash at $05AA (swap_4x4_cells): in the hall of arches, Drax in the left-hand arch. The stash holds plain light blue (fill_cell_stash: bytes $FF, all pixels in the colour RAM's colour, $0E), so the arch is left empty. Run by start_ending, and by restart_game, which puts him back."
  },
  {
   "address": 36223,
   "type": "line",
   "text": "The same for the picture at cell row 9, column 23 ($6BF8, colour RAM $D97F), Mariana in the right-hand arch, with the stashes at $052A and $05BA. Run by reach_drax when she comes down, and by restart_game after it."
  },
  {
   "address": 36259,
   "type": "line",
   "text": "Exchanges four cell rows of 32 bitmap bytes (four cells each) between (pointer $75), 320 bytes a row, and (pointer $77), 32 bytes a row; then four rows of four colour RAM bytes between (pointer $7B), 40 a row, and (pointer $79), four a row."
  },
  {
   "address": 36353,
   "type": "line",
   "text": "Exchanges the 13 sprite shapes at $FC40-$FF7F, under the KERNAL, with the first 13 of fighter 1's body pieces at $54C0-$581F (sprite pointers $53-$5F): Mariana, Drax and his star in, for the ending. Run by start_ending, and by restart_game to put them back."
  },
  {
   "address": 36412,
   "type": "line",
   "text": "Once a main-loop pass while the ending runs (scene_flag, $BB, negative): reads entry $CB of scene_records ($CD09), a pointer to a record of twelve bytes (the four records are at $CD11, $CD1D, $CD29 and $CD35), and from the record starts sprites 3 to 0 again. Byte 0 is sprite 3's picture sequence and byte 3 sprite 0's (0 switches the sprite off); bytes 4 to 7 are their X, with the ninth bit set for all four, and bytes 8 to 11 their Y, plus $A2."
  },
  {
   "address": 36504,
   "type": "line",
   "text": "Changes the backdrop: between bouts, and back to the first when a game is chosen or restarted. Fades the sound out ($E2) and waits for the fade, then with interrupts off turns the background black and the sprites off, flips backdrop ($C4, 0 or 1), wipes the fighters off the screen (clear_strip, show_strip), lifts the arena out of the bitmap (lift_arena), exchanges its screen colours with the stashed backdrop's (swap_arena_colours), colours the fighters' strip (colour_strip), brings in the stashed backdrop and stashes the old one (drop_arena), saves the clean strip (save_strip, clear_strip) and fades the sound back in ($E1)."
  },
  {
   "address": 36557,
   "type": "line",
   "text": "Copies the arena of the bitmap, cell rows 7 to 22 and columns 4 to 35, into the buffer at $A6BD as one 4,096-byte block (256 bytes a cell row), clearing each byte of the bitmap behind it. It runs with $01 = $20 (all RAM) and puts $01 back."
  },
  {
   "address": 36608,
   "type": "line",
   "text": "Exchanges the buffer at $A6BD with the stashed backdrop in the RAM under the I/O chips, $D000-$DFFF (swap_stash), then copies the buffer into the bitmap's arena, cell row 22 first and up to row 7, so the stashed backdrop is drawn and the one that was on screen is stashed. Runs with $01 = $20, all RAM, and puts $01 back."
  },
  {
   "address": 36654,
   "type": "line",
   "text": "For cell row $9B, line $9A of the cell and arena column X (0 to 31): pointer $77 = the bitmap byte (bitmap_row_address, $7FCE, plus 32 for column 4, plus X times 8), pointer $75 = the buffer byte ($A6BD plus 256 for each row after row 7, plus X times 8), and Y = the line."
  },
  {
   "address": 36718,
   "type": "line",
   "text": "Exchanges 16 pages, $A6BD-$B6BC with $D000-$DFFF, a byte at a time."
  },
  {
   "address": 36759,
   "type": "line",
   "text": "Exchanges the arena's colours with the stashed backdrop's: 16 rows of 32 screen bytes from $451C (cell row 7, column 4) with $E11C, and the same rows of colour RAM from $D91C with $E51C, 40 bytes a row on screen and in the stash alike."
  },
  {
   "address": 36849,
   "type": "line",
   "text": "Places the sprites that go over each fighter's frame. For fighter 1 and then fighter 0, unless it has been dragged to column 30 or beyond, the frame's descriptor (frames, $BDD6, from the pose $6F,x) gives a count (byte 11) and four bytes for each sprite: shape, colour, Y and X offset (place_overlay). The sprites are taken from 7 downwards. The first sprite of almost every frame is one of fighter 1's coloured body pieces (shape $33 or more), which fighter 0 leaves out, so only fighter 1 wears them; the others show what rises above the strip the fighters are drawn in: the top of the head, a fist or the sword. Every sprite below the last one used is switched off unless a picture sequence is running on it (blood, the head, the goblin)."
  },
  {
   "address": 36940,
   "type": "line",
   "text": "One overlay sprite for fighter $9D in sprite $A3. Its pointer is the shape byte plus $20: shapes below $33 (pointers $20-$52, $4800-$54BF) have a mirrored copy 13 shapes on for a fighter facing left (shape_offset, $7F46); fighter 1's body pieces ($53-$7F) are used as they are, since flip_sprite_shapes mirrors that whole bank. With bit 7 of the colour byte set the sprite is multicolour in that colour; with it clear it is hi-res in the skill level's colour (level_colours, $C8F6), so fighter 1 changes colour from level to level. Then the Y byte goes into the Y shadow and the X offset to place_sprite_x."
  },
  {
   "address": 37016,
   "type": "line",
   "text": "Sprite $A3's X from fighter $9D's column and an offset (at (pointer $89),Y): X = column times 8 + 24 + offset for a fighter facing right, or + 48 - offset for one facing left, so the offset is mirrored with the fighter. The ninth bit goes into the X MSB shadow ($12)."
  },
  {
   "address": 37080,
   "type": "line",
   "text": "After a roll under a jump (roll_past, $B2, negative), once the fighter in the jump (move $84) has landed (pose 0), turns both fighters round (move $9D), since they now face away from each other. The turn's command ends the roll past."
  },
  {
   "address": 37125,
   "type": "line",
   "text": "When a fighter is in the headless body's move ($88) and no death is recorded yet: records it (dead, $AF = the fighter's number with bit 7) and starts three sprites at its neck, X = column times 8 plus 24 facing right or 72 facing left (death_x_offset, $CE46). Sprite 0 is the head, rolling (sequence $80 or $81 by facing, head_sequences at $CE48) and flying off in an arc that bounces three times (motion $81 or $82, head_motions at $CE50); sprite 1, at Y $CD on the floor, its shadow (sequence $83, motion $83 or $84); sprite 2, at Y $9D, blood spurting from the neck (sequence $82, standing still). Then falls into winner_move."
  },
  {
   "address": 37264,
   "type": "line",
   "text": "Gives the winner its move after a death: winner ($B6) is set to the winner's number with bit 7 (the time bonus is owed). After a decapitation (the loser in move $88) or with the fighters 2 or more columns apart, the winner's move is $93 (frames $3C, $00, $2F, $2F, $30, $31 five times, $30, $2F, $2F, and the last held); otherwise $9C, frames $1B, $1C, $46 and $00, which then goes on into $93."
  },
  {
   "address": 37308,
   "type": "line",
   "text": "Once the loser is lying on the ground (pose $59 or $14) and the goblin has not come yet ($B0 positive), sends it in: two sprites, 3 for its top half (Y $B8) and 4 for its bottom half (Y $CD), at X 39 on the left, walking (sequences $86 and $87) to the right a pixel a frame (motion $85). Sets $B0 to $FF."
  },
  {
   "address": 37391,
   "type": "line",
   "text": "Colours the snakes' squares at the top of the two pillars, cell rows 2 to 5: columns 0 to 3 with screen bytes $73 (yellow and cyan) and colour RAM $0E (light blue), columns 36 to 39 with $7D (yellow and light green) and $05 (green)."
  },
  {
   "address": 37453,
   "type": "line",
   "text": "Colours the strip the fighters are drawn in, cell rows 14 to 21 and columns 4 to 35: screen bytes $C0 (medium grey and black) and colour RAM $0A (light red), the fighters' own three colours, whichever backdrop is behind them."
  },
  {
   "address": 37511,
   "type": "line",
   "text": "Clears the game's flags and states (dead, goblin, drag, roll past, walk-back, flip_request, winner, started, select, the flags at $BB and $BC, players, pause, backdrop, $CB, the interrupt's busy flag and the sequencer's at $98), sets demo ($B3) to 1 and the skill level ($BE) to 4, and fills the cell stashes (fill_cell_stash)."
  },
  {
   "address": 37559,
   "type": "line",
   "text": "Fills $04AA-$05A9 with $FF and $05AA-$05C9 with $0E, the stashes that swap_cells_13 and swap_cells_23 exchange with the screen."
  },
  {
   "address": 37579,
   "type": "line",
   "text": "Sets the clock to 90 seconds ($C8) and its frame count to 50 ($C9)."
  },
  {
   "address": 37588,
   "type": "line",
   "text": "Clears the sprite X and Y shadow ($02-$12) and the enable shadow ($17), switches every sprite off and clears its Y and X expansion, multicolour, priority and collision registers, and makes the border black."
  },
  {
   "address": 37624,
   "type": "line",
   "text": "Prints message A ($80 to $97) into the bitmap. The address is entry A AND $7F of message_pointers ($BABD). A message is one or more records: column, cell row, a colour byte, then characters up to a carriage return ($0D), which starts the next record, or any character the font lacks (each message ends with \"$\"). A to Z are glyphs 1 to 26, and the thirteen characters at font_chars ($BC77: 0 to 9, space and the two half circles, \"(\" and \")\") have their glyph numbers at font_glyphs ($BC84). A glyph's eight bytes (glyph_address) are drawn in two colours: a pixel whose left bit is set takes the colour byte's low four bits, from colour RAM, and the rest its high four bits, from the screen."
  },
  {
   "address": 37786,
   "type": "line",
   "text": "Pointer $73 = the font at $E800 plus 8 times glyph A."
  },
  {
   "address": 37812,
   "type": "line",
   "text": "The keyboard, once a main-loop pass, through CIA 1's matrix (port A as outputs picking a row, port B read back). CTRL and V held together print message $81 (V 05 10 87 and HELLO CLAIRE) in the middle of the arena, with the interrupt's sprite work stopped (pause, $C1), for as long as V is down, then recolour the strip. F1 enters the select mode when no game, death, roll past or select is under way: skill level 0, demo off, the first backdrop, both fighters reset; each pass F1 is held then sets one player ($BD = 0; side 1 switches between one and two here) and resets the clock. F3 fades the sound out and switches sound_mode ($B8): negative plays the title tune on the three voices ($80, $81, $82) and keeps the effects out, positive the effects alone; then fades back in. F5 pauses outside the select mode: the sprite work stops, a delay of about a second (pause_delay) lets go of the key, and the game waits for F5 again; that press is not waited out, so F5 still down at the next pass pauses again. F7 starts the game from the select mode (started, $B9 = $80). Q restarts (restart_game). Port A and B are put back as inputs at the end, for the joysticks."
  },
  {
   "address": 38065,
   "type": "line",
   "text": "Waits for any fade in to finish, then fades the volume out ($E2 = $81: one step every tick of the sequencer) and waits until it is silent, then clears the sound (silence) with interrupts off."
  },
  {
   "address": 38083,
   "type": "line",
   "text": "A busy wait of 65,536 turns of a loop of 13 cycles, about 850,000 cycles: close to 0.9 seconds on a PAL machine."
  },
  {
   "address": 38098,
   "type": "line",
   "text": "The Q key, and the end of a game: switches the sprites off and stops their slots, wipes the fighters off the screen, recolours the strip, puts fighter 1's body pieces back to face left; after the ending puts Drax back in his arch and the scene shapes away (scene_flag, $BB) and Mariana back in hers (scene_flag_2, $BC); and with the second backdrop up changes back to the first. Then resets the stack and starts again at restart ($800E)."
  },
  {
   "address": 38161,
   "type": "line",
   "text": "The interrupt handler, for the video chip and CIA 1. A raster interrupt runs raster_irq. Then CIA 1's interrupt control register is read, which acknowledges it, and kept in $97: timer B's interrupt runs the sound sequencer (sound_tick, $9960) and timer A's the sound effects (effects_tick, $9EDF), each with interrupts enabled again first, so a raster interrupt can break into them. A timer A interrupt that comes while sound_tick runs finds the sequencer busy ($98) and does nothing, but leaves its flags in $97, so the interrupted handler runs effects_tick as soon as sound_tick returns."
  },
  {
   "address": 38210,
   "type": "line",
   "text": "The NMI handler: returns at once, so RESTORE does nothing."
  },
  {
   "address": 38211,
   "type": "line",
   "text": "Splits the screen in two colours. At any line above $FA (the interrupt set for line $72, under the panel) it sets the next interrupt at line $FA and the background colour to the backdrop's (backdrop_colours, $7F40, dark grey for both). At line $FA it sets the next interrupt at line $72 and the background to black for the border and the panel, then, unless the last frame's work is still running (busy, $CE), does this frame's: the sprite registers, and when not paused ($C1) the sprites' motion, the goblin, the motion scripts, the picture sequences and the counters."
  },
  {
   "address": 38301,
   "type": "line",
   "text": "Moves the eight sprites by their direction bits ($027A: 1 up, 2 down, 4 left, 8 right) and speeds ($028A for Y, $0282 for X, in pixels a frame)."
  },
  {
   "address": 38343,
   "type": "line",
   "text": "Sprite X's Y less its Y speed, kept at $32 or more."
  },
  {
   "address": 38363,
   "type": "line",
   "text": "Sprite X's Y plus its Y speed, kept at $E5 or less."
  },
  {
   "address": 38383,
   "type": "line",
   "text": "Sprite X's X less its X speed, with the ninth bit cleared on a borrow. A sprite that moves left of 56 (ninth bit clear) leaves the screen: its picture sequence and motion script stop and it is switched off."
  },
  {
   "address": 38442,
   "type": "line",
   "text": "Sprite X's X plus its X speed, with the ninth bit set on a carry. A sprite at 300 or more (ninth bit set and low byte $2C or more) leaves the screen: its picture sequence stops and it is switched off, and its motion script stops unless it is the goblin's walk ($85)."
  },
  {
   "address": 38510,
   "type": "line",
   "text": "The goblin's work, once a frame while it is on screen ($B0 negative): reaching the head, dragging the body and reaching the body."
  },
  {
   "address": 38524,
   "type": "line",
   "text": "After a decapitation, while the head (sprite 0) is still showing: when the goblin's top half (sprite 3) is exactly 8 pixels left of the head, it kicks the head away: the head and its shadow get new motion scripts ($86, $87, kick_motions at $CE54), the head bouncing off to the right, and new picture sequences ($80 rolling, $83 the shadow, kick_sequences at $CE4C); the kick's sound, $EB, goes to all three voices when voice 1 has no sequence playing and no request."
  },
  {
   "address": 38626,
   "type": "line",
   "text": "While the goblin drags ($B1 negative): starts the drag's sound ($D4, $D5, $D6 on the three voices) whenever voice 1 has no sequence playing and no request, so it repeats; and each time the goblin's X reaches a multiple of 8, moves the loser's body a column right if it is more than 5 columns behind the goblin (goblin_column)."
  },
  {
   "address": 38669,
   "type": "line",
   "text": "After a death, before the drag: when the goblin's column is the body's plus 5, at its far edge (goblin_column), stops it for 100 frames with two pictures of its own (motion scripts $88 and $89, sequences $88 and $89, at grab_motions $CE56 and grab_sequences $CE4E), after which it walks on to the right and the body follows; sets drag ($B1) to $FF and asks voice 1 for sound $E2."
  },
  {
   "address": 38722,
   "type": "line",
   "text": "$C5 = the goblin's column (the X of its top half, sprite 3, with its ninth bit, divided by 8, less 3), and compares the loser's column plus 5 with it (carry set when the body is not behind by more than that, zero when they are equal)."
  },
  {
   "address": 38751,
   "type": "line",
   "text": "For each sprite whose picture sequence ($0292,x) is running (bit 7 set): switches it on in the enable shadow ($17) and steps its sequence (step_sequence)."
  },
  {
   "address": 38772,
   "type": "line",
   "text": "One frame of sprite X's picture sequence (picture_sequences, $CC54). While the picture's frames ($029A,x) last it only counts them down. Then the sequence's header is read again: byte 0, the frames for each picture, and byte 1, the colour in its low four bits, multicolour in bit 7, double width in bit 6 and double height in bit 5. The entry at the read index ($02A2,x, from 2) is the next picture (pointer = entry + $20), or $FF and a command: 0 starts again at the first picture, 1 ends the sequence and switches the sprite off, 2 jumps to the entry in the next byte, and anything else starts the sequence in the next byte."
  },
  {
   "address": 38962,
   "type": "line",
   "text": "For each sprite whose motion script ($025A,x) is running (bit 7 set) steps it (step_motion); the others get no direction, so sprite_motion leaves them still."
  },
  {
   "address": 38984,
   "type": "line",
   "text": "One frame of sprite X's motion script (motion_script_table, $CD4F). Steps are four bytes: direction bits, speeds (X in the high four bits, Y in the low four), frames, command. While a step's frames ($0262,x) last it only counts them down. At the end of a step with command 0 the next step is read (offset $026A,x, four bytes on); command 1 starts the motion script and picture sequence in the next two bytes, 2 starts the motion script in the next byte at once, 3 jumps to the step numbered in the next byte, 4 stops the sprite and switches it off, and any other value asks voice 1 for the sound in the next byte and goes on."
  },
  {
   "address": 39181,
   "type": "line",
   "text": "Clears sprite X's motion counters: frames, command and offset ($0262, $0272, $026A). Returns A = 0."
  },
  {
   "address": 39193,
   "type": "line",
   "text": "Copies the sprite shadow into the video chip: X and Y and the X ninth bits ($02-$12 to $D000-$D010), the colours ($29-$30 to $D027-$D02E), the pointers ($4A-$51 into $47F8-$47FF, after the screen at $4400) and the enable bits ($17 to $D015)."
  },
  {
   "address": 39224,
   "type": "line",
   "text": "The counters the interrupt keeps, once a frame: both idle counters ($95, $96) down to 0; the clock, outside a walk-on, a walk-back or a death and until it reaches 0, one second ($C8) each 50 frames ($C9); and wait_count ($CA) down to 0."
  },
  {
   "address": 39264,
   "type": "line",
   "text": "The sequencer, on each interrupt of CIA 1's timer B: 47.3 times a second at the latch restart sets ($5161), and at the rate a tune's tempo command picks (35.9 a second for tempo 10, which the title tune uses). Returns at once if a tick is already running (busy, $98). For voices 3, 2 and 1 in turn: a waiting request ($DD-$DF) starts its sequence (start_request); then, for a voice with a sequence playing ($0251,x negative) whose note has run its time (duration $0218, two bytes, at 0), reads the sequence on from its offset ($021E): commands are carried out (do_command) until a note (a byte below $C0, play_note) or a command that ends the tick's reading ($E7 negative). Then counts the notes' time down (count_durations), steps a fade (fade_step) and puts the volume ($E0) into the volume register's shadow ($49)."
  },
  {
   "address": 39383,
   "type": "line",
   "text": "Starts note A (the note number times 2) on the voice: the frequency from note_freqs ($9F00 plus 2 times A, two bytes) into the voice's shadow registers; the instrument's effect delay ($0248) and effect flags ($0236) into the running ones ($023C, $0239); the first of its three effect pairs, step and count, from $0200 and $0209 (three each a voice), with the pair index and steps done at 0; the duration ($0218) set to the note length ($0212); the filter sweep restarted from its first phase and its starting cutoff (set_cutoff); the instrument's pulse width ($022A) into the shadow; and the gate switched on (and the test bit off). The read offset moves past the note."
  },
  {
   "address": 39514,
   "type": "line",
   "text": "Carries out a command byte at the read pointer ($D3). $C0 to $CF set the note length ($0212) to length_ticks entry n ($A080: 3, 6, 9, 12, 18, 24, 36, 48, 72, 96, 144, 4, 8, 16, 576 and 768 ticks). $F0 to $F9 are found in command_bytes ($A0C8) and jumped to through command_handlers ($A0D2), with Y on the byte after the command. Any other byte returns without moving the offset, so the reading would take it again for ever; no sequence holds one."
  },
  {
   "address": 39576,
   "type": "line",
   "text": "$F0: waits a note length with no new note, the gate left as it is, and ends the tick's reading."
  },
  {
   "address": 39600,
   "type": "line",
   "text": "$F1: switches the gate off and puts the read offset back to the start of the sequence."
  },
  {
   "address": 39621,
   "type": "line",
   "text": "$F2: ends the voice's sequence ($0251,x = 0), its effects and the filter sweep, and the tick's reading. Most of the sound effects end with it."
  },
  {
   "address": 39638,
   "type": "line",
   "text": "$F3 n: instrument n, twelve bytes at instruments ($A3C9 + 12 n): attack and decay, sustain and release, the waveform (high four bits) and the pulse width's high four bits, inverted (low four), the pulse width's low byte, inverted; the delay between effect steps; the effect flags (bit 7 on, bit 6 steps in pitch, bit 5 steps in pulse width, bit 4 a slide in frequency, bit 3 repeat the pairs, bit 2 ring modulation on triangle, bit 1 sync); and three pairs of a step and a count. The envelope and the waveform go into the voice's shadow registers straight away, the waveform with the gate off."
  },
  {
   "address": 39816,
   "type": "line",
   "text": "$F4 a b: sets the note length to the sum of two lengths, length_ticks entries a and b (their low four bits)."
  },
  {
   "address": 39863,
   "type": "line",
   "text": "$F5 n: the voice goes on with sequence $80 + n from its start, with the filter taken off it. The tunes repeat this way."
  },
  {
   "address": 39892,
   "type": "line",
   "text": "$F6 n: sets CIA 1's timer B, the sequencer's tick, to tempo_latches entry n ($A0A0)."
  },
  {
   "address": 39916,
   "type": "line",
   "text": "$F7 n: plays sequence $80 + n from its start and comes back after it: the sequence and the offset after the command are kept ($0254, $0224) for $F8. One level deep."
  },
  {
   "address": 39957,
   "type": "line",
   "text": "$F8: goes back to the sequence and offset that $F7 kept."
  },
  {
   "address": 39980,
   "type": "line",
   "text": "$F9 n: filter setting n, at filter_settings ($A0E6, eleven bytes each): the delay between sweep steps ($EB), the starting cutoff ($D6 and $D5), the resonance and voice routing with this voice added ($48), the filter mode with voice 3 left on ($49, keeping the volume), and three phases of a step (times 8) and a count of steps."
  },
  {
   "address": 40085,
   "type": "line",
   "text": "Adds A to voice $E5's read offset ($021E, two bytes)."
  },
  {
   "address": 40100,
   "type": "line",
   "text": "Counts each voice's note time ($0218) down by one a tick; when it reaches 0 the gate goes off, so each note has its release before the next. Also counts the fade's timer ($E3) down."
  },
  {
   "address": 40156,
   "type": "line",
   "text": "On each tick of timer A, for each voice with effects on ($0239 bit 7) and its delay ($023C) run out: steps the current pair (pitch_step, pulse_step, slide_step, as the flags say), counts the step and sets the delay again ($0248). When the pair's steps are done it takes the next of the three pairs, after the third going back to the first if the flags' bit 3 is set or switching the effects off. A pair with a count of 0 is passed over."
  },
  {
   "address": 40259,
   "type": "line",
   "text": "With flag bit 6: moves the voice's pitch ($024E, an index into note_freqs) by the pair's step, in quarter tones (two to a semitone), and sets the frequency from the table. Past the top of the table's 192 entries it wraps round to the bottom (190 plus 4 gives 2); below the bottom it lands one entry higher than a wrap would (sbc #$3F with the carry set: 2 less 4 gives 191, and 0 less 1 gives 192, the word after the table)."
  },
  {
   "address": 40331,
   "type": "line",
   "text": "With flag bit 5: adds the pair's step times 16 to the voice's pulse width, kept to twelve bits."
  },
  {
   "address": 40379,
   "type": "line",
   "text": "With flag bit 4: adds the pair's step straight to the voice's frequency, upwards, or downwards when bit 7 of the pair's count is set (the step is then added less 256)."
  },
  {
   "address": 40421,
   "type": "line",
   "text": "On each tick of timer A, when a filter setting with a sweep is on ($EB not 0) and its delay ($E9) has run out: moves the cutoff by the current phase's step (filter_step) and counts the step, setting the delay again; after the phase's count it takes the next of the three phases, and after the third starts again from the first unless the second phase's step ($0232) is 0, when the sweep stops where it is."
  },
  {
   "address": 40476,
   "type": "line",
   "text": "Adds the phase's step ($0230 + 2 x phase) to the cutoff ($DB, $DC), kept to eleven bits, then sets it (set_cutoff)."
  },
  {
   "address": 40496,
   "type": "line",
   "text": "Splits the eleven-bit cutoff ($DB, $DC) into the filter's two registers' shadows: the low three bits into $46 ($D415) and the high eight into $47 ($D416)."
  },
  {
   "address": 40522,
   "type": "line",
   "text": "Starts the request in $DD,x on voice X. A sound effect (any request from $83 on) is dropped while the title tune plays (sound_mode, $B8, negative); the tune's own three ($80 to $82) are always taken. The voice's sequence becomes the request, its effects, time and offset are cleared, its gate goes off, the filter is taken off it and the filter sweep stops."
  },
  {
   "address": 40587,
   "type": "line",
   "text": "When the fade's timer ($E3) has run out: a fade in ($E1 negative) raises the volume ($E0) by one, ending at 15; a fade out ($E2 negative) lowers it by one, ending at 0. The timer is set again from the fade's low seven bits, the ticks between steps."
  },
  {
   "address": 40627,
   "type": "line",
   "text": "Clears the shadow of the SID's 25 registers and the registers themselves, the driver's variables at $0200-$0259 and its zero page, $CF-$EE: the requests, the volume and the fades included."
  },
  {
   "address": 40660,
   "type": "line",
   "text": "Copies the shadow ($31-$49) into the SID's registers, $D400-$D418."
  },
  {
   "address": 40671,
   "type": "line",
   "text": "On each interrupt of CIA 1's timer A, 98.5 times a second (latch $2710), unless the sequencer is running: counts each voice's effect delay ($023C) and the filter sweep's delay ($E9) down, runs the voices' effects (voice_effects) and the sweep (filter_sweep), and writes the shadow into the SID (write_sid). Apart from silence, nothing else writes the SID's registers."
  },
  {
   "address": 40704,
   "type": "line",
   "text": "The SID frequencies of 192 pitches a quarter tone apart, two bytes each, from 268 up to 65,535. A note n in a sequence plays entry 2n, a semitone a step; the effects step through the quarter tones between. Entry 96, note 48, is 4,291: 261.6 Hz at an NTSC machine's clock (middle C), 252.0 Hz at a PAL machine's, 65 cents flat."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "Entries 128 to 191 of note_freqs, which starts at $9F00: the top 64 pitches, from the memory-map edge at $A000."
  },
  {
   "address": 41088,
   "type": "line",
   "text": "Note lengths in sequencer ticks, for the commands $C0-$CF: 3, 6, 9, 12, 18, 24, 36, 48, 72, 96, 144, 4, 8, 16, 576 and 768."
  },
  {
   "address": 41120,
   "type": "line",
   "text": "Seventeen latches for CIA 1's timer B, the sequencer's tick, chosen by the $F6 command: from $F424 (15.8 ticks a second on a PAL machine) down to $30D4 (78.8). Tempo 10, $6B50, is 35.9 ticks a second."
  },
  {
   "address": 41154,
   "type": "line",
   "text": "Each voice's first register in the SID and its shadow: 0, 7 and 14."
  },
  {
   "address": 41157,
   "type": "line",
   "text": "Each voice's first entry in the effect-pair tables at $0200 and $0209: 0, 3 and 6."
  },
  {
   "address": 41160,
   "type": "line",
   "text": "The sequence commands do_command looks up: $F0 to $F9."
  },
  {
   "address": 41170,
   "type": "line",
   "text": "The routine for each command in command_bytes: wait, restart, end, instrument, long note, go to, tempo, call, return, filter."
  },
  {
   "address": 41190,
   "type": "line",
   "text": "Pointers to the sixteen filter settings the $F9 command picks."
  },
  {
   "address": 41222,
   "type": "line",
   "text": "Filter setting 0: cutoff 2047 of 2,047, resonance 1, routing bits $07 plus the voice that asks, high-pass, no sweep."
  },
  {
   "address": 41233,
   "type": "line",
   "text": "Filter setting 1: cutoff 488 of 2,047, resonance 15, routing bits $02 plus the voice that asks, low-pass, a sweep every effect tick: 256 steps of -24."
  },
  {
   "address": 41244,
   "type": "line",
   "text": "Filter setting 2: cutoff 304 of 2,047, resonance 8, routing bits $01 plus the voice that asks, low-pass, a sweep every effect tick: 91 steps of +16."
  },
  {
   "address": 41255,
   "type": "line",
   "text": "Filter setting 3: cutoff 544 of 2,047, resonance 11, routing bits $04 plus the voice that asks, low-pass, a sweep every 4 effect ticks: 51 steps of +8."
  },
  {
   "address": 41266,
   "type": "line",
   "text": "Filter setting 4: cutoff 472 of 2,047, resonance 15, routing bits $02 plus the voice that asks, low-pass, a sweep every effect tick: 256 steps of -24."
  },
  {
   "address": 41277,
   "type": "line",
   "text": "Filter setting 5: cutoff 2040 of 2,047, resonance 0, routing bits $00 plus the voice that asks, low-pass, no sweep."
  },
  {
   "address": 41288,
   "type": "line",
   "text": "Filter setting 6: cutoff 2047 of 2,047, resonance 0, routing bits $00 plus the voice that asks, low-pass, no sweep."
  },
  {
   "address": 41299,
   "type": "line",
   "text": "Filter setting 7: cutoff 288 of 2,047, resonance 15, routing bits $03 plus the voice that asks, band-pass, a sweep every 3 effect ticks: 51 steps of -8."
  },
  {
   "address": 41310,
   "type": "line",
   "text": "Filter setting 8: cutoff 192 of 2,047, resonance 15, routing bits $01 plus the voice that asks, low-pass, a sweep every effect tick: 21 steps of -8."
  },
  {
   "address": 41321,
   "type": "line",
   "text": "Filter setting 9: cutoff 624 of 2,047, resonance 15, routing bits $07 plus the voice that asks, band-pass, a sweep every 10 effect ticks: 51 steps of -8."
  },
  {
   "address": 41332,
   "type": "line",
   "text": "Filter setting 10: cutoff 768 of 2,047, resonance 15, routing bits $01 plus the voice that asks, low-pass, a sweep every effect tick: 51 steps of -8."
  },
  {
   "address": 41343,
   "type": "line",
   "text": "Filter setting 11: cutoff 1168 of 2,047, resonance 15, routing bits $07 plus the voice that asks, band-pass, no sweep."
  },
  {
   "address": 41354,
   "type": "line",
   "text": "Filter setting 12: cutoff 672 of 2,047, resonance 3, routing bits $01 plus the voice that asks, low- and band-pass, no sweep."
  },
  {
   "address": 41365,
   "type": "line",
   "text": "Filter setting 13: cutoff 128 of 2,047, resonance 15, routing bits $05 plus the voice that asks, low-pass, no sweep."
  },
  {
   "address": 41376,
   "type": "line",
   "text": "Filter setting 14: cutoff 528 of 2,047, resonance 15, routing bits $03 plus the voice that asks, low-pass, a sweep every effect tick: 51 steps of -8."
  },
  {
   "address": 41387,
   "type": "line",
   "text": "Filter setting 15: cutoff 160 of 2,047, resonance 15, routing bits $03 plus the voice that asks, low-pass, no sweep."
  },
  {
   "address": 41398,
   "type": "line",
   "text": "Where each sound sequence starts, for the numbers $80 to $F1: the requests in $DD-$DF and the commands $F5 and $F7 name them by number. $80 to $D6 are in the file loaded at $E000 (B3), $D7 to $F1 here."
  },
  {
   "address": 41626,
   "type": "line",
   "text": "Sound sequence $D7, the fall when knocked down, voices 1 and 2 (move_sound_requests): tempo 13, filter 15, 1 note on instrument 46, then ends."
  },
  {
   "address": 41635,
   "type": "line",
   "text": "Sound sequence $D8, nothing on this side asks for it: then ends."
  },
  {
   "address": 41636,
   "type": "line",
   "text": "Sound sequence $D9, nothing on this side asks for it: then ends."
  },
  {
   "address": 41637,
   "type": "line",
   "text": "Sound sequence $DA, voice 1 of hit sound 2, the clash of a blocked blow (hit_sounds): tempo 11, 1 note on instrument 49, then ends."
  },
  {
   "address": 41645,
   "type": "line",
   "text": "Sound sequence $DB, voice 2 of hit sound 2 (hit_sounds): 1 note on instrument 50, then ends."
  },
  {
   "address": 41650,
   "type": "line",
   "text": "Sound sequence $DC, voice 3 of hit sound 2 (hit_sounds): 1 note on instrument 49, then ends."
  },
  {
   "address": 41656,
   "type": "line",
   "text": "Sound sequence $DD, the swing of the body chop, the neck chop, the overhead chop, the leg chop and the flying neck chop, voices 1 and 2 (move_sound_requests); and Drax's star as he throws it, on all three voices (drax_throws): tempo 13, filter 7, 1 note on instrument 51, then ends."
  },
  {
   "address": 41666,
   "type": "line",
   "text": "Sound sequence $DE, the web of death's swing, voices 1 and 2 (move_sound_requests): tempo 13, filter 7, 2 notes on instrument 51, then ends."
  },
  {
   "address": 41676,
   "type": "line",
   "text": "Sound sequence $DF, the head's bounce, asked for by its motion scripts: tempo 14, filter 8, 1 note on instrument 52, then ends."
  },
  {
   "address": 41685,
   "type": "line",
   "text": "Sound sequence $E0, nothing on this side asks for it: tempo 12, filter 12, 1 note on instrument 53, then ends."
  },
  {
   "address": 41694,
   "type": "line",
   "text": "Sound sequence $E1, voices 1 and 2 of hit sound 3, the head taken off (hit_sounds): tempo 10, 1 note on instrument 55, then ends."
  },
  {
   "address": 41701,
   "type": "line",
   "text": "Sound sequence $E2, the goblin grabbing the body (goblin_grabs_body): tempo 16, filter 10, 13 notes on instrument 62, then ends."
  },
  {
   "address": 41739,
   "type": "line",
   "text": "Sound sequence $E3, called by $8B: filter 3, 2 notes on instrument 37, then returns to its caller."
  },
  {
   "address": 41752,
   "type": "line",
   "text": "Sound sequence $E4, called by $85: 14 notes on instruments 29, 28, then returns to its caller."
  },
  {
   "address": 41775,
   "type": "line",
   "text": "Sound sequence $E5, nothing on this side asks for it: then ends."
  },
  {
   "address": 41776,
   "type": "line",
   "text": "Sound sequence $E6, nothing on this side asks for it: then ends."
  },
  {
   "address": 41777,
   "type": "line",
   "text": "Sound sequence $E7, nothing on this side asks for it: then ends."
  },
  {
   "address": 41778,
   "type": "line",
   "text": "Sound sequence $E8, nothing on this side asks for it: then ends."
  },
  {
   "address": 41779,
   "type": "line",
   "text": "Sound sequence $E9, voice 1 of hit sound 1 (hit_sounds): tempo 15, filter 13, 1 note on instrument 59, then ends."
  },
  {
   "address": 41790,
   "type": "line",
   "text": "Sound sequence $EA, voice 3 of hit sound 1 (hit_sounds): filter 13, 2 notes on instrument 59, then ends."
  },
  {
   "address": 41799,
   "type": "line",
   "text": "Sound sequence $EB, the goblin's kick of the head, on all three voices (goblin_kicks_head): tempo 10, filter 14, 1 note on instrument 60, then ends."
  },
  {
   "address": 41808,
   "type": "line",
   "text": "Sound sequence $EC, called by $86: 25 notes on instrument 31, then returns to its caller."
  },
  {
   "address": 41854,
   "type": "line",
   "text": "Sound sequence $ED, called by $87: 25 notes on instrument 31, then returns to its caller."
  },
  {
   "address": 41899,
   "type": "line",
   "text": "Sound sequence $EE, voices 1 and 2 of hit sound 4 (hit_sounds): tempo 13, 1 note on instrument 30, then ends."
  },
  {
   "address": 41906,
   "type": "line",
   "text": "Sound sequence $EF, nothing on this side asks for it: tempo 11, filter 11, 1 note on instrument 61, then ends."
  },
  {
   "address": 41915,
   "type": "line",
   "text": "Sound sequence $F0, nothing on this side asks for it: filter 11, 1 note on instrument 61, then ends."
  },
  {
   "address": 41922,
   "type": "line",
   "text": "Sound sequence $F1, nothing on this side asks for it: filter 11, 1 note on instrument 61, then ends."
  },
  {
   "address": 41929,
   "type": "line",
   "text": "Sixty-three instruments of twelve bytes, chosen by $F3 (cmd_instrument): attack and decay; sustain and release; the waveform in the high four bits and the pulse width's high four bits, inverted, in the low four; the pulse width's low byte, inverted; the delay between effect steps, in effect ticks; the effect flags; three pairs of a step and a count."
  },
  {
   "address": 42685,
   "type": "line",
   "text": "The arena strip as drawn, the bitmap's layout from column 0; also lift_arena's buffer."
  },
  {
   "address": 45277,
   "type": "line",
   "text": "The clean copy of the arena strip."
  },
  {
   "address": 47805,
   "type": "line",
   "text": "Where each message starts, for print_message's numbers $80 to $97."
  },
  {
   "address": 47853,
   "type": "line",
   "text": "Message $80, nothing on either side prints it: \"000\" at column 0, row 22, colours $C1."
  },
  {
   "address": 47860,
   "type": "line",
   "text": "Message $81, CTRL and V (read_keys): \"V 05 10 87\" at column 15, row 17, colours $B1; \"HELLO CLAIRE\" at column 14, row 18, colours $B1."
  },
  {
   "address": 47890,
   "type": "line",
   "text": "Message $82, show_mode, one player: \"1PLR\" at column 18, row 24, colours $C3."
  },
  {
   "address": 47898,
   "type": "line",
   "text": "Message $83, show_mode, two players, which this side never has (players, $BD, stays 0): \"2PLR\" at column 18, row 24, colours $C3."
  },
  {
   "address": 47906,
   "type": "line",
   "text": "Message $84, show_mode, the demo: \"DEMO\" at column 18, row 24, colours $C3."
  },
  {
   "address": 47914,
   "type": "line",
   "text": "Message $85, nothing on either side prints it: \"PAUSED\" at column 17, row 17, colours $B3."
  },
  {
   "address": 47924,
   "type": "line",
   "text": "Message $86, show_middle: \"00\" at column 19, row 5, colours $E3."
  },
  {
   "address": 47930,
   "type": "line",
   "text": "Message $87, player 1's score (show_strength, hit_score, time_bonus): \"00000\" at column 12, row 5, colours $E3."
  },
  {
   "address": 47939,
   "type": "line",
   "text": "Message $88, player 2's score: \"00000\" at column 23, row 5, colours $E3."
  },
  {
   "address": 47948,
   "type": "line",
   "text": "Message $89, the ending, when Drax's star strikes (star_strikes): \"YOUR END HAS COME\" at column 11, row 17, colours $B3."
  },
  {
   "address": 47969,
   "type": "line",
   "text": "Message $8A, the ending, when Mariana comes to the barbarian (reach_drax): \"THANKS BIG BOY\" at column 9, row 17, colours $B3."
  },
  {
   "address": 47987,
   "type": "line",
   "text": "Message $8B, a strength display (show_strength), strength 0 of 12: \"      \" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48007,
   "type": "line",
   "text": "Message $8C, a strength display (show_strength), strength 1 of 12: \"(     \" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48027,
   "type": "line",
   "text": "Message $8D, a strength display (show_strength), strength 2 of 12: \"()    \" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48047,
   "type": "line",
   "text": "Message $8E, a strength display (show_strength), strength 3 of 12: \"()(   \" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48067,
   "type": "line",
   "text": "Message $8F, a strength display (show_strength), strength 4 of 12: \"()()  \" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48087,
   "type": "line",
   "text": "Message $90, a strength display (show_strength), strength 5 of 12: \"()()( \" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48107,
   "type": "line",
   "text": "Message $91, a strength display (show_strength), strength 6 of 12: \"()()()\" and \"      \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48127,
   "type": "line",
   "text": "Message $92, a strength display (show_strength), strength 7 of 12: \"()()()\" and \"(     \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48147,
   "type": "line",
   "text": "Message $93, a strength display (show_strength), strength 8 of 12: \"()()()\" and \"()    \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48167,
   "type": "line",
   "text": "Message $94, a strength display (show_strength), strength 9 of 12: \"()()()\" and \"()(   \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48187,
   "type": "line",
   "text": "Message $95, a strength display (show_strength), strength 10 of 12: \"()()()\" and \"()()  \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48207,
   "type": "line",
   "text": "Message $96, a strength display (show_strength), strength 11 of 12: \"()()()\" and \"()()( \", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48227,
   "type": "line",
   "text": "Message $97, a strength display (show_strength), strength 12 of 12: \"()()()\" and \"()()()\", the half circles in red at rows 0 and 1; the column is written in by show_strength."
  },
  {
   "address": 48247,
   "type": "line",
   "text": "The characters print_message has glyphs for besides A to Z: 0 to 9, space, ( and )."
  },
  {
   "address": 48260,
   "type": "line",
   "text": "The glyph number of each character in font_chars: 27 to 36 for the digits, 0 for the space, 37 and 38 for the half circles."
  },
  {
   "address": 48273,
   "type": "line",
   "text": "The column of each player's strength display: 0 and 34."
  },
  {
   "address": 48275,
   "type": "line",
   "text": "Ten points as five decimal digits, 0 0 0 1 0: what time_bonus adds for each second left."
  },
  {
   "address": 48280,
   "type": "line",
   "text": "Pointers to the four snake scripts (anim_step): 0 and 1 the hit, 2 and 3 the loops they go on to."
  },
  {
   "address": 48288,
   "type": "line",
   "text": "Snake script 0, the left snake (column 0) struck: one picture, then script 2. Header: column 0, row 2, 4 by 4 cells; then two-byte entries: a picture's address in the snake pictures at $E980, or a command."
  },
  {
   "address": 48298,
   "type": "line",
   "text": "Snake script 1, the right snake (column 36) struck: one picture, then script 3. Header: column 36, row 2, 4 by 4 cells; then two-byte entries: a picture's address in the snake pictures at $E980, or a command."
  },
  {
   "address": 48308,
   "type": "line",
   "text": "Snake script 2, the left snake's loop: pictures and a stop. Header: column 0, row 2, 4 by 4 cells; then two-byte entries: a picture's address in the snake pictures at $E980, or a command."
  },
  {
   "address": 48328,
   "type": "line",
   "text": "Snake script 3, the right snake's loop: pictures and a stop. Header: column 36, row 2, 4 by 4 cells; then two-byte entries: a picture's address in the snake pictures at $E980, or a command."
  },
  {
   "address": 48348,
   "type": "line",
   "text": "Pointers to each move's list of frames, for the moves $80 to $9D. A list read to its end ($FF) has ended the move: the stick, the computer or a routine can start another before its next frame."
  },
  {
   "address": 48408,
   "type": "line",
   "text": "Move $80, stand, started by the stick left alone: frames $00, then plays it again."
  },
  {
   "address": 48411,
   "type": "line",
   "text": "Move $81, walk forward, started by the stick forward: frames $01 $02 $03 $33, then plays it again."
  },
  {
   "address": 48417,
   "type": "line",
   "text": "Move $82, walk back, started by the stick back: frames $37 $36 $35 $34, then plays it again."
  },
  {
   "address": 48423,
   "type": "line",
   "text": "Move $83, web of death, started by up and back with fire: frames $04 $05 $06 $07, then plays it again."
  },
  {
   "address": 48429,
   "type": "line",
   "text": "Move $84, jump, started by the stick up: frames $08 $09 $38 $00, then plays it again."
  },
  {
   "address": 48435,
   "type": "line",
   "text": "Move $85, leg chop, started by down with fire, from the crouch: frames $0A $0B $0C $5A $39, then plays it again."
  },
  {
   "address": 48442,
   "type": "line",
   "text": "Move $86, crouch, started by the stick held down: frames $3A, then plays it again."
  },
  {
   "address": 48445,
   "type": "line",
   "text": "Move $87, flying neck chop, started by back with fire: frames $0E $0F $10 $19 $1A $45 $19, then plays it again."
  },
  {
   "address": 48454,
   "type": "line",
   "text": "Move $88, headless body, started by a blow that takes the head, hit records 4 and 5: frames $11 $11 $11 $12 $12 $12 $13 $14, then holds the last frame."
  },
  {
   "address": 48464,
   "type": "line",
   "text": "Move $89, body chop, started by forward with fire: frames $55 $16 $17 $3D $44, then plays it again."
  },
  {
   "address": 48471,
   "type": "line",
   "text": "Move $8A, protect body, started by up and forward: frames $3F $18, then holds the last frame."
  },
  {
   "address": 48475,
   "type": "line",
   "text": "Move $8B, neck chop, started by up with fire: frames $41 $42 $43 $45 $3C, then plays it again."
  },
  {
   "address": 48482,
   "type": "line",
   "text": "Move $8C, kick, started by down and forward with fire: frames $1B $1C $46 $00, then plays it again."
  },
  {
   "address": 48488,
   "type": "line",
   "text": "Move $8D, recoil, started by a blow, in the hit records: frames $1D $1E $00, then plays it again."
  },
  {
   "address": 48493,
   "type": "line",
   "text": "Move $8E, overhead chop, started by down and back with fire: frames $58 $1F $20 $49 $48, then plays it again."
  },
  {
   "address": 48500,
   "type": "line",
   "text": "Move $8F, head butt, started by up and forward with fire: frames $32 $22 $4A, then plays it again."
  },
  {
   "address": 48505,
   "type": "line",
   "text": "Move $90, protect head, started by up and back: frames $50 $4B $51, then holds the last frame."
  },
  {
   "address": 48510,
   "type": "line",
   "text": "Move $91, roll forward, started by down and forward: frames $23 $24 $25 $26, then plays it again."
  },
  {
   "address": 48516,
   "type": "line",
   "text": "Move $92, roll back, started by down and back: frames $29 $2B $2C $2D $2E, then plays it again."
  },
  {
   "address": 48523,
   "type": "line",
   "text": "Move $93, victory, started by winner_move, for the winner: frames $3C $00 $2F $2F $30 $31 $31 $31 $31 $31 $30 $2F $2F, then holds the last frame."
  },
  {
   "address": 48538,
   "type": "line",
   "text": "Move $94, stand up, started by letting go of the crouch: frames $3B, then plays it again."
  },
  {
   "address": 48541,
   "type": "line",
   "text": "Move $95: frames $3E, then plays it again. No stick row, hit record or routine on this side starts it."
  },
  {
   "address": 48544,
   "type": "line",
   "text": "Move $96, lower the guard, started by letting go of the body guard: frames $40, then plays it again."
  },
  {
   "address": 48547,
   "type": "line",
   "text": "Move $97, crouch down, started by the stick down: frames $0D, then plays it again."
  },
  {
   "address": 48550,
   "type": "line",
   "text": "Move $98, end of the roll, started by the stick after a roll forward: frames $28, then plays it again."
  },
  {
   "address": 48553,
   "type": "line",
   "text": "Move $99, knocked down, started by a blow, in the hit records: frames $4C $4D $4E $4F, then plays it again."
  },
  {
   "address": 48559,
   "type": "line",
   "text": "Move $9A, taunt, started by an idle stick, in idle_taunt: frames $52 $53 $54 $53 $54 $53 $54, then goes on to move $80."
  },
  {
   "address": 48569,
   "type": "line",
   "text": "Move $9B, fall dead, started by the last point of strength lost, in hit_effect: frames $0D $56 $56 $56 $57 $21 $59, then holds the last frame."
  },
  {
   "address": 48578,
   "type": "line",
   "text": "Move $9C, kick, then victory, started by winner_move, for a winner close to its victim: frames $1B $1C $46 $00, then goes on to move $93."
  },
  {
   "address": 48585,
   "type": "line",
   "text": "Move $9D, turn round, started by the end of a roll past, the walk-off, or a list's command: frames $0E $0F $10, then goes on to move $80."
  },
  {
   "address": 48591,
   "type": "line",
   "text": "The moves for which fighter 0 is drawn before fighter 1 (animate_fighters): $9B fall dead, $88 headless body, $8B neck chop, $87 flying neck chop."
  },
  {
   "address": 48595,
   "type": "line",
   "text": "Moves the stick cannot break into (read_stick, idle_taunt): $9B fall dead, $88 headless body, $93 victory."
  },
  {
   "address": 48598,
   "type": "line",
   "text": "Pointers to the descriptor of each of the 91 frames $00 to $5A. Several frame numbers share a descriptor."
  },
  {
   "address": 48780,
   "type": "line",
   "text": "Frame $00, in $80 (stand), $84 (jump), $8C (kick), $8D (recoil), $93 (victory), $9C (kick, then victory): blocks 1 2 0 / 3 4 0 / 5 6 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 48796,
   "type": "line",
   "text": "Frame $01, in $81 (walk forward): blocks 1 2 0 / 7 8 0 / 9 10 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 48812,
   "type": "line",
   "text": "Frame $02, in $81 (walk forward): blocks 1 2 0 / 11 12 0 / 13 14 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 48828,
   "type": "line",
   "text": "Frame $03, in $81 (walk forward): blocks 1 2 0 / 15 16 0 / 17 18 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 48844,
   "type": "line",
   "text": "Frame $04, in $83 (web of death): blocks 19 20 0 / 21 22 0 / 23 24 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $34 at Y $AE, X offset 10."
  },
  {
   "address": 48860,
   "type": "line",
   "text": "Frame $05, in $83 (web of death): blocks 25 26 0 / 27 28 0 / 29 30 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $35 at Y $AF, X offset 8."
  },
  {
   "address": 48876,
   "type": "line",
   "text": "Frame $06, in $83 (web of death): blocks 31 32 0 / 33 34 0 / 35 36 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $36 at Y $AD, X offset 10."
  },
  {
   "address": 48892,
   "type": "line",
   "text": "Frame $07, in $83 (web of death): blocks 37 38 0 / 39 40 176 / 41 42 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $37 at Y $AC, X offset 10."
  },
  {
   "address": 48908,
   "type": "line",
   "text": "Frames $08 and $38, in $84 (jump): blocks 43 44 0 / 45 46 0 / 47 48 0 (three rows of three, 0 for none); no step; 3 sprites: fighter 1's body piece $38 at Y $A6, X offset 16; raised part $00 at Y $8D, X offset 0; raised part $01 at Y $8D, X offset 24."
  },
  {
   "address": 48932,
   "type": "line",
   "text": "Frame $09, in $84 (jump): blocks 49 50 0 / 51 52 0 / 53 54 0 (three rows of three, 0 for none); no step; 3 sprites: fighter 1's body piece $39 at Y $A1, X offset 14; raised part $02 at Y $8D, X offset 0; raised part $03 at Y $8D, X offset 24."
  },
  {
   "address": 48956,
   "type": "line",
   "text": "Frame $0A, in $85 (leg chop): blocks 0 0 0 / 55 56 0 / 57 58 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $3A at Y $C5, X offset 12."
  },
  {
   "address": 48972,
   "type": "line",
   "text": "Frames $0B and $39 and $3A, in $85 (leg chop), $86 (crouch): blocks 0 0 0 / 59 60 0 / 57 58 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $3B at Y $C0, X offset 12."
  },
  {
   "address": 48988,
   "type": "line",
   "text": "Frames $0C and $5A, in $85 (leg chop): blocks 0 0 0 / 61 62 65 / 63 64 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $3C at Y $C2, X offset 14."
  },
  {
   "address": 49004,
   "type": "line",
   "text": "Frames $0D and $3B and $3E, in $94 (stand up), $95 (unused), $97 (crouch down), $9B (fall dead): blocks 69 70 0 / 71 72 0 / 73 74 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $3D at Y $B7, X offset 16."
  },
  {
   "address": 49020,
   "type": "line",
   "text": "Frame $0E, in $87 (flying neck chop), $9D (turn round): blocks 75 76 0 / 77 78 0 / 79 80 0 (three rows of three, 0 for none); steps forward 2 columns; 3 sprites: fighter 1's body piece $3E at Y $AF, X offset 14; raised part $04 at Y $8D, X offset 0; raised part $05 at Y $8D, X offset 24."
  },
  {
   "address": 49044,
   "type": "line",
   "text": "Frame $0F, in $87 (flying neck chop), $9D (turn round): blocks 81 82 0 / 83 84 0 / 85 86 0 (three rows of three, 0 for none); steps forward 1 column; 3 sprites: fighter 1's body piece $3F at Y $AA, X offset 18; raised part $06 at Y $8D, X offset 0; raised part $07 at Y $8D, X offset 24."
  },
  {
   "address": 49068,
   "type": "line",
   "text": "Frame $10, in $87 (flying neck chop), $9D (turn round): blocks 87 88 0 / 89 90 0 / 91 92 0 (three rows of three, 0 for none); steps forward 1 column; 3 sprites: fighter 1's body piece $40 at Y $AF, X offset 20; raised part $08 at Y $8D, X offset 0; raised part $09 at Y $8D, X offset 24."
  },
  {
   "address": 49092,
   "type": "line",
   "text": "Frame $11, in $88 (headless body): blocks 93 0 0 / 94 0 0 / 95 0 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $41 at Y $B1, X offset 8."
  },
  {
   "address": 49108,
   "type": "line",
   "text": "Frame $12, in $88 (headless body): blocks 0 0 0 / 0 96 0 / 97 98 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $42 at Y $C0, X offset 28."
  },
  {
   "address": 49124,
   "type": "line",
   "text": "Frame $13, in $88 (headless body): blocks 0 0 0 / 0 99 0 / 100 101 102 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $43 at Y $C8, X offset 40."
  },
  {
   "address": 49140,
   "type": "line",
   "text": "Frame $14, in $88 (headless body): blocks 0 0 0 / 0 0 0 / 104 105 106 (three rows of three, 0 for none); no step; no sprites."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Frames $15 and $3F and $40 and $41 and $47 and $51, in $8A (protect body), $8B (neck chop), $90 (protect head), $96 (lower the guard): blocks 107 108 0 / 109 110 0 / 111 112 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $57 at Y $B2, X offset 10."
  },
  {
   "address": 49168,
   "type": "line",
   "text": "Frames $16 and $44, in $89 (body chop): blocks 116 0 0 / 117 118 0 / 114 115 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $5E at Y $B4, X offset 12."
  },
  {
   "address": 49184,
   "type": "line",
   "text": "Frames $17 and $3D, in $89 (body chop): blocks 119 66 0 / 120 121 124 / 122 123 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $5F at Y $B4, X offset 14."
  },
  {
   "address": 49200,
   "type": "line",
   "text": "Frame $18, in $8A (protect body): blocks 125 126 0 / 127 128 0 / 111 112 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $45 at Y $B1, X offset 10."
  },
  {
   "address": 49216,
   "type": "line",
   "text": "Frame $19, in $87 (flying neck chop): blocks 129 130 0 / 131 132 0 / 133 134 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $46 at Y $B0, X offset 12."
  },
  {
   "address": 49232,
   "type": "line",
   "text": "Frames $1A and $43 and $45, in $87 (flying neck chop), $8B (neck chop): blocks 135 136 141 / 137 138 0 / 139 140 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $47 at Y $AE, X offset 16."
  },
  {
   "address": 49248,
   "type": "line",
   "text": "Frames $1B and $46, in $8C (kick), $9C (kick, then victory): blocks 142 143 0 / 144 145 0 / 146 147 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $48 at Y $AF, X offset 2."
  },
  {
   "address": 49264,
   "type": "line",
   "text": "Frame $1C, in $8C (kick), $9C (kick, then victory): blocks 142 143 0 / 148 149 0 / 146 150 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $48 at Y $AF, X offset 2."
  },
  {
   "address": 49280,
   "type": "line",
   "text": "Frame $1D, in $8D (recoil): blocks 151 0 0 / 153 154 0 / 155 156 0 (three rows of three, 0 for none); steps back 2 columns; 1 sprite: fighter 1's body piece $49 at Y $AE, X offset 8."
  },
  {
   "address": 49296,
   "type": "line",
   "text": "Frame $1E, in $8D (recoil): blocks 157 158 0 / 159 160 0 / 161 162 0 (three rows of three, 0 for none); steps back 2 columns; 1 sprite: fighter 1's body piece $4A at Y $AF, X offset 22."
  },
  {
   "address": 49312,
   "type": "line",
   "text": "Frames $1F and $48, in $8E (overhead chop): blocks 163 164 0 / 165 166 0 / 167 168 0 (three rows of three, 0 for none); no step; 2 sprites: fighter 1's body piece $4B at Y $AF, X offset 16; raised part $0A at Y $8D, X offset 24."
  },
  {
   "address": 49332,
   "type": "line",
   "text": "Frames $20 and $49, in $8E (overhead chop): blocks 169 170 175 / 165 171 0 / 167 168 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $4C at Y $AE, X offset 16."
  },
  {
   "address": 49348,
   "type": "line",
   "text": "Frame $21, in $9B (fall dead): blocks 0 0 0 / 0 0 0 / 232 233 234 (three rows of three, 0 for none); steps back 2 columns; no sprites."
  },
  {
   "address": 49360,
   "type": "line",
   "text": "Frame $22, in $8F (head butt): blocks 178 179 0 / 180 181 0 / 182 183 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $4E at Y $AF, X offset 26."
  },
  {
   "address": 49376,
   "type": "line",
   "text": "Frame $23, in $91 (roll forward): blocks 0 0 0 / 184 185 0 / 186 187 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $4F at Y $BB, X offset 22."
  },
  {
   "address": 49392,
   "type": "line",
   "text": "Frame $24, in $91 (roll forward): blocks 0 0 0 / 0 0 0 / 188 189 0 (three rows of three, 0 for none); steps forward 4 columns; 1 sprite: fighter 1's body piece $50 at Y $D3, X offset 24."
  },
  {
   "address": 49408,
   "type": "line",
   "text": "Frame $25, in $91 (roll forward): blocks 0 0 0 / 0 190 0 / 0 191 0 (three rows of three, 0 for none); steps forward 2 columns; 1 sprite: fighter 1's body piece $51 at Y $D5, X offset 30."
  },
  {
   "address": 49424,
   "type": "line",
   "text": "Frame $26, in $91 (roll forward): blocks 0 0 0 / 0 0 0 / 192 193 0 (three rows of three, 0 for none); steps forward 4 columns; 1 sprite: fighter 1's body piece $52 at Y $D3, X offset 14."
  },
  {
   "address": 49440,
   "type": "line",
   "text": "Frame $27, in no move's list: blocks 0 0 0 / 0 194 0 / 0 195 0 (three rows of three, 0 for none); steps forward 2 columns; no sprites."
  },
  {
   "address": 49452,
   "type": "line",
   "text": "Frame $28, in $98 (end of the roll): blocks 0 0 0 / 196 197 0 / 198 199 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $53 at Y $BD, X offset 14."
  },
  {
   "address": 49468,
   "type": "line",
   "text": "Frame $29, in $92 (roll back): blocks 0 0 0 / 196 197 0 / 198 199 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $53 at Y $BD, X offset 14."
  },
  {
   "address": 49484,
   "type": "line",
   "text": "Frame $2A, in no move's list: blocks 0 0 0 / 0 194 0 / 0 195 0 (three rows of three, 0 for none); steps back 5 columns; no sprites."
  },
  {
   "address": 49496,
   "type": "line",
   "text": "Frame $2B, in $92 (roll back): blocks 0 0 0 / 0 0 0 / 192 193 0 (three rows of three, 0 for none); steps back 3 columns; 1 sprite: fighter 1's body piece $52 at Y $D3, X offset 14."
  },
  {
   "address": 49512,
   "type": "line",
   "text": "Frame $2C, in $92 (roll back): blocks 0 0 0 / 0 190 0 / 0 191 0 (three rows of three, 0 for none); steps back 5 columns; 1 sprite: fighter 1's body piece $51 at Y $D5, X offset 30."
  },
  {
   "address": 49528,
   "type": "line",
   "text": "Frame $2D, in $92 (roll back): blocks 0 0 0 / 0 0 0 / 188 189 0 (three rows of three, 0 for none); steps back 2 columns; 1 sprite: fighter 1's body piece $50 at Y $D3, X offset 24."
  },
  {
   "address": 49544,
   "type": "line",
   "text": "Frame $2E, in $92 (roll back): blocks 0 0 0 / 184 185 0 / 186 187 0 (three rows of three, 0 for none); steps back 2 columns; 1 sprite: fighter 1's body piece $4F at Y $BB, X offset 22."
  },
  {
   "address": 49560,
   "type": "line",
   "text": "Frame $2F, in $93 (victory): blocks 200 201 0 / 202 203 0 / 204 205 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $54 at Y $AD, X offset 16."
  },
  {
   "address": 49576,
   "type": "line",
   "text": "Frame $30, in $93 (victory): blocks 200 206 0 / 202 207 0 / 204 208 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $54 at Y $AD, X offset 16."
  },
  {
   "address": 49592,
   "type": "line",
   "text": "Frame $31, in $93 (victory): blocks 200 209 0 / 202 210 0 / 204 208 0 (three rows of three, 0 for none); no step; 3 sprites: fighter 1's body piece $55 at Y $AD, X offset 16; raised part $0B at Y $8D, X offset 0; raised part $0C at Y $8D, X offset 24."
  },
  {
   "address": 49616,
   "type": "line",
   "text": "Frames $32 and $4A, in $8F (head butt): blocks 211 212 0 / 213 214 0 / 215 216 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $56 at Y $AF, X offset 20."
  },
  {
   "address": 49632,
   "type": "line",
   "text": "Frame $33, in $81 (walk forward): blocks 1 2 0 / 3 4 0 / 5 6 0 (three rows of three, 0 for none); steps forward 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49648,
   "type": "line",
   "text": "Frame $34, in $82 (walk back): blocks 1 2 0 / 3 4 0 / 5 6 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49664,
   "type": "line",
   "text": "Frame $35, in $82 (walk back): blocks 1 2 0 / 7 8 0 / 9 10 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49680,
   "type": "line",
   "text": "Frame $36, in $82 (walk back): blocks 1 2 0 / 11 12 0 / 13 14 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49696,
   "type": "line",
   "text": "Frame $37, in $82 (walk back): blocks 1 2 0 / 15 16 0 / 17 18 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49712,
   "type": "line",
   "text": "Frames $3C and $42, in $8B (neck chop), $93 (victory): blocks 129 130 0 / 131 132 0 / 133 134 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $46 at Y $B0, X offset 12."
  },
  {
   "address": 49728,
   "type": "line",
   "text": "Frame $4B, in $90 (protect head): blocks 107 108 0 / 109 110 0 / 111 112 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $57 at Y $B2, X offset 10."
  },
  {
   "address": 49744,
   "type": "line",
   "text": "Frame $4C, in $99 (knocked down): blocks 151 0 0 / 153 154 0 / 152 177 0 (three rows of three, 0 for none); steps back 2 columns; 1 sprite: fighter 1's body piece $49 at Y $AE, X offset 9."
  },
  {
   "address": 49760,
   "type": "line",
   "text": "Frame $4D, in $99 (knocked down): blocks 0 0 0 / 0 0 0 / 217 218 219 (three rows of three, 0 for none); steps back 3 columns; 1 sprite: fighter 1's body piece $58 at Y $D2, X offset 10."
  },
  {
   "address": 49776,
   "type": "line",
   "text": "Frame $4E, in $99 (knocked down): blocks 0 0 0 / 0 0 0 / 217 218 219 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $58 at Y $D2, X offset 10."
  },
  {
   "address": 49792,
   "type": "line",
   "text": "Frame $4F, in $99 (knocked down): blocks 0 0 0 / 220 221 0 / 222 223 224 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $59 at Y $C4, X offset 22."
  },
  {
   "address": 49808,
   "type": "line",
   "text": "Frame $50, in $90 (protect head): blocks 1 2 0 / 15 16 0 / 17 18 0 (three rows of three, 0 for none); steps back 1 column; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49824,
   "type": "line",
   "text": "Frame $52, in $9A (taunt): blocks 103 113 0 / 3 4 0 / 5 6 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $33 at Y $B0, X offset 14."
  },
  {
   "address": 49840,
   "type": "line",
   "text": "Frame $53, in $9A (taunt): blocks 235 236 0 / 237 238 0 / 5 6 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $5A at Y $AE, X offset 14."
  },
  {
   "address": 49856,
   "type": "line",
   "text": "Frame $54, in $9A (taunt): blocks 239 236 0 / 237 238 0 / 5 6 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $5A at Y $AE, X offset 14."
  },
  {
   "address": 49872,
   "type": "line",
   "text": "Frame $55, in $89 (body chop): blocks 67 0 0 / 68 174 0 / 114 115 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $5D at Y $B4, X offset 10."
  },
  {
   "address": 49888,
   "type": "line",
   "text": "Frame $56, in $9B (fall dead): blocks 0 0 0 / 0 225 0 / 226 227 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $5B at Y $C7, X offset 26."
  },
  {
   "address": 49904,
   "type": "line",
   "text": "Frame $57, in $9B (fall dead): blocks 0 0 0 / 228 229 0 / 230 231 0 (three rows of three, 0 for none); steps back 2 columns; 1 sprite: fighter 1's body piece $5C at Y $CC, X offset 10."
  },
  {
   "address": 49920,
   "type": "line",
   "text": "Frame $58, in $8E (overhead chop): blocks 172 173 0 / 109 110 0 / 111 112 0 (three rows of three, 0 for none); no step; 1 sprite: fighter 1's body piece $57 at Y $B2, X offset 11."
  },
  {
   "address": 49936,
   "type": "line",
   "text": "Frame $59, in $9B (fall dead): blocks 0 0 0 / 0 0 0 / 232 233 234 (three rows of three, 0 for none); no step; no sprites."
  },
  {
   "address": 49948,
   "type": "line",
   "text": "The twelve poses that are blows (hit_test): each is a frame of an attacking move."
  },
  {
   "address": 49960,
   "type": "line",
   "text": "Pointers to each blow's list of victim poses and hit records."
  },
  {
   "address": 49984,
   "type": "line",
   "text": "Blow 0, pose $05 ($83 web of death): 57 pairs of a victim's pose and the hit record for it, ending in $FF; records 6, 14, 16, 19, 20, 21."
  },
  {
   "address": 50099,
   "type": "line",
   "text": "Blow 1, pose $07 ($83 web of death): 58 pairs of a victim's pose and the hit record for it, ending in $FF; records 6, 14, 16, 22, 23, 24."
  },
  {
   "address": 50216,
   "type": "line",
   "text": "Blow 2, pose $0C ($85 leg chop): 61 pairs of a victim's pose and the hit record for it, ending in $FF; records 6, 8, 25, 26, 27, 28."
  },
  {
   "address": 50339,
   "type": "line",
   "text": "Blow 3, pose $17 ($89 body chop): 56 pairs of a victim's pose and the hit record for it, ending in $FF; records 6, 14, 15, 29, 30, 31."
  },
  {
   "address": 50452,
   "type": "line",
   "text": "Blow 4, pose $1A ($87 flying neck chop): 58 pairs of a victim's pose and the hit record for it, ending in $FF; records 0, 4, 5, 6, 11, 13, 36, 37, 38."
  },
  {
   "address": 50569,
   "type": "line",
   "text": "Blow 5, pose $1C ($8C kick, $9C kick, then victory): 50 pairs of a victim's pose and the hit record for it, ending in $FF; records 10, 12."
  },
  {
   "address": 50670,
   "type": "line",
   "text": "Blow 6, pose $20 ($8E overhead chop): 41 pairs of a victim's pose and the hit record for it, ending in $FF; records 6, 13, 15, 16, 32, 33, 34, 35."
  },
  {
   "address": 50753,
   "type": "line",
   "text": "Blow 7, pose $22 ($8F head butt): 30 pairs of a victim's pose and the hit record for it, ending in $FF; records 3."
  },
  {
   "address": 50814,
   "type": "line",
   "text": "Blow 8, pose $24 ($91 roll forward): 49 pairs of a victim's pose and the hit record for it, ending in $FF; records 17, 18."
  },
  {
   "address": 50913,
   "type": "line",
   "text": "Blow 9, pose $25 ($91 roll forward): 46 pairs of a victim's pose and the hit record for it, ending in $FF; records 18."
  },
  {
   "address": 51006,
   "type": "line",
   "text": "Blow 10, pose $26 ($91 roll forward): 46 pairs of a victim's pose and the hit record for it, ending in $FF; records 17, 18."
  },
  {
   "address": 51099,
   "type": "line",
   "text": "Blow 11, pose $43 ($8B neck chop): 54 pairs of a victim's pose and the hit record for it, ending in $FF; records 2, 6, 13, 36, 37, 38."
  },
  {
   "address": 51208,
   "type": "line",
   "text": "Record 0: distances 0 to 3; the victim to $8D (recoil); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51212,
   "type": "line",
   "text": "Record 1: distances 0 to 2; the victim to $8D (recoil); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51216,
   "type": "line",
   "text": "Record 2: distances 0 to 1; the victim to $8D (recoil); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51220,
   "type": "line",
   "text": "Record 3: distance 0; the victim to $99 (knocked down); sound 4; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51224,
   "type": "line",
   "text": "Record 4: distances 0 to 2; the victim to $88 (headless body); sound 3; no damage; no blood; 500 points."
  },
  {
   "address": 51228,
   "type": "line",
   "text": "Record 5: distances 0 to 1; the victim to $88 (headless body); sound 3; no damage; no blood; 500 points."
  },
  {
   "address": 51232,
   "type": "line",
   "text": "Record 6: distances 0 to 3; the victim's move unchanged; sound 2, the clash; no damage; no blood; no points."
  },
  {
   "address": 51236,
   "type": "line",
   "text": "Record 7: distances 0 to 3; the victim to $99 (knocked down); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51240,
   "type": "line",
   "text": "Record 8: distances 0 to 2; the victim to $99 (knocked down); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51244,
   "type": "line",
   "text": "Record 9: distances 0 to 1; the victim to $99 (knocked down); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51248,
   "type": "line",
   "text": "Record 10: distance 0; the victim to $99 (knocked down); sound 1; a point of strength off; no blood; 100 points."
  },
  {
   "address": 51252,
   "type": "line",
   "text": "Record 11: distances 2 to 3; the victim to $8D (recoil); sound 1; a point of strength off; no blood; 200 points."
  },
  {
   "address": 51256,
   "type": "line",
   "text": "Record 12: distances 0 to 1; the victim to $99 (knocked down); sound 1; a point of strength off; no blood; 100 points."
  },
  {
   "address": 51260,
   "type": "line",
   "text": "Record 13: distances 2 to 3; the victim's move unchanged; sound 2, the clash; no damage; no blood; no points."
  },
  {
   "address": 51264,
   "type": "line",
   "text": "Record 14: distances 0 to 2; the victim's move unchanged; sound 2, the clash; no damage; no blood; no points."
  },
  {
   "address": 51268,
   "type": "line",
   "text": "Record 15: distances 1 to 3; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 4; 200 points."
  },
  {
   "address": 51272,
   "type": "line",
   "text": "Record 16: distances 1 to 3; the victim's move unchanged; sound 2, the clash; no damage; no blood; no points."
  },
  {
   "address": 51276,
   "type": "line",
   "text": "Record 17: distance 0; the victim to $99 (knocked down); sound 1; no damage; no blood; no points."
  },
  {
   "address": 51280,
   "type": "line",
   "text": "Record 18: distances 0 to 1; the victim to $99 (knocked down); sound 1; no damage; no blood; no points."
  },
  {
   "address": 51284,
   "type": "line",
   "text": "Record 19: distance 0; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 1; 50 points."
  },
  {
   "address": 51288,
   "type": "line",
   "text": "Record 20: distances 0 to 2; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 1; 50 points."
  },
  {
   "address": 51292,
   "type": "line",
   "text": "Record 21: distances 0 to 1; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 1; 50 points."
  },
  {
   "address": 51296,
   "type": "line",
   "text": "Record 22: distance 0; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 2; 50 points."
  },
  {
   "address": 51300,
   "type": "line",
   "text": "Record 23: distances 0 to 2; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 2; 50 points."
  },
  {
   "address": 51304,
   "type": "line",
   "text": "Record 24: distances 0 to 1; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 2; 50 points."
  },
  {
   "address": 51308,
   "type": "line",
   "text": "Record 25: distances 0 to 2; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 3; 100 points."
  },
  {
   "address": 51312,
   "type": "line",
   "text": "Record 26: distances 0 to 1; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 3; 100 points."
  },
  {
   "address": 51316,
   "type": "line",
   "text": "Record 27: distances 0 to 3; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 3; 100 points."
  },
  {
   "address": 51320,
   "type": "line",
   "text": "Record 28: distance 0; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 3; 100 points."
  },
  {
   "address": 51324,
   "type": "line",
   "text": "Record 29: distances 0 to 1; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 4; 200 points."
  },
  {
   "address": 51328,
   "type": "line",
   "text": "Record 30: distance 0; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 4; 200 points."
  },
  {
   "address": 51332,
   "type": "line",
   "text": "Record 31: distances 0 to 2; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 4; 200 points."
  },
  {
   "address": 51336,
   "type": "line",
   "text": "Record 32: distances 0 to 2; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 5; 100 points."
  },
  {
   "address": 51340,
   "type": "line",
   "text": "Record 33: distances 0 to 1; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 5; 100 points."
  },
  {
   "address": 51344,
   "type": "line",
   "text": "Record 34: distances 0 to 3; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 5; 100 points."
  },
  {
   "address": 51348,
   "type": "line",
   "text": "Record 35: distance 0; the victim to $99 (knocked down); sound 1; a point of strength off; blood sprite 5; 100 points."
  },
  {
   "address": 51352,
   "type": "line",
   "text": "Record 36: distances 0 to 3; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 6; 200 points."
  },
  {
   "address": 51356,
   "type": "line",
   "text": "Record 37: distances 0 to 2; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 6; 200 points."
  },
  {
   "address": 51360,
   "type": "line",
   "text": "Record 38: distances 0 to 1; the victim to $8D (recoil); sound 1; a point of strength off; blood sprite 6; 200 points."
  },
  {
   "address": 51364,
   "type": "line",
   "text": "The five hit sounds, a request for each of the three voices (0 for none): 0 none; 1 $E9, -, $EA; 2 $DA, $DB, $DC; 3 $E1, $E1, -; 4 $EE, $EE, -."
  },
  {
   "address": 51379,
   "type": "line",
   "text": "The blood sprites hit_blood places: picture sequence (all $8A, the splash, red, 10 frames), Y, and X offset from the attacker; entry 0 is none."
  },
  {
   "address": 51400,
   "type": "line",
   "text": "The points a hit adds (hit_score), five decimal digits each: none, 500, 200, 100 and 50."
  },
  {
   "address": 51425,
   "type": "line",
   "text": "Seven moves with a sound of their own (animate_fighter), and with move_sound_frames the frame index it starts on: web of death, body chop, neck chop, overhead chop, leg chop, flying neck chop (at index 2), knocked down (at index 2)."
  },
  {
   "address": 51432,
   "type": "line",
   "text": "The frame index of each move's sound in move_sound_moves."
  },
  {
   "address": 51439,
   "type": "line",
   "text": "The sound of each move in move_sound_moves, asked of voices 1 and 2: $DE for the web of death, $DD for the five chops, $D7 for the fall."
  },
  {
   "address": 51446,
   "type": "line",
   "text": "Fighter 1's body pieces' colour at each skill level, 0 to 7: purple, green, orange, blue, cyan, red, brown, black."
  },
  {
   "address": 51454,
   "type": "line",
   "text": "Pointers to each skill level's list of 32 picks (computer_moves)."
  },
  {
   "address": 51470,
   "type": "line",
   "text": "Skill level 0: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 0 times, 1 0, 2 2, 3 2, 4 2, 5 4, 6 8 and 7 14."
  },
  {
   "address": 51502,
   "type": "line",
   "text": "Skill level 1: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 0 times, 1 2, 2 1, 3 2, 4 3, 5 5, 6 8 and 7 11."
  },
  {
   "address": 51534,
   "type": "line",
   "text": "Skill level 2: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 2 times, 1 2, 2 3, 3 4, 4 4, 5 5, 6 5 and 7 7."
  },
  {
   "address": 51566,
   "type": "line",
   "text": "Skill level 3: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 3 times, 1 3, 2 3, 3 4, 4 4, 5 4, 6 6 and 7 5."
  },
  {
   "address": 51598,
   "type": "line",
   "text": "Skill level 4: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 5 times, 1 5, 2 4, 3 4, 4 4, 5 4, 6 3 and 7 3."
  },
  {
   "address": 51630,
   "type": "line",
   "text": "Skill level 5: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 7 times, 1 5, 2 5, 3 4, 4 4, 5 3, 6 2 and 7 2."
  },
  {
   "address": 51662,
   "type": "line",
   "text": "Skill level 6: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 11 times, 1 8, 2 5, 3 3, 4 2, 5 2, 6 1 and 7 0."
  },
  {
   "address": 51694,
   "type": "line",
   "text": "Skill level 7: 32 picks, each the index (0 to 7) of a reply in the choice list the situation gives; ai_counter steps through them. Index 0 is picked 14 times, 1 8, 2 4, 3 2, 4 2, 5 2, 6 0 and 7 0."
  },
  {
   "address": 51726,
   "type": "line",
   "text": "The distance class (0 to 7) for each distance in columns, 0 to 39: one class a column up to 4, then 5 for 5 and 6, 6 for 7 to 13 and 7 from 14."
  },
  {
   "address": 51766,
   "type": "line",
   "text": "Pointers, by the opponent's pose, to a row of eight choice-list numbers, one for each distance class."
  },
  {
   "address": 51948,
   "type": "line",
   "text": "The computer's choice lists against the poses $00 $01 $02 $03 $34 $35 $36 $37 $44 $45, for distance classes 0 to 7: 0 1 1 6 6 6 4 8."
  },
  {
   "address": 51956,
   "type": "line",
   "text": "The computer's choice lists against the poses $04 $05 $06 $07, for distance classes 0 to 7: 22 5 5 20 20 20 4 8."
  },
  {
   "address": 51964,
   "type": "line",
   "text": "The computer's choice lists against the poses $08 $09 $0D $11 $12 $13 $15 $18 $1A $1C $1D $1E $21 $22 $28 $29 $2A $2B $2C $2D $2E $2F $30 $31 $32 $33 $38 $3C $3D $3E $3F $40 $43 $46 $48 $49 $4A $4B $4C $4F $52 $54 $57, for distance classes 0 to 7: 0 1 1 13 13 13 4 8."
  },
  {
   "address": 51972,
   "type": "line",
   "text": "The computer's choice lists against the poses $0A, for distance classes 0 to 7: 12 18 18 18 20 20 4 8."
  },
  {
   "address": 51980,
   "type": "line",
   "text": "The computer's choice lists against the poses $0B, for distance classes 0 to 7: 12 18 18 20 20 20 4 8."
  },
  {
   "address": 51988,
   "type": "line",
   "text": "The computer's choice lists against the poses $0C, for distance classes 0 to 7: 0 1 1 20 20 20 4 8."
  },
  {
   "address": 51996,
   "type": "line",
   "text": "The computer's choice lists against the poses $0E $0F $10, for distance classes 0 to 7: 16 17 17 7 7 7 4 8."
  },
  {
   "address": 52004,
   "type": "line",
   "text": "The computer's choice lists against the poses $14 $51 $53 $56 $58 $59, for distance classes 0 to 7: 0 6 6 13 13 13 4 8."
  },
  {
   "address": 52012,
   "type": "line",
   "text": "The computer's choice lists against the poses $16 $55, for distance classes 0 to 7: 10 11 11 2 4 3 4 8."
  },
  {
   "address": 52020,
   "type": "line",
   "text": "The computer's choice lists against the poses $17, for distance classes 0 to 7: 10 11 11 13 13 13 4 8."
  },
  {
   "address": 52028,
   "type": "line",
   "text": "Eight bytes no pointer in ai_pose_rows names: a row of choice-list numbers (16 17 17 13 13 13 4 8) nothing reads."
  },
  {
   "address": 52036,
   "type": "line",
   "text": "The computer's choice lists against the poses $20 $47, for distance classes 0 to 7: 14 15 15 13 13 13 4 8."
  },
  {
   "address": 52044,
   "type": "line",
   "text": "The computer's choice lists against the poses $23 $24 $25, for distance classes 0 to 7: 9 9 9 2 4 3 4 8."
  },
  {
   "address": 52052,
   "type": "line",
   "text": "The computer's choice lists against the poses $26 $27 $50, for distance classes 0 to 7: 0 1 1 2 4 3 4 8."
  },
  {
   "address": 52060,
   "type": "line",
   "text": "The computer's choice lists against the poses $39, for distance classes 0 to 7: 19 1 1 20 20 20 4 8."
  },
  {
   "address": 52068,
   "type": "line",
   "text": "The computer's choice lists against the poses $3A $3B, for distance classes 0 to 7: 19 20 20 20 20 20 4 8."
  },
  {
   "address": 52076,
   "type": "line",
   "text": "The computer's choice lists against the poses $41 $42, for distance classes 0 to 7: 16 17 17 6 6 6 4 8."
  },
  {
   "address": 52084,
   "type": "line",
   "text": "The computer's choice lists against the poses $4D $4E, for distance classes 0 to 7: 21 1 1 13 13 13 4 8."
  },
  {
   "address": 52092,
   "type": "line",
   "text": "Eight bytes no pointer in ai_pose_rows names: a row of choice-list numbers (0 0 0 0 0 0 0 0) nothing reads."
  },
  {
   "address": 52100,
   "type": "line",
   "text": "The computer's choice lists against the poses $5A, for distance classes 0 to 7: 12 1 1 20 20 20 4 8."
  },
  {
   "address": 52108,
   "type": "line",
   "text": "The computer's choice lists against the poses $19, for distance classes 0 to 7: 17 17 17 7 7 7 4 8."
  },
  {
   "address": 52116,
   "type": "line",
   "text": "The computer's choice lists against the poses $1B $1F, for distance classes 0 to 7: 20 1 1 13 13 13 4 8."
  },
  {
   "address": 52124,
   "type": "line",
   "text": "Choice list 0: up-fwd+fire, down-fwd+fire, down-back+fire, up-back+fire, down+fire, up+fire, none, fwd+fire."
  },
  {
   "address": 52132,
   "type": "line",
   "text": "Choice list 1: down-back+fire, down+fire, up-back+fire, up+fire, fwd+fire, down+fire, down-back+fire, none."
  },
  {
   "address": 52140,
   "type": "line",
   "text": "Choice list 2: down+fire, fwd, fwd, up-back+fire, up-back+fire, fwd, none, none."
  },
  {
   "address": 52148,
   "type": "line",
   "text": "Choice list 3: back+fire, back+fire, up-back+fire, up-back+fire, fwd, fwd, none, none."
  },
  {
   "address": 52156,
   "type": "line",
   "text": "Choice list 4: fwd, down-fwd, fwd, fwd, fwd, fwd, fwd, fwd."
  },
  {
   "address": 52164,
   "type": "line",
   "text": "Choice list 5: down-fwd, down-fwd, down-fwd, down-fwd, back, back, back, none."
  },
  {
   "address": 52172,
   "type": "line",
   "text": "Choice list 6: down-fwd, down-fwd, down-fwd, down-fwd, fwd, fwd, none, fwd."
  },
  {
   "address": 52180,
   "type": "line",
   "text": "Choice list 7: up-back+fire, down+fire, up-back+fire, down+fire, down-fwd, down-back, down, none."
  },
  {
   "address": 52188,
   "type": "line",
   "text": "Choice list 8: fwd, down-fwd, fwd, fwd, fwd, fwd, fwd, fwd."
  },
  {
   "address": 52196,
   "type": "line",
   "text": "Choice list 9: up, up, back, back, down-back, down, back, none."
  },
  {
   "address": 52204,
   "type": "line",
   "text": "Choice list 10: up-fwd+fire, up-fwd+fire, up-fwd, up-fwd, up-fwd, up-fwd, up-fwd, none."
  },
  {
   "address": 52212,
   "type": "line",
   "text": "Choice list 11: down-fwd, up-fwd, up-fwd, up-fwd, up-fwd, up-fwd, up-fwd, none."
  },
  {
   "address": 52220,
   "type": "line",
   "text": "Choice list 12: down-fwd+fire, down-fwd+fire, up, up, down-back, down-back, down-back, back."
  },
  {
   "address": 52228,
   "type": "line",
   "text": "Choice list 13: back+fire, down-fwd, down-fwd, down-fwd, fwd, fwd, none, fwd."
  },
  {
   "address": 52236,
   "type": "line",
   "text": "Choice list 14: up-fwd+fire, down+fire, down-back, up-back, up-back, up-back, down, back."
  },
  {
   "address": 52244,
   "type": "line",
   "text": "Choice list 15: down+fire, down+fire, up-back, up-back, up-back, up-back, down, none."
  },
  {
   "address": 52252,
   "type": "line",
   "text": "Choice list 16: up-fwd+fire, down-fwd+fire, down-fwd, down-back, down, down, back, down."
  },
  {
   "address": 52260,
   "type": "line",
   "text": "Choice list 17: down+fire, down+fire, down-fwd, down-back, down, down, back, down."
  },
  {
   "address": 52268,
   "type": "line",
   "text": "Choice list 18: down-fwd, down-fwd, up, up, up, down-back, back, none."
  },
  {
   "address": 52276,
   "type": "line",
   "text": "Choice list 19: down-fwd+fire, down-fwd+fire, down-fwd+fire, up-back+fire, up-back+fire, fwd+fire, fwd+fire, none."
  },
  {
   "address": 52284,
   "type": "line",
   "text": "Choice list 20: down-fwd, up-back+fire, up-back+fire, down-fwd, down-fwd, down-fwd, down-fwd, none."
  },
  {
   "address": 52292,
   "type": "line",
   "text": "Choice list 21: down-fwd+fire, up-back+fire, down-fwd+fire, down-fwd+fire, down-fwd, down-fwd+fire, down-fwd+fire, none."
  },
  {
   "address": 52300,
   "type": "line",
   "text": "Choice list 22: down-fwd, down-fwd+fire, down-fwd, up-back+fire, down-fwd, up-back+fire, down-fwd, none."
  },
  {
   "address": 52308,
   "type": "line",
   "text": "Pointers to the 22 sprite picture sequences $80 to $95 (step_sequence)."
  },
  {
   "address": 52352,
   "type": "line",
   "text": "Picture sequence $80, the head rolling, facing right: 4 frames a picture, multicolour, medium grey; pictures $1C $21 $20 $1F $1E $1D, again."
  },
  {
   "address": 52362,
   "type": "line",
   "text": "Picture sequence $81, the head rolling, facing left: 4 frames a picture, multicolour, medium grey; pictures $1B $1D $1E $1F $20 $21, again."
  },
  {
   "address": 52372,
   "type": "line",
   "text": "Picture sequence $82, blood spurting from the neck: 4 frames a picture, hi-res, red; pictures $22 $22 $23 $23 $24 $24 $25 $25, then the sprite goes off."
  },
  {
   "address": 52384,
   "type": "line",
   "text": "Picture sequence $83, the head's shadow: 1 frame a picture, hi-res, black; pictures $26, again."
  },
  {
   "address": 52389,
   "type": "line",
   "text": "Picture sequence $84 (also $85), the head at rest: 1 frame a picture, multicolour, medium grey; pictures $1E, again."
  },
  {
   "address": 52394,
   "type": "line",
   "text": "A copy of the sequence before it, which no pointer names: $84 and $85 both point at $CCA5."
  },
  {
   "address": 52399,
   "type": "line",
   "text": "Picture sequence $86, the goblin's top half walking: 8 frames a picture, multicolour, green; pictures $27 $29 $2B $2D, again."
  },
  {
   "address": 52407,
   "type": "line",
   "text": "Picture sequence $87, the goblin's bottom half walking: 8 frames a picture, multicolour, green; pictures $28 $2A $2C $2E, again."
  },
  {
   "address": 52415,
   "type": "line",
   "text": "Picture sequence $88, the goblin's top half grabbing: 8 frames a picture, multicolour, green; pictures $2F $31, again."
  },
  {
   "address": 52421,
   "type": "line",
   "text": "Picture sequence $89, the goblin's bottom half grabbing: 8 frames a picture, multicolour, green; pictures $30 $32, again."
  },
  {
   "address": 52427,
   "type": "line",
   "text": "Picture sequence $8A, a blood splash: 10 frames a picture, hi-res, red; pictures $1A, then the sprite goes off."
  },
  {
   "address": 52432,
   "type": "line",
   "text": "Picture sequence $8B, Mariana's head (scene records 2 and 3): 1 frame a picture, multicolour, red; pictures $33, again."
  },
  {
   "address": 52437,
   "type": "line",
   "text": "Picture sequence $8C, Mariana's body (scene record 2): 1 frame a picture, multicolour, red; pictures $34, again."
  },
  {
   "address": 52442,
   "type": "line",
   "text": "Picture sequence $8D, Mariana's legs (scene records 2 and 3): 1 frame a picture, multicolour, red; pictures $35, again."
  },
  {
   "address": 52447,
   "type": "line",
   "text": "Picture sequence $8E, a second body for Mariana, in scene record 3, which nothing shows: 1 frame a picture, multicolour, red; pictures $36, again."
  },
  {
   "address": 52452,
   "type": "line",
   "text": "Picture sequence $8F, Drax's head (scene record 0): 1 frame a picture, multicolour, purple; pictures $37, again."
  },
  {
   "address": 52457,
   "type": "line",
   "text": "Picture sequence $90, Drax's robe, standing (scene record 0): 1 frame a picture, multicolour, purple; pictures $38, again."
  },
  {
   "address": 52462,
   "type": "line",
   "text": "Picture sequence $91, the foot of Drax's robe (scene records 0 and 1): 1 frame a picture, multicolour, purple; pictures $39, again."
  },
  {
   "address": 52467,
   "type": "line",
   "text": "Picture sequence $92, Drax's throwing arm (scene record 1): 1 frame a picture, multicolour, purple; pictures $3A, again."
  },
  {
   "address": 52472,
   "type": "line",
   "text": "Picture sequence $93, Drax's head as he throws (scene record 1): 1 frame a picture, multicolour, purple; pictures $3B, again."
  },
  {
   "address": 52477,
   "type": "line",
   "text": "Picture sequence $94, Drax's robe as he throws (scene record 1): 1 frame a picture, multicolour, purple; pictures $3C, again."
  },
  {
   "address": 52482,
   "type": "line",
   "text": "Picture sequence $95, the star Drax throws (drax_throws): 2 frames a picture, hi-res, white; pictures $3D $3E $3F, again."
  },
  {
   "address": 52489,
   "type": "line",
   "text": "Pointers to four records of twelve bytes for scene_sprites: sprites 3 to 0 each get a picture sequence (0 for none), an X (plus 256) and a Y (plus $A2). Records 0 and 1 stand Drax in his purple robes (sequences $8F to $94) at the right of the screen, standing and throwing, records 2 and 3 Mariana (sequences $8B to $8E), from the shapes swap_shape_bank brings in from $FC40. The ending shows records 0 and 1 by turns while Drax throws, then 2; nothing shows record 3."
  },
  {
   "address": 52497,
   "type": "line",
   "text": "Scene record 0: sequences $00 $8F $90 $91, X $00 $18 $18 $18, Y $00 $00 $15 $2A."
  },
  {
   "address": 52509,
   "type": "line",
   "text": "Scene record 1: sequences $92 $93 $94 $91, X $00 $18 $18 $18, Y $00 $00 $15 $2A."
  },
  {
   "address": 52521,
   "type": "line",
   "text": "Scene record 2: sequences $00 $8B $8C $8D, X $00 $00 $00 $00, Y $00 $00 $15 $2A."
  },
  {
   "address": 52533,
   "type": "line",
   "text": "Scene record 3: sequences $00 $8B $8E $8D, X $00 $00 $00 $00, Y $00 $00 $15 $2A."
  },
  {
   "address": 52545,
   "type": "line",
   "text": "The motion script of Drax's star by its kind, picked at random: $8A thrown high, straight along, $8B thrown low, falling then along."
  },
  {
   "address": 52547,
   "type": "line",
   "text": "Pointers to the moves that dodge each kind of star (star_strikes): $CD47 for the high one, $CD4B for the low one."
  },
  {
   "address": 52551,
   "type": "line",
   "text": "The moves a high star passes over: $86 crouch, $85 leg chop, $91 roll forward, $92 roll back. The crouch counts once it is down, $86, and not while going down, $97."
  },
  {
   "address": 52555,
   "type": "line",
   "text": "The move a low star passes under: $84 jump; then $FF three times, which no move matches."
  },
  {
   "address": 52559,
   "type": "line",
   "text": "Pointers to the twelve motion scripts $80 to $8B (step_motion)."
  },
  {
   "address": 52583,
   "type": "line",
   "text": "Motion script $80, standing still: 256 frames still, then script $80."
  },
  {
   "address": 52588,
   "type": "line",
   "text": "Motion script $81, the head flying off to the right: 4 frames up+right (X 2, Y 2 a frame); 4 frames up+right (X 2, Y 1 a frame); 4 frames right (X 2, Y 0 a frame); 4 frames down+right (X 2, Y 1 a frame); 4 frames down+right (X 2, Y 2 a frame); 4 frames down+right (X 2, Y 4 a frame); 4 frames down+right (X 2, Y 8 a frame); 1 frame down (X 0, Y 2 a frame), sound $DF; 2 frames up+right (X 2, Y 2 a frame); 4 frames up+right (X 2, Y 1 a frame); 2 frames right (X 2, Y 0 a frame); 4 frames down+right (X 2, Y 1 a frame); 2 frames down+right (X 2, Y 2 a frame), sound $DF; 2 frames up+right (X 2, Y 1 a frame); 2 frames right (X 2, Y 0 a frame); 2 frames down+right (X 2, Y 1 a frame), sound $DF; 12 frames right (X 2, Y 0 a frame), then script $80 with sequence $84."
  },
  {
   "address": 52661,
   "type": "line",
   "text": "Motion script $82, the head flying off to the left: 4 frames up+left (X 2, Y 2 a frame); 4 frames up+left (X 2, Y 1 a frame); 4 frames left (X 2, Y 0 a frame); 4 frames down+left (X 2, Y 1 a frame); 4 frames down+left (X 2, Y 2 a frame); 4 frames down+left (X 2, Y 4 a frame); 4 frames down+left (X 2, Y 8 a frame); 1 frame down (X 0, Y 2 a frame), sound $DF; 2 frames up+left (X 2, Y 2 a frame); 4 frames up+left (X 2, Y 1 a frame); 2 frames left (X 2, Y 0 a frame); 4 frames down+left (X 2, Y 1 a frame); 2 frames down+left (X 2, Y 2 a frame), sound $DF; 2 frames up+left (X 2, Y 1 a frame); 2 frames left (X 2, Y 0 a frame); 2 frames down+left (X 2, Y 1 a frame), sound $DF; 12 frames left (X 2, Y 0 a frame), then script $80 with sequence $85."
  },
  {
   "address": 52734,
   "type": "line",
   "text": "Motion script $83, the shadow following the head right: 62 frames right (X 2, Y 0 a frame), then script $80."
  },
  {
   "address": 52739,
   "type": "line",
   "text": "Motion script $84, the shadow following the head left: 62 frames left (X 2, Y 0 a frame), then script $80."
  },
  {
   "address": 52744,
   "type": "line",
   "text": "Motion script $85, the goblin walking right: 184 frames right (X 1, Y 0 a frame); 184 frames right (X 1, Y 0 a frame), then off."
  },
  {
   "address": 52752,
   "type": "line",
   "text": "Motion script $86, the head kicked away: 9 frames up+right (X 3, Y 2 a frame); 4 frames up+right (X 3, Y 1 a frame); 9 frames right (X 3, Y 0 a frame); 4 frames down+right (X 3, Y 1 a frame); 9 frames down+right (X 3, Y 2 a frame), sound $DF; 1 frame still, then script $86."
  },
  {
   "address": 52778,
   "type": "line",
   "text": "Motion script $87, the shadow following the kicked head: 184 frames right (X 3, Y 0 a frame), then off."
  },
  {
   "address": 52782,
   "type": "line",
   "text": "Motion script $88, the goblin's top half grabbing: 100 frames still, then script $85 with sequence $86."
  },
  {
   "address": 52788,
   "type": "line",
   "text": "Motion script $89, the goblin's bottom half grabbing: 100 frames still, then script $85 with sequence $87."
  },
  {
   "address": 52794,
   "type": "line",
   "text": "Motion script $8A, Drax's star thrown high: 64 frames left (X 4, Y 0 a frame), then off."
  },
  {
   "address": 52798,
   "type": "line",
   "text": "Motion script $8B, Drax's star thrown low: 8 frames down+left (X 4, Y 4 a frame); 56 frames left (X 4, Y 0 a frame), then off."
  },
  {
   "address": 52806,
   "type": "line",
   "text": "The X offset of the decapitation's three sprites from the fighter's column, by facing: 24 and 72."
  },
  {
   "address": 52808,
   "type": "line",
   "text": "The head's picture sequence by facing: $80, $81."
  },
  {
   "address": 52810,
   "type": "line",
   "text": "The head at rest by facing, $84 and $85: no instruction reads these; the head's motion scripts name the two sequences themselves."
  },
  {
   "address": 52812,
   "type": "line",
   "text": "The sequences for the head and its shadow when the goblin kicks: $80, $83."
  },
  {
   "address": 52814,
   "type": "line",
   "text": "The goblin's two halves' picture sequences while it grabs the body: $88, $89."
  },
  {
   "address": 52816,
   "type": "line",
   "text": "The head's motion script by facing: $81, $82."
  },
  {
   "address": 52818,
   "type": "line",
   "text": "The shadow's motion script by facing: $83, $84."
  },
  {
   "address": 52820,
   "type": "line",
   "text": "The head's and the shadow's scripts when kicked: $86, $87."
  },
  {
   "address": 52822,
   "type": "line",
   "text": "The goblin's two halves' motion scripts while it grabs the body, which hold it still for 100 frames: $88, $89."
  },
  {
   "address": 52824,
   "type": "line",
   "text": "Pointers to the stick list for each facing: the nine stick values in find_stick's order (none, forward, back, down, up, down-forward, up-forward, down-back, up-back), forward being right ($08) for a fighter facing right and left ($04) for one facing left."
  },
  {
   "address": 52828,
   "type": "line",
   "text": "Facing right: 0, 8, 4, 2, 1, $0A, 9, 6, 5. computer_moves always uses this list."
  },
  {
   "address": 52837,
   "type": "line",
   "text": "Facing left: 0, 4, 8, 2, 1, 6, 5, $0A, 9."
  },
  {
   "address": 52846,
   "type": "line",
   "text": "For each move $80 to $9B, the row of moves the stick leads to without fire (stick_row)."
  },
  {
   "address": 52874,
   "type": "line",
   "text": "For each move $80 to $9B, the row of moves the stick leads to with fire."
  },
  {
   "address": 52902,
   "type": "line",
   "text": "Row 0: none stand, forward walk forward, back walk back, down crouch down, up jump, down-forward roll forward, up-forward protect body, down-back roll back, up-back protect head."
  },
  {
   "address": 52911,
   "type": "line",
   "text": "Row 1: none stand up, forward stand up, back stand up, down crouch, up stand up, down-forward roll forward, up-forward stand up, down-back roll back, up-back stand up."
  },
  {
   "address": 52920,
   "type": "line",
   "text": "Row 2: none stand, forward walk forward, back walk back, down crouch down, up jump, down-forward roll forward, up-forward protect body, down-back roll back, up-back protect head."
  },
  {
   "address": 52929,
   "type": "line",
   "text": "Row 3: none stand, forward walk forward, back walk back, down crouch, up jump, down-forward roll forward, up-forward protect body, down-back roll back, up-back protect head."
  },
  {
   "address": 52938,
   "type": "line",
   "text": "Row 4: none lower the guard, forward walk forward, back walk back, down crouch down, up jump, down-forward roll forward, up-forward protect body, down-back roll back, up-back protect head."
  },
  {
   "address": 52947,
   "type": "line",
   "text": "Row 5: none end of the roll, forward end of the roll, back end of the roll, down crouch, up end of the roll, down-forward end of the roll, up-forward end of the roll, down-back end of the roll, up-back end of the roll."
  },
  {
   "address": 52956,
   "type": "line",
   "text": "Row 6: none crouch, forward crouch, back crouch, down crouch, up crouch, down-forward crouch, up-forward crouch, down-back crouch, up-back crouch."
  },
  {
   "address": 52965,
   "type": "line",
   "text": "Row 7: none stand, forward walk forward, back walk back, down stand, up jump, down-forward stand, up-forward protect body, down-back stand, up-back protect head."
  },
  {
   "address": 52974,
   "type": "line",
   "text": "Row 8: none stand, forward body chop, back flying neck chop, down crouch down, up neck chop, down-forward kick, up-forward head butt, down-back overhead chop, up-back web of death."
  },
  {
   "address": 52983,
   "type": "line",
   "text": "Row 9: none stand up, forward stand up, back stand up, down leg chop, up stand up, down-forward stand up, up-forward stand up, down-back stand up, up-back stand up."
  },
  {
   "address": 52992,
   "type": "line",
   "text": "Row 10: none leg chop, forward leg chop, back leg chop, down leg chop, up leg chop, down-forward leg chop, up-forward leg chop, down-back leg chop, up-back leg chop."
  },
  {
   "address": 53001,
   "type": "line",
   "text": "Row 11: none stand, forward body chop, back flying neck chop, down crouch down, up neck chop, down-forward kick, up-forward head butt, down-back overhead chop, up-back stand."
  },
  {
   "address": 53010,
   "type": "line",
   "text": "The bit of each sprite, 1 to $80."
  },
  {
   "address": 53018,
   "type": "line",
   "text": "Each sprite's bit cleared, $FE to $7F."
  },
  {
   "address": 53026,
   "type": "line",
   "text": "Where each of a frame's nine blocks goes in the compose buffer, three rows of three: $05CA plus 3 for each block across and 189 (21 lines of nine bytes) for each row down."
  },
  {
   "address": 53044,
   "type": "line",
   "text": "For each of a block's 63 bytes, its offset from the block's corner in the compose buffer: 9 a line, 3 bytes a line."
  },
  {
   "address": 53107,
   "type": "line",
   "text": "The offset of each of the compose buffer's nine bytes a line in the arena buffer, eight bytes a cell, the last byte first."
  },
  {
   "address": 53116,
   "type": "line",
   "text": "The offset of each of the strip's eight cell rows in the arena buffer: 320 bytes a row."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "The other backdrop's arena, the hall of arches with Drax in the left-hand arch and Mariana in the right, loaded as V1 and copied here under the I/O chips by the loader: cell rows 7 to 22, columns 4 to 35, 256 bytes a row in the bitmap's order (drop_arena exchanges it with the one on screen). Rows 7 to 10."
  },
  {
   "address": 54272,
   "type": "line",
   "text": "The stashed arena, rows 11 to 14."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "The stashed arena, rows 15 to 18."
  },
  {
   "address": 56320,
   "type": "line",
   "text": "The stashed arena, rows 19 to 22."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "The other backdrop's screen colours, a whole screen of 1,000 bytes and 24 after; swap_arena_colours exchanges rows 7 to 22, columns 4 to 35 ($E11C on) with the screen's, and nothing reads the rest."
  },
  {
   "address": 58368,
   "type": "line",
   "text": "The other backdrop's colour RAM, low four bits a cell, 1,000 bytes and 24 after; swap_arena_colours exchanges rows 7 to 22, columns 4 to 35 ($E51C on) with colour RAM's."
  },
  {
   "address": 59392,
   "type": "line",
   "text": "print_message's font: 39 glyphs of eight bytes, glyph 0 a space, 1 to 26 A to Z, 27 to 36 the digits, 37 and 38 the half circles of the strength display; a pixel pair is drawn in the colour RAM colour when its left bit is set. Then 72 zero bytes, room for nine more glyphs."
  },
  {
   "address": 59776,
   "type": "line",
   "text": "Eight pictures of 4 by 4 cells for the snakes on the pillars, 128 bytes each in the bitmap's order (anim_draw)."
  },
  {
   "address": 60800,
   "type": "line",
   "text": "The sound sequences $80 to $D6: the music, Richard Joseph's, and some effects."
  },
  {
   "address": 60822,
   "type": "line",
   "text": "Sound sequence $81, the title tune's voice 2, asked for by F3; gone on to from $D5: filter 1, plays $92 $93 $94 $92 $93 $95 $92 $93 $94 $96 $97 $92 $93 $94 $92 $93 $95 $92 $93 $94 $96 $9E, then goes on to $84."
  },
  {
   "address": 60870,
   "type": "line",
   "text": "Sound sequence $82, the title tune's voice 3, asked for by F3; gone on to from $D6: plays $98 $99 $98 $99 $98 $99 $98 $9A $98 $99 $98 $99 $9B $9C $98 $99 $98 $99 $98 $99 $98 $9A $98 $99 $98 $99 $9B $9F, then goes on to $85."
  },
  {
   "address": 60928,
   "type": "line",
   "text": "Sound sequence $83, gone on to from $80: tempo 10, plays $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A0 $A3 $A0 $A0 $A4 $A5 $A6 $A5 $A7 $A8 $B4 $B7 $BA, then goes on to $86."
  },
  {
   "address": 60996,
   "type": "line",
   "text": "Sound sequence $84, gone on to from $81: filter 4, 6, plays $A1 $D3 $D3 $92 $A9 $AA $92 $A9 $AE $AB $AC $AB $AD $92 $A9 $AA $92 $A9 $AF $92 $A9 $AA $92 $A9 $AE $B5 $B8 $BB $B8 $BB, then goes on to $87."
  },
  {
   "address": 61062,
   "type": "line",
   "text": "Sound sequence $85, gone on to from $82: plays $A2 $8E $8E $98 $99 $98 $99 $98 $99 $98 $B0 $B1 $B2 $B1 $B3 $98 $99 $98 $99 $98 $99 $98 $99 $98 $99 $98 $99 $98 $99 $98 $B0 $B6 $B9 $BC $BC $BC $BC $E4 $B9 $BC $BC $BC $BC $E4, then goes on to $88."
  },
  {
   "address": 61152,
   "type": "line",
   "text": "Sound sequence $86, gone on to from $83: tempo 10, plays $BD $EC $EC, then goes on to $89."
  },
  {
   "address": 61162,
   "type": "line",
   "text": "Sound sequence $87, gone on to from $84: plays $BE $ED $ED, then goes on to $8A."
  },
  {
   "address": 61170,
   "type": "line",
   "text": "Sound sequence $88, gone on to from $85: plays $BF $C0 $C0 $C0 $C0 $C0 $C0 $C0 $C0, then goes on to $8B."
  },
  {
   "address": 61190,
   "type": "line",
   "text": "Sound sequence $89, the walk-on tune's voice 1 (walk_on, and reach_drax at the end); gone on to from $86: tempo 10, plays $C1 $C2 $C3 $C2 $C4 $C1 $C2 $C3 $C2 $CB $CD $C1 $C2 $C3 $C2 $CB $CD, then goes on to $D4."
  },
  {
   "address": 61228,
   "type": "line",
   "text": "Sound sequence $8A, the walk-on tune's voice 2 (walk_on, and reach_drax); gone on to from $87: plays $C5 $C6 $C7 $C6 $C8 $C5 $C6 $C7 $C6 $CC $CE $C5 $C6 $C7 $C6 $CC $CE, then goes on to $D5."
  },
  {
   "address": 61264,
   "type": "line",
   "text": "Sound sequence $8B, the walk-on tune's voice 3 (walk_on, and reach_drax); gone on to from $88: filter 3, plays $E3 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CA $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CA $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CF $D0 $D0 $D0 $D0 $D0 $D1 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CF $D0 $D0 $D0 $D0 $D0 $D1 $C9 $C9 $C9 $D2 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CA $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CF $D0 $D0 $D0 $D0 $D0 $D1 $C9 $C9 $C9 $C9 $C9 $C9 $C9 $CF $D0 $D0 $D0 $D0 $D0 $D1 $C9 $C9 $C9 $D2, then goes on to $D6."
  },
  {
   "address": 61568,
   "type": "line",
   "text": "Sound sequence $8C, called by $D4: tempo 10, 7 notes on instrument 0, then returns to its caller."
  },
  {
   "address": 61587,
   "type": "line",
   "text": "Sound sequence $8D, called by $D5: filter 1, 21 notes on instruments 1, 2, 3, 4, then returns to its caller."
  },
  {
   "address": 61678,
   "type": "line",
   "text": "Sound sequence $8E, called by $85, $D6: 16 notes on instrument 5, then returns to its caller."
  },
  {
   "address": 61705,
   "type": "line",
   "text": "Sound sequence $8F, called by $80: 83 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 61874,
   "type": "line",
   "text": "Sound sequence $90, called by $80: 16 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 61909,
   "type": "line",
   "text": "Sound sequence $91, called by $80: 58 notes on instruments 6, 8, then returns to its caller."
  },
  {
   "address": 61994,
   "type": "line",
   "text": "Sound sequence $92, called by $81, $84: 18 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 62028,
   "type": "line",
   "text": "Sound sequence $93, called by $81: 17 notes on instruments 1, 3, 7, 0, 9, then returns to its caller."
  },
  {
   "address": 62088,
   "type": "line",
   "text": "Sound sequence $94, called by $81: 4 notes on instrument 0, then returns to its caller."
  },
  {
   "address": 62096,
   "type": "line",
   "text": "Sound sequence $95, called by $81: 26 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 62150,
   "type": "line",
   "text": "Sound sequence $96, called by $81: 16 notes on instrument 6, then returns to its caller."
  },
  {
   "address": 62175,
   "type": "line",
   "text": "Sound sequence $97, called by $81: 56 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 62288,
   "type": "line",
   "text": "Sound sequence $98, called by $82, $85: 11 notes on instrument 5, then returns to its caller."
  },
  {
   "address": 62309,
   "type": "line",
   "text": "Sound sequence $99, called by $82, $85: 5 notes on instrument 5, then returns to its caller."
  },
  {
   "address": 62318,
   "type": "line",
   "text": "Sound sequence $9A, called by $82: 28 notes on instrument 5, then returns to its caller."
  },
  {
   "address": 62354,
   "type": "line",
   "text": "Sound sequence $9B, called by $82: 16 notes on instrument 8, then returns to its caller."
  },
  {
   "address": 62379,
   "type": "line",
   "text": "Sound sequence $9C, called by $82: 75 notes on instruments 8, 6, 5, then returns to its caller."
  },
  {
   "address": 62496,
   "type": "line",
   "text": "Sound sequence $9D, called by $80: 52 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 62567,
   "type": "line",
   "text": "Sound sequence $9E, called by $81: 51 notes on instruments 6, 7, 10, 11, 12, 15, then returns to its caller."
  },
  {
   "address": 62682,
   "type": "line",
   "text": "Sound sequence $9F, called by $82: 52 notes on instruments 8, 6, 5, 12, 10, 15, then returns to its caller."
  },
  {
   "address": 62762,
   "type": "line",
   "text": "Sound sequence $A0, called by $80, $83: 8 notes on instruments 13, 14, then returns to its caller."
  },
  {
   "address": 62783,
   "type": "line",
   "text": "Sound sequence $A1, called by $84: filter 4, 52 notes on instruments 16, 15, 17, 18, 58, then returns to its caller."
  },
  {
   "address": 62927,
   "type": "line",
   "text": "Sound sequence $A2, called by $85: 50 notes on instruments 16, 15, 17, 18, then returns to its caller."
  },
  {
   "address": 63066,
   "type": "line",
   "text": "Sound sequence $A3, called by $83: 6 notes on instrument 6, then returns to its caller."
  },
  {
   "address": 63080,
   "type": "line",
   "text": "Sound sequence $A4, called by $83: 13 notes on instruments 6, 19, then returns to its caller."
  },
  {
   "address": 63107,
   "type": "line",
   "text": "Sound sequence $A5, called by $83: 8 notes on instruments 20, 21, then returns to its caller."
  },
  {
   "address": 63134,
   "type": "line",
   "text": "Sound sequence $A6, called by $83: 9 notes on instrument 22, then returns to its caller."
  },
  {
   "address": 63150,
   "type": "line",
   "text": "Sound sequence $A7, called by $83: 10 notes on instrument 22, then returns to its caller."
  },
  {
   "address": 63167,
   "type": "line",
   "text": "Sound sequence $A8, called by $83: 18 notes on instruments 19, 22, then returns to its caller."
  },
  {
   "address": 63206,
   "type": "line",
   "text": "Sound sequence $A9, called by $84: 16 notes on instruments 42, 45, 43, 9, then returns to its caller."
  },
  {
   "address": 63262,
   "type": "line",
   "text": "Sound sequence $AA, called by $84: 5 notes on instrument 43, then returns to its caller."
  },
  {
   "address": 63271,
   "type": "line",
   "text": "Sound sequence $AB, called by $84: 8 notes on instruments 20, 21, then returns to its caller."
  },
  {
   "address": 63298,
   "type": "line",
   "text": "Sound sequence $AC, called by $84: 11 notes on instrument 6, then returns to its caller."
  },
  {
   "address": 63315,
   "type": "line",
   "text": "Sound sequence $AD, called by $84: 10 notes on instruments 22, 23, then returns to its caller."
  },
  {
   "address": 63335,
   "type": "line",
   "text": "Sound sequence $AE, called by $84: then returns to its caller."
  },
  {
   "address": 63342,
   "type": "line",
   "text": "Sound sequence $AF, called by $84: 5 notes on instrument 6, then returns to its caller."
  },
  {
   "address": 63351,
   "type": "line",
   "text": "Sound sequence $B0, called by $85: 5 notes on instrument 24, then returns to its caller."
  },
  {
   "address": 63360,
   "type": "line",
   "text": "Sound sequence $B1, called by $85: 8 notes on instrument 25, then returns to its caller."
  },
  {
   "address": 63377,
   "type": "line",
   "text": "Sound sequence $B2, called by $85: 8 notes on instrument 24, then returns to its caller."
  },
  {
   "address": 63394,
   "type": "line",
   "text": "Sound sequence $B3, called by $85: 8 notes on instrument 20, then returns to its caller."
  },
  {
   "address": 63411,
   "type": "line",
   "text": "Sound sequence $B4, called by $83: filter 2, 64 notes on instruments 6, 7, 44, then returns to its caller."
  },
  {
   "address": 63511,
   "type": "line",
   "text": "Sound sequence $B5, called by $84: 52 notes on instruments 6, 7, then returns to its caller."
  },
  {
   "address": 63586,
   "type": "line",
   "text": "Sound sequence $B6, called by $85: 46 notes on instruments 8, 3, 5, then returns to its caller."
  },
  {
   "address": 63654,
   "type": "line",
   "text": "Sound sequence $B7, called by $83: 95 notes on instruments 44, 26, then returns to its caller."
  },
  {
   "address": 63763,
   "type": "line",
   "text": "Sound sequence $B8, called by $84: 1 note on instrument 27, then returns to its caller."
  },
  {
   "address": 63768,
   "type": "line",
   "text": "Sound sequence $B9, called by $85: 1 note on instrument 28, then returns to its caller."
  },
  {
   "address": 63773,
   "type": "line",
   "text": "Sound sequence $BA, called by $83: filter 2, 15 notes on instrument 26, then returns to its caller."
  },
  {
   "address": 63795,
   "type": "line",
   "text": "Sound sequence $BB, called by $84: 15 notes on instrument 27, then returns to its caller."
  },
  {
   "address": 63818,
   "type": "line",
   "text": "Sound sequence $BC, called by $85: 20 notes on instrument 29, then returns to its caller."
  },
  {
   "address": 63846,
   "type": "line",
   "text": "Sound sequence $BD, called by $86: filter 5, 8 notes on instrument 31, then returns to its caller."
  },
  {
   "address": 63860,
   "type": "line",
   "text": "Sound sequence $BE, called by $87: then returns to its caller."
  },
  {
   "address": 63865,
   "type": "line",
   "text": "Sound sequence $BF, called by $88: then returns to its caller."
  },
  {
   "address": 63870,
   "type": "line",
   "text": "Sound sequence $C0, called by $88: 9 notes on instrument 32, then returns to its caller."
  },
  {
   "address": 63883,
   "type": "line",
   "text": "Sound sequence $C1, called by $89: 10 notes on instruments 33, 34, 35, then returns to its caller."
  },
  {
   "address": 63916,
   "type": "line",
   "text": "Sound sequence $C2, called by $89: 15 notes on instrument 36, then returns to its caller."
  },
  {
   "address": 63979,
   "type": "line",
   "text": "Sound sequence $C3, called by $89: 1 note on instrument 36, then returns to its caller."
  },
  {
   "address": 63984,
   "type": "line",
   "text": "Sound sequence $C4, called by $89: 1 note on instrument 36, then returns to its caller."
  },
  {
   "address": 63989,
   "type": "line",
   "text": "Sound sequence $C5, called by $8A: 10 notes on instruments 33, 34, 35, then returns to its caller."
  },
  {
   "address": 64022,
   "type": "line",
   "text": "Sound sequence $C6, called by $8A: 15 notes on instrument 36, then returns to its caller."
  },
  {
   "address": 64085,
   "type": "line",
   "text": "Sound sequence $C7, called by $8A: 1 note on instrument 36, then returns to its caller."
  },
  {
   "address": 64090,
   "type": "line",
   "text": "Sound sequence $C8, called by $8A: 1 note on instrument 36, then returns to its caller."
  },
  {
   "address": 64095,
   "type": "line",
   "text": "Sound sequence $C9, called by $8B: 2 notes on instrument 37, then returns to its caller."
  },
  {
   "address": 64106,
   "type": "line",
   "text": "Sound sequence $CA, called by $8B: 4 notes on instruments 34, 35, then returns to its caller."
  },
  {
   "address": 64123,
   "type": "line",
   "text": "Sound sequence $CB, called by $89: 1 note on instrument 36, then returns to its caller."
  },
  {
   "address": 64130,
   "type": "line",
   "text": "Sound sequence $CC, called by $8A: 1 note on instrument 36, then returns to its caller."
  },
  {
   "address": 64137,
   "type": "line",
   "text": "Sound sequence $CD, called by $89: 63 notes on instruments 33, 36, 40, 41, then returns to its caller."
  },
  {
   "address": 64238,
   "type": "line",
   "text": "Sound sequence $CE, called by $8A: 78 notes on instruments 33, 40, then returns to its caller."
  },
  {
   "address": 64350,
   "type": "line",
   "text": "Sound sequence $CF, called by $8B: 2 notes on instrument 37, then returns to its caller."
  },
  {
   "address": 64361,
   "type": "line",
   "text": "Sound sequence $D0, called by $8B: 3 notes on instrument 37, then returns to its caller."
  },
  {
   "address": 64376,
   "type": "line",
   "text": "Sound sequence $D1, called by $8B: 1 note on instrument 37, then returns to its caller."
  },
  {
   "address": 64383,
   "type": "line",
   "text": "Sound sequence $D2, called by $8B: 6 notes on instruments 38, 39, 40, then returns to its caller."
  },
  {
   "address": 64404,
   "type": "line",
   "text": "Sound sequence $D3, called by $84: filter 6, 22 notes on instruments 1, 2, 3, 4, then returns to its caller."
  },
  {
   "address": 64496,
   "type": "line",
   "text": "Sound sequence $D4, voice 1 of the goblin's drag (goblin_drags); gone on to from $89: tempo 10, plays $8C $8C, then goes on to $80."
  },
  {
   "address": 64504,
   "type": "line",
   "text": "Sound sequence $D5, voice 2 of the goblin's drag (goblin_drags); gone on to from $8A: plays $8D $8D, then goes on to $81."
  },
  {
   "address": 64510,
   "type": "line",
   "text": "Sound sequence $D6, voice 3 of the goblin's drag (goblin_drags); gone on to from $8B: plays $8E $8E, then goes on to $82."
  },
  {
   "address": 64576,
   "type": "line",
   "text": "Thirteen sprite shapes, $FC40-$FF7F, pictures $33 to $3F once swapped in: Mariana in four pieces (head, body, legs and a second body), Drax in six (head, robe and its foot standing; arm, head and robe throwing) and his star in three, growing. swap_shape_bank exchanges them with the first thirteen of fighter 1's body pieces when the ending begins and again at the restart."
  }
 ]
}