{
 "schema": 1,
 "platform": "c64",
 "game": "ik-plus",
 "build": "System 3's original disk, as a G64 bit image (C64 Preservation Project, verified dump)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    27648,
    28671,
    "screen RAM"
   ],
   [
    768,
    1023,
    "work areas the game writes as it runs: the clearing code clear_old_shapes builds at $0300, the pose bytes hide_parts puts aside at $0350, the judge's column map at $03C0"
   ],
   [
    1024,
    2047,
    "the mirror, mask and two colour-swap tables build_tables makes at start-up"
   ],
   [
    2048,
    2111,
    "the start of the loading picture's file p1 (its character set), left below the game, which loads from $0840; nothing in the game reads it"
   ],
   [
    21168,
    21215,
    "the bubble's ends, floor characters $56-$5B, which clear_bubble_chars draws again before each bubble"
   ],
   [
    21280,
    22527,
    "floor characters built as the game runs: the character fighter's tiles in two buffers ($5320-$55CF), the 5-row font's characters and the bubble's letters ($55D0-$577F), the table frame's moving dots, the reflection ($5780-$57C7)"
   ],
   [
    22528,
    26623,
    "sprite memory: the fighters', balls', creature's, glints' and reflection's shapes, all built at run time and zero at the loader's hand-over"
   ],
   [
    27136,
    27647,
    "the screen at $6800, shown only below line 161 for the floor on alternate steps: clear_floor_rows ($285A) blanks its rows 14-24 at every reset and the game draws into them; its sprite pointers are set by the interrupts; the rest is never shown"
   ],
   [
    27648,
    28671,
    "the screen at $6C00: game_reset rewrites rows 0-1 ($1724), arena_colours rows 2-13 ($31CC) and clear_floor_rows rows 14-24 ($285A) before the first frame; the sprite pointers are set by the interrupts"
   ],
   [
    53248,
    54271,
    "RAM under the I/O area, which the game never banks in ($01 stays $35): the same bytes as the loading picture's file p1 holds $C000 lower, left behind by the loading screen; nothing in the game reads them"
   ],
   [
    64800,
    64847,
    "the same bytes as the loading picture's file p1 holds $C000 lower, left behind by the loading screen; nothing in the game reads them"
   ],
   [
    65227,
    65275,
    "the same bytes as the loading picture's file p1 holds $C000 lower, left behind by the loading screen; nothing in the game reads them"
   ],
   [
    65344,
    65529,
    "the same bytes as the loading picture's file p1 holds $C000 lower, left behind by the loading screen; nothing in the game reads them"
   ]
  ],
  "extra": [
   [
    17024,
    20863,
    "the arena picture's bitmap, character rows 2-13"
   ],
   [
    20864,
    21167,
    "floor characters $30-$55: the blank floor and the judge"
   ],
   [
    26624,
    27119,
    "the top rows' character set"
   ],
   [
    28672,
    28916,
    "the 5-row font"
   ],
   [
    28928,
    29119,
    "the shield's three sprite shapes"
   ],
   [
    32000,
    32151,
    "the poses' graphics addresses"
   ],
   [
    32160,
    32235,
    "the poses' tile counts"
   ],
   [
    32256,
    33167,
    "the poses' layouts"
   ],
   [
    33216,
    33367,
    "the poses' sprite-block masks"
   ],
   [
    33408,
    48767,
    "the 70 poses' graphics"
   ],
   [
    48896,
    53247,
    "the six digitised shouts"
   ]
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 2111,
   "type": "Undefined"
  },
  {
   "start": 2112,
   "end": 2129,
   "type": "Code"
  },
  {
   "start": 2130,
   "end": 2132,
   "type": "Undefined"
  },
  {
   "start": 2133,
   "end": 2192,
   "type": "Code"
  },
  {
   "start": 2193,
   "end": 2195,
   "type": "Undefined"
  },
  {
   "start": 2196,
   "end": 2228,
   "type": "Code"
  },
  {
   "start": 2229,
   "end": 2231,
   "type": "Byte"
  },
  {
   "start": 2232,
   "end": 2638,
   "type": "Code"
  },
  {
   "start": 2639,
   "end": 2654,
   "type": "Undefined"
  },
  {
   "start": 2655,
   "end": 3455,
   "type": "Code"
  },
  {
   "start": 3456,
   "end": 3507,
   "type": "Undefined"
  },
  {
   "start": 3508,
   "end": 3614,
   "type": "Code"
  },
  {
   "start": 3615,
   "end": 3717,
   "type": "Undefined"
  },
  {
   "start": 3718,
   "end": 3786,
   "type": "Code"
  },
  {
   "start": 3787,
   "end": 3810,
   "type": "Undefined"
  },
  {
   "start": 3811,
   "end": 3911,
   "type": "Code"
  },
  {
   "start": 3912,
   "end": 3915,
   "type": "Undefined"
  },
  {
   "start": 3916,
   "end": 4265,
   "type": "Code"
  },
  {
   "start": 4266,
   "end": 4282,
   "type": "Undefined"
  },
  {
   "start": 4283,
   "end": 4517,
   "type": "Code"
  },
  {
   "start": 4518,
   "end": 4578,
   "type": "Undefined"
  },
  {
   "start": 4579,
   "end": 5252,
   "type": "Code"
  },
  {
   "start": 5253,
   "end": 5261,
   "type": "Undefined"
  },
  {
   "start": 5262,
   "end": 5597,
   "type": "Code"
  },
  {
   "start": 5598,
   "end": 5635,
   "type": "Undefined"
  },
  {
   "start": 5636,
   "end": 5830,
   "type": "Code"
  },
  {
   "start": 5831,
   "end": 5838,
   "type": "Undefined"
  },
  {
   "start": 5839,
   "end": 6026,
   "type": "Code"
  },
  {
   "start": 6027,
   "end": 6060,
   "type": "Undefined"
  },
  {
   "start": 6061,
   "end": 6455,
   "type": "Code"
  },
  {
   "start": 6456,
   "end": 6486,
   "type": "Undefined"
  },
  {
   "start": 6487,
   "end": 6553,
   "type": "Code"
  },
  {
   "start": 6554,
   "end": 6556,
   "type": "Byte"
  },
  {
   "start": 6557,
   "end": 6719,
   "type": "Code"
  },
  {
   "start": 6720,
   "end": 6780,
   "type": "Undefined"
  },
  {
   "start": 6781,
   "end": 7084,
   "type": "Code"
  },
  {
   "start": 7085,
   "end": 7231,
   "type": "Undefined"
  },
  {
   "start": 7232,
   "end": 7343,
   "type": "Code"
  },
  {
   "start": 7344,
   "end": 7429,
   "type": "Undefined"
  },
  {
   "start": 7430,
   "end": 8000,
   "type": "Code"
  },
  {
   "start": 8001,
   "end": 8042,
   "type": "Undefined"
  },
  {
   "start": 8043,
   "end": 8693,
   "type": "Byte"
  },
  {
   "start": 8694,
   "end": 8701,
   "type": "Undefined"
  },
  {
   "start": 8702,
   "end": 9374,
   "type": "Code"
  },
  {
   "start": 9375,
   "end": 9398,
   "type": "Undefined"
  },
  {
   "start": 9399,
   "end": 9717,
   "type": "Code"
  },
  {
   "start": 9718,
   "end": 9789,
   "type": "Undefined"
  },
  {
   "start": 9790,
   "end": 9918,
   "type": "Code"
  },
  {
   "start": 9919,
   "end": 9946,
   "type": "Undefined"
  },
  {
   "start": 9947,
   "end": 10360,
   "type": "Code"
  },
  {
   "start": 10361,
   "end": 10445,
   "type": "Undefined"
  },
  {
   "start": 10446,
   "end": 10619,
   "type": "Code"
  },
  {
   "start": 10620,
   "end": 10647,
   "type": "Undefined"
  },
  {
   "start": 10648,
   "end": 10753,
   "type": "Code"
  },
  {
   "start": 10754,
   "end": 10777,
   "type": "Undefined"
  },
  {
   "start": 10778,
   "end": 11083,
   "type": "Code"
  },
  {
   "start": 11084,
   "end": 11115,
   "type": "Undefined"
  },
  {
   "start": 11116,
   "end": 11131,
   "type": "Byte"
  },
  {
   "start": 11132,
   "end": 11280,
   "type": "Undefined"
  },
  {
   "start": 11281,
   "end": 11388,
   "type": "Byte"
  },
  {
   "start": 11389,
   "end": 11399,
   "type": "Undefined"
  },
  {
   "start": 11400,
   "end": 11529,
   "type": "Code"
  },
  {
   "start": 11530,
   "end": 11749,
   "type": "Undefined"
  },
  {
   "start": 11750,
   "end": 11965,
   "type": "Byte"
  },
  {
   "start": 11966,
   "end": 12068,
   "type": "Code"
  },
  {
   "start": 12069,
   "end": 12092,
   "type": "Undefined"
  },
  {
   "start": 12093,
   "end": 12502,
   "type": "Code"
  },
  {
   "start": 12503,
   "end": 12508,
   "type": "Undefined"
  },
  {
   "start": 12509,
   "end": 12566,
   "type": "Code"
  },
  {
   "start": 12567,
   "end": 12581,
   "type": "Undefined"
  },
  {
   "start": 12582,
   "end": 13269,
   "type": "Code"
  },
  {
   "start": 13270,
   "end": 13307,
   "type": "Undefined"
  },
  {
   "start": 13308,
   "end": 13416,
   "type": "Code"
  },
  {
   "start": 13417,
   "end": 14526,
   "type": "Undefined"
  },
  {
   "start": 14527,
   "end": 15098,
   "type": "Code"
  },
  {
   "start": 15099,
   "end": 15194,
   "type": "Byte"
  },
  {
   "start": 15195,
   "end": 15198,
   "type": "Undefined"
  },
  {
   "start": 15199,
   "end": 15362,
   "type": "Code"
  },
  {
   "start": 15363,
   "end": 15418,
   "type": "Undefined"
  },
  {
   "start": 15419,
   "end": 15538,
   "type": "Code"
  },
  {
   "start": 15539,
   "end": 15636,
   "type": "Undefined"
  },
  {
   "start": 15637,
   "end": 16802,
   "type": "Code"
  },
  {
   "start": 16803,
   "end": 16820,
   "type": "Undefined"
  },
  {
   "start": 16821,
   "end": 16830,
   "type": "Code"
  },
  {
   "start": 16831,
   "end": 16846,
   "type": "Undefined"
  },
  {
   "start": 16847,
   "end": 16919,
   "type": "Code"
  },
  {
   "start": 16920,
   "end": 16924,
   "type": "Undefined"
  },
  {
   "start": 16925,
   "end": 16958,
   "type": "Code"
  },
  {
   "start": 16959,
   "end": 16962,
   "type": "Undefined"
  },
  {
   "start": 16963,
   "end": 17015,
   "type": "Code"
  },
  {
   "start": 17016,
   "end": 17023,
   "type": "Undefined"
  },
  {
   "start": 17024,
   "end": 21167,
   "type": "Byte"
  },
  {
   "start": 21168,
   "end": 26623,
   "type": "Undefined"
  },
  {
   "start": 26624,
   "end": 27119,
   "type": "Byte"
  },
  {
   "start": 27120,
   "end": 27128,
   "type": "Code"
  },
  {
   "start": 27129,
   "end": 27183,
   "type": "Undefined"
  },
  {
   "start": 27184,
   "end": 27647,
   "type": "Byte"
  },
  {
   "start": 27648,
   "end": 28207,
   "type": "Undefined"
  },
  {
   "start": 28208,
   "end": 28916,
   "type": "Byte"
  },
  {
   "start": 28917,
   "end": 28927,
   "type": "Undefined"
  },
  {
   "start": 28928,
   "end": 29119,
   "type": "Byte"
  },
  {
   "start": 29120,
   "end": 29201,
   "type": "Code"
  },
  {
   "start": 29202,
   "end": 29226,
   "type": "Byte"
  },
  {
   "start": 29227,
   "end": 29426,
   "type": "Code"
  },
  {
   "start": 29427,
   "end": 30037,
   "type": "Byte"
  },
  {
   "start": 30038,
   "end": 30264,
   "type": "Code"
  },
  {
   "start": 30265,
   "end": 30280,
   "type": "Byte"
  },
  {
   "start": 30281,
   "end": 30487,
   "type": "Code"
  },
  {
   "start": 30488,
   "end": 30663,
   "type": "Byte"
  },
  {
   "start": 30664,
   "end": 30832,
   "type": "Code"
  },
  {
   "start": 30833,
   "end": 30848,
   "type": "Byte"
  },
  {
   "start": 30849,
   "end": 30976,
   "type": "Code"
  },
  {
   "start": 30977,
   "end": 31053,
   "type": "Byte"
  },
  {
   "start": 31054,
   "end": 31159,
   "type": "Code"
  },
  {
   "start": 31160,
   "end": 31211,
   "type": "Byte"
  },
  {
   "start": 31212,
   "end": 31493,
   "type": "Code"
  },
  {
   "start": 31494,
   "end": 48767,
   "type": "Byte"
  },
  {
   "start": 48768,
   "end": 48895,
   "type": "Undefined"
  },
  {
   "start": 48896,
   "end": 50111,
   "type": "Byte"
  },
  {
   "start": 50112,
   "end": 50112,
   "type": "Code"
  },
  {
   "start": 50113,
   "end": 52382,
   "type": "Byte"
  },
  {
   "start": 52383,
   "end": 52383,
   "type": "Code"
  },
  {
   "start": 52384,
   "end": 53247,
   "type": "Byte"
  },
  {
   "start": 53248,
   "end": 57343,
   "type": "Undefined"
  },
  {
   "start": 57344,
   "end": 57352,
   "type": "Byte"
  },
  {
   "start": 57353,
   "end": 58489,
   "type": "Code"
  },
  {
   "start": 58490,
   "end": 60976,
   "type": "Byte"
  },
  {
   "start": 60977,
   "end": 61340,
   "type": "Code"
  },
  {
   "start": 61341,
   "end": 61403,
   "type": "Byte"
  },
  {
   "start": 61404,
   "end": 61565,
   "type": "Code"
  },
  {
   "start": 61566,
   "end": 61767,
   "type": "Byte"
  },
  {
   "start": 61768,
   "end": 61775,
   "type": "Undefined"
  },
  {
   "start": 61776,
   "end": 61933,
   "type": "Code"
  },
  {
   "start": 61934,
   "end": 61942,
   "type": "Byte"
  },
  {
   "start": 61943,
   "end": 62749,
   "type": "Code"
  },
  {
   "start": 62750,
   "end": 62769,
   "type": "Byte"
  },
  {
   "start": 62770,
   "end": 62794,
   "type": "Code"
  },
  {
   "start": 62795,
   "end": 62804,
   "type": "Byte"
  },
  {
   "start": 62805,
   "end": 63252,
   "type": "Code"
  },
  {
   "start": 63253,
   "end": 63330,
   "type": "Byte"
  },
  {
   "start": 63331,
   "end": 63385,
   "type": "Code"
  },
  {
   "start": 63386,
   "end": 63396,
   "type": "Byte"
  },
  {
   "start": 63397,
   "end": 63503,
   "type": "Code"
  },
  {
   "start": 63504,
   "end": 63551,
   "type": "Byte"
  },
  {
   "start": 63552,
   "end": 63650,
   "type": "Code"
  },
  {
   "start": 63651,
   "end": 64767,
   "type": "Byte"
  },
  {
   "start": 64768,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "cpu_port",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "refl_check_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16,
   "name": "sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24,
   "name": "front_colour_1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25,
   "name": "front_colour_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26,
   "name": "front_colour_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "back_colour_1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28,
   "name": "back_colour_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29,
   "name": "back_colour_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32,
   "name": "sprite_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33,
   "name": "sprite_expand",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34,
   "name": "sprite_multi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35,
   "name": "floor_scroll",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36,
   "name": "sprite_priority",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38,
   "name": "irq_sprite_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39,
   "name": "irq_sprite_x_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 40,
   "name": "irq_sprite_x_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 41,
   "name": "irq_sprite_x_4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 42,
   "name": "irq_sprite_x_5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43,
   "name": "irq_sprite_x_6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 46,
   "name": "irq_front_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49,
   "name": "irq_back_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 54,
   "name": "irq_sprite_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55,
   "name": "irq_sprite_expand",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 56,
   "name": "irq_sprite_multi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 57,
   "name": "irq_floor_scroll",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58,
   "name": "irq_sprite_priority",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59,
   "name": "irq_spare",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64,
   "name": "track_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65,
   "name": "track_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 66,
   "name": "pattern_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 67,
   "name": "pattern_ptr_hi",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 68,
   "name": "frame_counter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 69,
   "name": "human_1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 70,
   "name": "human_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 71,
   "name": "human_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "humans",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 73,
   "name": "human_bits",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 74,
   "name": "key_held",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 75,
   "name": "temp_4b",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 76,
   "name": "temp_4c",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 77,
   "name": "temp_4d",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 78,
   "name": "temp_4e",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 79,
   "name": "temp_4f",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 80,
   "name": "ptr_50",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 81,
   "name": "ptr_50_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 82,
   "name": "ptr_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 83,
   "name": "ptr_52_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 84,
   "name": "ptr_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 85,
   "name": "ptr_54_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 88,
   "name": "temp_58",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 89,
   "name": "temp_59",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 92,
   "name": "ball_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 93,
   "name": "ball_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 96,
   "name": "letter_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 97,
   "name": "letter_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 98,
   "name": "message_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 99,
   "name": "message_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 100,
   "name": "bonus_bits",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 101,
   "name": "bonus_shape",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 102,
   "name": "mode",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 103,
   "name": "bonus_player",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 104,
   "name": "fighter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 105,
   "name": "attacker",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 106,
   "name": "count_6a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 107,
   "name": "pose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 108,
   "name": "pose_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 109,
   "name": "pose_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 110,
   "name": "fighter_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 111,
   "name": "fighter_x_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 112,
   "name": "fighter_x_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 113,
   "name": "facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 114,
   "name": "facing_2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 115,
   "name": "facing_3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 116,
   "name": "target",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 120,
   "name": "range",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 121,
   "name": "range_full",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 122,
   "name": "range_code",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 123,
   "name": "front_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 124,
   "name": "front_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 125,
   "name": "range_fighter_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 126,
   "name": "range_fighter_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 128,
   "name": "band_counter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 129,
   "name": "message_req",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 130,
   "name": "message_now",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 131,
   "name": "ranking_humans",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 132,
   "name": "round_message",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 133,
   "name": "first",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 134,
   "name": "second",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 135,
   "name": "third",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 136,
   "name": "down_timer",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 140,
   "name": "balls_thrown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 141,
   "name": "all_thrown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 142,
   "name": "balls_left",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 143,
   "name": "bonus_on",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 144,
   "name": "ball_slot",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 145,
   "name": "player_hit",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 146,
   "name": "ball_y_frac",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 154,
   "name": "ball_y",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 160,
   "name": "shield_y_zp",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 162,
   "name": "ball_vy",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 168,
   "name": "shield_vy",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 169,
   "name": "p_00A9",
   "type": "Pointer",
   "kind": "auto"
  },
  {
   "address": 170,
   "name": "ball_vy_hi",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 176,
   "name": "shield_vy_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 178,
   "name": "ball_x_frac",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 186,
   "name": "ball_x",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 192,
   "name": "shield_x_zp",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 194,
   "name": "ball_vx_hi",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 200,
   "name": "shield_vx_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 202,
   "name": "ball_vx",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 208,
   "name": "shield_vx",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 210,
   "name": "ball_weights",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 216,
   "name": "shield_weight",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 218,
   "name": "ball_floor",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 224,
   "name": "shield_floor",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 226,
   "name": "ball_flags",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 232,
   "name": "shield_flags",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 234,
   "name": "ball_colour_now",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 242,
   "name": "pause_counter",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 243,
   "name": "sky_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 244,
   "name": "water_colour",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 245,
   "name": "sky_set",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 268,
   "name": "a_010C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 269,
   "name": "a_010D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 270,
   "name": "a_010E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 271,
   "name": "a_010F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 272,
   "name": "a_0110",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 273,
   "name": "a_0111",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 274,
   "name": "a_0112",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 275,
   "name": "f_0113",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 276,
   "name": "f_0114",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 278,
   "name": "a_0116",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 279,
   "name": "a_0117",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 284,
   "name": "a_011C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 285,
   "name": "a_011D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 286,
   "name": "a_011E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 287,
   "name": "f_011F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 293,
   "name": "f_0125",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 299,
   "name": "f_012B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 305,
   "name": "f_0131",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 306,
   "name": "a_0132",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 307,
   "name": "a_0133",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 308,
   "name": "f_0134",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 311,
   "name": "f_0137",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 314,
   "name": "f_013A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 317,
   "name": "a_013D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 320,
   "name": "f_0140",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 323,
   "name": "f_0143",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 326,
   "name": "f_0146",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 329,
   "name": "f_0149",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 332,
   "name": "f_014C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 333,
   "name": "a_014D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 334,
   "name": "a_014E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 335,
   "name": "f_014F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 338,
   "name": "f_0152",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 341,
   "name": "f_0155",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 344,
   "name": "f_0158",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 347,
   "name": "f_015B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 350,
   "name": "f_015E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 353,
   "name": "a_0161",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 354,
   "name": "a_0162",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 367,
   "name": "a_016F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 370,
   "name": "a_0172",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 372,
   "name": "a_0174",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 373,
   "name": "a_0175",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 374,
   "name": "a_0176",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 375,
   "name": "a_0177",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 376,
   "name": "a_0178",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 379,
   "name": "a_017B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 380,
   "name": "a_017C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 387,
   "name": "a_0183",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 388,
   "name": "a_0184",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 389,
   "name": "a_0185",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 390,
   "name": "a_0186",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 392,
   "name": "a_0188",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 393,
   "name": "a_0189",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 394,
   "name": "a_018A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 395,
   "name": "a_018B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 398,
   "name": "a_018E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 401,
   "name": "a_0191",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 402,
   "name": "a_0192",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 405,
   "name": "f_0195",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 408,
   "name": "a_0198",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 409,
   "name": "a_0199",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 411,
   "name": "a_019B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 412,
   "name": "a_019C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 413,
   "name": "a_019D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 415,
   "name": "f_019F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 417,
   "name": "f_01A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 419,
   "name": "a_01A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 420,
   "name": "a_01A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 421,
   "name": "a_01A5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 422,
   "name": "a_01A6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 427,
   "name": "a_01AB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 428,
   "name": "a_01AC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 429,
   "name": "a_01AD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 430,
   "name": "a_01AE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 431,
   "name": "a_01AF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 432,
   "name": "a_01B0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 433,
   "name": "a_01B1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 434,
   "name": "a_01B2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 435,
   "name": "a_01B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 436,
   "name": "a_01B4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 437,
   "name": "a_01B5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 439,
   "name": "f_01B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 442,
   "name": "a_01BA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 443,
   "name": "a_01BB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 445,
   "name": "a_01BD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 446,
   "name": "a_01BE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 449,
   "name": "a_01C1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 450,
   "name": "a_01C2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 451,
   "name": "a_01C3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 453,
   "name": "a_01C5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 454,
   "name": "a_01C6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 455,
   "name": "a_01C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 456,
   "name": "a_01C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 457,
   "name": "a_01C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 458,
   "name": "a_01CA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 459,
   "name": "a_01CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 460,
   "name": "f_01CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 462,
   "name": "a_01CE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 463,
   "name": "f_01CF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 465,
   "name": "a_01D1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 466,
   "name": "f_01D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 468,
   "name": "a_01D4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 469,
   "name": "a_01D5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 470,
   "name": "a_01D6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 471,
   "name": "a_01D7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 472,
   "name": "a_01D8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 473,
   "name": "a_01D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 474,
   "name": "bubble_double",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 475,
   "name": "a_01DB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 476,
   "name": "a_01DC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 477,
   "name": "a_01DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 478,
   "name": "f_01DE",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 481,
   "name": "f_01E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 678,
   "name": "kernal_pal",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 768,
   "name": "f_0300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 769,
   "name": "f_0301",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 770,
   "name": "f_0302",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 771,
   "name": "f_0303",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 777,
   "name": "f_0309",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 780,
   "name": "f_030C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 783,
   "name": "f_030F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 786,
   "name": "f_0312",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 789,
   "name": "f_0315",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 792,
   "name": "f_0318",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 795,
   "name": "f_031B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 798,
   "name": "f_031E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 801,
   "name": "f_0321",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 804,
   "name": "f_0324",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 807,
   "name": "f_0327",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 810,
   "name": "f_032A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 813,
   "name": "f_032D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 816,
   "name": "f_0330",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 819,
   "name": "f_0333",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 822,
   "name": "f_0336",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 848,
   "name": "f_0350",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 960,
   "name": "f_03C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1024,
   "name": "f_0400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1280,
   "name": "f_0500",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1536,
   "name": "f_0600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 1792,
   "name": "f_0700",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2002,
   "name": "f_07D2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 2112,
   "name": "entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2115,
   "name": "jp_computer_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2118,
   "name": "jp_start_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2121,
   "name": "jp_range_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2124,
   "name": "jp_show_bubble",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2127,
   "name": "jp_reset_floor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2130,
   "name": "pose_width_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2131,
   "name": "pose_width_ptr_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2133,
   "name": "jp_char_reflection",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2136,
   "name": "jp_belt",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2139,
   "name": "jp_sprite_reflections",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2142,
   "name": "jp_build_char_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2145,
   "name": "jp_check_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2148,
   "name": "jp_place_char_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2151,
   "name": "jp_show_dots",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2154,
   "name": "jp_add_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2157,
   "name": "jp_build_tables",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2160,
   "name": "jp_draw_sprite_fighter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2163,
   "name": "jp_arena_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2166,
   "name": "jp_bonus_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2169,
   "name": "jp_fighter_anim",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2172,
   "name": "jp_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2175,
   "name": "jp_clear_old_shapes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2178,
   "name": "jp_game_over",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2181,
   "name": "jp_wait_frames",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2184,
   "name": "jp_draw_fighters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2187,
   "name": "jp_set_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2190,
   "name": "jp_show_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2192,
   "name": "sp_patch_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2196,
   "name": "jp_clear_floor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2199,
   "name": "jp_bonus_add_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2202,
   "name": "jp_clear_floor_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2205,
   "name": "jp_bonus_round",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2208,
   "name": "jp_next_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2211,
   "name": "jp_clear_both_floors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2214,
   "name": "jp_frame_dots",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2217,
   "name": "jp_floor_colour_cols",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2220,
   "name": "jp_shout_on_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2223,
   "name": "jp_step_two",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2226,
   "name": "jp_set_skills",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2232,
   "name": "entry_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2235,
   "name": "main_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2247,
   "name": "j_08C7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2259,
   "name": "b_08D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2269,
   "name": "b_08DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2279,
   "name": "b_08E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2292,
   "name": "b_08F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2305,
   "name": "j_0901",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2308,
   "name": "irq_line65",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2317,
   "name": "b_090D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2320,
   "name": "irq_line121",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2329,
   "name": "b_0919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2332,
   "name": "irq_line128",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2341,
   "name": "b_0925",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2344,
   "name": "irq_line134",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2353,
   "name": "b_0931",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2356,
   "name": "sample_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2369,
   "name": "sample_end_page",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2390,
   "name": "b_0956",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2391,
   "name": "sample_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2392,
   "name": "sample_ptr_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2393,
   "name": "sample_nibble",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2394,
   "name": "sample_nibble_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2395,
   "name": "sample_nibble_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2396,
   "name": "sample_nibble_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2400,
   "name": "j_0960",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2402,
   "name": "b_0962",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2406,
   "name": "irq_line161",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2416,
   "name": "b_0970",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2427,
   "name": "floor_d018",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2492,
   "name": "b_09BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2499,
   "name": "j_09C3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2515,
   "name": "b_09D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2519,
   "name": "irq_sprite_band",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2527,
   "name": "band_wait_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2528,
   "name": "b_09E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2537,
   "name": "band_sprite_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2557,
   "name": "band_shape_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2560,
   "name": "band_ptr_page_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2565,
   "name": "band_ptr_page_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2570,
   "name": "band_ptr_page_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2572,
   "name": "band_shape_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2575,
   "name": "band_ptr_page_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2580,
   "name": "band_ptr_page_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2585,
   "name": "band_ptr_page_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2639,
   "name": "band_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2643,
   "name": "band_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2647,
   "name": "band_next_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2651,
   "name": "band_next_irq",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2655,
   "name": "irq_picture_on",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2658,
   "name": "b_0A62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2706,
   "name": "bonus_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2733,
   "name": "b_0AAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2739,
   "name": "b_0AB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2782,
   "name": "shield_shape_operand",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2792,
   "name": "irq_water_top",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2831,
   "name": "irq_water",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2855,
   "name": "irq_reflection",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2886,
   "name": "fighter_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3001,
   "name": "front_shape_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3004,
   "name": "front_ptr_page_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3008,
   "name": "front_ptr_page_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3012,
   "name": "front_ptr_page_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3018,
   "name": "back_shape_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3021,
   "name": "back_ptr_page_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3025,
   "name": "back_ptr_page_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3029,
   "name": "back_ptr_page_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3035,
   "name": "delay_27",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3037,
   "name": "delay_24",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3039,
   "name": "delay_18",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3041,
   "name": "delay_12",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3043,
   "name": "delay_6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3046,
   "name": "nmi_frame",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3052,
   "name": "b_0BEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3072,
   "name": "nmi_page_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3148,
   "name": "b_0C4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3151,
   "name": "j_0C4F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3158,
   "name": "b_0C56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3166,
   "name": "b_0C5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3177,
   "name": "b_0C69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3185,
   "name": "b_0C71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3196,
   "name": "b_0C7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3202,
   "name": "j_0C82",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3213,
   "name": "b_0C8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3229,
   "name": "b_0C9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3258,
   "name": "nmi_tail",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3273,
   "name": "b_0CC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3280,
   "name": "j_0CD0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3322,
   "name": "b_0CFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3329,
   "name": "judge_talk",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3336,
   "name": "b_0D08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3345,
   "name": "b_0D11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3348,
   "name": "b_0D14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3367,
   "name": "b_0D27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3451,
   "name": "b_0D7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3455,
   "name": "r_0D7F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3456,
   "name": "judge_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3480,
   "name": "judge_foot_patterns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3504,
   "name": "judge_foot_ends",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3508,
   "name": "judge_foot",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3534,
   "name": "b_0DCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3552,
   "name": "j_0DE0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3554,
   "name": "b_0DE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3564,
   "name": "r_0DEC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3565,
   "name": "shout_on_move",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3575,
   "name": "b_0DF7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3601,
   "name": "b_0E11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3614,
   "name": "r_0E1E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3615,
   "name": "shout_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3633,
   "name": "shout_attack",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3650,
   "name": "shout_scored",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3667,
   "name": "shout_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3684,
   "name": "shout_second",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3701,
   "name": "shout_floored",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3718,
   "name": "shout_for_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3723,
   "name": "b_0E8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3734,
   "name": "b_0E96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3756,
   "name": "b_0EAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3762,
   "name": "b_0EB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3773,
   "name": "b_0EBD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3783,
   "name": "j_0EC7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3786,
   "name": "r_0ECA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3787,
   "name": "shout_end_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3793,
   "name": "shout_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3794,
   "name": "shout_start_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3805,
   "name": "shout_nibble",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3811,
   "name": "sample_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3848,
   "name": "b_0F08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3866,
   "name": "j_0F1A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3911,
   "name": "r_0F47",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3912,
   "name": "sample_rate_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3914,
   "name": "sample_rate_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3916,
   "name": "game_init",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4007,
   "name": "b_0FA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4030,
   "name": "b_0FBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4090,
   "name": "b_0FFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4094,
   "name": "decrypt_key_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4117,
   "name": "fist_icons",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4128,
   "name": "protect_stack",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4148,
   "name": "nmi_timer_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4188,
   "name": "b_105C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4205,
   "name": "fight_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4217,
   "name": "b_1079",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4241,
   "name": "b_1091",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4265,
   "name": "r_10A9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4266,
   "name": "pause_pose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4269,
   "name": "pause_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4283,
   "name": "pause",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4306,
   "name": "b_10D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4355,
   "name": "b_1103",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4364,
   "name": "b_110C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4397,
   "name": "b_112D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4401,
   "name": "b_1131",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4431,
   "name": "b_114F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4461,
   "name": "runstop_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4482,
   "name": "r_1182",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4483,
   "name": "floor_colour_cols",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4518,
   "name": "rank_pair_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4521,
   "name": "rank_pair_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4524,
   "name": "round_result",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4552,
   "name": "demo_messages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4573,
   "name": "result_pause",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4579,
   "name": "round_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4595,
   "name": "b_11F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4607,
   "name": "b_11FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4649,
   "name": "b_1229",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4698,
   "name": "b_125A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4703,
   "name": "b_125F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4714,
   "name": "j_126A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4717,
   "name": "b_126D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4742,
   "name": "j_1286",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4754,
   "name": "b_1292",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4758,
   "name": "b_1296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4790,
   "name": "b_12B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4858,
   "name": "b_12FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4887,
   "name": "j_1317",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4931,
   "name": "b_1343",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4954,
   "name": "b_135A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4968,
   "name": "b_1368",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5002,
   "name": "b_138A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5022,
   "name": "b_139E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5043,
   "name": "r_13B3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5044,
   "name": "compare_fighters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5066,
   "name": "r_13CA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5067,
   "name": "round_over",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5092,
   "name": "r_13E4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5093,
   "name": "next_round",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5097,
   "name": "b_13E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5159,
   "name": "b_1427",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5180,
   "name": "b_143C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5204,
   "name": "b_1454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5244,
   "name": "b_147C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5252,
   "name": "r_1484",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 5253,
   "name": "start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5256,
   "name": "start_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5259,
   "name": "start_facing_2p",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5262,
   "name": "place_fighters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5280,
   "name": "b_14A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5287,
   "name": "b_14A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5297,
   "name": "b_14B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5346,
   "name": "b_14E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5387,
   "name": "screen_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5390,
   "name": "draw_fighters",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5429,
   "name": "idle_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5439,
   "name": "show_message",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5457,
   "name": "sprite_positions",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5518,
   "name": "b_158E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5521,
   "name": "j_1591",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 5538,
   "name": "b_15A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5560,
   "name": "b_15B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5579,
   "name": "b_15CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5598,
   "name": "bit_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5606,
   "name": "sprite_x_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5614,
   "name": "sprite_fighter",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5622,
   "name": "shape_base_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5626,
   "name": "shape_base_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5630,
   "name": "step_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5636,
   "name": "next_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5645,
   "name": "b_160D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5652,
   "name": "next_step_tail",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5653,
   "name": "b_1615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5709,
   "name": "b_164D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5711,
   "name": "b_164F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5732,
   "name": "b_1664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5831,
   "name": "buffer_0177",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5833,
   "name": "buffer_0176",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5835,
   "name": "buffer_screen",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5837,
   "name": "buffer_d018",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 5839,
   "name": "random",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 5849,
   "name": "random_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5857,
   "name": "game_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 5868,
   "name": "b_16EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5887,
   "name": "b_16FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5895,
   "name": "b_1707",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5905,
   "name": "b_1711",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 5906,
   "name": "reset_clear_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5907,
   "name": "reset_clear_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 5928,
   "name": "b_1728",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6011,
   "name": "call_nmi_start",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6013,
   "name": "nmi_start_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6016,
   "name": "call_decrypt",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6017,
   "name": "decrypt_call_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6018,
   "name": "decrypt_call_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6019,
   "name": "b_1783",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6027,
   "name": "reflection_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6031,
   "name": "refl_colours_6a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6035,
   "name": "refl_colours_7b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6039,
   "name": "refl_colours_6b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6043,
   "name": "sky_water_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6051,
   "name": "speed_key_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6056,
   "name": "speed_key_cols",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6061,
   "name": "read_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6104,
   "name": "b_17D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6107,
   "name": "b_17DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6121,
   "name": "b_17E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6125,
   "name": "b_17ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6146,
   "name": "b_1802",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6151,
   "name": "j_1807",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6199,
   "name": "b_1837",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6229,
   "name": "b_1855",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6252,
   "name": "b_186C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6270,
   "name": "b_187E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6287,
   "name": "nmi_period",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6289,
   "name": "b_1891",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6305,
   "name": "b_18A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6327,
   "name": "b_18B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6347,
   "name": "b_18CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6354,
   "name": "b_18D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6363,
   "name": "b_18DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6367,
   "name": "j_18DF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6387,
   "name": "f1_sp_copy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6397,
   "name": "loader_sp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6404,
   "name": "j_1904",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6408,
   "name": "j_1908",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6433,
   "name": "r_1921",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6434,
   "name": "key_pressed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6455,
   "name": "r_1937",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6456,
   "name": "top_colour_runs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6459,
   "name": "top_colour_lens",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6462,
   "name": "top_colour_vals",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6465,
   "name": "fist_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6467,
   "name": "fist_cols",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6469,
   "name": "top_words",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6485,
   "name": "nmi_period_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6487,
   "name": "decrypt_once",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6489,
   "name": "b_1959",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6529,
   "name": "b_1981",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6545,
   "name": "b_1991",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6557,
   "name": "top_line",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6561,
   "name": "b_19A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6575,
   "name": "b_19AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6621,
   "name": "b_19DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6643,
   "name": "b_19F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6654,
   "name": "b_19FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6664,
   "name": "j_1A08",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6666,
   "name": "b_1A0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6688,
   "name": "show_time",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6701,
   "name": "print_bcd",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6710,
   "name": "b_1A36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6720,
   "name": "fist_icons_src",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6781,
   "name": "sprite_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6785,
   "name": "b_1A81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6814,
   "name": "sound_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6861,
   "name": "wait_frames",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6869,
   "name": "b_1AD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6876,
   "name": "r_1ADC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6877,
   "name": "step_two",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6882,
   "name": "fighters_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6887,
   "name": "j_1AE7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6894,
   "name": "b_1AEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6910,
   "name": "read_joysticks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6922,
   "name": "b_1B0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6935,
   "name": "b_1B17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7011,
   "name": "b_1B63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7033,
   "name": "b_1B79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7039,
   "name": "b_1B7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7058,
   "name": "b_1B92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7061,
   "name": "j_1B95",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7069,
   "name": "j_1B9D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7084,
   "name": "r_1BAC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7085,
   "name": "near_check_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7088,
   "name": "near_check_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7091,
   "name": "near_result",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7099,
   "name": "joy_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7131,
   "name": "joy_moves_mirror",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7163,
   "name": "joy_moves_near",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7195,
   "name": "joy_moves_near_mirror",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7232,
   "name": "start_move",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7269,
   "name": "b_1C65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7279,
   "name": "b_1C6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7298,
   "name": "set_move",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7299,
   "name": "b_1C83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7302,
   "name": "b_1C86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7306,
   "name": "j_1C8A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7344,
   "name": "pose_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7424,
   "name": "getup_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7430,
   "name": "fighter_anim",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 7441,
   "name": "b_1D11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7469,
   "name": "b_1D2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7484,
   "name": "b_1D3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7499,
   "name": "b_1D4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7509,
   "name": "b_1D55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7512,
   "name": "b_1D58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7543,
   "name": "b_1D77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7558,
   "name": "b_1D86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7566,
   "name": "j_1D8E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7577,
   "name": "j_1D99",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7580,
   "name": "b_1D9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7594,
   "name": "b_1DAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7606,
   "name": "b_1DB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7687,
   "name": "b_1E07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7697,
   "name": "b_1E11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7702,
   "name": "b_1E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7705,
   "name": "b_1E19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7733,
   "name": "b_1E35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7736,
   "name": "b_1E38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7745,
   "name": "b_1E41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7754,
   "name": "b_1E4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7774,
   "name": "b_1E5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7788,
   "name": "b_1E6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7805,
   "name": "b_1E7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7816,
   "name": "r_1E88",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 7817,
   "name": "j_1E89",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7836,
   "name": "b_1E9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7855,
   "name": "fighter_move_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7861,
   "name": "fighter_move_dir",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 7889,
   "name": "b_1ED1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7909,
   "name": "j_1EE5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7922,
   "name": "b_1EF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7941,
   "name": "b_1F05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7954,
   "name": "b_1F12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7960,
   "name": "b_1F18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7983,
   "name": "b_1F2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7988,
   "name": "j_1F34",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8000,
   "name": "r_1F40",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8001,
   "name": "move_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8002,
   "name": "move_frames_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8043,
   "name": "frame_pose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8260,
   "name": "frame_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8477,
   "name": "frame_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8694,
   "name": "border_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8702,
   "name": "frame_dots",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8742,
   "name": "b_2226",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8750,
   "name": "b_222E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8761,
   "name": "b_2239",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8770,
   "name": "b_2242",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8774,
   "name": "r_2246",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 8775,
   "name": "game_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8781,
   "name": "j_224D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8790,
   "name": "b_2256",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8802,
   "name": "b_2262",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8816,
   "name": "b_2270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8865,
   "name": "j_22A1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 8877,
   "name": "b_22AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8898,
   "name": "b_22C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8903,
   "name": "b_22C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8916,
   "name": "b_22D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8943,
   "name": "b_22EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9021,
   "name": "b_233D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9039,
   "name": "j_234F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9055,
   "name": "attract_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9057,
   "name": "b_2361",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9130,
   "name": "b_23AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9144,
   "name": "b_23B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9168,
   "name": "table_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9210,
   "name": "table_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9226,
   "name": "build_font",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9244,
   "name": "b_241C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9250,
   "name": "b_2422",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9277,
   "name": "b_243D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9288,
   "name": "b_2448",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9292,
   "name": "table_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9294,
   "name": "b_244E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9323,
   "name": "b_246B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9375,
   "name": "name_entry_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9376,
   "name": "entry_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9387,
   "name": "entry_colour_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9388,
   "name": "entry_colour_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9399,
   "name": "name_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9447,
   "name": "b_24E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9459,
   "name": "j_24F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9469,
   "name": "b_24FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9485,
   "name": "b_250D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9524,
   "name": "b_2534",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9543,
   "name": "b_2547",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9546,
   "name": "j_254A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9570,
   "name": "b_2562",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9573,
   "name": "b_2565",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9581,
   "name": "b_256D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9627,
   "name": "j_259B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9654,
   "name": "read_entry_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9682,
   "name": "print_belt",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9692,
   "name": "b_25DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9694,
   "name": "j_25DE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9700,
   "name": "b_25E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9717,
   "name": "r_25F5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9718,
   "name": "belt_name_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9726,
   "name": "belt_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9769,
   "name": "belt_text_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9775,
   "name": "belt_scores",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9782,
   "name": "belt_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9788,
   "name": "player_score_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9790,
   "name": "belt",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9803,
   "name": "b_264B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9806,
   "name": "j_264E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9832,
   "name": "b_2668",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9837,
   "name": "b_266D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9842,
   "name": "b_2672",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9862,
   "name": "b_2686",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9872,
   "name": "j_2690",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 9885,
   "name": "b_269D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9898,
   "name": "b_26AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9918,
   "name": "r_26BE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 9919,
   "name": "table_header",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9947,
   "name": "print_header",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9949,
   "name": "b_26DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 9975,
   "name": "table_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10004,
   "name": "j_2714",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10015,
   "name": "b_271F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10017,
   "name": "b_2721",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10067,
   "name": "b_2753",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10070,
   "name": "j_2756",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10115,
   "name": "b_2783",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10138,
   "name": "r_279A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10139,
   "name": "print_bcd_font",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10150,
   "name": "b_27A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10164,
   "name": "j_27B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10178,
   "name": "b_27C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10189,
   "name": "j_27CD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10193,
   "name": "sort_table",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10197,
   "name": "b_27D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10201,
   "name": "b_27D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10214,
   "name": "b_27E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10227,
   "name": "compare_scores",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10243,
   "name": "r_2803",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10244,
   "name": "swap_places",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10248,
   "name": "b_2808",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10277,
   "name": "clear_floor",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10285,
   "name": "b_282D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10288,
   "name": "b_2830",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10290,
   "name": "clear_page",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10305,
   "name": "clear_both_floors",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10330,
   "name": "clear_floor_rows",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10351,
   "name": "b_286F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10353,
   "name": "floor_row_page_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10356,
   "name": "floor_row_page_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10360,
   "name": "r_2878",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10361,
   "name": "shape_blocks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10377,
   "name": "shape_blocks_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10425,
   "name": "shape_block_first",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10427,
   "name": "shape_block_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10429,
   "name": "clear_branch",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10446,
   "name": "clear_old_shapes",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10450,
   "name": "j_28D2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10459,
   "name": "b_28DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10494,
   "name": "b_28FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10513,
   "name": "b_2911",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10534,
   "name": "shape_page_add",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10543,
   "name": "b_292F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10545,
   "name": "shape_block_stop",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10580,
   "name": "b_2954",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10587,
   "name": "b_295B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10601,
   "name": "b_2969",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10624,
   "name": "level_defend",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10632,
   "name": "level_attack",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10640,
   "name": "level_target",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10648,
   "name": "set_skills",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10677,
   "name": "b_29B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10685,
   "name": "r_29BD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 10686,
   "name": "choose_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10690,
   "name": "b_29C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10709,
   "name": "b_29D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10721,
   "name": "b_29E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10751,
   "name": "b_29FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10754,
   "name": "other_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10757,
   "name": "other_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10760,
   "name": "target_1p",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10766,
   "name": "target_1p_alt",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10778,
   "name": "computer_fighter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 10789,
   "name": "b_2A25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10798,
   "name": "b_2A2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10801,
   "name": "b_2A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10828,
   "name": "b_2A4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10838,
   "name": "b_2A56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10850,
   "name": "b_2A62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10856,
   "name": "b_2A68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10859,
   "name": "b_2A6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10883,
   "name": "b_2A83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10896,
   "name": "b_2A90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10900,
   "name": "j_2A94",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10910,
   "name": "b_2A9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10925,
   "name": "b_2AAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10938,
   "name": "b_2ABA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10945,
   "name": "j_2AC1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10954,
   "name": "j_2ACA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 10967,
   "name": "b_2AD7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10970,
   "name": "b_2ADA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 10988,
   "name": "b_2AEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11015,
   "name": "b_2B07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11021,
   "name": "b_2B0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11027,
   "name": "b_2B13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11044,
   "name": "b_2B24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11068,
   "name": "j_2B3C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11083,
   "name": "r_2B4B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 11084,
   "name": "defend_chance",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11090,
   "name": "defend_chance_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11096,
   "name": "attack_chance",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11102,
   "name": "attack_spread",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11108,
   "name": "facing_away",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11116,
   "name": "half_point_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11132,
   "name": "defend_class",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11168,
   "name": "moves_vs_down",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11181,
   "name": "moves_turn_far",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11193,
   "name": "moves_turn_near",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11205,
   "name": "moves_approach",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11217,
   "name": "defend_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11281,
   "name": "attack_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11389,
   "name": "attack_bands",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11400,
   "name": "random_below",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11406,
   "name": "j_2C8E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11427,
   "name": "b_2CA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11433,
   "name": "range_check",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11452,
   "name": "b_2CBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11455,
   "name": "j_2CBF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11475,
   "name": "b_2CD3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11478,
   "name": "j_2CD6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 11493,
   "name": "b_2CE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11517,
   "name": "b_2CFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11530,
   "name": "hit_poses",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11541,
   "name": "attack_reach",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11551,
   "name": "attack_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11561,
   "name": "attack_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11571,
   "name": "attack_score_full",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11581,
   "name": "attack_score_half",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11591,
   "name": "attack_knock_full",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11601,
   "name": "attack_knock_half",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11611,
   "name": "attack_stun_full",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11621,
   "name": "attack_stun_half",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11631,
   "name": "test_point_bits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11637,
   "name": "hit_reactions",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11677,
   "name": "pose_hit_class",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11750,
   "name": "hit_points",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11966,
   "name": "check_hits",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 11968,
   "name": "b_2EC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11987,
   "name": "b_2ED3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 11995,
   "name": "b_2EDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12005,
   "name": "b_2EE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12013,
   "name": "b_2EED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12021,
   "name": "b_2EF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12065,
   "name": "b_2F21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12068,
   "name": "r_2F24",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12069,
   "name": "hit_pair_skip",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12075,
   "name": "hit_attacker",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12081,
   "name": "hit_target",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12087,
   "name": "down_time",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12093,
   "name": "test_hit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12106,
   "name": "b_2F4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12119,
   "name": "b_2F57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12151,
   "name": "b_2F77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12156,
   "name": "b_2F7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12186,
   "name": "b_2F9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12192,
   "name": "j_2FA0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12199,
   "name": "j_2FA7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12215,
   "name": "b_2FB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12239,
   "name": "b_2FCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12258,
   "name": "b_2FE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12263,
   "name": "j_2FE7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12283,
   "name": "b_2FFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12288,
   "name": "test_hit_tail",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12300,
   "name": "b_300C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12314,
   "name": "b_301A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12329,
   "name": "j_3029",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12334,
   "name": "b_302E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12337,
   "name": "b_3031",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12347,
   "name": "b_303B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12384,
   "name": "b_3060",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12411,
   "name": "j_307B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12439,
   "name": "b_3097",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12491,
   "name": "j_30CB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12502,
   "name": "r_30D6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12503,
   "name": "dot_colour_on",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12506,
   "name": "dot_colour_off",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12509,
   "name": "show_dots",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12534,
   "name": "b_30F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12544,
   "name": "b_3100",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12557,
   "name": "b_310D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12567,
   "name": "dot_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12570,
   "name": "score_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12573,
   "name": "score_ends",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12576,
   "name": "score_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12579,
   "name": "score_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12582,
   "name": "add_score",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12593,
   "name": "b_3131",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12609,
   "name": "b_3141",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12670,
   "name": "b_317E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12709,
   "name": "b_31A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12724,
   "name": "j_31B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12728,
   "name": "bonus_add_score",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12748,
   "name": "arena_colours",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12750,
   "name": "b_31CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12778,
   "name": "show_bubble",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12790,
   "name": "b_31F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12796,
   "name": "b_31FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12804,
   "name": "b_3204",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12838,
   "name": "b_3226",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12854,
   "name": "j_3236",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12863,
   "name": "b_323F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12874,
   "name": "r_324A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 12875,
   "name": "place_judge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 12889,
   "name": "b_3259",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12893,
   "name": "b_325D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12901,
   "name": "b_3265",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12912,
   "name": "b_3270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12924,
   "name": "b_327C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12942,
   "name": "pose_width_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12943,
   "name": "pose_width_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12976,
   "name": "b_32B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12986,
   "name": "j_32BA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13006,
   "name": "b_32CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13018,
   "name": "b_32DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13020,
   "name": "b_32DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13023,
   "name": "b_32DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13034,
   "name": "b_32EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13056,
   "name": "b_3300",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13061,
   "name": "b_3305",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13079,
   "name": "b_3317",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13084,
   "name": "b_331C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13085,
   "name": "j_331D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13099,
   "name": "j_332B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13118,
   "name": "b_333E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13136,
   "name": "b_3350",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13149,
   "name": "b_335D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13154,
   "name": "b_3362",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13163,
   "name": "b_336B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13170,
   "name": "j_3372",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 13171,
   "name": "place_bubble",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13184,
   "name": "b_3380",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13201,
   "name": "b_3391",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13218,
   "name": "r_33A2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13219,
   "name": "judge_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13223,
   "name": "b_33A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13238,
   "name": "b_33B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13270,
   "name": "judge_row_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13276,
   "name": "judge_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13308,
   "name": "draw_judge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13329,
   "name": "b_3411",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13331,
   "name": "b_3413",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13341,
   "name": "b_341D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13365,
   "name": "clear_judge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13369,
   "name": "b_3439",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13382,
   "name": "b_3446",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13396,
   "name": "b_3454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13417,
   "name": "judge_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13421,
   "name": "name_lengths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13424,
   "name": "name_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13427,
   "name": "fighter_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 13442,
   "name": "bubble_line_ptrs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13443,
   "name": "bubble_line_ptrs_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13450,
   "name": "message_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14435,
   "name": "bubble_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14465,
   "name": "message_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14466,
   "name": "message_ptrs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 14527,
   "name": "print_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14541,
   "name": "b_38CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14579,
   "name": "j_38F3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14589,
   "name": "b_38FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14600,
   "name": "b_3908",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14623,
   "name": "b_391F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14641,
   "name": "b_3931",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14655,
   "name": "b_393F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14680,
   "name": "b_3958",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14687,
   "name": "b_395F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14700,
   "name": "j_396C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14703,
   "name": "b_396F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14718,
   "name": "b_397E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14736,
   "name": "b_3990",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14739,
   "name": "j_3993",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14756,
   "name": "b_39A4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14776,
   "name": "j_39B8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14789,
   "name": "r_39C5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14790,
   "name": "print_letter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14815,
   "name": "b_39DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14831,
   "name": "b_39EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14848,
   "name": "b_3A00",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14851,
   "name": "clear_bubble_chars",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14861,
   "name": "b_3A0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14876,
   "name": "b_3A1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14903,
   "name": "b_3A37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14930,
   "name": "b_3A52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14944,
   "name": "draw_bubble_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15004,
   "name": "b_3A9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15009,
   "name": "b_3AA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15022,
   "name": "r_3AAE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15023,
   "name": "put_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15050,
   "name": "reset_floor",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15067,
   "name": "b_3ADB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15077,
   "name": "blank_bubble_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15093,
   "name": "b_3AF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15099,
   "name": "fallen_overlay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15195,
   "name": "fallen_overlay_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15199,
   "name": "fallen_pose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15219,
   "name": "b_3B73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15255,
   "name": "b_3B97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15266,
   "name": "r_3BA2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15267,
   "name": "knock_marks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15299,
   "name": "b_3BC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15304,
   "name": "j_3BC8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15317,
   "name": "r_3BD5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15318,
   "name": "stamp_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15334,
   "name": "b_3BE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15346,
   "name": "b_3BF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15353,
   "name": "j_3BF9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15360,
   "name": "swap_page_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15363,
   "name": "mark_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15371,
   "name": "mark_shapes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15377,
   "name": "mark_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15407,
   "name": "hide_start_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15410,
   "name": "hide_end_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15413,
   "name": "hide_start_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15416,
   "name": "hide_end_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15419,
   "name": "hide_parts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15423,
   "name": "restore_parts",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15431,
   "name": "b_3C47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15460,
   "name": "b_3C64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15497,
   "name": "b_3C89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15500,
   "name": "j_3C8C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15504,
   "name": "hide_or_restore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15511,
   "name": "b_3C97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15528,
   "name": "b_3CA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15538,
   "name": "r_3CB2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15539,
   "name": "tile_column_slot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15551,
   "name": "tile_byte_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15552,
   "name": "tile_offset_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15553,
   "name": "tile_offset_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15554,
   "name": "tile_offset_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15555,
   "name": "tile_offset_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15556,
   "name": "tile_offset_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15557,
   "name": "tile_offset_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15558,
   "name": "tile_offset_8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15583,
   "name": "tile_offset_sets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15591,
   "name": "tile_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15592,
   "name": "tile_columns_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15609,
   "name": "tile_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15610,
   "name": "tile_rows_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15633,
   "name": "sprite_pages",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15635,
   "name": "sprite_pages_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 15637,
   "name": "draw_sprite_fighter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15644,
   "name": "b_3D1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15682,
   "name": "b_3D42",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15688,
   "name": "b_3D48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15689,
   "name": "j_3D49",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15715,
   "name": "b_3D63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15718,
   "name": "j_3D66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15732,
   "name": "b_3D74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15741,
   "name": "b_3D7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15756,
   "name": "b_3D8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15812,
   "name": "j_3DC4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15845,
   "name": "tile_line_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15853,
   "name": "tile_line_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15861,
   "name": "tile_line_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15869,
   "name": "tile_line_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15877,
   "name": "tile_line_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15885,
   "name": "tile_line_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15893,
   "name": "tile_line_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15901,
   "name": "tile_line_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15928,
   "name": "j_3E38",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15945,
   "name": "j_3E49",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15949,
   "name": "draw_mirrored",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15958,
   "name": "b_3E56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15976,
   "name": "b_3E68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16032,
   "name": "j_3EA0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16065,
   "name": "mtile_line_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16077,
   "name": "mtile_line_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16089,
   "name": "mtile_line_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16101,
   "name": "mtile_line_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16113,
   "name": "mtile_line_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16125,
   "name": "mtile_line_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16137,
   "name": "mtile_line_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16149,
   "name": "mtile_line_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16180,
   "name": "j_3F34",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16197,
   "name": "j_3F45",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16201,
   "name": "place_char_fighter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16205,
   "name": "j_3F4D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16241,
   "name": "b_3F71",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16243,
   "name": "b_3F73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16275,
   "name": "b_3F93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16293,
   "name": "b_3FA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16303,
   "name": "b_3FAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16316,
   "name": "b_3FBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16327,
   "name": "b_3FC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16355,
   "name": "b_3FE3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16371,
   "name": "b_3FF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16381,
   "name": "b_3FFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16405,
   "name": "b_4015",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16412,
   "name": "r_401C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 16413,
   "name": "pose_layout",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16450,
   "name": "build_char_fighter",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16467,
   "name": "b_4053",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16473,
   "name": "b_4059",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16474,
   "name": "j_405A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16527,
   "name": "b_408F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16528,
   "name": "b_4090",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16539,
   "name": "b_409B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16551,
   "name": "b_40A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16639,
   "name": "b_40FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16649,
   "name": "j_4109",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16656,
   "name": "j_4110",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16659,
   "name": "j_4113",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16668,
   "name": "b_411C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16680,
   "name": "b_4128",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16695,
   "name": "b_4137",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16775,
   "name": "b_4187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16786,
   "name": "b_4192",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16792,
   "name": "j_4198",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16799,
   "name": "j_419F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 16803,
   "name": "tile_steps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16821,
   "name": "build_tables",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 16831,
   "name": "mirror_pair_0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16835,
   "name": "mirror_pair_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16839,
   "name": "mirror_pair_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16843,
   "name": "mirror_pair_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16847,
   "name": "build_mirror",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16850,
   "name": "mirror_rts_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16855,
   "name": "b_41D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16921,
   "name": "pair_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16925,
   "name": "build_mask",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16927,
   "name": "b_421F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16934,
   "name": "b_4226",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16949,
   "name": "b_4235",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16959,
   "name": "colour_swap",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 16963,
   "name": "build_colour_swap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16965,
   "name": "b_4245",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16978,
   "name": "b_4252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 17024,
   "name": "arena_bitmap",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17984,
   "name": "arena_bitmap_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18944,
   "name": "arena_bitmap_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19904,
   "name": "arena_bitmap_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20864,
   "name": "floor_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20928,
   "name": "judge_foot_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21168,
   "name": "f_52B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21171,
   "name": "a_52B3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21172,
   "name": "f_52B4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21191,
   "name": "a_52C7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21192,
   "name": "f_52C8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21195,
   "name": "a_52CB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21196,
   "name": "f_52CC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21215,
   "name": "a_52DF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22319,
   "name": "a_572F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22320,
   "name": "f_5730",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22328,
   "name": "a_5738",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22336,
   "name": "f_5740",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22393,
   "name": "f_5779",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22395,
   "name": "f_577B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22397,
   "name": "f_577D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22399,
   "name": "f_577F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22400,
   "name": "f_5780",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22401,
   "name": "f_5781",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22403,
   "name": "f_5783",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22405,
   "name": "f_5785",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22407,
   "name": "f_5787",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22408,
   "name": "f_5788",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22416,
   "name": "f_5790",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22424,
   "name": "f_5798",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22432,
   "name": "f_57A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22440,
   "name": "f_57A8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22448,
   "name": "f_57B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22456,
   "name": "f_57B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22464,
   "name": "f_57C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22528,
   "name": "f_5800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22529,
   "name": "a_5801",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22531,
   "name": "f_5803",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22532,
   "name": "a_5804",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22534,
   "name": "f_5806",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22535,
   "name": "a_5807",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22537,
   "name": "f_5809",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22538,
   "name": "a_580A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22540,
   "name": "f_580C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22541,
   "name": "a_580D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22543,
   "name": "f_580F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22544,
   "name": "a_5810",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22546,
   "name": "f_5812",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22547,
   "name": "a_5813",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22549,
   "name": "a_5815",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22550,
   "name": "a_5816",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22552,
   "name": "a_5818",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22553,
   "name": "a_5819",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22555,
   "name": "a_581B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22556,
   "name": "a_581C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22558,
   "name": "a_581E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22559,
   "name": "a_581F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22561,
   "name": "a_5821",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22562,
   "name": "a_5822",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22564,
   "name": "a_5824",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22565,
   "name": "a_5825",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22567,
   "name": "a_5827",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22568,
   "name": "a_5828",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22579,
   "name": "a_5833",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22582,
   "name": "a_5836",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22585,
   "name": "a_5839",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22588,
   "name": "a_583C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22592,
   "name": "f_5840",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22720,
   "name": "f_58C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22976,
   "name": "f_59C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24511,
   "name": "f_5FBF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24512,
   "name": "f_5FC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24576,
   "name": "f_6000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24640,
   "name": "f_6040",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24704,
   "name": "f_6080",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26560,
   "name": "f_67C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26562,
   "name": "f_67C2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 26578,
   "name": "a_67D2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26589,
   "name": "a_67DD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26595,
   "name": "a_67E3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26605,
   "name": "a_67ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26608,
   "name": "a_67F0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26611,
   "name": "a_67F3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26616,
   "name": "a_67F8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26617,
   "name": "a_67F9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26619,
   "name": "a_67FB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26620,
   "name": "a_67FC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 26624,
   "name": "top_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27120,
   "name": "bonus_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 27184,
   "name": "floor_screen_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27192,
   "name": "f_6A38",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27232,
   "name": "f_6A60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27260,
   "name": "f_6A7C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27273,
   "name": "f_6A89",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27304,
   "name": "f_6AA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27392,
   "name": "f_6B00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27420,
   "name": "f_6B1C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27464,
   "name": "f_6B48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27592,
   "name": "f_6BC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27624,
   "name": "screen_2_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27640,
   "name": "sprite_ptrs_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27646,
   "name": "a_6BFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27648,
   "name": "f_6C00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27649,
   "name": "f_6C01",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27676,
   "name": "a_6C1C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27677,
   "name": "a_6C1D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 27679,
   "name": "f_6C1F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27720,
   "name": "f_6C48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27727,
   "name": "f_6C4F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27967,
   "name": "f_6D3F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28207,
   "name": "f_6E2F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28208,
   "name": "floor_screen_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28216,
   "name": "f_6E38",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28256,
   "name": "f_6E60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28284,
   "name": "f_6E7C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28297,
   "name": "f_6E89",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28328,
   "name": "f_6EA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28416,
   "name": "f_6F00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28427,
   "name": "f_6F0B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28444,
   "name": "f_6F1C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28488,
   "name": "f_6F48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28616,
   "name": "f_6FC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28648,
   "name": "screen_1_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28664,
   "name": "sprite_ptrs_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28665,
   "name": "a_6FF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28666,
   "name": "a_6FFA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28667,
   "name": "a_6FFB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28668,
   "name": "a_6FFC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28669,
   "name": "a_6FFD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28670,
   "name": "a_6FFE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28671,
   "name": "a_6FFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 28672,
   "name": "font5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28928,
   "name": "shield_side_r",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28992,
   "name": "shield_side_l",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29056,
   "name": "shield_face",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29120,
   "name": "antics_init_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29123,
   "name": "antics_sprites_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29126,
   "name": "antics_step_entry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29129,
   "name": "antics_init",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29173,
   "name": "b_71F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29202,
   "name": "reflection_phases",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29227,
   "name": "reflection_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 29231,
   "name": "b_722F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29249,
   "name": "antics_sprites",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29427,
   "name": "reflection_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29459,
   "name": "reflection_row_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29522,
   "name": "reflection_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29786,
   "name": "reflection_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30038,
   "name": "antics_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30042,
   "name": "antics_random_ptr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30065,
   "name": "antics_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30074,
   "name": "b_757A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30117,
   "name": "glints_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30146,
   "name": "b_75C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30177,
   "name": "b_75E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30206,
   "name": "b_75FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30235,
   "name": "b_761B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30264,
   "name": "r_7638",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30265,
   "name": "reflection_drift",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30281,
   "name": "reflection_drift_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30303,
   "name": "b_765F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30309,
   "name": "drift_set",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30333,
   "name": "r_767D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30334,
   "name": "antics_creature",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30349,
   "name": "b_768D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30356,
   "name": "b_7694",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30363,
   "name": "b_769B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30370,
   "name": "b_76A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30443,
   "name": "b_76EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30487,
   "name": "r_7717",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30488,
   "name": "creature_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30492,
   "name": "creature_priority",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30496,
   "name": "route_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30528,
   "name": "route_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30560,
   "name": "route_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30592,
   "name": "bird_direction",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30600,
   "name": "bird_second",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30608,
   "name": "bird_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30616,
   "name": "bird_behind_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30624,
   "name": "bird_front_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30632,
   "name": "bird_behind_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30640,
   "name": "bird_front_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30648,
   "name": "bird_behind_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30656,
   "name": "bird_front_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30664,
   "name": "bird_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30674,
   "name": "b_77D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30694,
   "name": "b_77E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30697,
   "name": "j_77E9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30738,
   "name": "b_7812",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30742,
   "name": "b_7816",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30754,
   "name": "b_7822",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30762,
   "name": "b_782A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30767,
   "name": "j_782F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30785,
   "name": "j_7841",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30832,
   "name": "r_7870",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30833,
   "name": "bird_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30834,
   "name": "bird_row_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30835,
   "name": "bird_row_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30836,
   "name": "bird_row_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30849,
   "name": "spider_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30880,
   "name": "b_78A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30902,
   "name": "b_78B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30917,
   "name": "b_78C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30934,
   "name": "j_78D6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30976,
   "name": "r_7900",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30977,
   "name": "spider_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30978,
   "name": "spider_row_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30979,
   "name": "spider_row_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30980,
   "name": "spider_row_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30981,
   "name": "spider_row_5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30982,
   "name": "spider_row_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30983,
   "name": "spider_row_7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31009,
   "name": "spider_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31030,
   "name": "spider_frame_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31054,
   "name": "worm_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31129,
   "name": "b_7999",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31135,
   "name": "j_799F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31159,
   "name": "r_79B7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31160,
   "name": "worm_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31168,
   "name": "worm_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31169,
   "name": "worm_row_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31170,
   "name": "worm_row_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31171,
   "name": "worm_row_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31196,
   "name": "fish_splash_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31204,
   "name": "fish_again",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31212,
   "name": "fish_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31222,
   "name": "b_79F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31255,
   "name": "b_7A17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31260,
   "name": "b_7A1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31264,
   "name": "b_7A20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31273,
   "name": "b_7A29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31289,
   "name": "b_7A39",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31302,
   "name": "j_7A46",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31493,
   "name": "r_7B05",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 31494,
   "name": "fish_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31495,
   "name": "fish_row_00_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31526,
   "name": "fish_row_01_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31527,
   "name": "fish_row_01_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31558,
   "name": "fish_row_02_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31559,
   "name": "fish_row_02_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31590,
   "name": "fish_row_03_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31591,
   "name": "fish_row_03_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31622,
   "name": "fish_row_04_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31623,
   "name": "fish_row_04_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31654,
   "name": "fish_row_05_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31655,
   "name": "fish_row_05_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31686,
   "name": "fish_row_06_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31687,
   "name": "fish_row_06_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31718,
   "name": "fish_row_07_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31719,
   "name": "fish_row_07_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31750,
   "name": "fish_row_08_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31751,
   "name": "fish_row_08_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31782,
   "name": "fish_row_09_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31783,
   "name": "fish_row_09_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31814,
   "name": "fish_row_10_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31815,
   "name": "fish_row_10_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31846,
   "name": "fish_row_11_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31847,
   "name": "fish_row_11_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31878,
   "name": "fish_row_12_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31879,
   "name": "fish_row_12_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31910,
   "name": "fish_row_13_l",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31911,
   "name": "fish_row_13_r",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31942,
   "name": "fish_row_14_l",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31943,
   "name": "fish_row_14_r",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32000,
   "name": "pose_gfx_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32001,
   "name": "pose_gfx_ptrs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32160,
   "name": "pose_tiles",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32256,
   "name": "pose_layouts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32335,
   "name": "layout_patch_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "pose_layouts_8000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33216,
   "name": "pose_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33217,
   "name": "pose_masks_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33408,
   "name": "pose_00_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33680,
   "name": "pose_01_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33920,
   "name": "pose_02_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34136,
   "name": "pose_03_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34328,
   "name": "pose_04_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34568,
   "name": "pose_05_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34760,
   "name": "pose_06_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34992,
   "name": "pose_07_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35232,
   "name": "pose_08_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35432,
   "name": "pose_09_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35624,
   "name": "pose_0A_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35784,
   "name": "pose_0B_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35968,
   "name": "pose_0C_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36184,
   "name": "pose_0D_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36376,
   "name": "pose_0E_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36648,
   "name": "pose_0F_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36856,
   "name": "pose_10_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37136,
   "name": "pose_11_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37280,
   "name": "pose_12_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37480,
   "name": "pose_13_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37736,
   "name": "pose_14_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37992,
   "name": "pose_15_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38208,
   "name": "pose_16_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38416,
   "name": "pose_17_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38600,
   "name": "pose_18_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38888,
   "name": "pose_19_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39152,
   "name": "pose_1A_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39392,
   "name": "pose_1B_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39616,
   "name": "pose_1C_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39784,
   "name": "pose_1D_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39944,
   "name": "pose_1E_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40136,
   "name": "pose_1F_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40368,
   "name": "pose_20_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40552,
   "name": "pose_21_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40720,
   "name": "pose_22_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40896,
   "name": "pose_23_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "pose_23_gfx_rest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41176,
   "name": "pose_24_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41392,
   "name": "pose_25_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41600,
   "name": "pose_26_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41808,
   "name": "pose_27_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42072,
   "name": "pose_28_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42352,
   "name": "pose_29_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42624,
   "name": "pose_2A_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42960,
   "name": "pose_2B_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43160,
   "name": "pose_2C_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43400,
   "name": "pose_2D_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43600,
   "name": "pose_2E_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43784,
   "name": "pose_2F_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43976,
   "name": "pose_30_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44096,
   "name": "pose_31_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44224,
   "name": "pose_32_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44488,
   "name": "pose_33_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44744,
   "name": "pose_34_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44944,
   "name": "pose_35_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45088,
   "name": "pose_36_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45280,
   "name": "pose_37_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45456,
   "name": "pose_38_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45624,
   "name": "pose_39_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45768,
   "name": "pose_3A_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46024,
   "name": "pose_3B_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46224,
   "name": "pose_3C_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46480,
   "name": "pose_3D_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46704,
   "name": "pose_3E_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46936,
   "name": "pose_3F_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47280,
   "name": "pose_40_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47552,
   "name": "pose_41_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47768,
   "name": "pose_42_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48048,
   "name": "pose_43_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48272,
   "name": "pose_44_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48536,
   "name": "pose_45_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48768,
   "name": "hiscore_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48769,
   "name": "f_BE81",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48770,
   "name": "f_BE82",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48772,
   "name": "reflection_era",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48773,
   "name": "antics_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48774,
   "name": "antics_frames_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48775,
   "name": "creature",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48776,
   "name": "creature_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48777,
   "name": "creature_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48778,
   "name": "creature_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48779,
   "name": "creature_ticks",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48783,
   "name": "spider_up",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48784,
   "name": "creature_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48785,
   "name": "worm_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48786,
   "name": "creature_sprite_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48787,
   "name": "creature_sprite_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48788,
   "name": "creature_behind",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48789,
   "name": "worm_x_half",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48791,
   "name": "worm_next",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48792,
   "name": "route",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48793,
   "name": "route_pick",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48794,
   "name": "fish_leaps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48795,
   "name": "creatures_started",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48800,
   "name": "reflection_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48801,
   "name": "f_BEA1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48802,
   "name": "a_BEA2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48803,
   "name": "a_BEA3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48805,
   "name": "a_BEA5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48806,
   "name": "a_BEA6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48808,
   "name": "a_BEA8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48809,
   "name": "a_BEA9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48811,
   "name": "a_BEAB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48814,
   "name": "a_BEAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48815,
   "name": "a_BEAF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48818,
   "name": "a_BEB2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48851,
   "name": "a_BED3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48896,
   "name": "shouts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "shouts_c000",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50112,
   "name": "sample_rts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50113,
   "name": "shouts_c3c1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50432,
   "name": "shouts_c500",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 50688,
   "name": "shouts_c600",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51712,
   "name": "shouts_ca00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51968,
   "name": "shouts_cb00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52224,
   "name": "shouts_cc00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52383,
   "name": "sample_rts_2",
   "type": "Return",
   "kind": "user"
  },
  {
   "address": 52384,
   "name": "shouts_cca0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52736,
   "name": "shouts_ce00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "f_D800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55328,
   "name": "f_D820",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55334,
   "name": "a_D826",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55335,
   "name": "a_D827",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55368,
   "name": "f_D848",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55375,
   "name": "f_D84F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55615,
   "name": "f_D93F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55856,
   "name": "f_DA30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55864,
   "name": "f_DA38",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55896,
   "name": "f_DA58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55904,
   "name": "f_DA60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55932,
   "name": "f_DA7C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55936,
   "name": "f_DA80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55945,
   "name": "f_DA89",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55976,
   "name": "f_DAA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55977,
   "name": "f_DAA9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55978,
   "name": "f_DAAA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55979,
   "name": "f_DAAB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55980,
   "name": "f_DAAC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 55981,
   "name": "f_DAAD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56016,
   "name": "f_DAD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56056,
   "name": "f_DAF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56064,
   "name": "f_DB00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56092,
   "name": "f_DB1C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56096,
   "name": "f_DB20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56136,
   "name": "f_DB48",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56176,
   "name": "f_DB70",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56216,
   "name": "f_DB98",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56256,
   "name": "f_DBC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 56264,
   "name": "f_DBC8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 57344,
   "name": "vib_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57347,
   "name": "vib_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57350,
   "name": "vib_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 57353,
   "name": "music_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57356,
   "name": "music_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57359,
   "name": "music_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 57369,
   "name": "b_E019",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57406,
   "name": "b_E03E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57413,
   "name": "b_E045",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57427,
   "name": "b_E053",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57430,
   "name": "b_E056",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57446,
   "name": "b_E066",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57457,
   "name": "j_E071",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57495,
   "name": "b_E097",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57498,
   "name": "next_note",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 57520,
   "name": "b_E0B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57534,
   "name": "b_E0BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57615,
   "name": "b_E10F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57618,
   "name": "j_E112",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57621,
   "name": "b_E115",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57653,
   "name": "note_rest",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 57672,
   "name": "note_instrument",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 57749,
   "name": "b_E195",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57755,
   "name": "j_E19B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57778,
   "name": "b_E1B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57781,
   "name": "note_release",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 57801,
   "name": "note_effects",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 57831,
   "name": "b_E1E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57861,
   "name": "b_E205",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57881,
   "name": "b_E219",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57889,
   "name": "b_E221",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57909,
   "name": "j_E235",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57920,
   "name": "b_E240",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57937,
   "name": "j_E251",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57956,
   "name": "b_E264",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57966,
   "name": "j_E26E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 57985,
   "name": "b_E281",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 57995,
   "name": "pulse_sweep",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 58043,
   "name": "pulse_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58052,
   "name": "b_E2C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58069,
   "name": "pulse_bottom",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58075,
   "name": "b_E2DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58092,
   "name": "note_slide",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 58120,
   "name": "slide_down_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58127,
   "name": "b_E30F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58146,
   "name": "slide_up_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58150,
   "name": "note_flags",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 58195,
   "name": "b_E353",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58218,
   "name": "b_E36A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58248,
   "name": "b_E388",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58269,
   "name": "b_E39D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58272,
   "name": "j_E3A0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58275,
   "name": "b_E3A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58327,
   "name": "b_E3D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58353,
   "name": "b_E3F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58372,
   "name": "b_E404",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58380,
   "name": "j_E40C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58394,
   "name": "b_E41A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58422,
   "name": "b_E436",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58444,
   "name": "note_out",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 58468,
   "name": "j_E464",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58477,
   "name": "j_E46D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 58487,
   "name": "b_E477",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 58488,
   "name": "f_E478",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 58489,
   "name": "jmp_hi_freq",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58490,
   "name": "freq_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58491,
   "name": "freq_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58684,
   "name": "voice_offset",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58687,
   "name": "voice_reg",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58688,
   "name": "track_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58691,
   "name": "pattern_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58694,
   "name": "note_ticks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58697,
   "name": "note_head",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58700,
   "name": "tune_pattern_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58767,
   "name": "voice_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58770,
   "name": "voice_note",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58773,
   "name": "tune_pattern_08",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58806,
   "name": "voice_instrument",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58809,
   "name": "tune_pattern_09",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58848,
   "name": "gate_mask",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58851,
   "name": "sid_copy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58852,
   "name": "sid_copy_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58853,
   "name": "sid_copy_pulse_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58854,
   "name": "sid_copy_pulse_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58855,
   "name": "sid_copy_control",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58856,
   "name": "sid_copy_ad",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58857,
   "name": "sid_copy_sr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58865,
   "name": "sid_copy_voice3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 58866,
   "name": "sid_copy_v3_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58869,
   "name": "sid_copy_v3_control",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58872,
   "name": "sid_copy_cutoff",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58874,
   "name": "music_voice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58875,
   "name": "music_wave",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58876,
   "name": "tune_pattern_0A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58921,
   "name": "tune_pattern_0B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58944,
   "name": "tune_pattern_0C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58968,
   "name": "tune_pattern_0D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58991,
   "name": "tune_pattern_0E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59020,
   "name": "vib_depth",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59021,
   "name": "pulse_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59022,
   "name": "f_E68E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 59025,
   "name": "pulse_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59028,
   "name": "tempo_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59029,
   "name": "tempo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59030,
   "name": "tempo_nudge",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59031,
   "name": "last_voice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59032,
   "name": "instrument_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59033,
   "name": "music_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59034,
   "name": "voice_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59037,
   "name": "voice_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59040,
   "name": "tune_pattern_1B",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59134,
   "name": "slide_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59137,
   "name": "tune_pattern_1C",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59166,
   "name": "slide_flag",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59169,
   "name": "tune_pattern_1D",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59224,
   "name": "instrument_flags",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59226,
   "name": "note_byte",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59227,
   "name": "tune_pattern_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59248,
   "name": "tune_pattern_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59278,
   "name": "pulse_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59281,
   "name": "tune_pattern_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59323,
   "name": "tune_pattern_1A",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59364,
   "name": "pulse_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59367,
   "name": "tune_pattern_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59388,
   "name": "first_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59391,
   "name": "tune_pattern_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59420,
   "name": "note_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59422,
   "name": "voice3_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59423,
   "name": "tune_pattern_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59463,
   "name": "tune_pattern_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59497,
   "name": "filter_cutoff",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59500,
   "name": "drum_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59503,
   "name": "arp_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59504,
   "name": "tune_pattern_1E",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59526,
   "name": "tune_pattern_1F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59556,
   "name": "tune_pattern_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59572,
   "name": "transpose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59575,
   "name": "tune_pattern_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59605,
   "name": "tune_pattern_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59621,
   "name": "arp_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59622,
   "name": "arp_offset_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59623,
   "name": "arp_offset_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59624,
   "name": "tune_pattern_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59640,
   "name": "arp_chords",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59641,
   "name": "arp_chords_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59648,
   "name": "tune_pattern_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59680,
   "name": "tune_pattern_25",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59694,
   "name": "drum_snare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59719,
   "name": "drum_tom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59748,
   "name": "drum_wobble",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59765,
   "name": "instruments",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59766,
   "name": "inst_pulse_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59767,
   "name": "inst_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59768,
   "name": "inst_ad",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59769,
   "name": "inst_sr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59770,
   "name": "inst_vibrato",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59771,
   "name": "inst_sweep",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59772,
   "name": "inst_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59885,
   "name": "instruments_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59886,
   "name": "inst2_drum_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59888,
   "name": "inst2_first_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59890,
   "name": "inst2_sweep_limits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59891,
   "name": "inst2_resonance",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 59892,
   "name": "inst2_filter_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60005,
   "name": "track_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60008,
   "name": "track_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60011,
   "name": "pattern_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60051,
   "name": "pattern_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 60091,
   "name": "track_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60228,
   "name": "track_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60430,
   "name": "track_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60642,
   "name": "tune_pattern_00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60644,
   "name": "tune_pattern_02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60688,
   "name": "tune_pattern_27",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60733,
   "name": "tune_pattern_01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60765,
   "name": "tune_pattern_03",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60796,
   "name": "tune_pattern_04",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60827,
   "name": "tune_pattern_0F",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60831,
   "name": "tune_pattern_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60835,
   "name": "tune_pattern_26",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60865,
   "name": "tune_pattern_05",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60867,
   "name": "tune_pattern_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60896,
   "name": "tune_pattern_06",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60937,
   "name": "tune_pattern_07",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60977,
   "name": "music_start_body",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 60988,
   "name": "music_stop_body",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 60994,
   "name": "effect_stop_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60997,
   "name": "effects_play",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61002,
   "name": "j_EE4A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61020,
   "name": "b_EE5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61028,
   "name": "b_EE64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61036,
   "name": "b_EE6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61061,
   "name": "b_EE85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61065,
   "name": "effect_script_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61066,
   "name": "effect_script_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61081,
   "name": "b_EE99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61101,
   "name": "b_EEAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61115,
   "name": "b_EEBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61143,
   "name": "b_EED7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61168,
   "name": "j_EEF0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61187,
   "name": "j_EF03",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61205,
   "name": "b_EF15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61208,
   "name": "j_EF18",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61211,
   "name": "b_EF1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61231,
   "name": "b_EF2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61242,
   "name": "j_EF3A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61245,
   "name": "b_EF3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61263,
   "name": "b_EF4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61278,
   "name": "b_EF5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61283,
   "name": "j_EF63",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61286,
   "name": "j_EF66",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61292,
   "name": "b_EF6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61299,
   "name": "b_EF73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61308,
   "name": "b_EF7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61310,
   "name": "b_EF7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61320,
   "name": "effect_stop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61341,
   "name": "effect_reg",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61342,
   "name": "effect_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61343,
   "name": "effect_channel",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61344,
   "name": "effect_freq_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61346,
   "name": "effect_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61348,
   "name": "effect_start_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61350,
   "name": "effect_start_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61352,
   "name": "effect_accel_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61354,
   "name": "effect_accel_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61356,
   "name": "effect_step_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61358,
   "name": "effect_step_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61360,
   "name": "effect_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61362,
   "name": "effect_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61364,
   "name": "effect_wave_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61366,
   "name": "effect_wave_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61368,
   "name": "effect_script_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61370,
   "name": "effect_wave_b_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61372,
   "name": "effect_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61374,
   "name": "effect_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61376,
   "name": "effect_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61378,
   "name": "effect_wave_now",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61380,
   "name": "effect_script",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61382,
   "name": "effect_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61384,
   "name": "effect_temp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61385,
   "name": "effect_cmd",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61386,
   "name": "effect_cmd_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61388,
   "name": "effect_scripts_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61396,
   "name": "effect_scripts_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61404,
   "name": "effect_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 61546,
   "name": "b_F06A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61566,
   "name": "effect_script_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61577,
   "name": "effect_script_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61579,
   "name": "effect_script_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61594,
   "name": "effect_script_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61603,
   "name": "effect_script_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61608,
   "name": "effect_script_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61645,
   "name": "effect_script_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61655,
   "name": "effect_script_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61672,
   "name": "effects",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61673,
   "name": "effect_rec_step_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61676,
   "name": "effect_wave_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61679,
   "name": "effect_note_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61695,
   "name": "effect_2_note",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61720,
   "name": "effects_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61721,
   "name": "effect_wave_a_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61722,
   "name": "effect_wave_b_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61723,
   "name": "effect_script_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61724,
   "name": "effect_length_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61725,
   "name": "effect_accel_lo_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61726,
   "name": "effect_accel_hi_rec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61776,
   "name": "sprite_reflections",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61780,
   "name": "j_F154",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 61793,
   "name": "b_F161",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61845,
   "name": "b_F195",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61852,
   "name": "refl_src_page_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61858,
   "name": "refl_dst_page_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61861,
   "name": "refl_src_page_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61867,
   "name": "refl_dst_page_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61870,
   "name": "refl_src_page_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61876,
   "name": "refl_dst_page_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61879,
   "name": "refl_src_page_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61885,
   "name": "refl_dst_page_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61888,
   "name": "refl_src_page_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61894,
   "name": "refl_dst_page_5",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61897,
   "name": "refl_src_page_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61903,
   "name": "refl_dst_page_6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61906,
   "name": "refl_src_page_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61912,
   "name": "refl_dst_page_7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61915,
   "name": "refl_src_page_8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61921,
   "name": "refl_dst_page_8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61933,
   "name": "r_F1ED",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 61934,
   "name": "refl_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 61943,
   "name": "protect_fail",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 61945,
   "name": "char_fighter_reflection",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 61949,
   "name": "b_F1FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 61995,
   "name": "b_F22B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62038,
   "name": "b_F256",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62122,
   "name": "r_F2AA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 62123,
   "name": "bonus_round",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 62155,
   "name": "j_F2CB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62165,
   "name": "b_F2D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62174,
   "name": "b_F2DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62250,
   "name": "b_F32A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62275,
   "name": "b_F343",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62317,
   "name": "b_F36D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62338,
   "name": "b_F382",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62348,
   "name": "b_F38C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62367,
   "name": "j_F39F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62379,
   "name": "b_F3AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62412,
   "name": "bonus_places",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62472,
   "name": "bonus_message",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62496,
   "name": "bonus_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 62503,
   "name": "b_F427",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62514,
   "name": "j_F432",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62523,
   "name": "b_F43B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62530,
   "name": "b_F442",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62598,
   "name": "b_F486",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62601,
   "name": "b_F489",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62626,
   "name": "b_F4A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62629,
   "name": "b_F4A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62656,
   "name": "b_F4C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62716,
   "name": "j_F4FC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62720,
   "name": "j_F500",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62731,
   "name": "j_F50B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62738,
   "name": "b_F512",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62749,
   "name": "r_F51D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 62750,
   "name": "shield_hits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62757,
   "name": "player_hits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62764,
   "name": "fall_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62766,
   "name": "shield_fly_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62768,
   "name": "shield_fly_x_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62770,
   "name": "ball_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62789,
   "name": "b_F545",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62792,
   "name": "j_F548",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62795,
   "name": "flash_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62797,
   "name": "slot_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62805,
   "name": "ball_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 62838,
   "name": "b_F576",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62858,
   "name": "b_F58A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62878,
   "name": "b_F59E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62902,
   "name": "b_F5B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62924,
   "name": "b_F5CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62939,
   "name": "j_F5DB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62951,
   "name": "j_F5E7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 62957,
   "name": "b_F5ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62966,
   "name": "b_F5F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 62983,
   "name": "r_F607",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 62984,
   "name": "negate_vspeed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63002,
   "name": "negate_hspeed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63020,
   "name": "halve_vspeed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63029,
   "name": "halve_hspeed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63038,
   "name": "throw_ball",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63045,
   "name": "b_F645",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63074,
   "name": "b_F662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63076,
   "name": "b_F664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63086,
   "name": "b_F66E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63101,
   "name": "b_F67D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63172,
   "name": "b_F6C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63176,
   "name": "j_F6C8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 63205,
   "name": "b_F6E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63221,
   "name": "b_F6F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63231,
   "name": "b_F6FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63252,
   "name": "r_F714",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 63253,
   "name": "ball_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63261,
   "name": "flash_slot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63269,
   "name": "rate_limit",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63277,
   "name": "ball_reflection",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63299,
   "name": "ball_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63319,
   "name": "ball_shape_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63325,
   "name": "ball_shape_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63331,
   "name": "draw_balls",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63335,
   "name": "b_F767",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63351,
   "name": "b_F777",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63373,
   "name": "clear_ball_shapes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63376,
   "name": "b_F790",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63386,
   "name": "refl_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63397,
   "name": "ball_reflection_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63414,
   "name": "ball_reflection_blank",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63416,
   "name": "b_F7B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63434,
   "name": "b_F7CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63453,
   "name": "r_F7DD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 63454,
   "name": "ball_spots_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63459,
   "name": "ball_spots_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63461,
   "name": "j_F7E5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 63467,
   "name": "b_F7EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63494,
   "name": "b_F806",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63504,
   "name": "spot_places",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63520,
   "name": "spot_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63536,
   "name": "plain_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63552,
   "name": "shield_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 63610,
   "name": "b_F87A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 63651,
   "name": "stick_dirs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63667,
   "name": "shield_moves",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63730,
   "name": "shield_shape",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63737,
   "name": "shield_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63744,
   "name": "player_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63751,
   "name": "shield_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63758,
   "name": "player_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63765,
   "name": "player_pose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63775,
   "name": "arena_colours_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 63776,
   "name": "arena_screen_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64015,
   "name": "arena_colours_base_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64016,
   "name": "arena_screen_colours_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64287,
   "name": "arena_colours_base_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64288,
   "name": "arena_colour_ram",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64527,
   "name": "arena_colours_base_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64528,
   "name": "arena_colour_ram_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 64848,
   "name": "music_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64848,
   "name": "KERNAL_RAMTASj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64849,
   "name": "shouts_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64850,
   "name": "pal_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64851,
   "name": "reflection_set",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64852,
   "name": "refl_colour_7a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64853,
   "name": "refl_colour_6a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64854,
   "name": "refl_colour_7b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64855,
   "name": "refl_colour_6b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64856,
   "name": "layout_counts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64857,
   "name": "a_FD59",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64868,
   "name": "layout_starts",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64880,
   "name": "judge_cell_phase",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64886,
   "name": "judge_cell_char",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64892,
   "name": "judge_cell_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64898,
   "name": "judge_talk_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64899,
   "name": "hit_pair",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64900,
   "name": "stun_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64903,
   "name": "floor_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64906,
   "name": "knock_marks_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64912,
   "name": "launch_rate",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64913,
   "name": "launch_rate_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64914,
   "name": "launch_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64915,
   "name": "launch_timer_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64916,
   "name": "fall_move",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64917,
   "name": "saved_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64918,
   "name": "bonus_move",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64919,
   "name": "shield_y_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64920,
   "name": "shield_x_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64921,
   "name": "shield_shape_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64922,
   "name": "bonus_started",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64923,
   "name": "ball_weight",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64924,
   "name": "stand_flag",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64927,
   "name": "parts_hidden",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64928,
   "name": "parts_saved",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64929,
   "name": "bonus_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64930,
   "name": "judge_talk_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64931,
   "name": "judge_foot_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64931,
   "name": "KERNAL_IOINITj",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64932,
   "name": "tie_case",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64933,
   "name": "runstop_guard",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64934,
   "name": "fist_flash_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64935,
   "name": "fist_flash_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64936,
   "name": "table_shown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64937,
   "name": "table_place",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64938,
   "name": "table_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64939,
   "name": "fighter_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64940,
   "name": "blow_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64943,
   "name": "defend_skill",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64944,
   "name": "attack_skill",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64945,
   "name": "target_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64946,
   "name": "ntsc_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64947,
   "name": "hiscore_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 64977,
   "name": "new_score_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64978,
   "name": "hiscore_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65008,
   "name": "new_score_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65009,
   "name": "hiscore_new",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65039,
   "name": "new_score_mark",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65040,
   "name": "hiscore_belt",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65070,
   "name": "new_score_belt",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65071,
   "name": "hiscore_initial_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65101,
   "name": "new_initial_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65102,
   "name": "hiscore_initial_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65132,
   "name": "new_initial_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65133,
   "name": "hiscore_initial_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65163,
   "name": "new_initial_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65280,
   "name": "reset_clear_base",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 65530,
   "name": "nmi_vector",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 65534,
   "name": "irq_vector",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The 6510's data-direction register, not set by the game; the disassembler project's start label sits here."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The 6510's processor port: game_init writes $35 here, so the BASIC and KERNAL ROMs are switched out and the I/O chips stay in. $02-$0B are not used by the game."
  },
  {
   "address": 12,
   "type": "line",
   "text": "Not a variable: the base of LDA $000C,Y at $F21B, run with Y = $FF so that it reads $010B, the loader's byte that char_fighter_reflection checks. $0C-$0F are not used."
  },
  {
   "address": 16,
   "type": "line",
   "text": "The six fighter sprites' X positions for the next step, worked out by sprite_positions (doubled, the ninth bits in $20). $16 and $17 are copied on with them and nothing else uses them."
  },
  {
   "address": 24,
   "type": "line",
   "text": "Colour of the front sprite fighter's first sprite ($0131 of fighter $0172); $19 and $1A hold the same for its other two."
  },
  {
   "address": 25,
   "type": "line",
   "text": "The front sprite fighter's colour again, for its second sprite."
  },
  {
   "address": 26,
   "type": "line",
   "text": "The front sprite fighter's colour for its third sprite."
  },
  {
   "address": 27,
   "type": "line",
   "text": "Colour of the other sprite fighter's first sprite; $1C and $1D hold it for the other two."
  },
  {
   "address": 28,
   "type": "line",
   "text": "The other sprite fighter's colour for its second sprite."
  },
  {
   "address": 29,
   "type": "line",
   "text": "The other sprite fighter's colour for its third sprite; $1E and $1F are copied on with the rest. Also the base of LDA $001D,Y at $4038, run with Y = $EE so that it reads the loader's byte at $010B."
  },
  {
   "address": 32,
   "type": "line",
   "text": "The ninth bits of the six fighter sprites' X positions, for $D010."
  },
  {
   "address": 33,
   "type": "line",
   "text": "The fighter sprites' X-expand bits: always 0."
  },
  {
   "address": 34,
   "type": "line",
   "text": "The fighter sprites' multicolour bits: always $FF."
  },
  {
   "address": 35,
   "type": "line",
   "text": "The floor's fine scroll for $D016 ($18 plus twice the third fighter's X AND 3), so the character fighter moves two pixels at a time."
  },
  {
   "address": 36,
   "type": "line",
   "text": "The sprites' priority bits: $FF puts them all behind the picture on the high-score screen. $25 is copied on with the rest."
  },
  {
   "address": 38,
   "type": "line",
   "text": "The interrupts' copy of $10-$25, made by next_step once a step is drawn (except in the bonus round, which sets its own): here the six sprites' X positions, read by fighter_sprites."
  },
  {
   "address": 39,
   "type": "line",
   "text": "The second fighter sprite's X, the interrupts' copy."
  },
  {
   "address": 40,
   "type": "line",
   "text": "The third fighter sprite's X, the interrupts' copy."
  },
  {
   "address": 41,
   "type": "line",
   "text": "The fourth fighter sprite's X, the interrupts' copy."
  },
  {
   "address": 42,
   "type": "line",
   "text": "The fifth fighter sprite's X, the interrupts' copy."
  },
  {
   "address": 43,
   "type": "line",
   "text": "The sixth fighter sprite's X, the interrupts' copy; $2C and $2D, the copies of $16 and $17, are not read."
  },
  {
   "address": 46,
   "type": "line",
   "text": "The front sprite fighter's colour, the interrupts' copy of $18; $2F and $30 are copied but not read."
  },
  {
   "address": 49,
   "type": "line",
   "text": "The other sprite fighter's colour, the interrupts' copy of $1B; $32-$35 are copied but not read."
  },
  {
   "address": 54,
   "type": "line",
   "text": "The interrupts' copy of $20, the sprites' ninth X bits."
  },
  {
   "address": 55,
   "type": "line",
   "text": "The interrupts' copy of $21, the X-expand bits."
  },
  {
   "address": 56,
   "type": "line",
   "text": "The interrupts' copy of $22, the multicolour bits."
  },
  {
   "address": 57,
   "type": "line",
   "text": "The interrupts' copy of $23, the floor's $D016, read by floor_d018."
  },
  {
   "address": 58,
   "type": "line",
   "text": "The interrupts' copy of $24, the sprites' priority bits."
  },
  {
   "address": 59,
   "type": "line",
   "text": "The copy of $25; the bonus round sets it to $3F and nothing reads it by its address. $3C-$3F: nothing found using them."
  },
  {
   "address": 64,
   "type": "line",
   "text": "The music's pointer into the current voice's track (next_note), and its pointer to the frequency table in note_flags' slides; note_effects uses it as a work area too."
  },
  {
   "address": 65,
   "type": "line",
   "text": "High byte of the music's track pointer."
  },
  {
   "address": 66,
   "type": "line",
   "text": "The music's pointer into the current voice's pattern (next_note, note_instrument)."
  },
  {
   "address": 67,
   "type": "line",
   "text": "High byte of the pattern pointer. Also the base of LDA $43,X at $107B, run with X the mode (1 in a fight), so that it reads the frame counter $44 for fight_step's protection check."
  },
  {
   "address": 68,
   "type": "line",
   "text": "Counts frames: stepped by the frame NMI, and cleared and compared by the main loop, the waits and the key checks."
  },
  {
   "address": 69,
   "type": "line",
   "text": "Non-zero when fighter 0 (player 1, white) is a human player."
  },
  {
   "address": 70,
   "type": "line",
   "text": "Non-zero when fighter 1 (player 2, red) is a human player."
  },
  {
   "address": 71,
   "type": "line",
   "text": "The human flag of fighter 2, read as $45,Y; game_init, game_reset and the attract mode clear it, and nothing sets it."
  },
  {
   "address": 72,
   "type": "line",
   "text": "The number of human players."
  },
  {
   "address": 73,
   "type": "line",
   "text": "The human players as bits, rolled in by place_fighters."
  },
  {
   "address": 74,
   "type": "line",
   "text": "Counts read_keys' calls while a key is held, up to 12; the key is acted on at 12."
  },
  {
   "address": 75,
   "type": "line",
   "text": "A work byte used by many routines: the delay ladder's LDA ($4B,X), round_end's ranking, a sprite fighter's X less 4 in sprite_positions, the bonus routines' loop count."
  },
  {
   "address": 76,
   "type": "line",
   "text": "A work byte: the other sprite fighter's X less 4 in sprite_positions, a loop count in the drawing routines, the fighter count in sprite_reflections."
  },
  {
   "address": 77,
   "type": "line",
   "text": "A work byte: the third fighter's X in sprite_positions, counts in the drawing and table routines."
  },
  {
   "address": 78,
   "type": "line",
   "text": "A work byte: the ninth X bits collected in sprite_positions, counts in the table and drawing routines."
  },
  {
   "address": 79,
   "type": "line",
   "text": "A work byte for sort_table and show_dots."
  },
  {
   "address": 80,
   "type": "line",
   "text": "A pointer used by many routines in turn: the font builder, the name entry, the judge and the bubble, the pose layouts, the reflections."
  },
  {
   "address": 81,
   "type": "line",
   "text": "High byte of the pointer at $50."
  },
  {
   "address": 82,
   "type": "line",
   "text": "A second pointer, for the pose and bubble drawing and the name entry."
  },
  {
   "address": 83,
   "type": "line",
   "text": "High byte of the pointer at $52."
  },
  {
   "address": 84,
   "type": "line",
   "text": "A third pointer, for build_char_fighter and the bubble rows."
  },
  {
   "address": 85,
   "type": "line",
   "text": "High byte of the pointer at $54; $56 and $57 are not used."
  },
  {
   "address": 88,
   "type": "line",
   "text": "A work byte: the judge's talking, read_keys' key search, the random number of a thrown ball, the spot flag in ball_spots_on."
  },
  {
   "address": 89,
   "type": "line",
   "text": "A work byte for the judge's talking and the ball count in ball_spots_on; $5A and $5B are not used."
  },
  {
   "address": 92,
   "type": "line",
   "text": "Pointer to a ball's sprite shape, for its reflection and its spot."
  },
  {
   "address": 93,
   "type": "line",
   "text": "High byte of the ball pointer; $5E and $5F are not used."
  },
  {
   "address": 96,
   "type": "line",
   "text": "Where print_letter writes the next letter in the bubble's characters."
  },
  {
   "address": 97,
   "type": "line",
   "text": "High byte of the letter pointer."
  },
  {
   "address": 98,
   "type": "line",
   "text": "Pointer to the message print_message is printing."
  },
  {
   "address": 99,
   "type": "line",
   "text": "High byte of the message pointer."
  },
  {
   "address": 100,
   "type": "line",
   "text": "bonus_sprites' work byte, rolled to build the balls' sprite bits."
  },
  {
   "address": 101,
   "type": "line",
   "text": "The shape number bonus_sprites writes into the bonus round's sprite pointers: set to $15F6 plus 9 ($0AA1) and counted down by one for each sprite, from sprite 6 to sprite 0, on both screens ($6FF8 and $6BF8). The loop itself counts in X."
  },
  {
   "address": 102,
   "type": "line",
   "text": "The game's mode, which the main loop ($08BB) dispatches on: 1 a fight; 3 a round's end; 4 the attract mode; 5 the bonus round; 6 the pause. It is 0 only while game_reset runs (it stores 0 at $16E3 and 1 at its end, $1785), so the dispatch never sees 0; wait_frames ($1ACD) returns at once in mode 0."
  },
  {
   "address": 103,
   "type": "line",
   "text": "The player taking the bonus round (1, then 0); the pause uses it as a counter too."
  },
  {
   "address": 104,
   "type": "line",
   "text": "The fighter the routines work on, 0-2."
  },
  {
   "address": 105,
   "type": "line",
   "text": "The attacking fighter: the one check_hits is testing, and the computer fighter choose_target and computer_fighter decide for. Also the base of LDA $0069,Y at $1084, run with Y = $A0 so that it reads $0109 for fight_step's protection check."
  },
  {
   "address": 106,
   "type": "line",
   "text": "A loop count for the drawing, table and hit routines."
  },
  {
   "address": 107,
   "type": "line",
   "text": "Each fighter's pose (three bytes), which picks its graphics and layout."
  },
  {
   "address": 108,
   "type": "line",
   "text": "Fighter 1's pose."
  },
  {
   "address": 109,
   "type": "line",
   "text": "Fighter 2's pose."
  },
  {
   "address": 110,
   "type": "line",
   "text": "Each fighter's X position (three bytes)."
  },
  {
   "address": 111,
   "type": "line",
   "text": "Fighter 1's X position."
  },
  {
   "address": 112,
   "type": "line",
   "text": "Fighter 2's X position."
  },
  {
   "address": 113,
   "type": "line",
   "text": "Each fighter's facing (three bytes): 0 or 1."
  },
  {
   "address": 114,
   "type": "line",
   "text": "Fighter 1's facing."
  },
  {
   "address": 115,
   "type": "line",
   "text": "Fighter 2's facing."
  },
  {
   "address": 116,
   "type": "line",
   "text": "The fighter the attacker or computer fighter aims at; $75-$77 are not used."
  },
  {
   "address": 120,
   "type": "line",
   "text": "range_check's distance between the two fighters' fronts, divided by four: read by the computer's decisions and the joystick reading."
  },
  {
   "address": 121,
   "type": "line",
   "text": "range_check's distance between the fronts, signed."
  },
  {
   "address": 122,
   "type": "line",
   "text": "range_check's code: bit 2 which side the second fighter is on, bit 1 the first fighter's facing, bit 0 the second's; read by computer_fighter and test_hit."
  },
  {
   "address": 123,
   "type": "line",
   "text": "range_check: the front of the first fighter (Y), its X plus $0C, or plus $18 when it faces the other way."
  },
  {
   "address": 124,
   "type": "line",
   "text": "range_check: the front of the second fighter (X)."
  },
  {
   "address": 125,
   "type": "line",
   "text": "range_check's first fighter, from Y."
  },
  {
   "address": 126,
   "type": "line",
   "text": "range_check's second fighter, from X; $7F is not used."
  },
  {
   "address": 128,
   "type": "line",
   "text": "The raster bands' counter: cleared by the frame NMI and stepped at each band ($0A29) to pick the band's sprite shapes."
  },
  {
   "address": 129,
   "type": "line",
   "text": "The judge's message to show: show_bubble shows it, $FF clears the bubble."
  },
  {
   "address": 130,
   "type": "line",
   "text": "The message in the judge's bubble."
  },
  {
   "address": 131,
   "type": "line",
   "text": "round_end's ranking's human-player bits."
  },
  {
   "address": 132,
   "type": "line",
   "text": "round_end's message, from round_result's high nibble."
  },
  {
   "address": 133,
   "type": "line",
   "text": "The fighter placed first in the round."
  },
  {
   "address": 134,
   "type": "line",
   "text": "The fighter placed second."
  },
  {
   "address": 135,
   "type": "line",
   "text": "The fighter placed third."
  },
  {
   "address": 136,
   "type": "line",
   "text": "Each fighter's time on the floor after a knock-down (three bytes): set from down_time ($2F37) by test_hit, counted down by the frame NMI; a computer fighter gets up once it has fallen to getup_delay ($1D00). $8B is not used."
  },
  {
   "address": 140,
   "type": "line",
   "text": "The bonus round's count of balls thrown, up to 64."
  },
  {
   "address": 141,
   "type": "line",
   "text": "Set when the bonus round's 64 balls are out."
  },
  {
   "address": 142,
   "type": "line",
   "text": "The bonus round's count of balls in play, counted by bonus_step each frame."
  },
  {
   "address": 143,
   "type": "line",
   "text": "Set while the bonus round runs, so the frame NMI calls bonus_step."
  },
  {
   "address": 144,
   "type": "line",
   "text": "The ball slot being worked on."
  },
  {
   "address": 145,
   "type": "line",
   "text": "Set when the bonus player has been hit."
  },
  {
   "address": 146,
   "type": "line",
   "text": "Each ball slot's height, fraction (eight bytes, slot 6 the shield)."
  },
  {
   "address": 154,
   "type": "line",
   "text": "Each ball slot's height in pixels."
  },
  {
   "address": 160,
   "type": "line",
   "text": "Slot 6 of the heights: the shield's, which next_step sets from $FD97; $A1 is slot 7, unused."
  },
  {
   "address": 162,
   "type": "line",
   "text": "Each ball slot's vertical speed, low byte."
  },
  {
   "address": 168,
   "type": "line",
   "text": "Slot 6 of the vertical speeds, set when the shield is thrown; $A9 is slot 7, unused."
  },
  {
   "address": 170,
   "type": "line",
   "text": "Each ball slot's vertical speed, high byte."
  },
  {
   "address": 176,
   "type": "line",
   "text": "Slot 6 of the vertical speeds' high bytes: $FF when the shield is thrown; $B1 is slot 7."
  },
  {
   "address": 178,
   "type": "line",
   "text": "Each ball slot's X, fraction."
  },
  {
   "address": 186,
   "type": "line",
   "text": "Each ball slot's X."
  },
  {
   "address": 192,
   "type": "line",
   "text": "Slot 6 of the X positions: the shield's, which next_step sets from $FD98; $C1 is slot 7."
  },
  {
   "address": 194,
   "type": "line",
   "text": "Each ball slot's horizontal speed, high byte."
  },
  {
   "address": 200,
   "type": "line",
   "text": "Slot 6 of the horizontal speeds' high bytes, set when the shield is thrown; $C9 is slot 7."
  },
  {
   "address": 202,
   "type": "line",
   "text": "Each ball slot's horizontal speed, low byte."
  },
  {
   "address": 208,
   "type": "line",
   "text": "Slot 6 of the horizontal speeds' low bytes; $D1 is slot 7."
  },
  {
   "address": 210,
   "type": "line",
   "text": "Each ball slot's weight, added to its vertical speed each frame."
  },
  {
   "address": 216,
   "type": "line",
   "text": "Slot 6 of the weights: $24 when the shield is thrown; $D9 is slot 7."
  },
  {
   "address": 218,
   "type": "line",
   "text": "Each ball slot's floor, where it bounces: $56 for a ball."
  },
  {
   "address": 224,
   "type": "line",
   "text": "Slot 6 of the floors: $72 for the shield, $74 when thrown; $E1 is slot 7."
  },
  {
   "address": 226,
   "type": "line",
   "text": "Each ball slot's flags: 0 empty, bit 0 in use, bit 1 deflected, bit 4 halve the next bounce, bit 5 flashing and bouncing low and high in turn."
  },
  {
   "address": 232,
   "type": "line",
   "text": "Slot 6 of the flags: 1, so the shield moves with the balls; $E9 is slot 7."
  },
  {
   "address": 234,
   "type": "line",
   "text": "Each ball slot's colour, read by bonus_sprites."
  },
  {
   "address": 242,
   "type": "line",
   "text": "The pause's counter: cleared when it starts and stepped up to 13 as it lines the fighters up."
  },
  {
   "address": 243,
   "type": "line",
   "text": "The sky and water colours: the byte from $179B for the current set, its low nibble the sky's colour, read by irq_picture_on."
  },
  {
   "address": 244,
   "type": "line",
   "text": "The water's colour, the high nibble of $F3, read by irq_water."
  },
  {
   "address": 245,
   "type": "line",
   "text": "Which of the eight sky and water colour sets is in use, stepped by D, O and M together; $F6-$FF are not used."
  },
  {
   "address": 474,
   "type": "line",
   "text": "Nonzero between the codes $9A and $9E of a bubble message: print_letter writes each glyph byte twice, so the letters are double height."
  },
  {
   "address": 678,
   "type": "line",
   "text": "The KERNAL's PAL flag (1 PAL, 0 NTSC), set at reset and read once by game_init into $FD52."
  },
  {
   "address": 2112,
   "type": "line",
   "text": "The game's first instruction: the last loader stage jumps here with the stack pointer at $0A. JMP to the start-up at $08B8, then a table of 3-byte JMPs follows, so that other modules call the routines through fixed addresses (each entry below says where it goes)."
  },
  {
   "address": 2115,
   "type": "line",
   "text": "Jump table: JMP $2A1A, computer_fighter."
  },
  {
   "address": 2118,
   "type": "line",
   "text": "Jump table: JMP $1C40, start_move."
  },
  {
   "address": 2121,
   "type": "line",
   "text": "Jump table: JMP $2CA9, range_check."
  },
  {
   "address": 2124,
   "type": "line",
   "text": "Jump table: JMP $31EA, show_bubble."
  },
  {
   "address": 2127,
   "type": "line",
   "text": "Jump table: JMP $3ACA, reset_floor."
  },
  {
   "address": 2130,
   "type": "line",
   "text": "Not a jump: the word $1CB0, the address of pose_width, which place_judge copies into its own LDA operand at $328E; then a zero byte."
  },
  {
   "address": 2131,
   "type": "line",
   "text": "The high byte of the word at $0852 ($1C), read by place_judge; a zero byte follows."
  },
  {
   "address": 2133,
   "type": "line",
   "text": "Jump table: JMP $F1F9, char_fighter_reflection."
  },
  {
   "address": 2136,
   "type": "line",
   "text": "Jump table: JMP $263E, belt."
  },
  {
   "address": 2139,
   "type": "line",
   "text": "Jump table: JMP $F150, sprite_reflections."
  },
  {
   "address": 2142,
   "type": "line",
   "text": "Jump table: JMP $4042, build_char_fighter."
  },
  {
   "address": 2145,
   "type": "line",
   "text": "Jump table: JMP $2EBE, check_hits."
  },
  {
   "address": 2148,
   "type": "line",
   "text": "Jump table: JMP $3F49, place_char_fighter."
  },
  {
   "address": 2151,
   "type": "line",
   "text": "Jump table: JMP $30DD, show_dots."
  },
  {
   "address": 2154,
   "type": "line",
   "text": "Jump table: JMP $3126, add_score."
  },
  {
   "address": 2157,
   "type": "line",
   "text": "Jump table: JMP $41B5, build_tables."
  },
  {
   "address": 2160,
   "type": "line",
   "text": "Jump table: JMP $3D15, draw_sprite_fighter."
  },
  {
   "address": 2163,
   "type": "line",
   "text": "Jump table: JMP $31CC, arena_colours."
  },
  {
   "address": 2166,
   "type": "line",
   "text": "Jump table: JMP $F420, bonus_step."
  },
  {
   "address": 2169,
   "type": "line",
   "text": "Jump table: JMP $1D06, fighter_anim."
  },
  {
   "address": 2172,
   "type": "line",
   "text": "Jump table: JMP $16CF, random."
  },
  {
   "address": 2175,
   "type": "line",
   "text": "Jump table: JMP $28CE, clear_old_shapes."
  },
  {
   "address": 2178,
   "type": "line",
   "text": "Jump table: JMP $2247, game_over (mode 4)."
  },
  {
   "address": 2181,
   "type": "line",
   "text": "Jump table: JMP $1ACD, wait_frames."
  },
  {
   "address": 2184,
   "type": "line",
   "text": "Jump table: JMP $150E, draw_fighters."
  },
  {
   "address": 2187,
   "type": "line",
   "text": "Jump table: JMP $1C82, set_move."
  },
  {
   "address": 2190,
   "type": "line",
   "text": "Jump table: JMP $153F, show_message."
  },
  {
   "address": 2192,
   "type": "line",
   "text": "Not a variable: the base of STA $0890,Y at $18FE, run with Y = $32 so that it writes the operand at $18FD, the loader's stack pointer ($0A), into $08C2, the main loop's stack-pointer operand. The byte itself is the high byte of the jump at $088E."
  },
  {
   "address": 2196,
   "type": "line",
   "text": "Jump table: JMP $2825, clear_floor."
  },
  {
   "address": 2199,
   "type": "line",
   "text": "Jump table: JMP $31B8, bonus_add_score."
  },
  {
   "address": 2202,
   "type": "line",
   "text": "Jump table: JMP $285A, clear_floor_rows."
  },
  {
   "address": 2205,
   "type": "line",
   "text": "Jump table: JMP $F2AB, bonus_round."
  },
  {
   "address": 2208,
   "type": "line",
   "text": "Jump table: JMP $1604, next_step."
  },
  {
   "address": 2211,
   "type": "line",
   "text": "Jump table: JMP $2841, clear_both_floors."
  },
  {
   "address": 2214,
   "type": "line",
   "text": "Jump table: JMP $21FE, frame_dots."
  },
  {
   "address": 2217,
   "type": "line",
   "text": "Jump table: JMP $1183, floor_colour_cols."
  },
  {
   "address": 2220,
   "type": "line",
   "text": "Jump table: JMP $0DED, shout_on_move."
  },
  {
   "address": 2223,
   "type": "line",
   "text": "Jump table: JMP $1ADD, step_two."
  },
  {
   "address": 2226,
   "type": "line",
   "text": "Jump table: JMP $2998, set_skills."
  },
  {
   "address": 2229,
   "type": "line",
   "text": "Three zero bytes after the jump table's last entry and before the start-up's JMP at $08B8. Nothing reads them."
  },
  {
   "address": 2232,
   "type": "line",
   "text": "Goes on to the one-time start-up at $0F4C (game_init)."
  },
  {
   "address": 2235,
   "type": "line",
   "text": "The game's main loop. Clears the key-repeat counter $4A and the frame counter $44, resets the stack pointer (the operand at $08C2 is the stack pointer the loader left, $0A, on the first pass; game_reset puts $F0 back), calls game_reset ($16E1), then dispatches on the game mode $66 for ever: 1 a fight ($106D), 3 a round's end ($11E3), 6 the pause ($10BB), 4 the attract mode ($2247 then $13E5), 5 the bonus round ($F2AB, counting $FDA1, then $13E5). game_reset ends by setting mode 1 ($1785), so the dispatch never sees mode 0."
  },
  {
   "address": 2308,
   "type": "line",
   "text": "Raster interrupt 1 of 6, set for line $41 (65) by the frame NMI. Each of the six entries starts the same way: BIT $DC0D, and when CIA 1's timer caused the interrupt it re-enables interrupts and plays the next sample ($0934) instead. Otherwise it goes to its own body, here $0A5F (the arena picture on)."
  },
  {
   "address": 2320,
   "type": "line",
   "text": "Raster interrupt 2 of 6, line $79 (121): the sample test, then $0AE8 (the band of the picture between the water's two lines of colour)."
  },
  {
   "address": 2332,
   "type": "line",
   "text": "Raster interrupt 3 of 6, line $80 (128): the sample test, then $0B0F (the water's background colour)."
  },
  {
   "address": 2344,
   "type": "line",
   "text": "Raster interrupt 4 of 6, line $86 (134): the sample test, then $0B27 (the sun's reflection colours for the lower half)."
  },
  {
   "address": 2356,
   "type": "line",
   "text": "Plays one 4-bit sample of a digitised shout. Runs on CIA 1's timer interrupt, which $1034 and sample_start ($0EE3) set to about 3.4 to 4.4 thousand samples a second. Steps the self-modified address at $0957 and stops at the page held in the operand at $0941 (the sample's end): then it turns the timer interrupt off, writes $14 to $D418 and clears $D417. Otherwise it reads the byte at the address, keeps its high or its low nibble (the four bytes at $0959, patched by sample_start: four LSR A, or NOP NOP AND #$0F) and writes it to the SID's volume register $D418. The six shouts share their bytes, two to a byte: three in the high nibbles of $BF00-$CFFF, three in the low."
  },
  {
   "address": 2369,
   "type": "line",
   "text": "Operand of CMP #$FF in the sample player: the page at which the shout ends, written from the table at $0ECB by sample_start."
  },
  {
   "address": 2391,
   "type": "line",
   "text": "Low byte of the sample address the player at $0934 reads (LDA $FFFF in the image), stepped once per sample. sample_start sets it to the shout's first byte."
  },
  {
   "address": 2392,
   "type": "line",
   "text": "High byte of the sample address, compared with the end page at $0941 after each page."
  },
  {
   "address": 2393,
   "type": "line",
   "text": "First of four bytes the sample player executes to pick its nibble: sample_start writes four LSR A ($4A) for a shout kept in the high nibbles, or NOP, NOP, AND #$0F for one in the low nibbles."
  },
  {
   "address": 2394,
   "type": "line",
   "text": "Second byte of the nibble selector at $0959 (LSR A, or NOP)."
  },
  {
   "address": 2395,
   "type": "line",
   "text": "Third byte of the nibble selector at $0959 (LSR A, or the AND opcode $29)."
  },
  {
   "address": 2396,
   "type": "line",
   "text": "Fourth byte of the nibble selector at $0959 (LSR A, or the AND operand $0F)."
  },
  {
   "address": 2406,
   "type": "line",
   "text": "Raster interrupt 5 of 6, line $A1 (161), where the arena picture ends and the floor begins. Waits for the line to pass, delays to the border, then switches to text mode for the floor: $D018 from the operand at $097B, background $0B (dark grey), multicolours $0A and $00, $D016 from $39, and clears the sprite collision registers. In the bonus round (mode 5 with $8F set) it places the ball and shield sprites ($0A92) and chains straight back to line $41; otherwise it places the three fighters' top band ($0B46) and chains to $09D7 at line $BA."
  },
  {
   "address": 2427,
   "type": "line",
   "text": "Operand of LDA #$00 at $097A: the $D018 value for the floor below line 161. Written by $1670."
  },
  {
   "address": 2519,
   "type": "line",
   "text": "Raster interrupt 6 of 6: the sprite multiplexer, run three times a frame, at lines $BA, $D0 and $E5. Each time it waits for the line in the operand at $09DF, delays, moves all six fighter sprites down to the band's Y (operand at $09E9) and points them at the next three frames of each fighter's shape (the operands at $09FD and $0A0C step by three). Then it steps the band counter $80 and loads the next band's wait line, Y, raster line and handler from the tables at $0A4F-$0A5E; after the third band the chain goes back to $0904 at line $41."
  },
  {
   "address": 2527,
   "type": "line",
   "text": "Operand of LDA #$00: the raster line the multiplexer waits for before it moves the sprites, from the table at $0A53."
  },
  {
   "address": 2537,
   "type": "line",
   "text": "Operand of LDA #$A8: the sprite Y of the band being set up, from the table at $0A4F."
  },
  {
   "address": 2557,
   "type": "line",
   "text": "Operand of LDA #$00: the shape number for sprite 0 in this band (sprites 1 and 2 take the next two). Stepped by three per band."
  },
  {
   "address": 2560,
   "type": "line",
   "text": "High byte of STA $6FF8 at $09FE, sprite 0's pointer in the band: next_step writes the shown screen's page plus 3 ($6B or $6F) here and into the five like it, so each band's shapes go to the screen on view. Then ADC #1 for sprite 1."
  },
  {
   "address": 2565,
   "type": "line",
   "text": "High byte of STA $6FF9 at $0A03, sprite 1's pointer (patched with $0A00); then ADC #1 for sprite 2."
  },
  {
   "address": 2570,
   "type": "line",
   "text": "High byte of STA $6FFA at $0A08, sprite 2's pointer (patched with $0A00)."
  },
  {
   "address": 2572,
   "type": "line",
   "text": "Operand of LDA #$00: the shape number for sprite 3 in this band (sprites 4 and 5 take the next two). Written each band from the last shape number plus one, and by fighter_sprites each frame ($0BD7)."
  },
  {
   "address": 2575,
   "type": "line",
   "text": "High byte of STA $6FFB at $0A0D, sprite 3's pointer (patched with $0A00); then ADC #1 for sprite 4."
  },
  {
   "address": 2580,
   "type": "line",
   "text": "High byte of STA $6FFC at $0A12, sprite 4's pointer (patched with $0A00); then ADC #1 for sprite 5."
  },
  {
   "address": 2585,
   "type": "line",
   "text": "High byte of STA $6FFD at $0A17, sprite 5's pointer (patched with $0A00). The rest of the band: the next shape numbers into $0A0C and $09FD, the interrupt acknowledged, and, with interrupts on again for the shouts, the next band's wait line, Y, raster line and handler from the tables at $0A4F-$0A5B by the band counter $80."
  },
  {
   "address": 2639,
   "type": "line",
   "text": "Sprite Y for each band of the multiplexer, indexed by the band counter $80: $BD, $D2, $E7 (and $BD again)."
  },
  {
   "address": 2643,
   "type": "line",
   "text": "Raster line each band waits for before moving the sprites: $BB, $D0, $E5, $BB."
  },
  {
   "address": 2647,
   "type": "line",
   "text": "Raster line for the next interrupt after each band: $D0, $E5, then $41 for the top of the next frame."
  },
  {
   "address": 2651,
   "type": "line",
   "text": "Low byte of the next handler after each band: $D7 (this handler again) twice, then $04 (irq_line65)."
  },
  {
   "address": 2655,
   "type": "line",
   "text": "Body of raster interrupt 1 (line 65): waits for line 66, delays to the border and turns the arena picture on: multicolour bitmap mode ($D011 $3B, $D016 $18), bitmap at $4000 and colours at $6C00 ($D018 $B0), background colour from $F3 (the sky). Chains to line $79."
  },
  {
   "address": 2706,
   "type": "line",
   "text": "Places the seven sprites of the bonus round, during raster interrupt 5: Y from $9A,x (an empty slot is parked at $60), plus $93; X from $BA,x times two plus bit 7 of $B2,x, with bit 7 of $BA,x carried into $64 for $D010; colour from $EA,x; shape numbers counting down from $15F6 plus 9, written to both screens' sprite pointers ($6FF8 and $6BF8). Then sprite 6's pointer gets the shield's shape, the operand at $0ADE that next_step writes from $FD99."
  },
  {
   "address": 2782,
   "type": "line",
   "text": "Operand of LDA #$00 at $0ADD in bonus_sprites: the shield's sprite shape, written from $FD99 by next_step. It goes into sprite 6's pointer on both screens ($6FFE, $6BFE)."
  },
  {
   "address": 2792,
   "type": "line",
   "text": "Body of raster interrupt 2 (line 121): background colour 4 (purple) and sprites 6 and 7 coloured from $FD55 and $FD54 (the sun's reflection). Chains to line $80."
  },
  {
   "address": 2831,
   "type": "line",
   "text": "Body of raster interrupt 3 (line 128): background colour from $F4, the water. Chains to line $86."
  },
  {
   "address": 2855,
   "type": "line",
   "text": "Body of raster interrupt 4 (line 134): sprites 6 and 7 recoloured from $FD57 and $FD56, the lower half of the sun's reflection. Chains to line $A1."
  },
  {
   "address": 2886,
   "type": "line",
   "text": "Sets up the fighters' first sprite band, called from raster interrupt 5: multicolour, X-expand and priority from $38, $37 and $3A; X positions from $26-$2B and the high bits from $36; every Y at $A8; colours from $2E (sprites 0-2) and $31 (sprites 3-5); shared multicolours $0A and $00; sprite pointers 0, 1, 2 and 0, 1, 2 again, the multiplexer's shape operands reset to 3 and the first band's Y and wait line reloaded from the tables."
  },
  {
   "address": 3001,
   "type": "line",
   "text": "Operand of LDY #$00 at $0BB8 in fighter_sprites: the front sprite fighter's first shape number, from $01A3 (next_step). Sprites 0-2 get it and the next two."
  },
  {
   "address": 3004,
   "type": "line",
   "text": "High byte of STY $6FF8 at $0BBA (the shown screen's sprite pointers, patched by next_step like $0A00); then INY for sprite 1."
  },
  {
   "address": 3008,
   "type": "line",
   "text": "High byte of STY $6FF9 at $0BBE; then INY for sprite 2."
  },
  {
   "address": 3012,
   "type": "line",
   "text": "High byte of STY $6FFA at $0BC2; then the next shape number into the multiplexer's $09FD."
  },
  {
   "address": 3018,
   "type": "line",
   "text": "Operand of LDY #$00 at $0BC9: the other sprite fighter's first shape number, from $01A4. Sprites 3-5 get it and the next two."
  },
  {
   "address": 3021,
   "type": "line",
   "text": "High byte of STY $6FFB at $0BCB; then INY for sprite 4."
  },
  {
   "address": 3025,
   "type": "line",
   "text": "High byte of STY $6FFC at $0BCF; then INY for sprite 5."
  },
  {
   "address": 3029,
   "type": "line",
   "text": "High byte of STY $6FFD at $0BD3; then the next shape number into $0A0C and RTS."
  },
  {
   "address": 3035,
   "type": "line",
   "text": "LDA $4B, three cycles more in front of the delay ladder at $0BDD. Nothing calls this entry."
  },
  {
   "address": 3037,
   "type": "line",
   "text": "A delay ladder for the raster interrupts: four LDA ($4B,X) of 6 cycles each, then RTS. Calling $0BDD, $0BDF, $0BE1 or $0BE3 wastes 36, 30, 24 or 18 cycles with the JSR, which places the register writes that follow in the border."
  },
  {
   "address": 3039,
   "type": "line",
   "text": "Third entry of the delay ladder at $0BDD: three LDA ($4B,X), 30 cycles with the JSR."
  },
  {
   "address": 3041,
   "type": "line",
   "text": "Second entry from the end of the delay ladder at $0BDD: two LDA ($4B,X), 24 cycles with the JSR."
  },
  {
   "address": 3043,
   "type": "line",
   "text": "Last entry of the delay ladder at $0BDD: one LDA ($4B,X) and RTS, 18 cycles with the JSR."
  },
  {
   "address": 3046,
   "type": "line",
   "text": "The frame interrupt. CIA 2's timer A raises an NMI once a frame, its period exactly one PAL or NTSC frame (started by $1034 at line $F3); any other NMI returns at once. It sets the fighters' six sprite colours to black, restarts the raster chain at $0904 for line $41 and the video bank at $4000, then with interrupts on again: latches the sprite collisions into $01A6 and $01A5, plays a frame of music ($E00F; on NTSC every sixth frame is skipped, so the tune keeps PAL tempo), counts the frame ($44, $01B5), counts down the timers ($FDA5, $FD84-$FD89, $88-$8A, $010E), starts a delayed shout ($01C1), animates the sparkle ($0D01) and the patterned strip ($0DB4) and the score line ($21FE), sets the top of the screen to text mode with the score characters, reads the keys ($17AD), calls $1015 every fourth frame (the routine the start-up moves there from $1A40), $71C6 every other frame and $71C3 every frame, then $F420, and in a fight takes one off the TIME counter $011C (BCD) every fifty frames: a second on PAL, five sixths of one on NTSC."
  },
  {
   "address": 3072,
   "type": "line",
   "text": "The first byte of page $0C00, the high byte of nmi_frame's STA $D027. The file holds this page and page $3C00 the other way round; game_init swaps them. From here nmi_frame goes on: saves the registers, restarts the raster chain at line $41, sets the video bank, latches the sprite collisions ($01A6, $01A5), plays the music (skipping every sixth frame on NTSC), counts the frame counter and the timers ($017C, $FD84-$FD89, $88-$8A, $010E), starts a delayed shout ($01C1), runs the judge's talking and foot ($0D01, $0DB4) and the table's dotted frame ($08A6), and resets the top screen's registers."
  },
  {
   "address": 3258,
   "type": "line",
   "text": "The rest of the frame NMI: read_keys ($17AD), the fist icons every fourth frame ($1015), the antics every other frame, the antics' sprites, the bonus balls ($0876), and in a fight the round's clock ($011C, counted in BCD every 50 frames while $013D is not $1C); then it pulls the registers and returns from the interrupt. Also called by JSR from $108B when fight_step's protection check fails: the RTI then returns through a stack that holds no interrupt."
  },
  {
   "address": 3329,
   "type": "line",
   "text": "While a bubble is up ($01C9), animates the judge who speaks it: every eighth call steps six animated cells of his figure, each showing one of characters $4E-$55 by its phase ($FD70, $FD76) in both floor screens at $6EA8 plus the offsets at $0D80 and the judge's column $01CA. A cell that runs out restarts at random while the count $FDA2 lasts (30 when a message appears). With no bubble it just resets the phases."
  },
  {
   "address": 3456,
   "type": "line",
   "text": "Screen offsets, from the judge's top-left cell, of the six animated cells $0D01 writes, four choices to each."
  },
  {
   "address": 3480,
   "type": "line",
   "text": "Four 8-byte multicolour patterns for character $38, chosen through the end offsets at $0DB0."
  },
  {
   "address": 3504,
   "type": "line",
   "text": "Offset of the last byte of each pattern in $0D98: $07, $0F, $17, $0F."
  },
  {
   "address": 3508,
   "type": "line",
   "text": "While a bubble is up, animates character $38 of the floor character set (its 8 bytes at $51C0), one of the cells near the bottom of the judge's figure: in the pause, or with an attract-mode message ($82 from $0A to $0F), every fourth frame the next of four patterns from $0D98; with message $10 or later, the last pattern."
  },
  {
   "address": 3565,
   "type": "line",
   "text": "Checks the three fighters for a new pose: for each one whose pose $6B,y differs from the last seen ($01B7,y), it passes the pose ($01BB) and the fighter's flags ($015B,y into $01BD) to $0E86 to choose a shout. The last fighter that chose one is heard: sample_start ($0EE3) with its number from $01BA ($FF, set first, means none)."
  },
  {
   "address": 3615,
   "type": "line",
   "text": "The seventeen poses that can bring a shout, searched by $0E86; the four tables after it give the shout for each."
  },
  {
   "address": 3633,
   "type": "line",
   "text": "For each pose in $0E1F, the shout of a fighter striking with it (frame flags AND $4D), or $FF for none."
  },
  {
   "address": 3650,
   "type": "line",
   "text": "For each pose, the shout of a fighter who has just scored ($014F)."
  },
  {
   "address": 3667,
   "type": "line",
   "text": "For each pose, the frames before a scorer's second shout; 0 for none."
  },
  {
   "address": 3684,
   "type": "line",
   "text": "For each pose, the scorer's second shout, played by the frame NMI when the delay in $01C1 runs out."
  },
  {
   "address": 3701,
   "type": "line",
   "text": "For each pose, the shout of a fighter knocked down ($014C): only the three falls have one."
  },
  {
   "address": 3718,
   "type": "line",
   "text": "Looks the new pose $01BB up in the seventeen at $0E1F. If found: a fighter who has just scored ($014F,x) gets the shout from $0E42, and when $0E53 is not zero also a second shout ($0E64 into $01C2) that many frames later ($01C1); otherwise a fighter who is down ($014C,x) gets $0E75; otherwise, when the fighter's flags $01BD AND $4D are not zero, $0E31. The shout goes to $01BA; with no match $01BA is left as it was."
  },
  {
   "address": 3787,
   "type": "line",
   "text": "End page of each of the six shouts: $C6, $CC, $CE, $C5, $CB, $D0."
  },
  {
   "address": 3793,
   "type": "line",
   "text": "Start address of each of the six shouts, as words: $BF00, $C600, $CC00 (high nibbles) and $BF00, $C500, $CB00 (low nibbles)."
  },
  {
   "address": 3794,
   "type": "line",
   "text": "The high bytes of the shouts' start addresses at $0ED1, read as $0ED2,X."
  },
  {
   "address": 3805,
   "type": "line",
   "text": "For each shout, $80 when it is kept in the high nibbles, $00 in the low."
  },
  {
   "address": 3811,
   "type": "line",
   "text": "Starts shout X (0-5) when samples are on ($FD51): sets the end page ($0ECB) and the start address ($0ED1), the nibble the shout lives in ($0EDD, bit 7 for the high nibbles), clears $D417, enables CIA 1's timer interrupt and sets its low byte to a base ($0F4A: $10 on NTSC, $E0 on PAL) plus a random 0 to 31, so each shout plays at a slightly different pitch."
  },
  {
   "address": 3912,
   "type": "line",
   "text": "CIA 1's timer high byte for the shouts, set once by $1034 and indexed by the PAL flag $FD52: $01 on NTSC, $00 on PAL. With the low byte from $0F4A plus 0 to 31, the latch is $0110-$012F on NTSC and $00E0-$00FF on PAL, and one sample plays every latch plus one cycles: 273 to 304 on NTSC, 225 to 256 on PAL."
  },
  {
   "address": 3914,
   "type": "line",
   "text": "Base of CIA 1's timer low byte for the shouts, by the PAL flag: $10 on NTSC, $E0 on PAL."
  },
  {
   "address": 3916,
   "type": "line",
   "text": "The one-time start-up. Interrupts off; samples on ($FD51), music flagged for its first start ($FD50 = $81), the PAL flag copied from the KERNAL's $02A6 into $FD52, the sun's reflection colours and the sky and water colours set, CIA 1 and the VIC's interrupts off, screen black and blank, all RAM banked in ($01 = $35). Swaps page $0C00 with page $3C00 (the file holds them the other way round), builds the high-score display from the table at $BE80 into $FE10-$FE6D and clears the table, then installs the NMI and IRQ vectors and copies the stack pointer into the main loop and into $18FD (the protection described at $1020)."
  },
  {
   "address": 4094,
   "type": "line",
   "text": "Branch operand of the BPL closing game_init's clear of $BE80-$BEFF; also the base of decrypt_once's EOR $0FFE,X, which runs from X = $0A (the loader's stack pointer, from $18FD), so its key is $1008-$10FD. From here game_init goes on: the top two high-score entries' defaults, STA $1614,Y with Y = $FF, which aims game_reset's clearing loop at $010B, build_tables, the antics' reset and the NMI vector."
  },
  {
   "address": 4117,
   "type": "line",
   "text": "In this image, the low byte of STA $FFFB in game_init's last steps. At the first reset, still part of the start-up, $1957 copies 86 bytes from $1A40 over $1015-$106A, and from then on the frame NMI calls this address every fourth frame to run the fist-icon routine kept at $1A40 (described there). The one-time code below it is gone once the copy is made."
  },
  {
   "address": 4128,
   "type": "line",
   "text": "Last step of game_init: points the IRQ vector at $0904 and stores the stack pointer it finds into the main loop's LDX operand at $08C2 (STA $08B8,X) and into the operand at $18FD (STA $18F3,X), and one more than it into $1712. The genuine loader leaves the stack pointer at $0A, so the stores land on those two operands; a cracked loader that left another value writes into the middle of other code instead, and the decryption at $1957, which starts at the value in $18FD, decodes $7E00 wrongly."
  },
  {
   "address": 4148,
   "type": "line",
   "text": "Called once, from $177B, before $1957 copies over it: CIA 1's timer for the shouts ($DC04 $E0, high byte from $0F48 by PAL flag, started), then CIA 2's timer A with a period of one frame (the latch from the table at $188F indexed by X: $42C6 on NTSC, $4CC7 on PAL), started at raster line $F3 with its NMI enabled."
  },
  {
   "address": 4203,
   "type": "line",
   "text": "Two bytes after nmi_timer_start's RTS, $9A and $40 (TXS and RTI). Nothing reaches them. They are typed as code only because the code map (codemap.json) counts them as run: it sizes the instructions at $1069 and $106A from the play image, where $1957 has copied sprite_reset's first bytes over this routine, so CLI and RTS there read as three-byte instructions."
  },
  {
   "address": 4205,
   "type": "line",
   "text": "Mode 1, one step of a fight. If the round is over ($13CB) it switches to mode 3. Otherwise: a protection check (when the frame counter $44 AND $FE is $A0, $0109 must hold $CF, the low byte of the return address that the main loop's JSR $106D at $08CD pushed with the stack pointer at the loader's $0A; if not, it calls the frame interrupt's tail $0CBA as a subroutine, whose RTI returns through a stack holding no interrupt, so the JSR to game_reset at $108E is never reached: live, with $0109 poked the CPU ended on a JAM byte in the stack page at $01C5), the fighters' logic ($1AE2), the screen work ($150B), the wait for the next step ($1604), $2EBE (via $0861), the shouts ($0DED), and RUN/STOP ($116D), which switches to mode 6, the pause."
  },
  {
   "address": 4266,
   "type": "line",
   "text": "Three positions $6E,y the fighters are moved to while the game is paused."
  },
  {
   "address": 4269,
   "type": "line",
   "text": "Thirteen moves the fighters cycle through, one a step, while the game is paused and $015B bit 4 is set."
  },
  {
   "address": 4283,
   "type": "line",
   "text": "Mode 6, the pause (RUN/STOP in a fight). Saves each fighter's $6E and $71, lines them up at the X positions in $10AA, clears their move $6B,y and $0134,y, and colours the floor's colour RAM green in columns 0-13 and yellow in 14-27 ($1183, multicolour), so that copies of the character-drawn fighter appear in those colours beside the three: five fighters stand in a row. It then steps the fighters until RUN/STOP is pressed again, cycling them through the moves at $10AD while $015B bit 4 is set. On leaving it restores the saved $6E and $71 and returns to mode 1. Each fighter's move was cleared and is not restored, so a fighter on the floor comes back standing: the RUN/STOP cheat."
  },
  {
   "address": 4461,
   "type": "line",
   "text": "Returns Z set, with A = 0, when RUN/STOP is pressed and the repeat guard $FDA5 has run out; it then sets the guard to 25 frames."
  },
  {
   "address": 4483,
   "type": "line",
   "text": "Fills colour RAM rows 14 to 23, from column X for Y+1 columns, with colour A."
  },
  {
   "address": 4518,
   "type": "line",
   "text": "The first fighter of each comparison in the three-step sort of the ranking ($11E3): 0, 1, 0."
  },
  {
   "address": 4521,
   "type": "line",
   "text": "The second fighter of each comparison in the ranking sort: 1, 2, 1."
  },
  {
   "address": 4524,
   "type": "line",
   "text": "One byte for each round result, indexed by the tie case ($FDA4: 0 all different, 7 second and third equal, 14 first and second equal, 21 all equal) plus the human-player bits of the ranking ($83). Low three bits: which of first, second and third keep playing (bit 2 first, bit 0 third); high nibble: the message shown ($84). A human placed last alone drops out; in a tie for last nobody does; in a three-way tie everyone plays on."
  },
  {
   "address": 4552,
   "type": "line",
   "text": "Messages to pick from at random at the end of a round with no human playing (the attract-mode demo fight)."
  },
  {
   "address": 4573,
   "type": "line",
   "text": "Frames the round result stays up, by difficulty step $018B: 200, 150, 125, 100, 100, 100."
  },
  {
   "address": 4579,
   "type": "line",
   "text": "Mode 3, the end of a round. If nobody scored at all, $0192 gets $99. Sorts the fighters into $85-$87 by points ($010F,x), then $0192 and $0195 (with $13B4), builds the human bits $83 of first, second and third, works out the tie case into $FDA4 and so the result byte from $11AC. Lets the fighters finish their moves for 100 frames, shows the message (a random one from $11C8 in a demo), then counts any TIME left into the winner's score, a second at a time. Clears the human flag ($45,x) of each player the result drops; with no human left it switches to mode 4 (to the game over and the attract mode), otherwise back to mode 1 with the next round set up ($13E5)."
  },
  {
   "address": 5044,
   "type": "line",
   "text": "Compares fighters X and Y by points ($010F), then $0192, then $0195: returns at the first that differs, so Z set means a tie and C the order."
  },
  {
   "address": 5067,
   "type": "line",
   "text": "Returns C set when the round is over: TIME ($011C) has run out or a fighter has six points."
  },
  {
   "address": 5093,
   "type": "line",
   "text": "Sets up the next round: clears each fighter's points and score counters and redraws them ($0867, $086A); with no human playing it resets the level counter and the round counts and steps the demo difficulty $018B between 2 and 3. Sets TIME to 30 (BCD) and adds one to the level LV ($010C, BCD). Every third call (the round count $019C) it switches to mode 5, the bonus round, and steps the difficulty $018B up to 5; otherwise it places the fighters for a fight ($148E)."
  },
  {
   "address": 5253,
   "type": "line",
   "text": "Each fighter's starting X position: $24, $50, $78, plus a random 0 to 3."
  },
  {
   "address": 5256,
   "type": "line",
   "text": "Each fighter's starting direction with one human playing: 0, 1, 1."
  },
  {
   "address": 5259,
   "type": "line",
   "text": "Each fighter's starting direction with two humans: 0, 0, 1."
  },
  {
   "address": 5262,
   "type": "line",
   "text": "Places the three fighters for a fight: counts the human players into $48 and their bits into $49, clears each fighter's move and state ($6B, $013D, $0140, $014C, $015B, $015E, $0155, the timers $FD84, $FD87, $FD9C), sets its direction ($71) and X ($6E) from the tables at $1485-$148F, draws it standing ($0846 with $0134 = $1C), and shows message $FF ($084C)."
  },
  {
   "address": 5387,
   "type": "line",
   "text": "Runs $28CE (via $087F), then draws the frame: $150E."
  },
  {
   "address": 5390,
   "type": "line",
   "text": "Draws the fighters into the hidden screen: the two sprite fighters ($0870 for each, the one in $0172 last), the third ($0864 then $085E), the sprite positions ($1551), and $F150 (via $085B)."
  },
  {
   "address": 5429,
   "type": "line",
   "text": "A step with no fighting: $28CE, the drawing ($150E) and the wait for the next step ($1604)."
  },
  {
   "address": 5439,
   "type": "line",
   "text": "Shows the message in $81 ($084C) while drawing and pacing the fighters, until the timer $010E runs out."
  },
  {
   "address": 5457,
   "type": "line",
   "text": "Works out the sprite registers for the two fighters drawn with sprites (the one in $0172 and the other of fighters 0 and 1): each is three sprites side by side, 12 pixels apart, from its X ($6E) less 4; X positions doubled into $10-$15 with the ninth bits in $20, the third fighter's X into $4D and its fine scroll into $23. Their shape bases from $15F6 and $15FA (the second pair when $0176 is not $58) go to $01A3 and $01A4."
  },
  {
   "address": 5598,
   "type": "line",
   "text": "The eight bit masks $01-$80, for building the sprites' high X bits."
  },
  {
   "address": 5606,
   "type": "line",
   "text": "Each sprite's offset from its fighter's X: 0, 12, 24 for both fighters."
  },
  {
   "address": 5614,
   "type": "line",
   "text": "Which fighter each of the six sprites belongs to (an index to $4B or $4C): 0, 0, 0, 1, 1, 1."
  },
  {
   "address": 5622,
   "type": "line",
   "text": "Shape-number bases for the sprite fighters, read at $15F6+X (X = $0172, plus 2 when $0176 is not $58): $60, $70, $80, $90; $01A3 gets the entry plus 3. The bases alternate between the two buffers, so each step's shapes are built into the sprite blocks the screen is not showing."
  },
  {
   "address": 5626,
   "type": "line",
   "text": "The other sprite fighter's shape-number bases, read like $15F6: $70, $60, $90, $80; $01A4 gets the entry plus 3."
  },
  {
   "address": 5630,
   "type": "line",
   "text": "Frames per game step less one, by speed ($011E, keys 1 to 5), with one more on NTSC: 2 to 6 on PAL, 3 to 7 on NTSC, read one place on for NTSC."
  },
  {
   "address": 5636,
   "type": "line",
   "text": "Paces the game: waits until $017C (counted by the frame NMI) passes the speed's entry in $15FE, then for the raster to be above line $70, and resets the count. Then publishes the new frame: copies the sprite registers from $10-$25 to $26-$3B, where the interrupts read them (except in the bonus round, which sets its own), puts the shape bases into fighter_sprites' operands, and flips the double-buffered floor screen: $0174 selects $6800 or $6C00, which goes into the floor's $D018 operand at $097B and the high bytes of every sprite-pointer store in the multiplexer and fighter_sprites. Then $F1F9, $199D and $263E."
  },
  {
   "address": 5652,
   "type": "line",
   "text": "Operand of BCS $1604, not a variable: STA $1614,Y with Y = $FF ($1008, $1A8F) writes $1713. The rest of next_step: waits for the raster to be above line $70, resets the step count, then publishes the step: in the bonus round the shield's place and shape, otherwise the copy of $10-$25 to $26-$3B and the shape bases into fighter_sprites; patches the shown screen's page into every sprite-pointer store, flips the floor screens ($0174, $0176-$0178), and runs char_fighter_reflection, top_line and belt."
  },
  {
   "address": 5831,
   "type": "line",
   "text": "Value of $0177 for each floor buffer $0174: $8F, $64."
  },
  {
   "address": 5833,
   "type": "line",
   "text": "Value of $0176 for each floor buffer: $60, $58 (sprite_positions picks the shape bases by it)."
  },
  {
   "address": 5835,
   "type": "line",
   "text": "High byte of each floor buffer's screen, into $0178 and $017B: $68, $6C."
  },
  {
   "address": 5837,
   "type": "line",
   "text": "$D018 for the floor by buffer: $A4 (screen $6800, characters $5000) and $B4 (screen $6C00, characters $5000)."
  },
  {
   "address": 5839,
   "type": "line",
   "text": "Returns a random byte: steps $01AB and reads the byte at $3000 plus it (the game's own code serves as the table), adds the raster line and EORs the frame counter $44. Reached through $087C."
  },
  {
   "address": 5849,
   "type": "line",
   "text": "Low byte of the LDA $3000 operand in random, written from $01AB on each call."
  },
  {
   "address": 5857,
   "type": "line",
   "text": "Resets everything for a new game or demo: mode 0, the SID's first two voices and the collision latches cleared and the main loop's stack operand put back to $F0 ($1A9E); zero page $10-$3C cleared and $23, $39 set to $18; $4B-$F2 and $FD58-$FDB2 cleared, and 221 bytes by the loop at $1711, whose target the start-up and the game start point at $010C-$01E8, the game's variables (see $1713); the top two text rows blanked with $31; the fighters' colours white, red and blue ($0131-$0133); the border black, the speed normal ($011E = 2, key 3). Then $31CC, $1A7D (the sprite reset, wiped by the first reset's decryption: see $1957), the first round ($13E5), the colours ($199D) and $263E. The first time only ($FD50 = $81) it starts the music, the frame NMI ($177B, calling $1034) and the one-time decryption ($1780, calling $1957). It ends in mode 1 with the first frame published ($1615)."
  },
  {
   "address": 5906,
   "type": "line",
   "text": "Low byte of game_reset's STA $FF00,Y at $1711: the start-up writes the loader's stack pointer plus one ($0B) here, so the loop clears from $xx0C up."
  },
  {
   "address": 5907,
   "type": "line",
   "text": "High byte of the same STA: $01 from the start-up ($1008) and from the game start ($18E5), $FF from sprite_reset ($1A8F) during the first reset. game_reset runs only from the start-up and the game start (the JMPs to the main loop at $1031 and $1901), each after a 1 has been written here, so every reset clears $010C-$01E8, the game's variables, and the $FF is never used: 15,000 frames of the attract mode from demo.vsf ran no reset (live). Then the rest of game_reset."
  },
  {
   "address": 6011,
   "type": "line",
   "text": "JSR $1034 the first time game_reset runs; $1957 then rewrites it as STA $0134, so later calls do nothing."
  },
  {
   "address": 6013,
   "type": "line",
   "text": "High byte of JSR $1034 at $177B; decrypt_once writes $01 here and $8D over the opcode, making it STA $0134."
  },
  {
   "address": 6016,
   "type": "line",
   "text": "JSR $1957 the first time game_reset runs; $1957 rewrites it as STA $004B."
  },
  {
   "address": 6017,
   "type": "line",
   "text": "Low byte of JSR $1957 at $1780; decrypt_once writes $4B here."
  },
  {
   "address": 6018,
   "type": "line",
   "text": "High byte of JSR $1957; decrypt_once writes 0 here and $8D over the opcode, making it STA $004B. Then mode 1 and the first step's publishing through $1615."
  },
  {
   "address": 6027,
   "type": "line",
   "text": "Four sets of the sun's reflection colours, stepped by '*': sprite 7 above the water's middle line ($178B, into $FD54), sprite 6 there ($178F, $FD55), sprite 7 below it ($1793, $FD56) and sprite 6 below ($1797, $FD57)."
  },
  {
   "address": 6031,
   "type": "line",
   "text": "The second of the four sets of reflection colours stepped by '*': sprite 6 above the water's middle line, into $FD55."
  },
  {
   "address": 6035,
   "type": "line",
   "text": "The third set: sprite 7 below the middle line, into $FD56."
  },
  {
   "address": 6039,
   "type": "line",
   "text": "The fourth set: sprite 6 below the middle line, into $FD57."
  },
  {
   "address": 6043,
   "type": "line",
   "text": "Eight sky and water colour pairs stepped by D, O and M together: the low nibble is the sky's background colour ($F3) and the high nibble the water's ($F4)."
  },
  {
   "address": 6051,
   "type": "line",
   "text": "Keyboard rows ($DC00 values) of the speed keys 1 to 5, read with the columns at $17A8."
  },
  {
   "address": 6056,
   "type": "line",
   "text": "Keyboard column masks of the speed keys 1 to 5."
  },
  {
   "address": 6061,
   "type": "line",
   "text": "Called by the frame NMI. When either joystick is moved or fired it hands over to the start check at $1908 (once $44 has passed $19 and $FDA0 is clear). Otherwise, while any key is held for twelve calls ($4A), it acts on the first it finds: keys 1 to 5 set the speed $011E to 0-4; '*' steps the sun's reflection colours ($FD53 through $178B-$179A); D, O and M together step the sky and water colours ($F5 through $179B); the combination checked at $1855 steps $7665; F5 turns the music off (silencing the SID) or on; F7 turns the shouts on or off ($FD51); with no game being played, F3 or fire in port 1 starts a two-player game and F1 or fire in port 2 a one-player game ($18DF: $45 and $46 say which players are human, the border turns 9, the saved stack pointer from $18FD goes back into the main loop's LDX operand, and the main loop restarts). After a key has acted the counter $4A starts again from 0."
  },
  {
   "address": 6287,
   "type": "line",
   "text": "Read at $188F+X, X = $C6 + PAL flag: the high byte of CIA 2's timer latch, at $1955 ($42, NTSC) and $1956 ($4C, PAL), inside code that $1957 later wipes. With the low byte $C6 or $C7 from X, one NMI comes every 17,095 or 19,656 cycles, one NTSC or PAL frame."
  },
  {
   "address": 6387,
   "type": "line",
   "text": "Operand of LDY #$32 at $18F2: the start-up writes the loader's stack pointer into $18FD through STA $18F3,X, X being that pointer ($0A). The F1 start then sets effect 2's note and the border."
  },
  {
   "address": 6397,
   "type": "line",
   "text": "Operand of LDA #$F0 at $18FC, overwritten with the loader's stack pointer ($0A) at start-up: F1 puts it back into the main loop's TXS operand, and decrypt_once takes its key index from it. Then the rest of the start check: the main loop again, and, with nobody playing, fire on joystick 2 starting a one-player game ($18DB) and fire on joystick 1 a two-player one ($18CB)."
  },
  {
   "address": 6434,
   "type": "line",
   "text": "Tests a key combination: Y selects the keyboard rows ($DC00), X the column bits that must all read low on $DC01. Returns Z set when they do and joystick 1 is idle, so that a moved joystick in port 1 is not taken for a key."
  },
  {
   "address": 6456,
   "type": "line",
   "text": "Colour-RAM runs for the top rows, three of them: start columns $1C, $44, $20, lengths 2, 2, 5, all colour 4."
  },
  {
   "address": 6459,
   "type": "line",
   "text": "Lengths of the three colour-RAM runs of $1938: 2, 2, 5."
  },
  {
   "address": 6462,
   "type": "line",
   "text": "Colours of the three runs: 4, purple."
  },
  {
   "address": 6465,
   "type": "line",
   "text": "Colours of the two players' fist icons: white and light red."
  },
  {
   "address": 6467,
   "type": "line",
   "text": "Screen offsets of the two fist icons in the top row: 6 and 16, just after the first two scores."
  },
  {
   "address": 6469,
   "type": "line",
   "text": "The words shown at the top right, five characters each in the game's character codes ($31 a space, $11 A): DEMO, TIME and PAUSE."
  },
  {
   "address": 6485,
   "type": "line",
   "text": "High byte of CIA 2's timer period, read as $188F+$C6+PAL flag: $42 on NTSC, $4C on PAL. decrypt_once's fill of RTS bytes starts here, after the timer has been started."
  },
  {
   "address": 6487,
   "type": "line",
   "text": "Called once, from $1780, at the first reset (the start-up's call of game_reset, before the attract mode): moves 86 bytes from $1A40 to $1015 (the fist-icon routine) and refills $1A40 with 86 bytes from wherever the pointer at $50 points (in the emulator they came back as $31, the blank character); turns the two calls before it at $177B and $1780 into harmless stores; decrypts $7E0A-$7EFF by XORing each byte with the one at $1008 to $10FD as they stand after the move (the start comes from $18FD, the stack pointer saved at $1020); then writes RTS ($60) over itself from $1955 on. The fill reaches its own STA at $1991 and so ends there with an RTS: the JMP at $1997 never runs."
  },
  {
   "address": 6554,
   "type": "line",
   "text": "Three bytes after the JMP $1020 ($F0 $60 $60). Nothing reaches them."
  },
  {
   "address": 6557,
   "type": "line",
   "text": "Redraws the top text rows' colours and words: the colour runs from $1938; the TIME digits light blue, alternating blue and white in a fight's last five seconds; the word at $6C20 from $1945 (PAUSE in mode 6, flashing black and light blue; DEMO with no human playing; TIME otherwise); then the level LV at $6C44 with its leading zero, and the TIME ($1A20)."
  },
  {
   "address": 6688,
   "type": "line",
   "text": "Prints TIME ($011C) as two digits at $6C26, a leading zero shown as a space."
  },
  {
   "address": 6701,
   "type": "line",
   "text": "Prints the BCD byte in A as two characters at $6C00+Y; a leading zero becomes the character in $4B."
  },
  {
   "address": 6720,
   "type": "line",
   "text": "Code stored here and moved to $1015 by $1957 (the first 61 of the 86 bytes moved); it never runs at this address. For each of the two players it draws the 2 by 2 fist icon (characters $32-$35) beside its score, at the offset from $1943, coloured from $1941 when the player is human and in the game ($45,x), flashing while $FDA6,x counts down, or in the background colour when not."
  },
  {
   "address": 6781,
   "type": "line",
   "text": "Clears the sprite position registers, sets all sprites multicolour and on, writes $FF into $1713 (STA $1614,Y with Y = $FF), which would aim game_reset's clearing loop at $FF0C-$FFE8, but no reset runs before a game start puts 1 back, and clears the expansion and priority registers. It runs whole only once: at the end of that first reset $1957 moves its first 25 bytes away to $1052 and fills them with blank characters, so from the second call on it runs those bytes as AND ($31),Y and stores an unknown A into $D017 and $D01B."
  },
  {
   "address": 6814,
   "type": "line",
   "text": "Silences the SID's first two voices (gate off, sustain, filter), clears the collision latches $01A5 and $01A6, writes $F0 into the main loop's stack operand at $08C2 (STA $07D2,X with X = $F0) and reads the collision registers to clear them."
  },
  {
   "address": 6861,
   "type": "line",
   "text": "Waits X frames of the frame counter $44; returns at once in mode 0, the mode only while game_reset runs."
  },
  {
   "address": 6877,
   "type": "line",
   "text": "Runs the fighter logic for fighters 0 and 1 only ($1AE7 with a count of 2)."
  },
  {
   "address": 6882,
   "type": "line",
   "text": "Reads the human players' joysticks ($1AFE), then runs each of the three fighters' logic: $2A1A (via $0843) and $1D06 (via $0879), with $68 the fighter."
  },
  {
   "address": 6910,
   "type": "line",
   "text": "For each human player (fighter 0 on the joystick in port 2, fighter 1 in port 1) reads the stick into the direction $019F,y and fire $01A1,y and turns it into a move request $0134,y through the tables at $1BBB-$1C3A: by fire and direction, mirrored by which way the fighter faces ($71 against $012B), with the close-range tables when an opponent is near (the checks with $1BAD-$1BB8 and $78 below 8). Nothing is read in mode 3."
  },
  {
   "address": 7085,
   "type": "line",
   "text": "Arguments X for the range test ($0849) of each fighter against the other: 1, 0, 0."
  },
  {
   "address": 7088,
   "type": "line",
   "text": "Arguments X for the second range test: 2, 2, 1."
  },
  {
   "address": 7091,
   "type": "line",
   "text": "Which range-test results count as near: 0, 1, 0, 0, 0, 0, 1, 0."
  },
  {
   "address": 7099,
   "type": "line",
   "text": "Move for each joystick state with the fighter facing the normal way, 32 entries indexed by fire (16) plus the direction bits (active low, $0F centred): up 1, up-right 2, right 3, down-right 4, down 5, down-left 6, left 7, up-left 8; with fire: up 9, up-right 10, right 11, down-right 12, down 13, down-left 14, left 15, up-left 16. Centred is 0, with or without fire."
  },
  {
   "address": 7131,
   "type": "line",
   "text": "The same moves with left and right swapped, for a fighter facing the other way."
  },
  {
   "address": 7163,
   "type": "line",
   "text": "joy_moves when an opponent is near: forward and its diagonals become move 20 ($14)."
  },
  {
   "address": 7195,
   "type": "line",
   "text": "joy_moves_mirror when an opponent is near, with the same change."
  },
  {
   "address": 7232,
   "type": "line",
   "text": "Starts the move requested in $0134,y for fighter Y, or, with none requested, chooses: after 128 idle steps a 1 in 32 chance each step, or on the first two levels the keys S and E held together, starts move $20 (the trousers fall) for a random 1 to 64 steps; otherwise move 0. Sets the move $013D,y, its first frame $0137,y and $013A,y from $1F41, and clears the fighter's move state ($0140, $0143, $0146, $0149, $012B, $015B, $015E, $0155)."
  },
  {
   "address": 7298,
   "type": "line",
   "text": "Starts move A for fighter Y with no checks: the second entry of start_move, reached through $088B."
  },
  {
   "address": 7344,
   "type": "line",
   "text": "Width in pixels of each of the 76 poses ($6B values below $4C), used to keep a fighter inside the arena."
  },
  {
   "address": 7424,
   "type": "line",
   "text": "How long a computer fighter stays down after a fall, by difficulty step $018B: it gets up once its down-timer $88,y has fallen to this ($7D, $64, $4B, $32, $19, 0), so it rises sooner as the game goes on."
  },
  {
   "address": 7430,
   "type": "line",
   "text": "Runs one step of fighter $68's animation. A fighter that is down ($0155) waits for its timers ($FD87; for a computer fighter also the down-timer against $1D00, for a human a move request) and then gets up with move $23, $24 or $25 according to the pose it fell into ($27, $2B or another). Otherwise it plays its move's frame script: advances $0137 within the move's range ($1F41) and, at the end, starts the next move ($1C40); sets the pose $6B from $1F6B (a value of $4C or more means pose 0) and the frame's flags $015B from $211D, then acts on the flags: bit 3 holds the frame while the human player keeps the same move requested (a move carries on while the stick is held); bit 4 lets a new request break in (moves 3 and 7, the walks, also step the fighter 3 pixels); bit 1 turns the fighter round; bit 0 makes it the front sprite fighter ($0172); bit 5 starts a fall ($0155); bit 6 marks a frame that can hit ($0158); bit 2 reverses the script ($0149, played backwards by $1E89). Each frame moves the fighter by the step in $2044 ($1EAF)."
  },
  {
   "address": 7855,
   "type": "line",
   "text": "Moves fighter Y by its frame's step ($2044,x) in the direction it faces ($71), then keeps it inside the arena: its pose's span ($1CB0) must lie between $11 (or $2C when $FDA8 is set) and $AE. An X of $D0 or more wraps to $10."
  },
  {
   "address": 7861,
   "type": "line",
   "text": "Second entry of fighter_move_x with the direction in A, used when a script plays backwards."
  },
  {
   "address": 8001,
   "type": "line",
   "text": "Index of each move's first entry in the frame script, by move number."
  },
  {
   "address": 8002,
   "type": "line",
   "text": "move_frames read one on ($1F42,X): where move X's frames end, the next move's first."
  },
  {
   "address": 8043,
   "type": "line",
   "text": "The frame script's pose for each of its 217 frames; $4C or more stands for pose 0."
  },
  {
   "address": 8260,
   "type": "line",
   "text": "Each frame's step in X, signed, in the direction the fighter faces."
  },
  {
   "address": 8477,
   "type": "line",
   "text": "Each frame's flags, read by fighter_anim: bit 0 the front sprite fighter, 1 turn round, 2 play backwards, 3 hold while the stick is held, 4 a new request may break in, 5 a fall, 6 a frame that can hit."
  },
  {
   "address": 8694,
   "type": "line",
   "text": "Eight rotations of the bit pair $03 ($03, $06, $0C ... $81), for the moving dots of the high-score table's frame."
  },
  {
   "address": 8702,
   "type": "line",
   "text": "Called by the frame NMI. In mode 4 with $01C9 clear, animates the dotted frame round the high-score table: from the frame counter, a rotating bit pattern from $21F6 into floor-charset bytes $572F and $5738, and the pattern's two-bit pixels ($C0 and $03) into $5730-$5737 and $5740-$5747 (characters $E5-$E8, the frame's corners and edges)."
  },
  {
   "address": 8775,
   "type": "line",
   "text": "Mode 4. After a demo ($01AC bit 7) it runs the attract sequence ($27D1 sorts the table, $235F the presentation) and starts a new demo fight in mode 1. After a game, the player who dropped out ($01AC) is checked against the high scores: with a score of 0, or none high enough ($27F3 against the last place), message $13 then $14 for a while; otherwise it sorts the table ($27D1), finds the new entry's place, scrolls the table to show it ($FDA9, $FDAA), shows message $12, poses the fighters (the loser in poses $30/$31, the others $4B) and runs the name entry ($24B7), then waits and returns to the demo."
  },
  {
   "address": 9055,
   "type": "line",
   "text": "The attract-mode sequence: the fighters stood in pose $4B, the 5-row font built ($240A via $23D0), then the TOP 30 SCORES table scrolled up from place 29 to the top ($FDAA counting down) until $01B5 reaches 4, the first fighter coloured blue meanwhile."
  },
  {
   "address": 9168,
   "type": "line",
   "text": "Clears the message, sets $FDA8 (the fighters kept to the right of the table), resets the frame count, builds the font ($240A), draws the table's frame ($08A9 with 7, $1C, 8) and draws it ($23FA)."
  },
  {
   "address": 9210,
   "type": "line",
   "text": "Draws one frame of the high-score screen: $28CE, the fighters ($0888), the table rows ($26F7), the frame ($244C) and the wait for the next step ($08A0)."
  },
  {
   "address": 9226,
   "type": "line",
   "text": "Builds 49 characters of the floor character set at $55D0-$5757 (codes $BA-$EA) from the 5-byte glyphs stored at $7000-$70F4: each glyph gets a blank top row and two blank bottom rows. Called only by table_screen ($23EA), so the font is built again each time the high-score table is shown."
  },
  {
   "address": 9292,
   "type": "line",
   "text": "Draws the high-score table's frame into both floor screens with characters $E5-$E8 (top and bottom edges at $6E38/$6FC8, sides at columns 0 and 28 of rows 17-21) in white."
  },
  {
   "address": 9375,
   "type": "line",
   "text": "Screen addresses of the six rows where a name is typed in, by row ($6EB7 to $6F7F), followed by the matching colour-RAM addresses."
  },
  {
   "address": 9376,
   "type": "line",
   "text": "High bytes of the name-entry rows' screen addresses ($6E and $6F)."
  },
  {
   "address": 9387,
   "type": "line",
   "text": "Low bytes of the name-entry rows' colour-RAM addresses."
  },
  {
   "address": 9388,
   "type": "line",
   "text": "High bytes of the name-entry rows' colour-RAM addresses ($DA and $DB)."
  },
  {
   "address": 9399,
   "type": "line",
   "text": "Lets the player whose game ended ($01AC: 0 the joystick in port 2, 1 port 1) type three letters: left and right step the letter $01B0 back and forward through codes $CA-$E4 (the alphabet in the 5-row font, wrapping; bits 2 and 3 of the port, $251E and $2534), fire takes it and moves on. The letter flashes while being chosen. After three letters, or 6 x 256 frames, the initials go into the table at $FE2F/$FE4E/$FE6D for the new place $01AD."
  },
  {
   "address": 9654,
   "type": "line",
   "text": "Reads the joystick of player $01AC: direction bits into $01B3, fire into $01B1."
  },
  {
   "address": 9682,
   "type": "line",
   "text": "Prints belt name A (0-5, or 6 for none, given as a negative A) in the 5-row font at ($50)+12."
  },
  {
   "address": 9718,
   "type": "line",
   "text": "Offset of each belt's name in $25FE: 0, 6, 12, 18, 24, 30, and 36 for the blank."
  },
  {
   "address": 9726,
   "type": "line",
   "text": "The belt names in ASCII with @ as a space: WHITE, YELLOW, GREEN, PURPLE, BROWN, BLACK, then a blank of '<'."
  },
  {
   "address": 9769,
   "type": "line",
   "text": "The same name offsets, read by $263E."
  },
  {
   "address": 9775,
   "type": "line",
   "text": "The score at which each belt after white is reached, in thousands (BCD): 8, 16, 25, 35, 50. A score of 100,000 or more counts as 90,000."
  },
  {
   "address": 9782,
   "type": "line",
   "text": "The colour each belt's name is shown in: white, yellow, light green, purple, orange, light grey."
  },
  {
   "address": 9788,
   "type": "line",
   "text": "Where each player's score starts in the score bytes from $0113: 0 for player 1, 3 for player 2."
  },
  {
   "address": 9790,
   "type": "line",
   "text": "Called each step. Outside mode 4, with someone playing, works out the belt of the leading human player's score (the higher of two) against $262F into $01AE and prints its name at $6C48 in its colour. With no human playing it shows the white belt."
  },
  {
   "address": 9919,
   "type": "line",
   "text": "The high-score table's column headings in ASCII: POS, NAME, BELT, SCORE."
  },
  {
   "address": 9947,
   "type": "line",
   "text": "Prints the heading row from $26BF in the 5-row font, cyan, into both floor screens at row 17."
  },
  {
   "address": 9975,
   "type": "line",
   "text": "Prints six rows of the high-score table from place $FDAA: the position (BCD), the three initials from $FE2F/$FE4E/$FE6D, the belt name from $FE10 (none for an empty score) and the score from $FDB3/$FDD2 with two zeros after it."
  },
  {
   "address": 10139,
   "type": "line",
   "text": "Prints the BCD byte in A as two digits of the 5-row font at ($50),Y, leading zeros as the character in $4B."
  },
  {
   "address": 10193,
   "type": "line",
   "text": "Bubble-sorts the 30 high-score places by score ($27F3, $2804)."
  },
  {
   "address": 10227,
   "type": "line",
   "text": "Compares the high scores of places X and Y (BCD, high byte $FDB3 then $FDD2)."
  },
  {
   "address": 10244,
   "type": "line",
   "text": "Swaps places X and Y in all seven of the table's 31-byte columns from $FDB3."
  },
  {
   "address": 10277,
   "type": "line",
   "text": "Clears the floor screens ($2841) and the sprite memory from $58C0 to $67BF."
  },
  {
   "address": 10290,
   "type": "line",
   "text": "High byte of STA $58C0,Y in clear_floor: stepped from $58 to $66, so the loop clears $58C0-$67BF."
  },
  {
   "address": 10305,
   "type": "line",
   "text": "Clears the floor rows of both screens ($6C00 and $6800) with $285A, which does nothing while $FDA8 is set."
  },
  {
   "address": 10330,
   "type": "line",
   "text": "Fills the floor rows of the current screen ($0178) with $31, the blank, unless $FDA8 is set."
  },
  {
   "address": 10353,
   "type": "line",
   "text": "High byte of STA $6E2F,Y in clear_floor_rows: the current screen's page plus 2."
  },
  {
   "address": 10356,
   "type": "line",
   "text": "High byte of STA $6F0B,Y: the screen's page plus 3. Together the two stores blank the floor rows."
  },
  {
   "address": 10361,
   "type": "line",
   "text": "The sprite blocks a sprite fighter's shapes can occupy, sixteen for each facing, read by $28CE: low bytes for one facing at $2879-$2888 with the high-byte offsets (0-3, added to the buffer's base page) at $2889-$2898, then the same for the other facing at $2899-$28A8 and $28A9-$28B8."
  },
  {
   "address": 10377,
   "type": "line",
   "text": "High-byte offsets of the first facing's sixteen sprite blocks (part of the table at $2879)."
  },
  {
   "address": 10425,
   "type": "line",
   "text": "Index into $2879 of each facing's first block: 0 and $20."
  },
  {
   "address": 10427,
   "type": "line",
   "text": "Index one past each facing's last block, $10 and $30, stored into the CPX operand at $2931."
  },
  {
   "address": 10429,
   "type": "line",
   "text": "Read at $28BD+n: the branch offset from the generated clearing code's BPL back to $0300 when it holds n stores ($FA for one, three less for each more)."
  },
  {
   "address": 10446,
   "type": "line",
   "text": "Rubs out the sprite shapes this buffer showed two steps ago, before they are drawn again. For each sprite fighter (1, then 0) it looks up the pose that buffer last held ($011F, facing $0125) in the 16-bit masks at $81C0, and for each set bit writes a STA abs,Y to that 64-byte sprite block into $0300; then DEY, BPL back and RTS, and calls it with A = 0 and Y = $3F. Then clears the floor screen ($285A) and records this step's poses and facings for the buffer."
  },
  {
   "address": 10534,
   "type": "line",
   "text": "Operand of ADC #$00 in clear_old_shapes: the buffer's base page (from $0176, plus 4 for fighter 1, less 1 for the carry), added to each block's high-byte offset."
  },
  {
   "address": 10545,
   "type": "line",
   "text": "Operand of CPX #$00 in clear_old_shapes, from $28BB: where this facing's blocks end. Then the generated code's DEY, BPL and RTS, its call with A = 0 and Y = $3F, and, after both fighters, the floor cleared and this step's poses and facings recorded for the buffer ($011F, $0125)."
  },
  {
   "address": 10624,
   "type": "line",
   "text": "Per level (LV AND 7): a value for the defence skill $FDAF, 0 to keep the difficulty step's; $80 makes it defend every time it has an answer ($2A89). Levels 0, 4 and 6 have $80."
  },
  {
   "address": 10632,
   "type": "line",
   "text": "Per level (LV AND 7): a value for the attack skill $FDB0, 0 to keep the difficulty step's. $80 skips the attack chance altogether ($2ACD), so on such a level a computer fighter starts a move only after 48 idle steps: level 0's entry is $80."
  },
  {
   "address": 10640,
   "type": "line",
   "text": "Per level: an offset into the target tables at $2A08 for one-player games ($FDB1)."
  },
  {
   "address": 10648,
   "type": "line",
   "text": "At the start of a round sets the computer fighters' skills: defence $FDAF and attack $FDB0 from the difficulty step $018B, unless the level's entries in $2980 and $2988 replace them; and the targeting offset $FDB1 from $2990."
  },
  {
   "address": 10686,
   "type": "line",
   "text": "Chooses whom computer fighter $69 attacks, into $74. With no human playing, or two, the leader on points of the other two (or the other one when the leader is down, $014C). With one human, from the tables at $2A08 by fighter, which player is human and $FDB1, with the second choice from $2A0E when the first is down."
  },
  {
   "address": 10754,
   "type": "line",
   "text": "The first of the other two fighters, for fighters 0, 1, 2: 1, 0, 0."
  },
  {
   "address": 10757,
   "type": "line",
   "text": "The second of the other two fighters: 2, 2, 1."
  },
  {
   "address": 10760,
   "type": "line",
   "text": "First-choice target of each computer fighter in a one-player game, by fighter plus three for player 2 plus $FDB1."
  },
  {
   "address": 10766,
   "type": "line",
   "text": "Second-choice target when the first is down."
  },
  {
   "address": 10778,
   "type": "line",
   "text": "The computer's decision for fighter $68 when it is not human, in a fight or on the high-score screen. Picks a target ($29BE) and measures the range and facing ($2CA9). Does nothing while a move runs that cannot be broken into. If the target is attacking and close ($78 below 9) with a move it can answer ($2B7C), it may defend, with a chance set by the defence skill (thresholds $2B4C and $2B52), choosing the reply from $2BD1 by facing and attack. Otherwise, after 48 idle steps or by chance against the attack skill ($2B58): against a target on the floor a move from $2BA0; facing away, a turn or move from $2BAD, $2BB9 or move 14 by distance; far off ($78 of 10 or more) an approach from $2BC5; in range an attack from $2C11, chosen by distance ($2C7D) and a random spread set by the difficulty ($2B5E). The chosen move goes to $0134 and is started at once."
  },
  {
   "address": 11084,
   "type": "line",
   "text": "Defence chance by skill: a random byte at or above this value defends against moves 2, 5 and 6 ($F0, $A0, $60, $20, $08, 0)."
  },
  {
   "address": 11090,
   "type": "line",
   "text": "Defence chance against the other moves, by skill ($E0, $C0, $80, $40, $10, $10)."
  },
  {
   "address": 11096,
   "type": "line",
   "text": "Attack chance by skill ($E8, $D0, $60, $30, $10, 0)."
  },
  {
   "address": 11102,
   "type": "line",
   "text": "How many of the distance band's attacks the computer chooses from, by difficulty step (12, 10, 8, 8, 6, 6)."
  },
  {
   "address": 11108,
   "type": "line",
   "text": "For each facing relation $7A, 1 when the computer fighter has its back to its target."
  },
  {
   "address": 11116,
   "type": "line",
   "text": "For each facing relation $7A (0-7), 1 when a hit scores a half point, 0 a full point (read by test_hit). Eight more bytes follow, $2B74-$2B7B, that no instruction reads."
  },
  {
   "address": 11132,
   "type": "line",
   "text": "For each move a target can make, the row of $2BD1 that answers it; $FF for a move that is not answered."
  },
  {
   "address": 11168,
   "type": "line",
   "text": "Moves the computer chooses from against a target lying on the floor."
  },
  {
   "address": 11181,
   "type": "line",
   "text": "Moves for a computer fighter with its back to its target, at distance 12 or more."
  },
  {
   "address": 11193,
   "type": "line",
   "text": "Moves for a computer fighter with its back to its target, at distance below 8."
  },
  {
   "address": 11205,
   "type": "line",
   "text": "Moves for closing in on a distant target."
  },
  {
   "address": 11217,
   "type": "line",
   "text": "Replies to an attack, eight to a row: by facing relation and the attack's class, then a random choice."
  },
  {
   "address": 11281,
   "type": "line",
   "text": "Attacks by distance, 108 bytes up to $2C7C: the band from $2C7D plus a random choice."
  },
  {
   "address": 11389,
   "type": "line",
   "text": "Where each distance (in units of 4 pixels) starts its run of attacks in $2C11."
  },
  {
   "address": 11400,
   "type": "line",
   "text": "Returns in X a random number below X, rejecting values from random and the raster line until one fits; A and $4B are kept."
  },
  {
   "address": 11433,
   "type": "line",
   "text": "Measures fighters Y and X (reached through $0849): the distance between their fronts into $79, a quarter of it into $78, and in $7A and A a code of which side X is on and which ways the two face."
  },
  {
   "address": 11530,
   "type": "line",
   "text": "The ten poses in which an attack can land, searched for each attacker's pose ($6B); the index found is the attack ($010D). $FF ends the list."
  },
  {
   "address": 11541,
   "type": "line",
   "text": "For each attack, how far in front of the attacker its blow lands."
  },
  {
   "address": 11551,
   "type": "line",
   "text": "For each attack, which of the six test points of a target (bits $20 down to $01, as in $2D6F) it can strike."
  },
  {
   "address": 11561,
   "type": "line",
   "text": "For each attack, how close the blow must come to a test point to count."
  },
  {
   "address": 11571,
   "type": "line",
   "text": "Points (BCD hundreds) for each attack scoring a full point: 200 to 1,000."
  },
  {
   "address": 11581,
   "type": "line",
   "text": "Points for each attack scoring a half point, with the facing relation that gives one ($2B6C)."
  },
  {
   "address": 11591,
   "type": "line",
   "text": "The digit painted first on a target felled by a full-point hit, by attack: an index into $3C11 (0 1, 1 2, 2 4, 3 5, 4 8), 5 for 1000. It matches the points of $2D33 for eight attacks; attacks 3 and 6 paint half their points."
  },
  {
   "address": 11601,
   "type": "line",
   "text": "The same digit after a half-point hit, by attack; attacks 3 and 6 again paint half the points of $2D3D."
  },
  {
   "address": 11611,
   "type": "line",
   "text": "How long the target stays stunned ($FD87; $FD84 is 25 less) after a full-point hit, by attack."
  },
  {
   "address": 11621,
   "type": "line",
   "text": "The same for a half-point hit."
  },
  {
   "address": 11631,
   "type": "line",
   "text": "The bit of each of a target's six test points: $20, $10, $08, $04, $02, $01."
  },
  {
   "address": 11637,
   "type": "line",
   "text": "The move a struck fighter is sent into, by attack times four plus the two facings ($0185, range_check's code AND 3: the attacker's facing in bit 1, the target's in bit 0); bit 7 also sets $FD9C."
  },
  {
   "address": 11677,
   "type": "line",
   "text": "For each pose a target can be in, the row of test points ($2DE6) it presents; $FF for a pose that cannot be hit."
  },
  {
   "address": 11750,
   "type": "line",
   "text": "Six test-point offsets for each hit class (index: the class $0183 times six, plus the point $6A), measured from the target's X; $80 or more for a point it does not have. 216 bytes, to $2EBD, room for 36 classes."
  },
  {
   "address": 11966,
   "type": "line",
   "text": "Each step of a fight, tests six attacker and target pairs ($2F2B, $2F31; $FD83 counts them). An attacker in one of the hitting poses ($2D0A), not already past its blow ($0143 below 2), against a target that is not down, has the blow tested ($2F3D); once a target is hit, the pairs that remain against it are skipped ($2F25)."
  },
  {
   "address": 12069,
   "type": "line",
   "text": "For each pair, where the count goes on from once its target has been hit."
  },
  {
   "address": 12075,
   "type": "line",
   "text": "Attacker of each of the six pairs: 0, 0, 1, 1, 2, 2."
  },
  {
   "address": 12081,
   "type": "line",
   "text": "Target of each pair: 2, 1, 2, 0, 1, 0. With the attackers at $2F2B, the six pairs are 0 on 2, 0 on 1, 1 on 2, 1 on 0, 2 on 1 and 2 on 0."
  },
  {
   "address": 12087,
   "type": "line",
   "text": "How long a fighter knocked down stays there, by difficulty step: 255, 200, 150, 100, 75, 50."
  },
  {
   "address": 12093,
   "type": "line",
   "text": "Tests whether attack $010D of fighter $69 lands on fighter $74: finds the target's hit class from its pose ($2D9D; an attack 2 against class $17 counts as $23, a class $13 seen face on as 0), the point where the blow lands ($2D15), then for each test point the attack can reach ($2D1F) compares the gap with $2D29. On a hit: the points to award ($018A) and the target's knock-back and stun timers from the half- or full-point tables by facing, the target down ($014C = 1 or 2, also the dots to add, $0191), its down-time from $2F37, the scorer becomes the front sprite fighter, the score and dots are redrawn ($086A, $0867), and the target is sent into its reaction move from $2D75."
  },
  {
   "address": 12288,
   "type": "line",
   "text": "High byte of LDA $0188 at $2FFE, not a variable: random reads the program from $3000 on. The rest of test_hit: the gap tests, and on a hit the points, the knock-back and stun timers by half or full point, the target down, its down-time, the scorer's shouts and score, and the target's reaction move."
  },
  {
   "address": 12503,
   "type": "line",
   "text": "Colour of each fighter's filled point dots: white, light red, light blue."
  },
  {
   "address": 12506,
   "type": "line",
   "text": "Colour of the dots not yet won: dark grey."
  },
  {
   "address": 12509,
   "type": "line",
   "text": "Adds the dots just won ($0191) to fighter $68's count $010F (at most 7) and redraws its six dots at the top of the screen (character $0C), filled ones in its colour."
  },
  {
   "address": 12567,
   "type": "line",
   "text": "Screen offset of each fighter's row of six dots: 0, 10, 20."
  },
  {
   "address": 12570,
   "type": "line",
   "text": "Screen offset of each fighter's six-digit score in the second row: $28, $32, $3C."
  },
  {
   "address": 12573,
   "type": "line",
   "text": "Where each score's leading blanks stop: $2D, $37, $41."
  },
  {
   "address": 12576,
   "type": "line",
   "text": "Where each fighter's score lies in the score bytes from $0113: 0, 3, 6."
  },
  {
   "address": 12579,
   "type": "line",
   "text": "Colour of each fighter's score: white, light red, light blue."
  },
  {
   "address": 12582,
   "type": "line",
   "text": "Adds the points of the last hit ($018A, BCD hundreds) once ($0112 guards it) to fighter $68's round total ($0195/$0192) and to its score ($0113+), recolours the score and prints it as six digits with leading zeros blanked."
  },
  {
   "address": 12728,
   "type": "line",
   "text": "Calls $69F0 with $018A and $0112 kept."
  },
  {
   "address": 12748,
   "type": "line",
   "text": "Copies the arena picture's colours for rows 2 to 13 from file c: the screen-matrix colours from $F920-$FAFF into $6C50-$6E2F and the colour RAM from $FB20-$FCFF into $D850-$DA2F."
  },
  {
   "address": 12778,
   "type": "line",
   "text": "Shows message $81 in the judge's speech bubble, or clears bubble and judge ($FF, or any number from $1D up). For a new message: the bubble's width from $3863, a place on the floor where the fighters leave room ($324B), the colours ($33A3) and the judge's talking ($FD82, $FDA2), the text ($3A03 clears the bubble's characters, $38BF prints it), the rows blanked ($3AE5). Each call then redraws bubble and judge into the current screen ($3A60, $33FC); $01C9 says a bubble is up."
  },
  {
   "address": 12875,
   "type": "line",
   "text": "Finds where the judge stands: marks the columns the three fighters cover in the map at $03C0-$03E7, finds the widest free gap and puts him in the middle of it ($01CA, at most $22), then places the bubble ($3373). In the pause he stands at column $22."
  },
  {
   "address": 12942,
   "type": "line",
   "text": "Low byte of LDA $0852,X at $328D, rewritten with $B0 from $0852, so it reads pose_width ($1CB0). Then the rest of place_judge."
  },
  {
   "address": 12943,
   "type": "line",
   "text": "High byte of that LDA, rewritten with $1C from $0853."
  },
  {
   "address": 13171,
   "type": "line",
   "text": "Places the bubble ($01CB) over the judge at $01CA, kept on the screen for its width $01C8."
  },
  {
   "address": 13219,
   "type": "line",
   "text": "Colours the bubble's rows (14 to 16) white, and the judge's rows 17 to 22 from $33D6 with white edges, as multicolour characters."
  },
  {
   "address": 13270,
   "type": "line",
   "text": "Colour RAM of the judge's rows from the top: $09, $09, $0B, $0B, $0D, $0D (multicolour white, cyan and green)."
  },
  {
   "address": 13276,
   "type": "line",
   "text": "The judge's figure, four cells to each of eight rows (17 to 24): character numbers less $32, $FF for a cell left blank."
  },
  {
   "address": 13308,
   "type": "line",
   "text": "Draws the judge from $33DC into the current floor screen at column $01CA."
  },
  {
   "address": 13365,
   "type": "line",
   "text": "Clears the bubble's rows and the judge's cells from both floor screens with blanks."
  },
  {
   "address": 13417,
   "type": "line",
   "text": "Row offsets used to clear the judge: 0, $28, $50, $78."
  },
  {
   "address": 13421,
   "type": "line",
   "text": "Length of each fighter's colour name in $3473: 6, 4, 5 (with its trailing space)."
  },
  {
   "address": 13424,
   "type": "line",
   "text": "Where each name starts in $3473: 0, 6, 10."
  },
  {
   "address": 13427,
   "type": "line",
   "text": "The fighters' names in ASCII, @ for a space: WHITE, RED, BLUE."
  },
  {
   "address": 13442,
   "type": "line",
   "text": "Where each of the bubble's three text lines starts in the floor character set ($55D5, $55DB, $55E1), and $55D9."
  },
  {
   "address": 13443,
   "type": "line",
   "text": "High bytes of the bubble's line addresses at $3482."
  },
  {
   "address": 13450,
   "type": "line",
   "text": "The bubble messages in ASCII: codes 0-9 give that many spaces, $0A-$0C the name of the fighter placed first, second or third, $9A and $9E start and end double-height letters, $9C the next line, $9D the TIME bonus, $9B the end. '<' prints as '!', '=' as '+'. This one: \"first WINS, second STAYS IN, third IS OUT\"."
  },
  {
   "address": 14435,
   "type": "line",
   "text": "Width of the bubble for each message, in characters less 2."
  },
  {
   "address": 14465,
   "type": "line",
   "text": "Address of each of the 29 messages ($00-$1C)."
  },
  {
   "address": 14466,
   "type": "line",
   "text": "High bytes of the message addresses at $3881."
  },
  {
   "address": 14527,
   "type": "line",
   "text": "Prints message $82 into the bubble's characters, letter by letter in the 5-row font ($39C6), following the codes described at $348A, up to 54 codes."
  },
  {
   "address": 14790,
   "type": "line",
   "text": "Prints ASCII letter A into the bubble's character data at $60/$61: the 5-byte glyph at $7000+5*(A-$30), inverted, down one column of the bubble, each byte written twice (double height) when $01DA is set. Then moves $60/$61 on $18 bytes to the next column."
  },
  {
   "address": 14851,
   "type": "line",
   "text": "Fills the bubble's 18 characters of 24 bytes from $55D0 with the bubble's background, and draws its rounded edges at $52B0-$52DF."
  },
  {
   "address": 14944,
   "type": "line",
   "text": "Writes the bubble's character codes into rows 14 to 16 of the current floor screen from column $01CB: a left end ($56-$58), a run of text columns from $BA and a right end ($59-$5B), in white."
  },
  {
   "address": 15023,
   "type": "line",
   "text": "Puts character A and the next two under one another in the three bubble rows at Y, in white."
  },
  {
   "address": 15050,
   "type": "line",
   "text": "Fills colour RAM rows 14 to 23 with the third fighter's colour plus 8 ($08A9, as multicolour characters), the bottom row orange, then blanks the floor ($3AE5)."
  },
  {
   "address": 15077,
   "type": "line",
   "text": "Blanks floor rows 14 to 16, where the bubble goes, in the current screen."
  },
  {
   "address": 15099,
   "type": "line",
   "text": "Four 24-byte frames ($3AFB-$3B5A) of a small animated overlay that $3B5F stamps into a fallen fighter's pose while it is stunned ($FD87), one frame a step."
  },
  {
   "address": 15195,
   "type": "line",
   "text": "Offset of each of the four overlay frames in $3AFB: 0, $18, $30, $48."
  },
  {
   "address": 15199,
   "type": "line",
   "text": "For a fighter lying in pose $27, $2B or $2F: clears the first 56 bytes of the pose's graphics, paints the points of the hit that felled it ($3BA3) and, while the fighter is stunned and early in the step ($017C below 7), one frame of the overlay from $3AFB into bytes $20-$37."
  },
  {
   "address": 15267,
   "type": "line",
   "text": "While fighter $68's timer $FD84 runs, paints the points of the hit into its pose's graphics in the digits at $3C11, at the offsets in $3C03 (mirrored through $0400 when it faces left). With $FD8A 5 or more it paints four digits, 1 0 0 0; below 5 it skips the first place and paints three, digit $FD8A then 0 0 (200, 400, 500, 800 or 100). For attacks 3 and 6 the number is half the points add_score adds (live)."
  },
  {
   "address": 15318,
   "type": "line",
   "text": "Copies one 5-byte digit (Y selects it through $3C0B) from $3C11 into the pose's graphics at the next offset from $3C03, mirrored through $0400 for a fighter facing left."
  },
  {
   "address": 15360,
   "type": "line",
   "text": "The first byte of page $3C00, the branch operand of BNE $3BE6 in stamp_shape: game_init swaps this page with $0C00, which the file holds the other way round. Then the rest of stamp_shape and the mark tables."
  },
  {
   "address": 15363,
   "type": "line",
   "text": "Offsets in the pose's graphics of the four places of the painted points, for each facing."
  },
  {
   "address": 15371,
   "type": "line",
   "text": "Start of each 5-byte digit in $3C11: 0, 5, 10, 15, 20, 25."
  },
  {
   "address": 15377,
   "type": "line",
   "text": "Six 5-byte multicolour digits, 4 pixels wide: 1, 2, 4, 5, 8 and 0, the digits of every number of points a hit can paint."
  },
  {
   "address": 15407,
   "type": "line",
   "text": "For poses $28-$2A: start of the first stretch of pose graphics hidden by $3C3B."
  },
  {
   "address": 15410,
   "type": "line",
   "text": "End of the first hidden stretch for poses $28-$2A."
  },
  {
   "address": 15413,
   "type": "line",
   "text": "Start of the second hidden stretch."
  },
  {
   "address": 15416,
   "type": "line",
   "text": "End of the second hidden stretch, 0 for none."
  },
  {
   "address": 15419,
   "type": "line",
   "text": "Before a pose is drawn: sets $FD9F to 1 and, for a fighter without $FD9C set, $FDA0 to 1 whatever the pose; in pose $28, $29 or $2A it also saves up to two stretches of the pose's graphics (from $3C2F-$3C3A) into $0350 and clears them, so those parts are not drawn."
  },
  {
   "address": 15423,
   "type": "line",
   "text": "After a pose is drawn: writes $9F into $7EEE (pose_layout puts the right byte there again before each use), puts back the stretches hide_parts cleared and sets $FD9F and $FDA0 to 0."
  },
  {
   "address": 15504,
   "type": "line",
   "text": "hide_parts' and restore_parts' copy: with $FD9F set saves the pose's bytes from Y up to A into $0350 and clears them, otherwise copies them back."
  },
  {
   "address": 15539,
   "type": "line",
   "text": "For each of the 12 rows of a pose's layout, the slot that row's first tile starts in (read with $3CDF)."
  },
  {
   "address": 15551,
   "type": "line",
   "text": "Sets of eight byte offsets inside a sprite (three bytes to a line), patched into the LDY operands of the tile copy at $3DE2 so that a tile's eight bytes land on eight lines of one sprite column."
  },
  {
   "address": 15552,
   "type": "line",
   "text": "tile_byte_offsets read one on, for the second LDY operand of the tile copy."
  },
  {
   "address": 15553,
   "type": "line",
   "text": "tile_byte_offsets read two on, for the third LDY operand."
  },
  {
   "address": 15554,
   "type": "line",
   "text": "tile_byte_offsets read three on, for the fourth LDY operand."
  },
  {
   "address": 15555,
   "type": "line",
   "text": "tile_byte_offsets read four on, for the fifth LDY operand."
  },
  {
   "address": 15556,
   "type": "line",
   "text": "tile_byte_offsets read five on, for the sixth LDY operand."
  },
  {
   "address": 15557,
   "type": "line",
   "text": "tile_byte_offsets read six on, for the seventh LDY operand."
  },
  {
   "address": 15558,
   "type": "line",
   "text": "tile_byte_offsets read seven on, for the eighth LDY operand."
  },
  {
   "address": 15583,
   "type": "line",
   "text": "Which set of offsets in $3CBF each slot uses."
  },
  {
   "address": 15591,
   "type": "line",
   "text": "Address offsets of the sprite columns a tile can go to, two bytes each."
  },
  {
   "address": 15592,
   "type": "line",
   "text": "High bytes of tile_columns."
  },
  {
   "address": 15609,
   "type": "line",
   "text": "Address offsets of the rows of tiles, two bytes each."
  },
  {
   "address": 15610,
   "type": "line",
   "text": "High bytes of tile_rows."
  },
  {
   "address": 15633,
   "type": "line",
   "text": "The page of sprite memory each sprite fighter is built in, by fighter and buffer: $58, $5C (buffer 1) and $60, $64."
  },
  {
   "address": 15635,
   "type": "line",
   "text": "sprite_pages read two on: the second buffer's pair."
  },
  {
   "address": 15637,
   "type": "line",
   "text": "Builds sprite fighter $68's pose into sprite memory, reached through $0870. Reads the pose's layout ($401D: twelve rows, each a tile count and a starting column) and its tile count ($7DA0), marks a fallen pose ($3B5F), hides parts ($3C3B), then copies each 8-byte tile from the pose's graphics (pointer at $7D00) into its place in the six sprites: facing right as they are, facing left with the columns reversed and every byte mirrored through the table at $0400 ($3E4D). The copy is unrolled, with its LDY operands patched for each slot."
  },
  {
   "address": 15845,
   "type": "line",
   "text": "Operand of LDY #$00 at $3DE4 in draw_sprite_fighter's tile copy: where the tile's first byte goes in the sprite, from tile_byte_offsets."
  },
  {
   "address": 15853,
   "type": "line",
   "text": "Operand of the second LDY: where the tile's second byte goes."
  },
  {
   "address": 15861,
   "type": "line",
   "text": "Operand of the third LDY: where the third byte goes."
  },
  {
   "address": 15869,
   "type": "line",
   "text": "Operand of the fourth LDY: where the fourth byte goes."
  },
  {
   "address": 15877,
   "type": "line",
   "text": "Operand of the fifth LDY: where the fifth byte goes."
  },
  {
   "address": 15885,
   "type": "line",
   "text": "Operand of the sixth LDY: where the sixth byte goes."
  },
  {
   "address": 15893,
   "type": "line",
   "text": "Operand of the seventh LDY: where the seventh byte goes."
  },
  {
   "address": 15901,
   "type": "line",
   "text": "Operand of the eighth LDY: where the eighth byte goes. Then the next tile, the next row, and restore_parts at the end."
  },
  {
   "address": 15949,
   "type": "line",
   "text": "The left-facing half of draw_sprite_fighter: columns counted from the other side and each byte mirrored through $0400."
  },
  {
   "address": 16065,
   "type": "line",
   "text": "Operand of LDY #$00 at $3EC0 in draw_mirrored's tile copy, which mirrors each byte through $0400: where the tile's first byte goes."
  },
  {
   "address": 16077,
   "type": "line",
   "text": "Operand of draw_mirrored's second LDY: where the second byte goes."
  },
  {
   "address": 16089,
   "type": "line",
   "text": "Operand of draw_mirrored's third LDY."
  },
  {
   "address": 16101,
   "type": "line",
   "text": "Operand of draw_mirrored's fourth LDY."
  },
  {
   "address": 16113,
   "type": "line",
   "text": "Operand of draw_mirrored's fifth LDY."
  },
  {
   "address": 16125,
   "type": "line",
   "text": "Operand of draw_mirrored's sixth LDY."
  },
  {
   "address": 16137,
   "type": "line",
   "text": "Operand of draw_mirrored's seventh LDY."
  },
  {
   "address": 16149,
   "type": "line",
   "text": "Operand of draw_mirrored's eighth LDY. Then the next tile, the next row, and restore_parts at the end."
  },
  {
   "address": 16201,
   "type": "line",
   "text": "Puts the third fighter, drawn in the floor's characters, on the screen (reached through $0864): reads its layout ($401D), mirrored when it faces left, and writes consecutive character codes from $0177 into the floor rows of the current screen from its X ($6E/4 less 4), with any last row stored at $01C5-$01C7 written from $F0 on. In the pause it draws itself three times, $38 apart."
  },
  {
   "address": 16413,
   "type": "line",
   "text": "Points $50 at fighter X's pose layout, 12 bytes at $7E00 + 12 x pose, and writes the byte at $010B (left there by the loader's last stage) plus $64 into $7EEE: with the genuine loader that is $06, the byte the pose table needs."
  },
  {
   "address": 16450,
   "type": "line",
   "text": "Builds the third fighter's pose as characters, reached through $085E: copies each tile's 8 bytes into the floor character set from $0177 x 8 + $5000, through the colour table at $0700 when it faces right or the mirrored one at $0600 when it faces left, so that sprite colours come out the same in multicolour characters."
  },
  {
   "address": 16803,
   "type": "line",
   "text": "Per tile count, how far back the left-facing copy starts ($00-$80 in steps of 8)."
  },
  {
   "address": 16821,
   "type": "line",
   "text": "Builds the four lookup tables at $0400-$07FF, once at start-up ($41CF, $421D, $4243)."
  },
  {
   "address": 16831,
   "type": "line",
   "text": "First pixel pair's place in the mirrored byte: $00, $40, $80, $C0."
  },
  {
   "address": 16835,
   "type": "line",
   "text": "Second pixel pair: $00, $10, $20, $30."
  },
  {
   "address": 16839,
   "type": "line",
   "text": "Third pixel pair: $00, $04, $08, $0C."
  },
  {
   "address": 16843,
   "type": "line",
   "text": "Fourth pixel pair: $00, $01, $02, $03."
  },
  {
   "address": 16847,
   "type": "line",
   "text": "Builds the mirror table at $0400: each byte with its four multicolour pixel pairs in reverse order. Before the loop it pushes $C3 and $BF, so its RTS goes to $C3C0, an RTS byte inside the shout samples, which then returns to the caller."
  },
  {
   "address": 16850,
   "type": "line",
   "text": "Operand of LDA #$C3 at $41D1: build_mirror pushes it and $BF, so its RTS goes to $C3C0, an RTS byte inside the shout samples, which returns to build_tables. build_mask writes $FF here, so a second call would return through $FFC0. Then build_mirror's loop over the 256 bytes."
  },
  {
   "address": 16921,
   "type": "line",
   "text": "The four pixel-pair masks $03, $0C, $30, $C0."
  },
  {
   "address": 16925,
   "type": "line",
   "text": "Builds the table at $0500: for each byte, the pixel pairs that are not empty set to %11. Then writes $FF into the operand at $41D2, so a second call of build_mirror would return through $FFC0. The reflections read the table: sprite_reflections ($F150) and char_fighter_reflection ($F1F9)."
  },
  {
   "address": 16959,
   "type": "line",
   "text": "The multicolour pair values with %10 and %11 exchanged: 0, 1, 3, 2."
  },
  {
   "address": 16963,
   "type": "line",
   "text": "Builds the table at $0700 (each byte with pixel values %10 and %11 exchanged, from $423F), and at $0600 the same mirrored through $0400."
  },
  {
   "address": 17024,
   "type": "line",
   "text": "The arena picture, a multicolour bitmap shown from character row 2 to 13 (rows 0 and 1 of the bitmap hold code, 14 on are the floor's characters and sprites): rows 2-4 here, the evening sky, the top beam of the torii gate and the crown of the blossoming tree on the right. Nothing reads it by address; the VIC shows it ($D018 $B0 at line 65)."
  },
  {
   "address": 17984,
   "type": "line",
   "text": "The arena picture's rows 5-7: the gate's lower beam and plaque, the hills of both shores and the top of the setting sun."
  },
  {
   "address": 18944,
   "type": "line",
   "text": "The arena picture's rows 8-10: the sun on the horizon and its reflection in the bay, the far shore and the tree's trunk."
  },
  {
   "address": 19904,
   "type": "line",
   "text": "The arena picture's rows 11-13: the near shore, the gate's posts and the edge of the grey ground. Its last 384 bytes, $5000-$517F, are also characters $00-$2F of the floor's character set at $5000; no floor routine traced puts those codes on the screen."
  },
  {
   "address": 20864,
   "type": "line",
   "text": "The floor's multicolour characters $30-$55, loaded with the game: $30 and $31 blank ($31 is the empty floor), $32-$4D the judge's figure (laid out by judge_shape at $33DC, which leaves $33, $4A and $4B out; those three are blank), and from $4E the cells of his face."
  },
  {
   "address": 20928,
   "type": "line",
   "text": "Character $38, a cell of the judge's figure that judge_foot rewrites from $0D98 so he taps his foot; the characters after it are the rest of the figure ($39-$4D) and the face cells $4E-$55 that judge_talk shows in turn."
  },
  {
   "address": 26624,
   "type": "line",
   "text": "The character set of the top two text rows (the scores, LV and TIME; $D018 $BA at the top of the frame): digits 0-9 ($00-$09), '+' ($0B), the round dots of the points ($0C, $0D), '?' ($0F), letters A-Z ($11-$2A), '-' ($2C), '/' ($2D), '(c)' ($2E), the player's 2 by 2 fist icon ($32-$35) and five shapes from $39 whose use was not traced. Loaded with the game; the code at $69F0 sits in the place of character $3E."
  },
  {
   "address": 27120,
   "type": "line",
   "text": "Called by bonus_add_score: clears $0112 so the points count, then add_score."
  },
  {
   "address": 27184,
   "type": "line",
   "text": "The floor's second screen: rows 14-24 of the screen at $6800, shown below line 161 when buffer_d018 ($16CD) gives $A4; the floor's two screens take turns. clear_floor_rows ($285A) blanks the rows with $31 at every reset (game_reset through $0894), so what the image holds here, blanks and a third fighter in characters $8F-$B1 left from when the image was saved, is never shown. The game draws the bubble, the judge, the table frame and the third fighter into the rows."
  },
  {
   "address": 27624,
   "type": "line",
   "text": "Sixteen bytes between the end of the screen at $6800 and its sprite pointers. Nothing reads them."
  },
  {
   "address": 27640,
   "type": "line",
   "text": "The sprite pointers the video chip reads while the screen at $6800 is shown, written by the floor's interrupts ($0ACE, $0AE2)."
  },
  {
   "address": 28208,
   "type": "line",
   "text": "The floor's first screen: rows 14-24 of the screen at $6C00, shown below line 161 when buffer_d018 gives $B4. Blanked like the second at every reset; the game draws the bubble, the judge, the table frame and the third fighter into the rows."
  },
  {
   "address": 28648,
   "type": "line",
   "text": "The sixteen bytes after the screen at $6C00's 1,000, before its sprite pointers at $6FF8. Nothing reads them."
  },
  {
   "address": 28664,
   "type": "line",
   "text": "The sprite pointers the video chip reads while the screen at $6C00 is shown: the top rows, the arena picture and the floor on alternate steps. Written by the interrupts and the antics module ($7277-$72EF)."
  },
  {
   "address": 28672,
   "type": "line",
   "text": "The 49 glyphs of the 5-row font, five bytes each, in ASCII order from '0' (print_letter reads $7000+5*(A-$30)); build_font turns them into floor characters $BA-$EA each time the high-score table is shown."
  },
  {
   "address": 28928,
   "type": "line",
   "text": "Sprite shape $C4: the bonus round's shield seen edge on, held on one side (shield_shape gives it to moves 4-6)."
  },
  {
   "address": 28992,
   "type": "line",
   "text": "Sprite shape $C5: the shield edge on, held on the other side (moves 0-2)."
  },
  {
   "address": 29056,
   "type": "line",
   "text": "Sprite shape $C6: the shield face on, a round disc, while the player turns (move 3)."
  },
  {
   "address": 29120,
   "type": "line",
   "text": "Entry table of the antics module, three JMPs. $71C0 resets it (called once from the start-up at $100E), $71C3 sets the arena's eight sprites each frame (from the frame NMI at $0CD0) and $71C6 animates the reflection and the creatures (from the frame NMI at $0CCD, every other frame)."
  },
  {
   "address": 29123,
   "type": "line",
   "text": "JMP to antics_sprites ($7241), called every frame by the frame NMI."
  },
  {
   "address": 29126,
   "type": "line",
   "text": "JMP to antics_step ($7571), called every other frame by the frame NMI."
  },
  {
   "address": 29129,
   "type": "line",
   "text": "Clears the module's counters ($BE84-$BE86), sets the 21 rows of the reflection to their starting phases ($722B), clears the creature's state, position and colour, puts the fifth glint at offset $1E ($BEAE), then clears the six sprite shapes the module draws in ($5800, $5840, $5FC0, $6000, $6040, $6080) and fills the reflection's shape at $67C0 with $FF."
  },
  {
   "address": 29202,
   "type": "line",
   "text": "Starting phase (0-31) of each of the reflection's 21 rows, copied into $BEA0 every third byte by $722B, last row first."
  },
  {
   "address": 29223,
   "type": "line",
   "text": "Four bytes of $1F after the starting phases. No instruction reads them."
  },
  {
   "address": 29227,
   "type": "line",
   "text": "Copies the 21 starting phases at $7212 into the row records at $BEA0 (three bytes a row) and gives every row the speed $1F."
  },
  {
   "address": 29249,
   "type": "line",
   "text": "Sets the arena's eight sprites for the top of the frame; the fighters' multiplexer takes them over below line 161. Sprites 1-5 are the glints on the water (shapes $81, $82, $7F, $80 and $61, light blue, Y $80 or $7D); sprites 6 and 7 are the sun's reflection (shape $9F, yellow and purple until the raster interrupts recolour them, sprite 7 twice as wide). Sprite 0 is the creature: X from $BE92 and $BE93, Y from $BE88, colour from $BE90, shape $60 ($5800). Sprites 2, 6 and 7 go behind the picture ($D01B $C4), and sprite 0 too when $BE94 is 1."
  },
  {
   "address": 29427,
   "type": "line",
   "text": "One cycle of a wave, 32 steps from 0 to 11 and back: a row's phase picks how far its slice of the reflection is shifted into the tables at $7352 and $745A."
  },
  {
   "address": 29459,
   "type": "line",
   "text": "Where each of the reflection's 21 rows starts in the tables at $7352 and $745A, twelve bytes a row (0, $0C, ... $F0), repeated three times so that the row number times three indexes it."
  },
  {
   "address": 29522,
   "type": "line",
   "text": "The left byte of each row of the reflection's sprite, for every row and wave offset: 21 rows of twelve widths, row base from $7313 plus the wave from $72F3. Its last twelve bytes, $744E-$7459, are past the largest index ($FB) and are not read."
  },
  {
   "address": 29786,
   "type": "line",
   "text": "The right byte of each row of the reflection's sprite, laid out like the table at $7352."
  },
  {
   "address": 30038,
   "type": "line",
   "text": "A random number for the creatures. The operand of LDA $7571 at $7559 is stepped each call, so it reads a different byte of the program each time, mixed with the frame counter $44, the counters $BE85, $45, $46 and $BE86, the raster line and the count of creatures started ($BE9B)."
  },
  {
   "address": 30042,
   "type": "line",
   "text": "Low byte of the address antics_random reads; stepped by one at each call."
  },
  {
   "address": 30065,
   "type": "line",
   "text": "Every other frame: steps the reflection's frame counter $BE85, moves the glints ($75A5), then for each of the 21 rows of the reflection adds the row's speed to its phase and writes the row's two bytes of the shape at $67C0 from the tables at $7352 and $745A (so the reflection ripples), then the slow drift of the speeds ($7649) and the creatures ($767E)."
  },
  {
   "address": 30117,
   "type": "line",
   "text": "The glints: five points of light on the water, one each at the offsets $BEA2, $BEA5, $BEA8, $BEAB (in the shapes at $6040 and $5FBF, which run on into $6080 and $6000) and $BEAE (in $5840). Each byte is made from two bytes of the reflection's shape, so a glint flickers with the ripples. When one goes dark it moves to a new place picked from the frame counter $44 and a row's phase."
  },
  {
   "address": 30265,
   "type": "line",
   "text": "Four sets of four steps added to the rows' phases once every 256 calls by $7649. Which set is used is the operand at $7665, which the key combination checked at $1855 steps through 0, 4, 8 and $0C."
  },
  {
   "address": 30281,
   "type": "line",
   "text": "Once every 256 calls (when $BE85 comes round to 0): steps $BE86 and puts it divided by 16 in $BE84, then nudges the 21 rows' phases by the set of four steps at $7639 picked by the operand at $7665, so the ripple pattern changes."
  },
  {
   "address": 30309,
   "type": "line",
   "text": "Operand of ADC #$00: which of the four sets of steps at $7639 the drift uses (0, 4, 8 or $0C). Stepped by the key combination at $1855."
  },
  {
   "address": 30334,
   "type": "line",
   "text": "The background creatures. Steps the counter $BE8B and runs the creature in $BE87: 1 the bird ($77C8), 2 the spider ($7881), 3 the worm ($794E), 4 the fish ($79EC). With none on screen it starts one only on two calls in every 256, and then only when antics_random returns less than $80: a random route 0-31 gives the creature (route divided by 8, through $7718) and, through $7720, $7740 and $7760, where it starts and its colour. The worm takes its routes in turn, from $BE97."
  },
  {
   "address": 30488,
   "type": "line",
   "text": "The creature for each quarter of the 32 routes: 1 bird, 2 spider, 3 worm, 4 fish."
  },
  {
   "address": 30492,
   "type": "line",
   "text": "The sprite priority each kind starts with ($BE94): all four start in front of the picture."
  },
  {
   "address": 30496,
   "type": "line",
   "text": "Starting X of each of the 32 routes, halved (the sprite's X is twice it). Routes 0-7 are the bird's, 8-15 the spider's, 16-23 the worm's, 24-31 the fish's."
  },
  {
   "address": 30528,
   "type": "line",
   "text": "Starting sprite Y of each route."
  },
  {
   "address": 30560,
   "type": "line",
   "text": "Colour of the creature on each route: the birds black or white, the spiders black, white or yellow, the worms black, the fish grey, black or light blue."
  },
  {
   "address": 30592,
   "type": "line",
   "text": "For each of the bird's eight routes: 1 flies left, 0 right."
  },
  {
   "address": 30600,
   "type": "line",
   "text": "For each bird route, how many rows below the first a second bird flies in the same sprite; 0 for a single bird."
  },
  {
   "address": 30608,
   "type": "line",
   "text": "The X (halved) at which each bird route ends and the sprite is cleared."
  },
  {
   "address": 30616,
   "type": "line",
   "text": "X positions (halved) at which the bird goes behind the picture on each route; $77A8 and $77B8 hold two more, and 0 means none."
  },
  {
   "address": 30624,
   "type": "line",
   "text": "X positions (halved) at which the bird comes back in front of the picture on each route; $77B0 and $77C0 hold two more."
  },
  {
   "address": 30632,
   "type": "line",
   "text": "Second set of X positions (halved) at which the bird goes behind the picture, by route; 0 for none."
  },
  {
   "address": 30640,
   "type": "line",
   "text": "Second set of X positions at which the bird comes back in front."
  },
  {
   "address": 30648,
   "type": "line",
   "text": "Third set of X positions at which the bird goes behind the picture."
  },
  {
   "address": 30656,
   "type": "line",
   "text": "Third set of X positions at which the bird comes back in front."
  },
  {
   "address": 30664,
   "type": "line",
   "text": "Every other call: one step of the bird. Moves X one (left or right by $7780), clears the sprite and ends at the route's end ($7790), and switches the sprite behind or in front of the picture at the positions in $7798-$77C7. Then draws the bird's wings from the four frames at $7871, picked by the X position, so they beat as it flies; a second bird is drawn the same way $BE8A rows lower."
  },
  {
   "address": 30833,
   "type": "line",
   "text": "The bird's four frames, four rows of one byte each: wings up, level, down, level."
  },
  {
   "address": 30834,
   "type": "line",
   "text": "bird_frames read one on: each frame's second row."
  },
  {
   "address": 30835,
   "type": "line",
   "text": "bird_frames read two on: each frame's third row."
  },
  {
   "address": 30836,
   "type": "line",
   "text": "bird_frames read three on: each frame's fourth row."
  },
  {
   "address": 30849,
   "type": "line",
   "text": "Every other call: one step of the spider. It lowers itself on its thread a row at a time ($BE8A up to $13), then climbs back up and ends at 0. In the first quarter of every 256 frames ($44 under $40) it stops, and turns round whenever the phase of the reflection's row at $BED3 is under $0F. Each step draws seven rows of one of its two frames ($7901, legs in and out) at the row from $7921; the thread is what the top row leaves behind, and the two blank rows at the bottom wipe the spider's last place as it climbs."
  },
  {
   "address": 30977,
   "type": "line",
   "text": "The spider's two frames, sixteen bytes apart: five rows of the spider (its top row a pixel of the thread) and blank rows below."
  },
  {
   "address": 30978,
   "type": "line",
   "text": "spider_frames read 1 on: row 2 of the spider's frame, drawn 1 sprite rows below the first."
  },
  {
   "address": 30979,
   "type": "line",
   "text": "spider_frames read 2 on: row 3 of the spider's frame, drawn 2 sprite rows below the first."
  },
  {
   "address": 30980,
   "type": "line",
   "text": "spider_frames read 3 on: row 4 of the spider's frame, drawn 3 sprite rows below the first."
  },
  {
   "address": 30981,
   "type": "line",
   "text": "spider_frames read 4 on: row 5 of the spider's frame, drawn 4 sprite rows below the first."
  },
  {
   "address": 30982,
   "type": "line",
   "text": "spider_frames read 5 on: row 6 of the spider's frame, drawn 5 sprite rows below the first."
  },
  {
   "address": 30983,
   "type": "line",
   "text": "spider_frames read 6 on: row 7 of the spider's frame, drawn 6 sprite rows below the first."
  },
  {
   "address": 31009,
   "type": "line",
   "text": "For each step of the spider's descent, the byte offset of its top row in the sprite (three bytes a row): 0 for the first seven steps, then one row lower each step."
  },
  {
   "address": 31030,
   "type": "line",
   "text": "For each step, how far into the frame the drawing starts: 6 down to 0 in the first seven steps, so the spider slides into view from the top of its sprite."
  },
  {
   "address": 31051,
   "type": "line",
   "text": "Three zero bytes after the spider's tables. No instruction reads them."
  },
  {
   "address": 31054,
   "type": "line",
   "text": "Every other call: the worm. Its body goes through six frames ($79C0, $BE91 0-5), rising into an arch and stretching forward, and after the sixth it moves on one and a half X steps ($BE89 plus the half in $BE95). When it reaches its route's end ($79B8) it draws the blank seventh frame and ends. The frames go into rows 17-20 of the sprite at $5833."
  },
  {
   "address": 31160,
   "type": "line",
   "text": "The X (halved) at which each of the worm's eight routes ends."
  },
  {
   "address": 31168,
   "type": "line",
   "text": "The worm's seven frames, four rows of one byte: lying flat, rising to an arch, stretching forward, and a blank frame to clear it."
  },
  {
   "address": 31169,
   "type": "line",
   "text": "worm_frames read 1 on: row 2 of each worm frame."
  },
  {
   "address": 31170,
   "type": "line",
   "text": "worm_frames read 2 on: row 3 of each worm frame."
  },
  {
   "address": 31171,
   "type": "line",
   "text": "worm_frames read 3 on: row 4 of each worm frame."
  },
  {
   "address": 31196,
   "type": "line",
   "text": "For each of the fish's eight routes, the colour it changes to at its ninth frame, when it has gone back in and the splash rises."
  },
  {
   "address": 31204,
   "type": "line",
   "text": "For each fish route, whether the fish may leap a second time: when it is not 0, and the raster line is even when the leap ends, the fish leaps again from the same place."
  },
  {
   "address": 31212,
   "type": "line",
   "text": "Every other call: the fish. It leaps out of the water and back in over sixteen frames ($BE8A): at the seventh frame the sprite moves four X steps left, at the ninth it takes the splash colour from $79DC. Each frame copies fourteen rows of two bytes from the tables at $7B06. After the sixteenth frame it may leap again ($BE9A, $79E4); otherwise the sprite is cleared and it ends."
  },
  {
   "address": 31494,
   "type": "line",
   "text": "The fish's sixteen frames, fourteen rows of two bytes, stored row by row: 32 bytes for each row, two for each frame. Frames 0-6 are the fish rising, arching and diving back in; 7-15 the splash, a spray of drops spreading and falling. A fifteenth row of 32 zero bytes follows that fish_step never reads."
  },
  {
   "address": 31495,
   "type": "line",
   "text": "Row 0 of the fish's frames, right bytes."
  },
  {
   "address": 31526,
   "type": "line",
   "text": "Row 1 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31527,
   "type": "line",
   "text": "Row 1 of the fish's frames, right bytes."
  },
  {
   "address": 31558,
   "type": "line",
   "text": "Row 2 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31559,
   "type": "line",
   "text": "Row 2 of the fish's frames, right bytes."
  },
  {
   "address": 31590,
   "type": "line",
   "text": "Row 3 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31591,
   "type": "line",
   "text": "Row 3 of the fish's frames, right bytes."
  },
  {
   "address": 31622,
   "type": "line",
   "text": "Row 4 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31623,
   "type": "line",
   "text": "Row 4 of the fish's frames, right bytes."
  },
  {
   "address": 31654,
   "type": "line",
   "text": "Row 5 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31655,
   "type": "line",
   "text": "Row 5 of the fish's frames, right bytes."
  },
  {
   "address": 31686,
   "type": "line",
   "text": "Row 6 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31687,
   "type": "line",
   "text": "Row 6 of the fish's frames, right bytes."
  },
  {
   "address": 31718,
   "type": "line",
   "text": "Row 7 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31719,
   "type": "line",
   "text": "Row 7 of the fish's frames, right bytes."
  },
  {
   "address": 31750,
   "type": "line",
   "text": "Row 8 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31751,
   "type": "line",
   "text": "Row 8 of the fish's frames, right bytes."
  },
  {
   "address": 31782,
   "type": "line",
   "text": "Row 9 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31783,
   "type": "line",
   "text": "Row 9 of the fish's frames, right bytes."
  },
  {
   "address": 31814,
   "type": "line",
   "text": "Row 10 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31815,
   "type": "line",
   "text": "Row 10 of the fish's frames, right bytes."
  },
  {
   "address": 31846,
   "type": "line",
   "text": "Row 11 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31847,
   "type": "line",
   "text": "Row 11 of the fish's frames, right bytes."
  },
  {
   "address": 31878,
   "type": "line",
   "text": "Row 12 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31879,
   "type": "line",
   "text": "Row 12 of the fish's frames, right bytes."
  },
  {
   "address": 31910,
   "type": "line",
   "text": "Row 13 of the fish's sixteen frames, left bytes (two bytes a frame, frame times two indexes it)."
  },
  {
   "address": 31911,
   "type": "line",
   "text": "Row 13 of the fish's frames, right bytes."
  },
  {
   "address": 31942,
   "type": "line",
   "text": "A fifteenth row of the fish's frames, 32 zero bytes: fish_step copies rows 0-13 only (its last loads are $7CA6,Y and $7CA7,Y, Y at most $1E), so nothing reads it."
  },
  {
   "address": 31943,
   "type": "line",
   "text": "Row 14 of the fish's frames, right bytes."
  },
  {
   "address": 31974,
   "type": "line",
   "text": "26 zero bytes after the fish's frames, up to the fighters' pose table at $7D00. No instruction reads them."
  },
  {
   "address": 32000,
   "type": "line",
   "text": "The address of each pose's graphics, low and high bytes, for the 76 poses: $8280 for pose 0 up to $BE80; poses $46-$4B have none and point at $BE80. Eight zero bytes follow."
  },
  {
   "address": 32001,
   "type": "line",
   "text": "pose_gfx_ptrs read one on: the high bytes."
  },
  {
   "address": 32160,
   "type": "line",
   "text": "Each pose's number of 8-byte tiles, 15 to 43 (0 for poses $46-$4B), then zeros to $7DFF."
  },
  {
   "address": 32256,
   "type": "line",
   "text": "Each pose's layout, twelve bytes, one for each row of tiles: the count of tiles and the column the row starts in. In this image $7E0A-$7EFF are still encrypted: decrypt_once XORs them with $1008-$10FD at the first reset, during the start-up, and pose_layout puts the right byte into $7EEE before each use."
  },
  {
   "address": 32335,
   "type": "line",
   "text": "Not a field: the base of STA $7E4F,Y at $3C42 in restore_parts, run with Y = $9F so that it writes $9F into $7EEE."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The pose layouts go on from $8000 (twelve bytes a pose, from part-way through pose $2A's to the last, pose $4B's, ending at $818F); then 48 zero bytes."
  },
  {
   "address": 33216,
   "type": "line",
   "text": "For each pose, two bytes: the sixteen sprite blocks it occupies, which clear_old_shapes rubs out before the buffer is drawn again. Zeros follow to $827F."
  },
  {
   "address": 33217,
   "type": "line",
   "text": "pose_masks read one on: the second byte of each pose's mask."
  },
  {
   "address": 33408,
   "type": "line",
   "text": "Pose $00's graphics: 34 tiles of 8 bytes, $8280-$838F, placed by its layout at $7E00."
  },
  {
   "address": 33680,
   "type": "line",
   "text": "Pose $01's graphics: 30 tiles of 8 bytes, $8390-$847F, placed by its layout at $7E0C."
  },
  {
   "address": 33920,
   "type": "line",
   "text": "Pose $02's graphics: 27 tiles of 8 bytes, $8480-$8557, placed by its layout at $7E18."
  },
  {
   "address": 34136,
   "type": "line",
   "text": "Pose $03's graphics: 24 tiles of 8 bytes, $8558-$8617, placed by its layout at $7E24."
  },
  {
   "address": 34328,
   "type": "line",
   "text": "Pose $04's graphics: 30 tiles of 8 bytes, $8618-$8707, placed by its layout at $7E30."
  },
  {
   "address": 34568,
   "type": "line",
   "text": "Pose $05's graphics: 24 tiles of 8 bytes, $8708-$87C7, placed by its layout at $7E3C."
  },
  {
   "address": 34760,
   "type": "line",
   "text": "Pose $06's graphics: 29 tiles of 8 bytes, $87C8-$88AF, placed by its layout at $7E48."
  },
  {
   "address": 34992,
   "type": "line",
   "text": "Pose $07's graphics: 30 tiles of 8 bytes, $88B0-$899F, placed by its layout at $7E54."
  },
  {
   "address": 35232,
   "type": "line",
   "text": "Pose $08's graphics: 25 tiles of 8 bytes, $89A0-$8A67, placed by its layout at $7E60."
  },
  {
   "address": 35432,
   "type": "line",
   "text": "Pose $09's graphics: 24 tiles of 8 bytes, $8A68-$8B27, placed by its layout at $7E6C."
  },
  {
   "address": 35624,
   "type": "line",
   "text": "Pose $0A's graphics: 20 tiles of 8 bytes, $8B28-$8BC7, placed by its layout at $7E78."
  },
  {
   "address": 35784,
   "type": "line",
   "text": "Pose $0B's graphics: 23 tiles of 8 bytes, $8BC8-$8C7F, placed by its layout at $7E84."
  },
  {
   "address": 35968,
   "type": "line",
   "text": "Pose $0C's graphics: 27 tiles of 8 bytes, $8C80-$8D57, placed by its layout at $7E90."
  },
  {
   "address": 36184,
   "type": "line",
   "text": "Pose $0D's graphics: 24 tiles of 8 bytes, $8D58-$8E17, placed by its layout at $7E9C."
  },
  {
   "address": 36376,
   "type": "line",
   "text": "Pose $0E's graphics: 34 tiles of 8 bytes, $8E18-$8F27, placed by its layout at $7EA8."
  },
  {
   "address": 36648,
   "type": "line",
   "text": "Pose $0F's graphics: 26 tiles of 8 bytes, $8F28-$8FF7, placed by its layout at $7EB4."
  },
  {
   "address": 36856,
   "type": "line",
   "text": "Pose $10's graphics: 35 tiles of 8 bytes, $8FF8-$910F, placed by its layout at $7EC0."
  },
  {
   "address": 37136,
   "type": "line",
   "text": "Pose $11's graphics: 18 tiles of 8 bytes, $9110-$919F, placed by its layout at $7ECC."
  },
  {
   "address": 37280,
   "type": "line",
   "text": "Pose $12's graphics: 25 tiles of 8 bytes, $91A0-$9267, placed by its layout at $7ED8."
  },
  {
   "address": 37480,
   "type": "line",
   "text": "Pose $13's graphics: 32 tiles of 8 bytes, $9268-$9367, placed by its layout at $7EE4."
  },
  {
   "address": 37736,
   "type": "line",
   "text": "Pose $14's graphics: 32 tiles of 8 bytes, $9368-$9467, placed by its layout at $7EF0."
  },
  {
   "address": 37992,
   "type": "line",
   "text": "Pose $15's graphics: 27 tiles of 8 bytes, $9468-$953F, placed by its layout at $7EFC."
  },
  {
   "address": 38208,
   "type": "line",
   "text": "Pose $16's graphics: 26 tiles of 8 bytes, $9540-$960F, placed by its layout at $7F08."
  },
  {
   "address": 38416,
   "type": "line",
   "text": "Pose $17's graphics: 23 tiles of 8 bytes, $9610-$96C7, placed by its layout at $7F14."
  },
  {
   "address": 38600,
   "type": "line",
   "text": "Pose $18's graphics: 36 tiles of 8 bytes, $96C8-$97E7, placed by its layout at $7F20."
  },
  {
   "address": 38888,
   "type": "line",
   "text": "Pose $19's graphics: 33 tiles of 8 bytes, $97E8-$98EF, placed by its layout at $7F2C."
  },
  {
   "address": 39152,
   "type": "line",
   "text": "Pose $1A's graphics: 30 tiles of 8 bytes, $98F0-$99DF, placed by its layout at $7F38."
  },
  {
   "address": 39392,
   "type": "line",
   "text": "Pose $1B's graphics: 28 tiles of 8 bytes, $99E0-$9ABF, placed by its layout at $7F44."
  },
  {
   "address": 39616,
   "type": "line",
   "text": "Pose $1C's graphics: 21 tiles of 8 bytes, $9AC0-$9B67, placed by its layout at $7F50."
  },
  {
   "address": 39784,
   "type": "line",
   "text": "Pose $1D's graphics: 20 tiles of 8 bytes, $9B68-$9C07, placed by its layout at $7F5C."
  },
  {
   "address": 39944,
   "type": "line",
   "text": "Pose $1E's graphics: 24 tiles of 8 bytes, $9C08-$9CC7, placed by its layout at $7F68."
  },
  {
   "address": 40136,
   "type": "line",
   "text": "Pose $1F's graphics: 29 tiles of 8 bytes, $9CC8-$9DAF, placed by its layout at $7F74."
  },
  {
   "address": 40368,
   "type": "line",
   "text": "Pose $20's graphics: 23 tiles of 8 bytes, $9DB0-$9E67, placed by its layout at $7F80."
  },
  {
   "address": 40552,
   "type": "line",
   "text": "Pose $21's graphics: 21 tiles of 8 bytes, $9E68-$9F0F, placed by its layout at $7F8C."
  },
  {
   "address": 40720,
   "type": "line",
   "text": "Pose $22's graphics: 22 tiles of 8 bytes, $9F10-$9FBF, placed by its layout at $7F98."
  },
  {
   "address": 40896,
   "type": "line",
   "text": "Pose $23's graphics: 35 tiles of 8 bytes, $9FC0-$A0D7, placed by its layout at $7FA4."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The rest of pose $23's graphics, from $A000 to $A0D7 (it starts at $9FC0)."
  },
  {
   "address": 41176,
   "type": "line",
   "text": "Pose $24's graphics: 27 tiles of 8 bytes, $A0D8-$A1AF, placed by its layout at $7FB0."
  },
  {
   "address": 41392,
   "type": "line",
   "text": "Pose $25's graphics: 26 tiles of 8 bytes, $A1B0-$A27F, placed by its layout at $7FBC."
  },
  {
   "address": 41600,
   "type": "line",
   "text": "Pose $26's graphics: 26 tiles of 8 bytes, $A280-$A34F, placed by its layout at $7FC8."
  },
  {
   "address": 41808,
   "type": "line",
   "text": "Pose $27's graphics: 33 tiles of 8 bytes, $A350-$A457, placed by its layout at $7FD4."
  },
  {
   "address": 42072,
   "type": "line",
   "text": "Pose $28's graphics: 35 tiles of 8 bytes, $A458-$A56F, placed by its layout at $7FE0."
  },
  {
   "address": 42352,
   "type": "line",
   "text": "Pose $29's graphics: 34 tiles of 8 bytes, $A570-$A67F, placed by its layout at $7FEC."
  },
  {
   "address": 42624,
   "type": "line",
   "text": "Pose $2A's graphics: 42 tiles of 8 bytes, $A680-$A7CF, placed by its layout at $7FF8."
  },
  {
   "address": 42960,
   "type": "line",
   "text": "Pose $2B's graphics: 25 tiles of 8 bytes, $A7D0-$A897, placed by its layout at $8004."
  },
  {
   "address": 43160,
   "type": "line",
   "text": "Pose $2C's graphics: 30 tiles of 8 bytes, $A898-$A987, placed by its layout at $8010."
  },
  {
   "address": 43400,
   "type": "line",
   "text": "Pose $2D's graphics: 25 tiles of 8 bytes, $A988-$AA4F, placed by its layout at $801C."
  },
  {
   "address": 43600,
   "type": "line",
   "text": "Pose $2E's graphics: 23 tiles of 8 bytes, $AA50-$AB07, placed by its layout at $8028."
  },
  {
   "address": 43784,
   "type": "line",
   "text": "Pose $2F's graphics: 24 tiles of 8 bytes, $AB08-$ABC7, placed by its layout at $8034."
  },
  {
   "address": 43976,
   "type": "line",
   "text": "Pose $30's graphics: 15 tiles of 8 bytes, $ABC8-$AC3F, placed by its layout at $8040."
  },
  {
   "address": 44096,
   "type": "line",
   "text": "Pose $31's graphics: 16 tiles of 8 bytes, $AC40-$ACBF, placed by its layout at $804C."
  },
  {
   "address": 44224,
   "type": "line",
   "text": "Pose $32's graphics: 33 tiles of 8 bytes, $ACC0-$ADC7, placed by its layout at $8058."
  },
  {
   "address": 44488,
   "type": "line",
   "text": "Pose $33's graphics: 32 tiles of 8 bytes, $ADC8-$AEC7, placed by its layout at $8064."
  },
  {
   "address": 44744,
   "type": "line",
   "text": "Pose $34's graphics: 25 tiles of 8 bytes, $AEC8-$AF8F, placed by its layout at $8070."
  },
  {
   "address": 44944,
   "type": "line",
   "text": "Pose $35's graphics: 18 tiles of 8 bytes, $AF90-$B01F, placed by its layout at $807C."
  },
  {
   "address": 45088,
   "type": "line",
   "text": "Pose $36's graphics: 24 tiles of 8 bytes, $B020-$B0DF, placed by its layout at $8088."
  },
  {
   "address": 45280,
   "type": "line",
   "text": "Pose $37's graphics: 22 tiles of 8 bytes, $B0E0-$B18F, placed by its layout at $8094."
  },
  {
   "address": 45456,
   "type": "line",
   "text": "Pose $38's graphics: 21 tiles of 8 bytes, $B190-$B237, placed by its layout at $80A0."
  },
  {
   "address": 45624,
   "type": "line",
   "text": "Pose $39's graphics: 18 tiles of 8 bytes, $B238-$B2C7, placed by its layout at $80AC."
  },
  {
   "address": 45768,
   "type": "line",
   "text": "Pose $3A's graphics: 32 tiles of 8 bytes, $B2C8-$B3C7, placed by its layout at $80B8."
  },
  {
   "address": 46024,
   "type": "line",
   "text": "Pose $3B's graphics: 25 tiles of 8 bytes, $B3C8-$B48F, placed by its layout at $80C4."
  },
  {
   "address": 46224,
   "type": "line",
   "text": "Pose $3C's graphics: 32 tiles of 8 bytes, $B490-$B58F, placed by its layout at $80D0."
  },
  {
   "address": 46480,
   "type": "line",
   "text": "Pose $3D's graphics: 28 tiles of 8 bytes, $B590-$B66F, placed by its layout at $80DC."
  },
  {
   "address": 46704,
   "type": "line",
   "text": "Pose $3E's graphics: 29 tiles of 8 bytes, $B670-$B757, placed by its layout at $80E8."
  },
  {
   "address": 46936,
   "type": "line",
   "text": "Pose $3F's graphics: 43 tiles of 8 bytes, $B758-$B8AF, placed by its layout at $80F4."
  },
  {
   "address": 47280,
   "type": "line",
   "text": "Pose $40's graphics: 34 tiles of 8 bytes, $B8B0-$B9BF, placed by its layout at $8100."
  },
  {
   "address": 47552,
   "type": "line",
   "text": "Pose $41's graphics: 27 tiles of 8 bytes, $B9C0-$BA97, placed by its layout at $810C."
  },
  {
   "address": 47768,
   "type": "line",
   "text": "Pose $42's graphics: 35 tiles of 8 bytes, $BA98-$BBAF, placed by its layout at $8118."
  },
  {
   "address": 48048,
   "type": "line",
   "text": "Pose $43's graphics: 28 tiles of 8 bytes, $BBB0-$BC8F, placed by its layout at $8124."
  },
  {
   "address": 48272,
   "type": "line",
   "text": "Pose $44's graphics: 33 tiles of 8 bytes, $BC90-$BD97, placed by its layout at $8130."
  },
  {
   "address": 48536,
   "type": "line",
   "text": "Pose $45's graphics: 29 tiles of 8 bytes, $BD98-$BE7F, placed by its layout at $813C."
  },
  {
   "address": 48768,
   "type": "line",
   "text": "The untouched high-score table's initials, 30 places of three letters in ASCII with bit 7 set: WHY NOT TRY PRE SSI NGT HEA STE RIS KKE YOR THE SAN DEK EYS TOG ETH ERA NDO THE RS then MAD for the rest. game_init adds $0A to each (the 5-row font's codes) into $FE2F, $FE4E and $FE6D, then clears $BE80-$BEFF, which the antics module uses for its variables from then on."
  },
  {
   "address": 48769,
   "type": "line",
   "text": "The second initial of each place, read as $BE81,X by game_init."
  },
  {
   "address": 48770,
   "type": "line",
   "text": "The third initial of each place, read as $BE82,X."
  },
  {
   "address": 48772,
   "type": "line",
   "text": "$BE86 divided by 16, set by $7649. Nothing reads it by its address."
  },
  {
   "address": 48773,
   "type": "line",
   "text": "The antics module's step counter, one a call (every other frame). When it comes round to 0 the reflection drifts ($7649)."
  },
  {
   "address": 48774,
   "type": "line",
   "text": "Counts the times $BE85 comes round; part of antics_random's mix."
  },
  {
   "address": 48775,
   "type": "line",
   "text": "The creature on screen: 0 none, 1 bird, 2 spider, 3 worm, 4 fish."
  },
  {
   "address": 48776,
   "type": "line",
   "text": "The creature's sprite Y."
  },
  {
   "address": 48777,
   "type": "line",
   "text": "The creature's X, halved."
  },
  {
   "address": 48778,
   "type": "line",
   "text": "The creature's frame or step: the spider's depth, the fish's frame, the bird's second-bird offset."
  },
  {
   "address": 48779,
   "type": "line",
   "text": "Counts the creature routine's calls; its low bit makes each creature move every other call, and a new one can start only when it is 0 or 2."
  },
  {
   "address": 48783,
   "type": "line",
   "text": "1 while the spider climbs back up its thread."
  },
  {
   "address": 48784,
   "type": "line",
   "text": "The creature's sprite colour."
  },
  {
   "address": 48785,
   "type": "line",
   "text": "The worm's frame, 0-5."
  },
  {
   "address": 48786,
   "type": "line",
   "text": "The creature's sprite X, low byte."
  },
  {
   "address": 48787,
   "type": "line",
   "text": "The creature's sprite X, bit 8 (into $D010)."
  },
  {
   "address": 48788,
   "type": "line",
   "text": "1 puts the creature behind the picture (the bird, at the places in $7798-$77C7)."
  },
  {
   "address": 48789,
   "type": "line",
   "text": "The half step of the worm's X, $00 or $80."
  },
  {
   "address": 48791,
   "type": "line",
   "text": "The next of the worm's eight routes, taken in turn."
  },
  {
   "address": 48792,
   "type": "line",
   "text": "The route the creature is on, 0-7 within its kind."
  },
  {
   "address": 48793,
   "type": "line",
   "text": "The random route picked, 0-31."
  },
  {
   "address": 48794,
   "type": "line",
   "text": "How many more leaps the fish may make; set to 1 when it starts."
  },
  {
   "address": 48795,
   "type": "line",
   "text": "Counts the creatures started; part of antics_random's mix."
  },
  {
   "address": 48800,
   "type": "line",
   "text": "The reflection's 21 rows, three bytes each: the phase (0-31), the speed added to it each step, and, for the first five rows, the place of a glint ($BEA2, $BEA5, $BEA8, $BEAB, $BEAE)."
  },
  {
   "address": 48801,
   "type": "line",
   "text": "The speed of each reflection row (three bytes a row, read as $BEA1,Y)."
  },
  {
   "address": 48802,
   "type": "line",
   "text": "The first glint's place in the shapes at $6040 and $5FBF."
  },
  {
   "address": 48803,
   "type": "line",
   "text": "The second reflection row's phase, which places the second glint."
  },
  {
   "address": 48805,
   "type": "line",
   "text": "The second glint's place."
  },
  {
   "address": 48806,
   "type": "line",
   "text": "The third reflection row's phase, which places the third glint."
  },
  {
   "address": 48808,
   "type": "line",
   "text": "The third glint's place."
  },
  {
   "address": 48809,
   "type": "line",
   "text": "The fourth reflection row's phase, which places the fourth glint."
  },
  {
   "address": 48811,
   "type": "line",
   "text": "The fourth glint's place."
  },
  {
   "address": 48814,
   "type": "line",
   "text": "The fifth glint's place, in the shape at $5840."
  },
  {
   "address": 48815,
   "type": "line",
   "text": "The sixth reflection row's phase (three bytes a row from $BEA0), mixed into the fifth glint's new place when it moves ($762B)."
  },
  {
   "address": 48818,
   "type": "line",
   "text": "The seventh reflection row's phase, added into the fifth glint's new place when it moves ($762E)."
  },
  {
   "address": 48851,
   "type": "line",
   "text": "The phase of reflection row 17, which decides when the spider turns."
  },
  {
   "address": 48896,
   "type": "line",
   "text": "The six digitised shouts, 4-bit samples two to a byte, played through the SID's volume by the CIA 1 timer interrupt: shouts 0-2 in the high nibbles ($BF00-$C5FF, $C600-$CBFF, $CC00-$CDFF), shouts 3-5 in the low nibbles ($BF00-$C4FF, $C500-$CAFF, $CB00-$CFFF). Here the start of shouts 0 and 3."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Shouts 0 (high nibbles) and 3 (low nibbles) go on. The address $C000 is also the placeholder in effects_play's LDA $C000,Y at $EE88, whose operand is patched with the script's address before use."
  },
  {
   "address": 50112,
   "type": "line",
   "text": "A sample byte that is also an RTS ($60): build_mirror pushes $C3BF and returns through it."
  },
  {
   "address": 50113,
   "type": "line",
   "text": "Shouts 0 and 3 go on; shout 3 ends at $C4FF."
  },
  {
   "address": 50432,
   "type": "line",
   "text": "The last page of shout 0 (high nibbles) and the start of shout 4 (low nibbles)."
  },
  {
   "address": 50688,
   "type": "line",
   "text": "Shout 1 (high nibbles) from its start, with shout 4 (low nibbles)."
  },
  {
   "address": 51712,
   "type": "line",
   "text": "Shouts 1 and 4 go on; shout 4 ends at $CAFF."
  },
  {
   "address": 51968,
   "type": "line",
   "text": "The last page of shout 1 and the start of shout 5 (low nibbles)."
  },
  {
   "address": 52224,
   "type": "line",
   "text": "Shout 2 (high nibbles) from its start, with shout 5."
  },
  {
   "address": 52383,
   "type": "line",
   "text": "A sample byte that is also an RTS ($60): bonus_round ends with JMP $CC9F to return."
  },
  {
   "address": 52384,
   "type": "line",
   "text": "Shouts 2 and 5 go on; shout 2 ends at $CDFF."
  },
  {
   "address": 52736,
   "type": "line",
   "text": "The end of shout 5 in the low nibbles; the high nibbles here belong to no shout."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "Vibrato position of each voice (three bytes, voice 1 first): counts up to the voice's width ($E003) and back down, one step a frame."
  },
  {
   "address": 57347,
   "type": "line",
   "text": "Vibrato width of each voice, from bits 3-6 of its instrument's vibrato byte ($E97A)."
  },
  {
   "address": 57350,
   "type": "line",
   "text": "Vibrato direction of each voice: bit 7 set while the position counts down."
  },
  {
   "address": 57353,
   "type": "line",
   "text": "Entry: starts the tune from its beginning, called by game_reset the first time it runs ($FD50 = $81) and by F5 when the music is turned back on. JMP $EE31."
  },
  {
   "address": 57356,
   "type": "line",
   "text": "Entry: silences the tune (F5). JMP $EE3C."
  },
  {
   "address": 57359,
   "type": "line",
   "text": "Entry, called once a frame by the frame NMI: one frame of the tune. State $E699: $40 puts every voice back at the start of its track and clears the per-voice counters (the state becomes $09, playing, from the next frame); $C0 clears the three voices' waveforms and stops ($80). Otherwise it counts the tempo ($E694 from $E695, nudged by $E696) and for each voice, 3 down to 1: on a tick whose note has run out it reads the next note from the voice's pattern ($E09A), otherwise it keeps the note sounding with its vibrato, pulse sweep, slide and instrument effects ($E1C9). The voices' registers are built in the copy at $E5E3; the effect player at $EE45 writes them to the SID."
  },
  {
   "address": 57498,
   "type": "line",
   "text": "Reads the voice's track ($E540 its place): an entry of $80 or more sets the transposition ($E8B4) and $FF goes back to the track's start; any other entry is a pattern number, whose address comes from $EA6B and $EA93. Then the pattern byte ($E543 its place): the low five bits are the note's length in ticks less one, bit 5 keeps the gate on into the next note, bit 6 makes a rest (no note byte follows). With bit 7 an extra byte follows: an instrument number, or, with its own bit 7 set, a slide (that byte and a step). Then the note: bits 0-6 the note number plus the transposition, looked up in the frequency table at $E47A; bit 7 set leaves the instrument's envelope and pulse alone (a slurred note). A pattern ends with $FF and the track moves on."
  },
  {
   "address": 57653,
   "type": "line",
   "text": "A rest: the gate mask ($E5E0) drops the gate, the voice's attack-decay and sustain-release are cleared and its waveform set to the test bit ($08), which silences the oscillator."
  },
  {
   "address": 57672,
   "type": "line",
   "text": "Loads the voice's instrument (eight bytes from $E975 and eight from $E9ED, instrument times 8): waveform, attack-decay, sustain-release and pulse width into the register copy, and the counts for the instrument's first frames ($E9F0 into $E7FC)."
  },
  {
   "address": 57781,
   "type": "line",
   "text": "On the last tick of a note that is not tied (bit 5 of its pattern byte), sets the gate mask to $FE so the note is released before the next starts."
  },
  {
   "address": 57801,
   "type": "line",
   "text": "Each frame, the voice's instrument effects. The vibrato byte ($E97A) gives the width (bits 3-6, $E003) and the depth (bits 0-2, how far the step between this note and the one below is halved, $E68C): after the note's fourth frame ($E81C) and with no slide running, the frequency swings by that step times the position $E000. Then the pulse sweep, the slide, and the flags in the instrument's last byte ($E758, below)."
  },
  {
   "address": 57995,
   "type": "line",
   "text": "The pulse-width sweep: with a speed ($E97B, in $E68D) the voice's pulse width ($E78E low, $E7E4 high) climbs by the speed until its high nibble reaches the instrument's upper limit (high nibble of $E9F2, patched into $E2BB), then falls to the lower limit (low nibble, $E2D5), and so on ($E691 the direction)."
  },
  {
   "address": 58043,
   "type": "line",
   "text": "Operand of CMP #$0E: the high byte at which the pulse sweep turns down, the high nibble of the instrument's $E9F2 byte."
  },
  {
   "address": 58069,
   "type": "line",
   "text": "Operand of CMP #$08: the high byte at which the pulse sweep turns up, the low nibble of the instrument's $E9F2 byte."
  },
  {
   "address": 58092,
   "type": "line",
   "text": "A slide set by the pattern ($E71E, $E6FE): a flag of $BF or more slides the frequency down by the step each frame, a smaller one slides it up. The flag's low six bits are the step's high byte, patched into the SBC at $E307 or the ADC at $E321."
  },
  {
   "address": 58120,
   "type": "line",
   "text": "Operand of SBC #$00: the high byte of the downward slide's step, the low six bits of the flag $E71E."
  },
  {
   "address": 58146,
   "type": "line",
   "text": "Operand of ADC #$00: the high byte of the upward slide's step."
  },
  {
   "address": 58150,
   "type": "line",
   "text": "The instrument's effect flags ($E758, its eighth byte). Bit 3: a drum, played from the frame table its $E9ED and $E9EE bytes point at (each entry a waveform and a fixed frequency high byte, or a waveform below $80 and a two-byte drop in frequency; $85 holds the last). Bit 2: the waveform in $E9EE for the note's first frames ($E7FC counts them), then its own. Bit 4: an arpeggio, the note and two more from the chord in $E8F8 picked by $E9ED, one a frame. Bit 5: a filter sweep, the cutoff $E869 rising by $E9F4 each frame with resonance and routing $E9F3. Bit 6: the note number in $E9ED for the first frames, then the real note. Bit 7: noise bursts on voice 3 through the band-pass filter (frequency high byte $48, waveform $81, cutoff $60, $D418 $24) when voice 3's frame count is 1, which recurs every six frames because the count is cleared at 6; on the other frames $D418 goes back to $14."
  },
  {
   "address": 58444,
   "type": "line",
   "text": "Writes the voice's waveform (masked by $E5E0), frequency high and low into the register copy at $E5E3 plus the voice's offset, counts the note's frames ($E81C) and goes on to the next voice; after voice 1 it steps the arpeggio counter ($E86F, 2, 1, 0) and runs the effect player ($EE45)."
  },
  {
   "address": 58488,
   "type": "line",
   "text": "The frequency table is read from here two bytes early ($E478,Y with Y the note times 2) to get the note below, the step the vibrato swings by."
  },
  {
   "address": 58489,
   "type": "line",
   "text": "High byte of JMP $EE45 at $E477, also read as $E479,Y at $E232: the frequency table's high bytes two places early, the note below's."
  },
  {
   "address": 58490,
   "type": "line",
   "text": "The frequency of each of the 96 notes, eight octaves from C, as low and high bytes for the SID (PAL): $0116 for the lowest C, $FD2E for the highest B. Two zero bytes follow."
  },
  {
   "address": 58491,
   "type": "line",
   "text": "freq_table read one on ($E47B,Y): the high bytes of the notes' frequencies."
  },
  {
   "address": 58684,
   "type": "line",
   "text": "Where each voice's registers start in the SID and in the copy at $E5E3: 0, 7, 14."
  },
  {
   "address": 58687,
   "type": "line",
   "text": "The register offset of the voice being played."
  },
  {
   "address": 58688,
   "type": "line",
   "text": "Each voice's place in its track."
  },
  {
   "address": 58691,
   "type": "line",
   "text": "Each voice's place in its pattern."
  },
  {
   "address": 58694,
   "type": "line",
   "text": "Ticks left of each voice's note."
  },
  {
   "address": 58697,
   "type": "line",
   "text": "Each voice's last pattern byte (bit 5 tie, bit 6 rest)."
  },
  {
   "address": 58700,
   "type": "line",
   "text": "Pattern $12 of the tune: 32 notes, 1 rest, 256 ticks (instrument 4), played 6 times by the track of voice 1."
  },
  {
   "address": 58767,
   "type": "line",
   "text": "Each voice's waveform byte, gate included."
  },
  {
   "address": 58770,
   "type": "line",
   "text": "Each voice's note number, transposition added."
  },
  {
   "address": 58773,
   "type": "line",
   "text": "Pattern $08 of the tune: 16 notes, 64 ticks, played once by the track of voice 1."
  },
  {
   "address": 58806,
   "type": "line",
   "text": "Each voice's instrument number; 9 after a restart."
  },
  {
   "address": 58809,
   "type": "line",
   "text": "Pattern $09 of the tune: 19 notes, 64 ticks, played once by the track of voice 1."
  },
  {
   "address": 58848,
   "type": "line",
   "text": "Each voice's gate mask, ANDed with the waveform: $FF, or $FE to release the note."
  },
  {
   "address": 58851,
   "type": "line",
   "text": "The SID's registers $D400-$D415 as the tune builds them each frame: three voices of seven bytes and the filter cutoff. The effect player copies voices 1 and 2 to the SID when no effect is playing on voice 1, and voice 3 and the cutoff every frame."
  },
  {
   "address": 58852,
   "type": "line",
   "text": "The register copy's frequency high bytes, one per voice, seven bytes apart."
  },
  {
   "address": 58853,
   "type": "line",
   "text": "The copy's pulse width low bytes."
  },
  {
   "address": 58854,
   "type": "line",
   "text": "The copy's pulse width high bytes."
  },
  {
   "address": 58855,
   "type": "line",
   "text": "The copy's control registers: waveform and gate."
  },
  {
   "address": 58856,
   "type": "line",
   "text": "The copy's attack and decay."
  },
  {
   "address": 58857,
   "type": "line",
   "text": "The copy's sustain and release; voice 2's seven registers follow."
  },
  {
   "address": 58865,
   "type": "line",
   "text": "Voice 3's registers in the copy, from its frequency; the effect player copies them and the cutoff to the SID every frame."
  },
  {
   "address": 58866,
   "type": "line",
   "text": "Voice 3's frequency high byte in the copy, set on its own by the noise bursts at $E438."
  },
  {
   "address": 58869,
   "type": "line",
   "text": "Voice 3's control register in the copy, set by the noise bursts at $E43D."
  },
  {
   "address": 58872,
   "type": "line",
   "text": "The copy of $D415, the cutoff's low bits; next_note also uses it to hold the pattern byte it is reading."
  },
  {
   "address": 58873,
   "type": "line",
   "text": "Unused byte of the register copy ($D416's place), 0."
  },
  {
   "address": 58874,
   "type": "line",
   "text": "The voice being played, while X is used for something else."
  },
  {
   "address": 58875,
   "type": "line",
   "text": "The instrument's waveform, carried from note_instrument to the store at $E19B."
  },
  {
   "address": 58876,
   "type": "line",
   "text": "Pattern $0A of the tune: 22 notes, 64 ticks, played once by the track of voice 1."
  },
  {
   "address": 58921,
   "type": "line",
   "text": "Pattern $0B of the tune: 11 notes, 32 ticks, played 4 times by the track of voice 1."
  },
  {
   "address": 58944,
   "type": "line",
   "text": "Pattern $0C of the tune: 11 notes, 32 ticks (instrument 5), played 4 times by the track of voice 1."
  },
  {
   "address": 58968,
   "type": "line",
   "text": "Pattern $0D of the tune: 11 notes, 32 ticks, played 2 times by the track of voice 1."
  },
  {
   "address": 58991,
   "type": "line",
   "text": "Pattern $0E of the tune: 14 notes, 32 ticks, played 3 times by the track of voice 1."
  },
  {
   "address": 59020,
   "type": "line",
   "text": "The vibrato depth of the voice being played (bits 0-2 of its instrument's vibrato byte)."
  },
  {
   "address": 59021,
   "type": "line",
   "text": "The pulse sweep speed of the voice being played (its instrument's $E97B)."
  },
  {
   "address": 59022,
   "type": "line",
   "text": "Three bytes cleared at each new note and never read."
  },
  {
   "address": 59025,
   "type": "line",
   "text": "Each voice's pulse sweep direction: 0 rising, 1 falling."
  },
  {
   "address": 59028,
   "type": "line",
   "text": "Counts the frames of a tick down from $E695."
  },
  {
   "address": 59029,
   "type": "line",
   "text": "Frames per tick less one: 2, so a tick is three frames."
  },
  {
   "address": 59030,
   "type": "line",
   "text": "Counts frames down from $70; once in each count the tempo counter is not stepped, which stretches the tempo by a frame."
  },
  {
   "address": 59031,
   "type": "line",
   "text": "The number of voices less one: 2."
  },
  {
   "address": 59032,
   "type": "line",
   "text": "The instrument of the voice being played, times eight."
  },
  {
   "address": 59033,
   "type": "line",
   "text": "$40 to start the tune, $C0 to stop it, $80 stopped; $09 while playing (bits 6 and 7 clear)."
  },
  {
   "address": 59034,
   "type": "line",
   "text": "Each voice's frequency, high byte."
  },
  {
   "address": 59037,
   "type": "line",
   "text": "Each voice's frequency, low byte."
  },
  {
   "address": 59040,
   "type": "line",
   "text": "Pattern $1B of the tune: 34 notes, 8 rests, 256 ticks (instrument 11; 8 slides), played 4 times by the track of voice 1."
  },
  {
   "address": 59134,
   "type": "line",
   "text": "Each voice's slide step, low byte."
  },
  {
   "address": 59137,
   "type": "line",
   "text": "Pattern $1C of the tune: 12 notes, 2 rests, 64 ticks (1 slide), played 4 times by the track of voice 1."
  },
  {
   "address": 59166,
   "type": "line",
   "text": "Each voice's slide: 0 none; from the pattern, $BF or more down, less up, its low six bits the step's high byte."
  },
  {
   "address": 59169,
   "type": "line",
   "text": "Pattern $1D of the tune: 22 notes, 2 rests, 128 ticks (4 slides), played 2 times by the track of voice 1."
  },
  {
   "address": 59224,
   "type": "line",
   "text": "The effect flags of the voice's instrument (its byte at $E97C), tested by note_flags."
  },
  {
   "address": 59225,
   "type": "line",
   "text": "Unused byte between the flags and the note byte, 0."
  },
  {
   "address": 59226,
   "type": "line",
   "text": "The note byte just read from the pattern (bit 7 a slurred note)."
  },
  {
   "address": 59227,
   "type": "line",
   "text": "Pattern $13 of the tune: 5 notes, 5 rests, 32 ticks (instruments 2, 6), played 49 times by the track of voice 2."
  },
  {
   "address": 59247,
   "type": "line",
   "text": "Unused, 0: pattern $13 ends with the $FF before it, pattern $14 starts after it, and no instruction names it."
  },
  {
   "address": 59248,
   "type": "line",
   "text": "Pattern $14 of the tune: 9 notes, 4 rests, 32 ticks (instruments 2, 3, 6), played 15 times by the track of voice 2."
  },
  {
   "address": 59278,
   "type": "line",
   "text": "Each voice's pulse width, low byte, as the sweep moves it."
  },
  {
   "address": 59281,
   "type": "line",
   "text": "Pattern $15 of the tune: 20 notes, 64 ticks (instrument 10), played 4 times by the track of voice 1."
  },
  {
   "address": 59323,
   "type": "line",
   "text": "Pattern $1A of the tune: 20 notes, 64 ticks, played 6 times by the track of voice 1."
  },
  {
   "address": 59364,
   "type": "line",
   "text": "Each voice's pulse width, high nibble."
  },
  {
   "address": 59367,
   "type": "line",
   "text": "Pattern $16 of the tune: 7 notes, 5 rests, 32 ticks (instrument 0), played 8 times by the track of voice 2."
  },
  {
   "address": 59388,
   "type": "line",
   "text": "Each voice's count of first frames for the instrument effects of bits 2 and 6 ($E9F0)."
  },
  {
   "address": 59391,
   "type": "line",
   "text": "Pattern $17 of the tune: 9 notes, 5 rests, 32 ticks (instruments 0, 2), played 4 times by the track of voice 2."
  },
  {
   "address": 59420,
   "type": "line",
   "text": "Frames since each voice's note started; the vibrato waits for four, and voice 3's count times its noise bursts."
  },
  {
   "address": 59422,
   "type": "line",
   "text": "note_frames read for voice 3 alone: the noise bursts count it to 6 and start again."
  },
  {
   "address": 59423,
   "type": "line",
   "text": "Pattern $18 of the tune: 12 notes, 3 rests, 32 ticks (instruments 0, 2, 6), played 19 times by the track of voice 2."
  },
  {
   "address": 59460,
   "type": "line",
   "text": "Three zero bytes between two patterns that nothing reads."
  },
  {
   "address": 59463,
   "type": "line",
   "text": "Pattern $19 of the tune: 16 notes, 32 ticks (instrument 2), played 8 times by the track of voice 2."
  },
  {
   "address": 59497,
   "type": "line",
   "text": "Each voice's filter cutoff for the sweep of flag bit 5."
  },
  {
   "address": 59500,
   "type": "line",
   "text": "Each voice's place in its instrument's drum table (flag bit 3)."
  },
  {
   "address": 59503,
   "type": "line",
   "text": "The arpeggio step, 2, 1, 0, one a frame, shared by the voices."
  },
  {
   "address": 59504,
   "type": "line",
   "text": "Pattern $1E of the tune: 9 notes, 2 rests, 64 ticks (instrument 4), played 5 times by the tracks of voice 1 and voice 3."
  },
  {
   "address": 59526,
   "type": "line",
   "text": "Pattern $1F of the tune: 13 notes, 1 rest, 128 ticks (instruments 12, 13), played once by the track of voice 1."
  },
  {
   "address": 59556,
   "type": "line",
   "text": "Pattern $20 of the tune: 7 notes, 128 ticks (instrument 12), played once by the track of voice 2."
  },
  {
   "address": 59572,
   "type": "line",
   "text": "Each voice's transposition in semitones, set by its track."
  },
  {
   "address": 59575,
   "type": "line",
   "text": "Pattern $21 of the tune: 13 notes, 1 rest, 128 ticks (instruments 12, 13), played once by the track of voice 1."
  },
  {
   "address": 59605,
   "type": "line",
   "text": "Pattern $22 of the tune: 7 notes, 128 ticks (instrument 12), played once by the track of voice 2."
  },
  {
   "address": 59621,
   "type": "line",
   "text": "The current arpeggio: 0 and the chord's two other notes, in semitones."
  },
  {
   "address": 59622,
   "type": "line",
   "text": "The current arpeggio's second note, in semitones."
  },
  {
   "address": 59623,
   "type": "line",
   "text": "The current arpeggio's third note."
  },
  {
   "address": 59624,
   "type": "line",
   "text": "Pattern $23 of the tune: 5 notes, 64 ticks (instrument 1; 2 slides), played 4 times by the tracks of voice 1 and voice 2 and voice 3."
  },
  {
   "address": 59640,
   "type": "line",
   "text": "Four arpeggio chords, two semitone offsets each (with the note itself): +19 +24, +7 +12, +4 +9, +5 +8."
  },
  {
   "address": 59641,
   "type": "line",
   "text": "arp_chords read one on: each chord's second offset."
  },
  {
   "address": 59648,
   "type": "line",
   "text": "Pattern $24 of the tune: 15 notes, 32 ticks (instrument 3), played 51 times by the tracks of voice 1 and voice 2."
  },
  {
   "address": 59680,
   "type": "line",
   "text": "Pattern $25 of the tune: 4 notes, 4 rests, 32 ticks (instrument 6), played 26 times by the track of voice 2."
  },
  {
   "address": 59694,
   "type": "line",
   "text": "Drum table of instrument 2: noise at a high pitch, a triangle and a pulse dropping fast, then noise bursts without the gate, $85 to hold."
  },
  {
   "address": 59719,
   "type": "line",
   "text": "Drum table of instruments 3 and 6, the same pattern with deeper drops."
  },
  {
   "address": 59739,
   "type": "line",
   "text": "Nine zero bytes between drum tables."
  },
  {
   "address": 59748,
   "type": "line",
   "text": "Drum table of instrument 13: triangle with a frequency nudged down, down, up and up."
  },
  {
   "address": 59761,
   "type": "line",
   "text": "Four bytes after the last drum table that no instrument points at."
  },
  {
   "address": 59765,
   "type": "line",
   "text": "The tune's fifteen instruments, eight bytes each: pulse width low and high, waveform, attack-decay, sustain-release, vibrato (width in bits 3-6, depth in 0-2), pulse sweep speed, effect flags (note_flags)."
  },
  {
   "address": 59766,
   "type": "line",
   "text": "+1 of each instrument: the pulse width's high byte."
  },
  {
   "address": 59767,
   "type": "line",
   "text": "+2: the waveform."
  },
  {
   "address": 59768,
   "type": "line",
   "text": "+3: attack and decay."
  },
  {
   "address": 59769,
   "type": "line",
   "text": "+4: sustain and release."
  },
  {
   "address": 59770,
   "type": "line",
   "text": "+5: the vibrato."
  },
  {
   "address": 59771,
   "type": "line",
   "text": "+6: the pulse sweep's speed."
  },
  {
   "address": 59772,
   "type": "line",
   "text": "+7: the effect flags, into $E758 for note_flags."
  },
  {
   "address": 59885,
   "type": "line",
   "text": "Eight more bytes for each instrument. +0/+1: the drum table's address when flag bit 3 is set; +0 is otherwise the arpeggio's chord (bit 4) or the fixed note (bit 6). +2 is unused. +3: how many first frames play the waveform at +1 (bit 2). +4 is unused. +5: the pulse sweep's limits. +6: resonance and filter routing, into $D417. +7: the filter sweep's step (bit 5)."
  },
  {
   "address": 59886,
   "type": "line",
   "text": "+1 of the second record: the drum table's address, high byte (flag bit 3), or the waveform of the first frames (flag bit 2)."
  },
  {
   "address": 59888,
   "type": "line",
   "text": "+3: how many first frames (flag bit 2 their waveform, bit 6 their fixed note); +2 and +4 are unused."
  },
  {
   "address": 59890,
   "type": "line",
   "text": "+5: the pulse sweep's limits, one in each nibble."
  },
  {
   "address": 59891,
   "type": "line",
   "text": "+6: the filter's resonance and routing, into $D417 (flag bit 5)."
  },
  {
   "address": 59892,
   "type": "line",
   "text": "+7: the filter sweep's step, added to the cutoff each frame (flag bit 5)."
  },
  {
   "address": 60005,
   "type": "line",
   "text": "The three voices' track addresses, low bytes: $EABB, $EB44, $EC0E."
  },
  {
   "address": 60008,
   "type": "line",
   "text": "The track addresses, high bytes."
  },
  {
   "address": 60011,
   "type": "line",
   "text": "The 40 patterns' addresses, low bytes. The patterns sit in the gaps between the driver's variables from $E54C up and after the tracks from $ECE2."
  },
  {
   "address": 60051,
   "type": "line",
   "text": "The patterns' addresses, high bytes."
  },
  {
   "address": 60091,
   "type": "line",
   "text": "Voice 1's track, 136 entries and $FF: the tune's lead. Pattern numbers, with entries of $80 or more setting a transposition."
  },
  {
   "address": 60228,
   "type": "line",
   "text": "Voice 2's track, 201 entries and $FF: mostly the drum patterns $13, $18, $24 and $25 and the bass of $02."
  },
  {
   "address": 60430,
   "type": "line",
   "text": "Voice 3's track, 211 entries and $FF: the bass line, patterns $01, $03 and $26 under changing transpositions."
  },
  {
   "address": 60642,
   "type": "line",
   "text": "Pattern $00 of the tune: a single rest of 32 ticks ($5F, then the $FF that ends it), played 53 times by the tracks of all three voices to keep them silent."
  },
  {
   "address": 60644,
   "type": "line",
   "text": "Pattern $02 of the tune: 32 notes, 64 ticks (instruments 0, 2, 3, 6), played 32 times by the track of voice 2. It runs on into pattern $27 at $ED10, which shares its end."
  },
  {
   "address": 60688,
   "type": "line",
   "text": "Pattern $27 of the tune: 16 notes, 32 ticks (instruments 0, 2, 3, 6), played 4 times by the track of voice 2."
  },
  {
   "address": 60733,
   "type": "line",
   "text": "Pattern $01 of the tune: 15 notes, 32 ticks (instrument 1), played 53 times by the track of voice 3."
  },
  {
   "address": 60765,
   "type": "line",
   "text": "Pattern $03 of the tune: 15 notes, 32 ticks, played 63 times by the track of voice 3."
  },
  {
   "address": 60796,
   "type": "line",
   "text": "Pattern $04 of the tune: 15 notes, 32 ticks, played 8 times by the track of voice 3."
  },
  {
   "address": 60827,
   "type": "line",
   "text": "Pattern $0F of the tune: 1 note, 2 ticks (instrument 7), played 3 times by the track of voice 3."
  },
  {
   "address": 60831,
   "type": "line",
   "text": "Pattern $11 of the tune: 1 note, 2 ticks (instrument 8), played 6 times by the track of voice 3."
  },
  {
   "address": 60835,
   "type": "line",
   "text": "Pattern $26 of the tune: 30 notes, 64 ticks, played 43 times by the track of voice 3. It runs on into pattern $05 at $EDC1, $10 at $EDC3, which shares its end."
  },
  {
   "address": 60865,
   "type": "line",
   "text": "Pattern $05 of the tune: 15 notes, 32 ticks, played 9 times by the track of voice 3. It runs on into pattern $10 at $EDC3, which shares its end."
  },
  {
   "address": 60867,
   "type": "line",
   "text": "Pattern $10 of the tune: 14 notes, 30 ticks, played 9 times by the track of voice 3."
  },
  {
   "address": 60896,
   "type": "line",
   "text": "Pattern $06 of the tune: 19 notes, 1 rest, 64 ticks (instrument 4), played 4 times by the track of voice 1."
  },
  {
   "address": 60937,
   "type": "line",
   "text": "Pattern $07 of the tune: 19 notes, 1 rest, 64 ticks, played 4 times by the track of voice 1."
  },
  {
   "address": 60977,
   "type": "line",
   "text": "Starts the tune: volume register $14 (low-pass filter, volume 4) and state $40 for the next frame."
  },
  {
   "address": 60988,
   "type": "line",
   "text": "Stops the tune: state $C0, so the next frame gates the voices off."
  },
  {
   "address": 60994,
   "type": "line",
   "text": "JMP $EF88, the music module's entry for stopping one sound effect. Nothing in the game jumps here."
  },
  {
   "address": 60997,
   "type": "line",
   "text": "The sound-effect player, run after the tune every frame. Two effect channels on voices 1 and 2 ($EFC9 and $EFCA): $FF idle, $40 plus an effect number to start one ($EFDC), the number alone while it plays. Each frame a playing effect steps its script ($C000 patched to the script's address from $EFCC/$EFD4; 1 adds the frequency step, 2 subtracts it, a byte of $80 or more goes back to the start frequency, $FF to the script's start), grows the step by its acceleration, picks the waveform (alternating each frame, or a second one for a count of frames) and gates off for the second half of its length. When the length runs out the channel goes idle. Then the tune's voices 1 and 2 go to the SID if channel 1 is idle, and voice 3 and the filter always."
  },
  {
   "address": 61065,
   "type": "line",
   "text": "Low byte of LDA $C000,Y: the address of the playing effect's script, patched from $EFCC."
  },
  {
   "address": 61066,
   "type": "line",
   "text": "High byte of the script address, from $EFD4."
  },
  {
   "address": 61320,
   "type": "line",
   "text": "Stops effect channel A: marks it idle ($FF into $EFC9,X) and clears its voice's control, attack/decay and sustain/release registers (the voice from $E53C). Reached only through $EE42, which nothing calls."
  },
  {
   "address": 61341,
   "type": "line",
   "text": "The SID register offset of the effect channel being played."
  },
  {
   "address": 61342,
   "type": "line",
   "text": "Counts frames for the effects' alternating waveforms."
  },
  {
   "address": 61343,
   "type": "line",
   "text": "The effect channel being played, 0 or 1."
  },
  {
   "address": 61344,
   "type": "line",
   "text": "Each channel's frequency, low byte (two bytes, channel 1 first; the same layout for the tables up to $EFC7)."
  },
  {
   "address": 61346,
   "type": "line",
   "text": "Each channel's frequency, high byte."
  },
  {
   "address": 61348,
   "type": "line",
   "text": "Each channel's starting frequency, low byte, from the frequency table by the effect's note."
  },
  {
   "address": 61350,
   "type": "line",
   "text": "Each channel's starting frequency, high byte."
  },
  {
   "address": 61352,
   "type": "line",
   "text": "Each channel's acceleration: added to the step every script tick, low byte."
  },
  {
   "address": 61354,
   "type": "line",
   "text": "The acceleration, high byte."
  },
  {
   "address": 61356,
   "type": "line",
   "text": "Each channel's frequency step, low byte."
  },
  {
   "address": 61358,
   "type": "line",
   "text": "The frequency step, high byte."
  },
  {
   "address": 61360,
   "type": "line",
   "text": "Each channel's flags: bit 7 alternate between two waveforms by frame, bit 6 use the second waveform for a count of frames; the low nibble is the script speed."
  },
  {
   "address": 61362,
   "type": "line",
   "text": "Frames per script step, from the low nibble of the flags."
  },
  {
   "address": 61364,
   "type": "line",
   "text": "The waveform on odd frames."
  },
  {
   "address": 61366,
   "type": "line",
   "text": "The waveform for the first frames (flag bit 6)."
  },
  {
   "address": 61368,
   "type": "line",
   "text": "Each channel's place in its script."
  },
  {
   "address": 61370,
   "type": "line",
   "text": "Frames left on the second waveform."
  },
  {
   "address": 61372,
   "type": "line",
   "text": "Frames left of the effect."
  },
  {
   "address": 61374,
   "type": "line",
   "text": "The effect's main waveform."
  },
  {
   "address": 61376,
   "type": "line",
   "text": "The effect's whole length; the gate drops when less than half is left."
  },
  {
   "address": 61378,
   "type": "line",
   "text": "The waveform being played this frame."
  },
  {
   "address": 61380,
   "type": "line",
   "text": "Each channel's script number."
  },
  {
   "address": 61382,
   "type": "line",
   "text": "Counts frames down to the next script step."
  },
  {
   "address": 61384,
   "type": "line",
   "text": "The effect's offset in its tables while it is set up, then a count of bytes."
  },
  {
   "address": 61385,
   "type": "line",
   "text": "The two effect channels' commands: $FF idle, $40 plus a number to start that effect. The game start writes $42 and $43, the bonus round $42 and $43 when a ball is deflected and $40 and $41 when one bounces."
  },
  {
   "address": 61386,
   "type": "line",
   "text": "The second effect channel's command (voice 2): the start writes $43 here, the bonus round $43 or $41."
  },
  {
   "address": 61387,
   "type": "line",
   "text": "Unused byte after the commands, $FF."
  },
  {
   "address": 61388,
   "type": "line",
   "text": "The eight effect scripts' addresses, low bytes ($F07E-$F0D7)."
  },
  {
   "address": 61396,
   "type": "line",
   "text": "The scripts' addresses, high bytes, all $F0."
  },
  {
   "address": 61404,
   "type": "line",
   "text": "Starts effect A AND $1F on channel X: clears its script place and count, silences the voice, then loads the effect from the two 8-byte records at $F0E8 and $F118: the step, acceleration, flags, waveforms, script number, length and start note (its frequency from $E47A), and writes the first seven bytes of the first record straight into the voice's SID registers."
  },
  {
   "address": 61566,
   "type": "line",
   "text": "Script 0: seven steps up, three down, then back to the start ($FF). No effect uses it."
  },
  {
   "address": 61577,
   "type": "line",
   "text": "Script 1 (effects 0, 1, 2 and 4): one step up, then back to the start, so the pitch climbs steadily."
  },
  {
   "address": 61579,
   "type": "line",
   "text": "Script 2: seven steps up, four down, three up, a jump back to the start frequency, four down, four up and round again. No effect uses it; its last nine bytes are script 3."
  },
  {
   "address": 61594,
   "type": "line",
   "text": "Script 3: four down, four up and round, the tail of script 2. No effect uses it."
  },
  {
   "address": 61603,
   "type": "line",
   "text": "Script 4 (effect 5): three down, then back to the start frequency and round."
  },
  {
   "address": 61608,
   "type": "line",
   "text": "Script 5: 35 steps wobbling up and down, back to the start frequency and round. No effect uses it."
  },
  {
   "address": 61645,
   "type": "line",
   "text": "Script 6 (effect 3): eight steps down, then back to the start frequency and round."
  },
  {
   "address": 61655,
   "type": "line",
   "text": "Script 7: fifteen steps up, back to the start frequency and round, used by no effect."
  },
  {
   "address": 61672,
   "type": "line",
   "text": "The six sound effects' first records, eight bytes each: frequency step (two bytes, also written to the frequency registers at the start), pulse width, waveform, attack-decay, sustain-release, start note. Effects 0 and 1 sound together when a ball bounces in the bonus round, 2 and 3 when one is deflected and at a game's start; 4 and 5 are never started."
  },
  {
   "address": 61673,
   "type": "line",
   "text": "+1 of each effect's first record: the frequency step's high byte (and the first frequency's)."
  },
  {
   "address": 61676,
   "type": "line",
   "text": "+4: the effect's waveform."
  },
  {
   "address": 61679,
   "type": "line",
   "text": "+7: the effect's start note; +5 and +6 before it are attack-decay and sustain-release."
  },
  {
   "address": 61695,
   "type": "line",
   "text": "Effect 2's start note, rewritten by the bonus round at each deflection ($F47B) from the count of balls and the frame counter, so each deflection sounds a little higher."
  },
  {
   "address": 61720,
   "type": "line",
   "text": "The effects' second records, eight bytes each: flags (low nibble the script speed), two waveforms, script number (high nibble) with the second waveform's frames (low nibble), length, acceleration (two bytes), unused."
  },
  {
   "address": 61721,
   "type": "line",
   "text": "+1 of each second record: the waveform of odd frames."
  },
  {
   "address": 61722,
   "type": "line",
   "text": "+2: the waveform of the first frames."
  },
  {
   "address": 61723,
   "type": "line",
   "text": "+3: the script number (high nibble) and the first frames' count (low nibble)."
  },
  {
   "address": 61724,
   "type": "line",
   "text": "+4: the effect's length in frames."
  },
  {
   "address": 61725,
   "type": "line",
   "text": "+5: the acceleration, low byte."
  },
  {
   "address": 61726,
   "type": "line",
   "text": "+6: the acceleration, high byte; +7 is unused."
  },
  {
   "address": 61776,
   "type": "line",
   "text": "Draws the reflections of the two sprite fighters' feet in the floor (reached through $085B from draw_fighters). Each fighter is three sprites wide; for the lowest three of each it copies rows 3-10, upside down, into rows 11-18, each byte passed through the mask table at $0500 (every pixel that is not empty set to %11), so the reflection is a silhouette in one colour. The sprite page is patched into the sixteen LDX and STA operands below: $0176 (the buffer's shape page) plus 3, and 4 more for the second fighter ($4C counts the two)."
  },
  {
   "address": 61852,
   "type": "line",
   "text": "High byte of LDX $0309,Y: the sprite page the first row of feet is read from (patched at $F164). The $03 in the image is a placeholder; every one of the sixteen operands from here to $F1E1 is patched before the loop runs."
  },
  {
   "address": 61858,
   "type": "line",
   "text": "High byte of STA $0336,Y: the page the first reflected row is written to (patched at $F161)."
  },
  {
   "address": 61861,
   "type": "line",
   "text": "High byte of the second LDX: the sprite page of the second row read (patched at $F16A)."
  },
  {
   "address": 61867,
   "type": "line",
   "text": "High byte of the second STA: where the second reflected row goes (patched at $F167)."
  },
  {
   "address": 61870,
   "type": "line",
   "text": "High byte of the third LDX (patched at $F170)."
  },
  {
   "address": 61876,
   "type": "line",
   "text": "High byte of the third STA (patched at $F16D)."
  },
  {
   "address": 61879,
   "type": "line",
   "text": "High byte of the fourth LDX (patched at $F176)."
  },
  {
   "address": 61885,
   "type": "line",
   "text": "High byte of the fourth STA (patched at $F173)."
  },
  {
   "address": 61888,
   "type": "line",
   "text": "High byte of the fifth LDX (patched at $F17C)."
  },
  {
   "address": 61894,
   "type": "line",
   "text": "High byte of the fifth STA (patched at $F179)."
  },
  {
   "address": 61897,
   "type": "line",
   "text": "High byte of the sixth LDX (patched at $F182)."
  },
  {
   "address": 61903,
   "type": "line",
   "text": "High byte of the sixth STA (patched at $F17F)."
  },
  {
   "address": 61906,
   "type": "line",
   "text": "High byte of the seventh LDX (patched at $F188)."
  },
  {
   "address": 61912,
   "type": "line",
   "text": "High byte of the seventh STA (patched at $F185)."
  },
  {
   "address": 61915,
   "type": "line",
   "text": "High byte of the eighth LDX (patched at $F18E)."
  },
  {
   "address": 61921,
   "type": "line",
   "text": "High byte of the eighth STA (patched at $F18B)."
  },
  {
   "address": 61934,
   "type": "line",
   "text": "The nine byte columns of a fighter's three lowest sprites side by side: offsets 0, 1, 2 in the first shape, $40-$42 in the second, $80-$82 in the third."
  },
  {
   "address": 61943,
   "type": "line",
   "text": "Reached only by the BNE at $F221 when the protection check fails: PLP, then JMP ($00A9) through zero page, which sends the program into the weeds. The entry point $F1F9 starts inside this JMP: its operand bytes $A9 $00 are LDA #$00."
  },
  {
   "address": 61945,
   "type": "line",
   "text": "Entry, through $0855, called from next_step: the reflection of the third fighter, the one drawn in the floor's characters. Clears characters $F0-$F8 ($5780-$57C7). Then a protection check: with Y left at $FF, LDA $000C,Y reads $010B, a byte the loader leaves there, and LSR and EOR #$51 must give 0 ($A2 or $A3), or it jumps to $F1F7. Then, when place_char_fighter has recorded a bottom row of cells ($01C5 cells, starting at column $01C6 of the fighter's nine, first character $01C7), copies each cell's eight bytes upside down through the mask table $0500 into the character $F0 plus its column, the characters place_char_fighter puts in the row below the feet."
  },
  {
   "address": 62123,
   "type": "line",
   "text": "Mode 5, the bonus round, reached through $089D from the main loop. Draws the ball into the six ball shapes, then for each human player in turn (player 2 first, $67): flashes their fist icon, clears the seven slots, sets the launch rate ($FD90 $80, $FD91 0) and the weight of new balls ($FD9B $0C), puts the player in shield move 3 and the shield on its floor ($72), gives the third fighter's colour ($0133, kept in $FD95) the player's colour, fills the floor's colours ($084F) and turns the round on ($8F, so the frame NMI runs $F420). Then each step: reads the joystick ($F840), draws the player in the floor's characters ($0864, $085E), shows message $16 (DEFLECT BALLS FOR 100 POINTS EACH OR AVOID THEM!) once, and waits for the next step ($08A0). A player hit by a ball ($91) falls with the move in $FD94 and the step goes on until no ball is left; one who lasts until all 64 balls are thrown ($8D) and gone ($8E) gets the survival bonus: 50 hundred points ($018A, and $019B for the message's number) and message $15, SURVIVAL BONUS OF 5000 POINTS. After both, waits $78 frames, restores the third fighter's colour and the places ($F3CC), turns the round off, clears the ball shapes and returns to mode 1 through the RTS at $CC9F."
  },
  {
   "address": 62412,
   "type": "line",
   "text": "Sets all three fighters to pose $4B and X $B0, the shield's Y to $6A, clears the judge's message ($81 = $FF through $084C) and draws two steps ($087F, $0888, $08A0), then fills the floor's colours ($084F). Called at the start and the end of the bonus round."
  },
  {
   "address": 62472,
   "type": "line",
   "text": "Shows message A in the judge's bubble, waits $78 frames, then clears it."
  },
  {
   "address": 62496,
   "type": "line",
   "text": "Called by the frame NMI through $0876; does nothing unless the bonus round is on ($8F). Rubs out the balls' spots ($F7E3), then for each slot, 6 down to 0, that is in use ($E2), counting the balls in $8E: slot 6, the shield, only moves. A ball not yet deflected (flag bit 1) that touches the shield (both sprites' bits in the collision latch $01A6, $F51E) while its X is from $4A to $6F is deflected: when the shouts are on, the effects $42 and $43, effect 2's note raised by half the balls thrown and the frame counter ($F0FF), and $010E set so no bounce sound cuts it off; its flags become $13, its horizontal speed is reversed ($F61A) and the player gets 1 hundred points ($018A, through $0897). A ball touching the picture (its bit in the sprite-to-background latch $01A5, $F525) hits the player: the shield is thrown (weight $24, floor $74, up at $FFC0 and sideways by the player's facing, $F52E and $F530), the ball stops falling, and the player's fall move ($F52C, $FD94) is picked by whether the ball came from in front or behind; a ball that touches a player already down only has its vertical speed reversed. Then the ball moves ($F555), takes its colour ($F532) and redraws its reflection ($F7A5). Last, once message $16 has been shown, a new ball may be thrown ($F63E) and the spots are put back ($F7DE)."
  },
  {
   "address": 62750,
   "type": "line",
   "text": "For each ball slot, the collision bits of its sprite and the shield's (sprite 6): $41, $42, $44, $48, $50, $60, then $FF."
  },
  {
   "address": 62757,
   "type": "line",
   "text": "For each ball slot, its sprite's bit in the sprite-to-picture collision latch: 1, 2, 4, 8, $10, $20, then $FF."
  },
  {
   "address": 62764,
   "type": "line",
   "text": "The move a player hit by a ball falls with: $11 or $12, by whether the ball came from in front or behind."
  },
  {
   "address": 62766,
   "type": "line",
   "text": "The thrown shield's horizontal speed, high byte, by the player's facing: $00 or $FF, with the low bytes at $F530 making +$40 or -$40."
  },
  {
   "address": 62768,
   "type": "line",
   "text": "The thrown shield's horizontal speed, low byte: $40 or $C0."
  },
  {
   "address": 62770,
   "type": "line",
   "text": "Sets a ball's colour ($EA,X): a ball flagged $20 flashes black and white with bit 2 of its X; otherwise the slot's colour from $F54D."
  },
  {
   "address": 62795,
   "type": "line",
   "text": "The two colours of a flashing ball: black and white."
  },
  {
   "address": 62797,
   "type": "line",
   "text": "Each slot's colour: black, grey, yellow, green, light blue, white, and black for the shield."
  },
  {
   "address": 62805,
   "type": "line",
   "text": "Moves ball X: its vertical speed ($A2 low, $AA high) gains its weight ($D2) and is added to its height ($92 fraction, $9A). At its floor ($DA) it bounces: the effects $40 and $41 when the shouts are on and $010E has run out, the height reflected about the floor, the vertical speed reversed ($F608). Then by its flags ($E2): bit 4 halves the vertical speed once ($F62C) and is cleared; with bit 5 a bounce without bit 4 doubles the speed and sets it, so such a ball bounces low and high in turn. Bits 3 and 2 (halve the vertical, or the horizontal, speed at every bounce) are tested but nothing sets them. Above its floor, anything $6A or lower on the screen is cleared (only the thrown shield, whose floor is lower, gets there). Then its X moves by its horizontal speed ($CA fraction, $C2); at $AB or more, off either side, it is cleared."
  },
  {
   "address": 62984,
   "type": "line",
   "text": "Negates ball X's vertical speed ($A2/$AA)."
  },
  {
   "address": 63002,
   "type": "line",
   "text": "Negates ball X's horizontal speed ($CA/$C2)."
  },
  {
   "address": 63020,
   "type": "line",
   "text": "Halves ball X's vertical speed, keeping its sign."
  },
  {
   "address": 63029,
   "type": "line",
   "text": "Halves ball X's horizontal speed, keeping its sign."
  },
  {
   "address": 63038,
   "type": "line",
   "text": "Throws the next ball when it is time, unless the player is down ($91). The timer $FD92/$FD93 grows by the launch rate until its high byte reaches $20. Then it takes the highest free slot of 0-5 (none free: try again next frame); after 64 balls ($8C) it sets $8D instead. The ball gets the weight $FD9B (which grows by one a ball up to $38), floor $56, a starting height picked at random from $F715, flags 1, the launch rate as its speed, and starts at the left (X 4) or, reversed, at the right (X $AA). The rate grows by 8 a ball until it passes $100 plus this bonus round's limit ($F725 by $FDA1). A ball in a slot at or above this round's $F71D gets flags $31 instead: it flashes, starts $20 or $30 high, and bounces low and high in turn."
  },
  {
   "address": 63253,
   "type": "line",
   "text": "Starting heights of a new ball, picked by the frame counter and the raster line: $20, $30, $40, $20, $30, $40, $20, $20."
  },
  {
   "address": 63261,
   "type": "line",
   "text": "By bonus round ($FDA1 AND 7), the lowest slot whose balls are thrown with flags $31: 6, 6, 5, 6, 4, 6, 2, 6 (slot 6 is never thrown, so 6 means none)."
  },
  {
   "address": 63269,
   "type": "line",
   "text": "By bonus round, the low byte the launch rate stops growing at once its high byte is 1: $80, $80, $C0, $C0, $E0, $E0, $F0, $FF."
  },
  {
   "address": 63277,
   "type": "line",
   "text": "Twenty-two blank bytes, then the ball at $F743, which is the same upside down: a ball's reflection is copied from here into rows 10-20 of its sprite, starting further back the higher the ball is ($F79A)."
  },
  {
   "address": 63299,
   "type": "line",
   "text": "The ball, ten rows of two bytes (16 pixels wide), drawn into rows 0-9 of each ball sprite by $F763."
  },
  {
   "address": 63319,
   "type": "line",
   "text": "Where each ball slot's sprite shape is, low bytes: $58C0, $5900, $5940, $5980, $59C0, $5A00."
  },
  {
   "address": 63325,
   "type": "line",
   "text": "The ball shapes' addresses, high bytes."
  },
  {
   "address": 63331,
   "type": "line",
   "text": "Draws the ball from $F743 into the top ten rows of each of the six ball shapes."
  },
  {
   "address": 63373,
   "type": "line",
   "text": "Clears the ball shapes, $58C0-$59BF and $59C0-$5ABF."
  },
  {
   "address": 63386,
   "type": "line",
   "text": "For a ball 0 to 10 pixels above its floor, where in $F72D its reflection starts: $16 at the floor and four less (two rows) for each pixel up, so as the ball's sprite rises one row the reflection moves two rows down inside it, one row down on the screen, as in a mirror; from 6 pixels up it starts at 0, all blank."
  },
  {
   "address": 63397,
   "type": "line",
   "text": "Redraws the reflection in rows 10-20 of ball $90's shape when the ball is in use and less than eleven pixels above its floor ($DA less $9A); $F7B6 is the entry that blanks it, used when a ball is thrown."
  },
  {
   "address": 63414,
   "type": "line",
   "text": "Entry of ball_reflection_draw with A = $0A: draws the blank rows from $F72D, so a thrown ball starts with no reflection."
  },
  {
   "address": 63454,
   "type": "line",
   "text": "Draws each ball's spot at the place its X gives ($F810), so the balls seem to roll. $F7E3 is the entry that rubs the spots out (A = 0 takes the plain bytes from $F830)."
  },
  {
   "address": 63459,
   "type": "line",
   "text": "Entry of ball_spots_on with A = 0: puts the plain bytes from $F830 back, rubbing each ball's spot out before it moves."
  },
  {
   "address": 63504,
   "type": "line",
   "text": "Byte offsets round the ball's outline for each of 16 steps of its X: the spot travels round."
  },
  {
   "address": 63520,
   "type": "line",
   "text": "The ball's bytes with the spot in them, by step."
  },
  {
   "address": 63536,
   "type": "line",
   "text": "The ball's plain bytes at the same places, by step."
  },
  {
   "address": 63552,
   "type": "line",
   "text": "Reads the bonus player's joystick ($DC00 for player 1, $DC01 for player 2, by $67), turns it into a direction code ($F8A3) and, with the current shield move ($0134), a new move ($F8B3; 128 and up means turn round, keeping the height). Then sets from the move the shield's X ($FD98), Y ($FD97) and sprite shape ($FD99), and the player's facing ($71), pose ($6B) and X ($6E)."
  },
  {
   "address": 63651,
   "type": "line",
   "text": "The joystick's four direction bits (active low) turned into a code 0-8: 3 at rest, 7 up, 8 down, 1 and 5 the two sides, 0, 2, 4 and 6 the diagonals."
  },
  {
   "address": 63667,
   "type": "line",
   "text": "For each of the seven shield moves, nine bytes: the next move for each direction code. 0-2 and 4-6 are the high, middle and low guards facing each way, 3 the turn; $80 and $82 turn round."
  },
  {
   "address": 63730,
   "type": "line",
   "text": "The shield's sprite shape for each move: $C5 for a high or low guard, $C6 turning, $C4 for the other side."
  },
  {
   "address": 63737,
   "type": "line",
   "text": "The shield's X for each move."
  },
  {
   "address": 63744,
   "type": "line",
   "text": "The player's X for each move: $48 facing one way, $54 the other."
  },
  {
   "address": 63751,
   "type": "line",
   "text": "The shield's Y for each move: high $20, middle $35, low $4A."
  },
  {
   "address": 63758,
   "type": "line",
   "text": "The player's facing for each move."
  },
  {
   "address": 63765,
   "type": "line",
   "text": "The player's pose for each move."
  },
  {
   "address": 63772,
   "type": "line",
   "text": "Four zero bytes; arena_colours reads from $F91F with Y from 1, so its table starts at $F920."
  },
  {
   "address": 63775,
   "type": "line",
   "text": "arena_colours reads $F91F,Y with Y from $F0 down to 1, so its first table starts at $F920."
  },
  {
   "address": 63776,
   "type": "line",
   "text": "The arena picture's screen-matrix colours (the two colours of each 4 by 8 cell) for rows 2 to 7, copied to $6C50 on by arena_colours ($31CC)."
  },
  {
   "address": 64015,
   "type": "line",
   "text": "The base of the second screen-colour copy, $FA0F,Y with Y from $F0 down to 1."
  },
  {
   "address": 64016,
   "type": "line",
   "text": "The screen-matrix colours for rows 8 to 13, copied to $6D40 on."
  },
  {
   "address": 64256,
   "type": "line",
   "text": "32 bytes between the two halves of the colours that arena_colours does not copy."
  },
  {
   "address": 64287,
   "type": "line",
   "text": "The base of the first colour-RAM copy, $FB1F,Y with Y from $F0 down to 1."
  },
  {
   "address": 64288,
   "type": "line",
   "text": "The arena picture's colour-RAM colours (the third colour of each cell) for rows 2 to 7, copied to $D850 on."
  },
  {
   "address": 64527,
   "type": "line",
   "text": "The base of the second colour-RAM copy, $FC0F,Y with Y from $F0 down to 1."
  },
  {
   "address": 64528,
   "type": "line",
   "text": "The colour-RAM colours for rows 8 to 13, copied to $D940 on."
  },
  {
   "address": 64768,
   "type": "line",
   "text": "32 zero bytes, the end of file c."
  },
  {
   "address": 64848,
   "type": "line",
   "text": "Music: $81 at start-up to start the tune at the first reset, then 1 on and 0 off (F5)."
  },
  {
   "address": 64849,
   "type": "line",
   "text": "The digitised shouts and the bonus round's bounce and deflection sounds ($F45F): non-zero on (F7 toggles)."
  },
  {
   "address": 64850,
   "type": "line",
   "text": "1 on PAL, 0 on NTSC, copied from the KERNAL's $02A6 at start-up. Picks the frame timer's period, the shouts' sample rate and the step length, and on NTSC makes the frame NMI skip every sixth music frame ($FDB2)."
  },
  {
   "address": 64851,
   "type": "line",
   "text": "Which of the four sets of reflection colours is in use ('*' steps it)."
  },
  {
   "address": 64852,
   "type": "line",
   "text": "Sprite 7's colour in the upper half of the sun's reflection (from $178B)."
  },
  {
   "address": 64853,
   "type": "line",
   "text": "Sprite 6's colour in the upper half (from $178F)."
  },
  {
   "address": 64854,
   "type": "line",
   "text": "Sprite 7's colour in the lower half (from $1793)."
  },
  {
   "address": 64855,
   "type": "line",
   "text": "Sprite 6's colour in the lower half (from $1797)."
  },
  {
   "address": 64856,
   "type": "line",
   "text": "The pose layout being drawn: each of its twelve rows' tile count."
  },
  {
   "address": 64857,
   "type": "line",
   "text": "Row 1's tile count, read by its own address too: place_char_fighter starts at row 2, so it adds the counts of rows 0 and 1 to the first character."
  },
  {
   "address": 64868,
   "type": "line",
   "text": "The pose layout's twelve starting columns."
  },
  {
   "address": 64880,
   "type": "line",
   "text": "The phase of each of the judge's six talking cells."
  },
  {
   "address": 64886,
   "type": "line",
   "text": "The character each of the judge's talking cells shows."
  },
  {
   "address": 64892,
   "type": "line",
   "text": "Each talking cell's step, a random 0-3 when it restarts."
  },
  {
   "address": 64898,
   "type": "line",
   "text": "Counts calls to the judge's talking; it moves every eighth."
  },
  {
   "address": 64899,
   "type": "line",
   "text": "The attacker and target pair check_hits is testing, 5 down to 0."
  },
  {
   "address": 64900,
   "type": "line",
   "text": "Each fighter's timer for the points painted on it after a hit, counted down by the frame NMI."
  },
  {
   "address": 64903,
   "type": "line",
   "text": "Each fighter's timer on the floor, counted down by the frame NMI."
  },
  {
   "address": 64906,
   "type": "line",
   "text": "Each fighter's painted points: the first digit's index into $3C11, or 5 for 1000; set by test_hit and read by knock_marks."
  },
  {
   "address": 64912,
   "type": "line",
   "text": "The bonus round's launch rate and new balls' speed, low byte."
  },
  {
   "address": 64913,
   "type": "line",
   "text": "The launch rate, high byte."
  },
  {
   "address": 64914,
   "type": "line",
   "text": "The bonus round's timer to the next ball, low byte."
  },
  {
   "address": 64915,
   "type": "line",
   "text": "The timer's high byte; a ball is thrown when it passes $20."
  },
  {
   "address": 64916,
   "type": "line",
   "text": "The move the bonus player falls with when hit."
  },
  {
   "address": 64917,
   "type": "line",
   "text": "The third fighter's colour, kept during the bonus round."
  },
  {
   "address": 64918,
   "type": "line",
   "text": "Set to 3 when a bonus player starts; nothing reads it."
  },
  {
   "address": 64919,
   "type": "line",
   "text": "The shield's Y for the multiplexer."
  },
  {
   "address": 64920,
   "type": "line",
   "text": "The shield's X."
  },
  {
   "address": 64921,
   "type": "line",
   "text": "The shield's sprite shape, patched into bonus_sprites at $0ADE."
  },
  {
   "address": 64922,
   "type": "line",
   "text": "Set once message $16 has been shown and the balls may come."
  },
  {
   "address": 64923,
   "type": "line",
   "text": "The weight of the next ball, from $0C up to $38."
  },
  {
   "address": 64924,
   "type": "line",
   "text": "Each fighter's flag for a pose drawn whole (hide_parts leaves it alone when set)."
  },
  {
   "address": 64927,
   "type": "line",
   "text": "1 from hide_parts until restore_parts, 0 otherwise: whether $3C90 saves a pose's bytes or puts them back."
  },
  {
   "address": 64928,
   "type": "line",
   "text": "1 from hide_parts until restore_parts for a fighter drawn without $FD9C, whatever its pose; the key checks at $17E1 and $18BD wait while it is set."
  },
  {
   "address": 64929,
   "type": "line",
   "text": "Counts bonus rounds; picks the throwing limits ($F71D, $F725)."
  },
  {
   "address": 64930,
   "type": "line",
   "text": "How long the judge goes on talking: 30 when a message appears."
  },
  {
   "address": 64931,
   "type": "line",
   "text": "Steps the pattern of the judge's tapping foot."
  },
  {
   "address": 64932,
   "type": "line",
   "text": "The round's tie case (0 all different, 7 second and third equal, 14 first and second equal, 21 all equal) plus the human-player bits of the ranking ($83): the index into round_result ($11AC)."
  },
  {
   "address": 64933,
   "type": "line",
   "text": "Counts down after RUN/STOP so one press is not read twice."
  },
  {
   "address": 64934,
   "type": "line",
   "text": "Player 1's fist icon flashes while this counts down."
  },
  {
   "address": 64935,
   "type": "line",
   "text": "Player 2's fist icon flashes while this counts down."
  },
  {
   "address": 64936,
   "type": "line",
   "text": "Set while the high-score table is on screen: the fighters keep to its right and the floor is not cleared."
  },
  {
   "address": 64937,
   "type": "line",
   "text": "The place the player's name goes in."
  },
  {
   "address": 64938,
   "type": "line",
   "text": "The high-score place in the first of the six rows the table shows on the floor (row 17 down), as it scrolls."
  },
  {
   "address": 64939,
   "type": "line",
   "text": "How many fighters fighters_step runs: 3, or 2."
  },
  {
   "address": 64940,
   "type": "line",
   "text": "Each fighter's blow state copied from $0143 at the start of check_hits."
  },
  {
   "address": 64943,
   "type": "line",
   "text": "The computer fighters' defence skill."
  },
  {
   "address": 64944,
   "type": "line",
   "text": "The computer fighters' attack skill."
  },
  {
   "address": 64945,
   "type": "line",
   "text": "The level's offset into the target tables at $2A08."
  },
  {
   "address": 64946,
   "type": "line",
   "text": "On NTSC, counts frames 0-5 so the frame NMI skips the music on every sixth and it plays at the PAL speed."
  },
  {
   "address": 64947,
   "type": "line",
   "text": "The high-score table, seven columns of 31 bytes (30 places and a slot for a new score): here the scores' high bytes (BCD)."
  },
  {
   "address": 64977,
   "type": "line",
   "text": "Slot 31 of the score column: the new score's high byte."
  },
  {
   "address": 64978,
   "type": "line",
   "text": "The scores' low bytes (BCD); the table shows them with two zeros after."
  },
  {
   "address": 65008,
   "type": "line",
   "text": "The new score's low byte."
  },
  {
   "address": 65009,
   "type": "line",
   "text": "Marks the place that holds the new score, so game_over can find it after sorting."
  },
  {
   "address": 65039,
   "type": "line",
   "text": "The new score's mark."
  },
  {
   "address": 65040,
   "type": "line",
   "text": "Each place's belt, plus one (0 for an empty place)."
  },
  {
   "address": 65070,
   "type": "line",
   "text": "The new score's belt."
  },
  {
   "address": 65071,
   "type": "line",
   "text": "Each place's first initial in the 5-row font's codes."
  },
  {
   "address": 65101,
   "type": "line",
   "text": "The new score's first initial."
  },
  {
   "address": 65102,
   "type": "line",
   "text": "Each place's second initial."
  },
  {
   "address": 65132,
   "type": "line",
   "text": "The new score's second initial."
  },
  {
   "address": 65133,
   "type": "line",
   "text": "Each place's third initial."
  },
  {
   "address": 65163,
   "type": "line",
   "text": "The new score's third initial."
  },
  {
   "address": 65280,
   "type": "line",
   "text": "Base of game_reset's STA $FF00,Y, its operand patched to $010B before every reset (see $1712 and $1713); $FF0C-$FFE8 are never cleared by it."
  },
  {
   "address": 65530,
   "type": "line",
   "text": "The NMI vector: the frame interrupt at $0BE6."
  },
  {
   "address": 65534,
   "type": "line",
   "text": "The IRQ vector: each raster interrupt writes the next one's low byte here."
  }
 ]
}