{
 "schema": 1,
 "platform": "c64",
 "game": "speedball",
 "build": "",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    1714,
    2047,
    "the loader's text screen, left as it was: spaces, then power-on bytes; the game never shows it"
   ],
   [
    26624,
    32767,
    "runtime: in play the two pitch screens ($6C00, $7400), the panel's screen ($7000) and the character set ($7800), all built from data held elsewhere ($DF55, $EC0D, the map at $F300); in the menus the bitmap at $6000"
   ],
   [
    62208,
    65279,
    "runtime: in play the pitch map, 40 columns by 74 rows, which pitch_map_build ($917D) writes; between matches it holds the play sprites, which play_sprites_in ($916A) copies to $5C00"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 3,
   "type": "Code"
  },
  {
   "start": 4,
   "end": 5,
   "type": "Byte"
  },
  {
   "start": 6,
   "end": 511,
   "type": "Undefined"
  },
  {
   "start": 512,
   "end": 1713,
   "type": "Byte"
  },
  {
   "start": 1714,
   "end": 2063,
   "type": "Undefined"
  },
  {
   "start": 2064,
   "end": 2255,
   "type": "Code"
  },
  {
   "start": 2256,
   "end": 2374,
   "type": "Byte"
  },
  {
   "start": 2375,
   "end": 2610,
   "type": "Code"
  },
  {
   "start": 2611,
   "end": 2658,
   "type": "Byte"
  },
  {
   "start": 2659,
   "end": 3522,
   "type": "Code"
  },
  {
   "start": 3523,
   "end": 3705,
   "type": "Byte"
  },
  {
   "start": 3706,
   "end": 3861,
   "type": "Code"
  },
  {
   "start": 3862,
   "end": 4433,
   "type": "Byte"
  },
  {
   "start": 4434,
   "end": 4807,
   "type": "Code"
  },
  {
   "start": 4808,
   "end": 4836,
   "type": "Byte"
  },
  {
   "start": 4837,
   "end": 4889,
   "type": "Code"
  },
  {
   "start": 4890,
   "end": 7055,
   "type": "Byte"
  },
  {
   "start": 7056,
   "end": 8191,
   "type": "Undefined"
  },
  {
   "start": 8192,
   "end": 8420,
   "type": "Code"
  },
  {
   "start": 8421,
   "end": 12646,
   "type": "Byte"
  },
  {
   "start": 12647,
   "end": 16381,
   "type": "Code"
  },
  {
   "start": 16382,
   "end": 16383,
   "type": "Undefined"
  },
  {
   "start": 16384,
   "end": 26623,
   "type": "Byte"
  },
  {
   "start": 26624,
   "end": 32767,
   "type": "Undefined"
  },
  {
   "start": 32768,
   "end": 45904,
   "type": "Code"
  },
  {
   "start": 45905,
   "end": 48463,
   "type": "Byte"
  },
  {
   "start": 48464,
   "end": 48494,
   "type": "Code"
  },
  {
   "start": 48495,
   "end": 48495,
   "type": "Byte"
  },
  {
   "start": 48496,
   "end": 48524,
   "type": "Code"
  },
  {
   "start": 48525,
   "end": 48543,
   "type": "Byte"
  },
  {
   "start": 48544,
   "end": 48566,
   "type": "Code"
  },
  {
   "start": 48567,
   "end": 48575,
   "type": "Byte"
  },
  {
   "start": 48576,
   "end": 48598,
   "type": "Code"
  },
  {
   "start": 48599,
   "end": 48639,
   "type": "Byte"
  },
  {
   "start": 48640,
   "end": 48760,
   "type": "Code"
  },
  {
   "start": 48761,
   "end": 48799,
   "type": "Byte"
  },
  {
   "start": 48800,
   "end": 48948,
   "type": "Code"
  },
  {
   "start": 48949,
   "end": 62207,
   "type": "Byte"
  },
  {
   "start": 62208,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "cpu_ddr",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1,
   "name": "cpu_port",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2,
   "name": "irq_vector",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3,
   "name": "irq_vector_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 6,
   "name": "jump_vector",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7,
   "name": "jump_vector_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8,
   "name": "irq_slot",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9,
   "name": "screen_enable",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10,
   "name": "sprites_enable",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11,
   "name": "frame_flag",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12,
   "name": "stick_port2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13,
   "name": "stick_port1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 15,
   "name": "frame_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16,
   "name": "frame_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 17,
   "name": "slow_timer",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 18,
   "name": "ptr_src",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 19,
   "name": "ptr_src_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20,
   "name": "ptr_dst",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 21,
   "name": "ptr_dst_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 22,
   "name": "text_ptr",
   "type": "ZeroPagePointer",
   "kind": "user"
  },
  {
   "address": 23,
   "name": "text_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24,
   "name": "temp_a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 25,
   "name": "temp_b",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 26,
   "name": "glyph_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 27,
   "name": "glyph_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 28,
   "name": "mux_next",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 29,
   "name": "mux_start",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 30,
   "name": "sprite_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 31,
   "name": "sprite_order_1",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 46,
   "name": "camera_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 47,
   "name": "camera_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 48,
   "name": "object_screen_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49,
   "name": "object_screen_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50,
   "name": "random_seed",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 51,
   "name": "random_seed_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 52,
   "name": "random_saved_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53,
   "name": "random_low",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 54,
   "name": "random_value",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55,
   "name": "coord_a",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 56,
   "name": "coord_a_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 57,
   "name": "target_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 58,
   "name": "target_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 59,
   "name": "coord_a_hi",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 60,
   "name": "coord_a_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 61,
   "name": "target_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 62,
   "name": "target_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 63,
   "name": "loop_a",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 64,
   "name": "loop_b",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 65,
   "name": "stick_bits",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 66,
   "name": "mask_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 67,
   "name": "mask_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 68,
   "name": "screen_shown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 69,
   "name": "dist_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 70,
   "name": "dist_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 71,
   "name": "dist_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 72,
   "name": "dist_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 73,
   "name": "count_c",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 74,
   "name": "map_row_shown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 75,
   "name": "camera_frozen",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 76,
   "name": "pairs_fresh",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 77,
   "name": "sprite_y_offset",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 78,
   "name": "sprite_y_offset_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 79,
   "name": "sprites_dirty",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 80,
   "name": "sprites_visible",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 81,
   "name": "sound_save_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 82,
   "name": "sound_save_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 83,
   "name": "music_on",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 84,
   "name": "nybble_half",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 85,
   "name": "key_f3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 86,
   "name": "key_run_stop",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 87,
   "name": "key_f5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 88,
   "name": "work_y",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 89,
   "name": "work_y_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 90,
   "name": "step_x",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 91,
   "name": "step_x_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 92,
   "name": "fire_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 93,
   "name": "move_dir",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 94,
   "name": "wants_ball",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 95,
   "name": "human_turn",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 96,
   "name": "side0_player",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 97,
   "name": "side1_player",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 98,
   "name": "pass_count",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 100,
   "name": "side0_fire",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 101,
   "name": "side1_fire",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 102,
   "name": "tile_phase",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 103,
   "name": "tile_delay",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 104,
   "name": "tile_type",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 105,
   "name": "tile_col",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 106,
   "name": "tile_row",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 107,
   "name": "power_p",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 108,
   "name": "power_f",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 109,
   "name": "power_r",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 112,
   "name": "power_w",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 113,
   "name": "power_j",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 114,
   "name": "fade_step",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 115,
   "name": "fade_delay",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 116,
   "name": "clock_passes",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 117,
   "name": "clock_bar",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 118,
   "name": "clock_target",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 119,
   "name": "goal_countdown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 120,
   "name": "fulltime_countdown",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 121,
   "name": "menu_entries",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 122,
   "name": "match_quit_flag",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 123,
   "name": "pickup_delay",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 124,
   "name": "load_slot",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 144,
   "name": "kernal_status",
   "type": "ZeroPageField",
   "kind": "user"
  },
  {
   "address": 148,
   "name": "kernal_serial_flag",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 149,
   "name": "kernal_serial_byte",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 157,
   "name": "kernal_messages",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 163,
   "name": "kernal_serial_eoi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 174,
   "name": "save_end",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 175,
   "name": "save_end_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 183,
   "name": "file_name_length",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 185,
   "name": "secondary_address",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 186,
   "name": "device_number",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 187,
   "name": "file_name_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 188,
   "name": "file_name_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 193,
   "name": "save_start",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 194,
   "name": "save_start_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 195,
   "name": "load_address",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 196,
   "name": "load_address_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 240,
   "name": "music_ptr",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 241,
   "name": "music_ptr_hi",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 267,
   "name": "f_010B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 512,
   "name": "menu_picture",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 673,
   "name": "kernal_rs232",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 768,
   "name": "menu_picture_p2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 808,
   "name": "stop_vector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 809,
   "name": "stop_vector_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1024,
   "name": "menu_picture_p3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1280,
   "name": "menu_picture_p4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1536,
   "name": "menu_picture_p5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1664,
   "name": "menu_picture_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1689,
   "name": "menu_picture_colour_ram",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2064,
   "name": "music_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2071,
   "name": "b_0817",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2078,
   "name": "b_081E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2083,
   "name": "b_0823",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2256,
   "name": "v1_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2257,
   "name": "v1_pattern",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2258,
   "name": "v1_pattern_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2259,
   "name": "v1_order",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2260,
   "name": "v1_order_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2261,
   "name": "v1_order_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2262,
   "name": "v1_order_pos_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2263,
   "name": "v1_slide",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2264,
   "name": "v1_slide_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2265,
   "name": "v1_arp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2266,
   "name": "v1_arp_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2267,
   "name": "v1_arp_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2268,
   "name": "v1_slide_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2269,
   "name": "v1_slide_step_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2270,
   "name": "v1_slide_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2271,
   "name": "v1_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2272,
   "name": "v1_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2273,
   "name": "v1_note",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2274,
   "name": "v1_ad",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2275,
   "name": "v1_sr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2276,
   "name": "v1_freq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2277,
   "name": "v1_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2278,
   "name": "v1_pulse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2279,
   "name": "v1_pulse_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2280,
   "name": "v1_restart",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2281,
   "name": "v1_vib_depth",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2282,
   "name": "v1_vib_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2283,
   "name": "v1_vib_pos",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2284,
   "name": "v1_vib_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2285,
   "name": "v1_pulse_low",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2286,
   "name": "v1_pulse_high",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2287,
   "name": "v1_pulse_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2288,
   "name": "v1_pulse_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2289,
   "name": "v1_wave",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2290,
   "name": "v1_wave_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2291,
   "name": "v1_transpose",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2292,
   "name": "v2_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2293,
   "name": "v2_pattern",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2294,
   "name": "v2_pattern_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2295,
   "name": "v2_order",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2296,
   "name": "v2_order_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2297,
   "name": "v2_order_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2301,
   "name": "v2_arp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2302,
   "name": "v2_arp_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2307,
   "name": "v2_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2310,
   "name": "v2_ad",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2311,
   "name": "v2_sr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2312,
   "name": "v2_freq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2313,
   "name": "v2_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2314,
   "name": "v2_pulse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2315,
   "name": "v2_pulse_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2316,
   "name": "v2_restart",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2326,
   "name": "v2_wave_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2328,
   "name": "v3_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2329,
   "name": "v3_pattern",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2330,
   "name": "v3_pattern_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2331,
   "name": "v3_order",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2332,
   "name": "v3_order_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2333,
   "name": "v3_order_pos",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2337,
   "name": "v3_arp",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2338,
   "name": "v3_arp_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2343,
   "name": "v3_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2346,
   "name": "v3_ad",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2347,
   "name": "v3_sr",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2348,
   "name": "v3_freq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2349,
   "name": "v3_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2350,
   "name": "v3_pulse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2351,
   "name": "v3_pulse_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2352,
   "name": "v3_restart",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2362,
   "name": "v3_wave_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2364,
   "name": "music_playing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2365,
   "name": "effect_playing",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2366,
   "name": "v1_music",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2367,
   "name": "v2_music",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2368,
   "name": "v3_music",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2369,
   "name": "hum_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2370,
   "name": "volume",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2371,
   "name": "tempo_saved",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2372,
   "name": "vib_width",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2373,
   "name": "vib_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2374,
   "name": "vib_offset_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2375,
   "name": "music_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2381,
   "name": "r_094D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2382,
   "name": "music_frame_voices",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2388,
   "name": "tempo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2391,
   "name": "tempo_total",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 2412,
   "name": "b_096C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2482,
   "name": "b_09B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2486,
   "name": "b_09B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2541,
   "name": "b_09ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2545,
   "name": "b_09F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2600,
   "name": "b_0A28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2604,
   "name": "b_0A2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2611,
   "name": "command_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2612,
   "name": "command_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2659,
   "name": "cmd_next_pattern",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2720,
   "name": "b_0AA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2734,
   "name": "cmd_rest",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2748,
   "name": "cmd_tie",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2756,
   "name": "cmd_global_transpose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2769,
   "name": "b_0AD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2772,
   "name": "cmd_transpose",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2785,
   "name": "b_0AE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2788,
   "name": "cmd_pulse_sweep",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2818,
   "name": "b_0B02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2826,
   "name": "cmd_noise",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2830,
   "name": "cmd_pulse",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2834,
   "name": "cmd_sawtooth",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2838,
   "name": "cmd_triangle",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2842,
   "name": "cmd_ring",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2844,
   "name": "b_0B1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2850,
   "name": "cmd_pulse_fixed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2870,
   "name": "b_0B36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2873,
   "name": "cmd_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2878,
   "name": "cmd_slide_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2882,
   "name": "cmd_slide_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2884,
   "name": "b_0B44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2929,
   "name": "cmd_vibrato",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2956,
   "name": "cmd_vibrato_on",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 2963,
   "name": "cmd_vibrato_off",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2970,
   "name": "cmd_drum",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2980,
   "name": "music_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3000,
   "name": "j_0BB8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3011,
   "name": "b_0BC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3023,
   "name": "j_0BCF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3040,
   "name": "r_0BE0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3041,
   "name": "b_0BE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3083,
   "name": "b_0C0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3090,
   "name": "b_0C12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3114,
   "name": "b_0C2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3117,
   "name": "b_0C2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3132,
   "name": "command_vector",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3133,
   "name": "command_vector_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3134,
   "name": "music_voice_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3164,
   "name": "b_0C5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3173,
   "name": "global_transpose",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3225,
   "name": "b_0C99",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3253,
   "name": "b_0CB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3276,
   "name": "b_0CCC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3279,
   "name": "j_0CCF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3292,
   "name": "b_0CDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3300,
   "name": "b_0CE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3311,
   "name": "b_0CEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3326,
   "name": "b_0CFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3387,
   "name": "b_0D3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3421,
   "name": "b_0D5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3458,
   "name": "b_0D82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3486,
   "name": "b_0D9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3512,
   "name": "b_0DB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3523,
   "name": "note_freq",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3524,
   "name": "note_freq_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3689,
   "name": "arp_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3692,
   "name": "arp_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3706,
   "name": "effect_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3751,
   "name": "effect_copy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3752,
   "name": "effect_src",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3753,
   "name": "effect_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 3862,
   "name": "effect_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3863,
   "name": "effect_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 3914,
   "name": "effect_records",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4434,
   "name": "hum_restart",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4437,
   "name": "hum_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4447,
   "name": "j_115F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4496,
   "name": "hum_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4512,
   "name": "effect_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 4542,
   "name": "hum_frame",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 4561,
   "name": "b_11D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4593,
   "name": "r_11F1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4594,
   "name": "effects_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4605,
   "name": "b_11FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4613,
   "name": "b_1205",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4629,
   "name": "b_1215",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4658,
   "name": "b_1232",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4682,
   "name": "b_124A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4720,
   "name": "b_1270",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4745,
   "name": "b_1289",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4780,
   "name": "b_12AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4805,
   "name": "j_12C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4808,
   "name": "effect_length",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4809,
   "name": "effect_step_len",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4810,
   "name": "effect_v1_freq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4811,
   "name": "effect_v1_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4812,
   "name": "effect_v3_freq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4813,
   "name": "effect_v3_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4814,
   "name": "effect_v1_ad",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4815,
   "name": "effect_v3_ad",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4816,
   "name": "effect_v1_wave",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4817,
   "name": "effect_v3_wave",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4818,
   "name": "effect_v1_pulse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4819,
   "name": "effect_v3_pulse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4820,
   "name": "effect_v1_slide",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4821,
   "name": "effect_v1_slide_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4822,
   "name": "effect_v3_slide",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4823,
   "name": "effect_v3_slide_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4824,
   "name": "effect_v1_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4825,
   "name": "effect_v3_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4826,
   "name": "effect_repeats",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4827,
   "name": "effect_random",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4828,
   "name": "effect_step_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4829,
   "name": "effect_v1_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4830,
   "name": "effect_v1_now_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4831,
   "name": "effect_v3_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4832,
   "name": "effect_v3_now_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4833,
   "name": "hum_freq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4834,
   "name": "hum_freq_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4835,
   "name": "hum_pulse",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4836,
   "name": "hum_pulse_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4837,
   "name": "music_stop_all",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4848,
   "name": "sid_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4852,
   "name": "b_12F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4865,
   "name": "random_music",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4890,
   "name": "random_music_0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4891,
   "name": "random_music_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4892,
   "name": "random_music_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4893,
   "name": "random_music_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 4894,
   "name": "tune_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4895,
   "name": "tune_v1_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4896,
   "name": "tune_v1_order_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4897,
   "name": "tune_v2_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4898,
   "name": "tune_v2_order_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4899,
   "name": "tune_v3_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4943,
   "name": "tune0_orders",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5281,
   "name": "tune0_v1_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5733,
   "name": "tune0_v3_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5845,
   "name": "tune0_unused_pattern",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5862,
   "name": "tune0_v2_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6260,
   "name": "tune1_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6394,
   "name": "tune2_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6514,
   "name": "tune3_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6640,
   "name": "tune4_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6881,
   "name": "tune5_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6949,
   "name": "tune6_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7015,
   "name": "shared_patterns",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7045,
   "name": "file0_tail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7168,
   "name": "team_goals_for",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7179,
   "name": "team_goals_for_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7190,
   "name": "team_goals_against",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7201,
   "name": "team_goals_against_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7212,
   "name": "team_played",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7223,
   "name": "team_rank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7234,
   "name": "team_rank_before",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7245,
   "name": "team_power",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7256,
   "name": "team_stamina",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7267,
   "name": "team_figure_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7278,
   "name": "team_aim_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7289,
   "name": "team_keeper_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7300,
   "name": "team_fire_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7311,
   "name": "team_points",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7312,
   "name": "team_points_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7322,
   "name": "team_points_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7323,
   "name": "team_points_1_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7333,
   "name": "team_tackle",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7344,
   "name": "team_won",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7355,
   "name": "team_lost",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7366,
   "name": "team_drawn",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7377,
   "name": "team_template",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7399,
   "name": "player_stamina",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7404,
   "name": "player_stamina_side1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7409,
   "name": "player_power",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7414,
   "name": "player_power_side1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7419,
   "name": "player_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7429,
   "name": "player_start_value",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7439,
   "name": "player_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7449,
   "name": "player_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7459,
   "name": "player_role",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7469,
   "name": "player_clear_value",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7479,
   "name": "player_ai_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7489,
   "name": "player_ball_dist",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7499,
   "name": "player_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7509,
   "name": "player_last_stick",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7519,
   "name": "player_down_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7529,
   "name": "player_down_stick",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7539,
   "name": "player_anim_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7549,
   "name": "player_anim_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7559,
   "name": "player_next_action",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7569,
   "name": "player_anim_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7579,
   "name": "player_action",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7589,
   "name": "player_anim_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7599,
   "name": "player_anim_ptr_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7609,
   "name": "player_prev_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7619,
   "name": "player_prev_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7629,
   "name": "player_prev_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7639,
   "name": "player_prev_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7649,
   "name": "player_target_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7659,
   "name": "player_target_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7669,
   "name": "player_target_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7679,
   "name": "player_target_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7689,
   "name": "object_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7699,
   "name": "launcher_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7704,
   "name": "ball_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7705,
   "name": "object_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7715,
   "name": "launcher_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7720,
   "name": "ball_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7721,
   "name": "object_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7731,
   "name": "launcher_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7736,
   "name": "ball_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7737,
   "name": "object_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7747,
   "name": "launcher_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7752,
   "name": "ball_y_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7753,
   "name": "pair_dist",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7853,
   "name": "score_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7854,
   "name": "score_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7855,
   "name": "game_type",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7856,
   "name": "league_length",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7857,
   "name": "tokens_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7858,
   "name": "tokens_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7859,
   "name": "formation_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7860,
   "name": "formation_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7861,
   "name": "power_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7862,
   "name": "power_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7863,
   "name": "stamina_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7864,
   "name": "stamina_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7865,
   "name": "tackle_side0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 7866,
   "name": "tackle_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7867,
   "name": "computer_figure_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7868,
   "name": "computer_aim_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7869,
   "name": "keeper_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7870,
   "name": "computer_fire_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7871,
   "name": "computer_fire_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7872,
   "name": "side0_wants_ball",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7873,
   "name": "side1_wants_ball",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7874,
   "name": "knockout_points",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7875,
   "name": "knockout_leg",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7876,
   "name": "round",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7877,
   "name": "computer_aim_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7878,
   "name": "computer_pass_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7879,
   "name": "powerup_time_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7880,
   "name": "powerup_time_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7881,
   "name": "countdown_pace_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7882,
   "name": "countdown_pace_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7884,
   "name": "countdown_stages",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7885,
   "name": "powerup_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7886,
   "name": "countdown_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7887,
   "name": "countdown_pace",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7888,
   "name": "pitch_layout",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7889,
   "name": "team_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7890,
   "name": "team_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7891,
   "name": "handicap_stamina",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7892,
   "name": "handicap_power",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7893,
   "name": "handicap_tackle",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7894,
   "name": "handicap_keeper",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7895,
   "name": "opponent",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7896,
   "name": "week",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7897,
   "name": "match_home",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7898,
   "name": "match_away",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7899,
   "name": "week_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7900,
   "name": "extra_time",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7901,
   "name": "ball_speed_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7902,
   "name": "ball_speed_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7903,
   "name": "friction_pace",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7904,
   "name": "throw_strength",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7905,
   "name": "ball_holder",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7906,
   "name": "ball_thrower",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7907,
   "name": "ball_height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7908,
   "name": "ball_height_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7909,
   "name": "throw_value",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7910,
   "name": "ball_still",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7911,
   "name": "dome_cooldown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7912,
   "name": "cursor",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7913,
   "name": "game_kept",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7914,
   "name": "menu_text_group",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7915,
   "name": "menu_text_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7916,
   "name": "sprite_block",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7917,
   "name": "sort_swapped",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7918,
   "name": "card_flip",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7919,
   "name": "thrower_block",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7920,
   "name": "bribed_goals_side0",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7921,
   "name": "bribed_goals_side1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7922,
   "name": "launcher_lift",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7923,
   "name": "launcher_dir",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7924,
   "name": "shot_choice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7925,
   "name": "shop_side",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7926,
   "name": "shop_tokens",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 7927,
   "name": "shop_bought",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8192,
   "name": "game_entry",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8201,
   "name": "jv_save_game",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8204,
   "name": "jv_load_game",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8207,
   "name": "wait_256_frames",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8209,
   "name": "b_2011",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8218,
   "name": "game_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 8227,
   "name": "b_2023",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8240,
   "name": "b_2030",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8333,
   "name": "b_208D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8341,
   "name": "b_2095",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 8421,
   "name": "map_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8423,
   "name": "map_row_lo_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8425,
   "name": "map_row_lo_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8427,
   "name": "map_row_lo_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8429,
   "name": "map_row_lo_8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8431,
   "name": "map_row_lo_10",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8433,
   "name": "map_row_lo_12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8435,
   "name": "map_row_lo_14",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8437,
   "name": "map_row_lo_16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8439,
   "name": "map_row_lo_18",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8441,
   "name": "map_row_lo_20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8495,
   "name": "map_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8497,
   "name": "map_row_hi_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8499,
   "name": "map_row_hi_4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8501,
   "name": "map_row_hi_6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8503,
   "name": "map_row_hi_8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8505,
   "name": "map_row_hi_10",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8507,
   "name": "map_row_hi_12",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8509,
   "name": "map_row_hi_14",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8511,
   "name": "map_row_hi_16",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8513,
   "name": "map_row_hi_18",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8515,
   "name": "map_row_hi_20",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8569,
   "name": "block_src_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8582,
   "name": "block13_src_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8590,
   "name": "block_src_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8603,
   "name": "block13_src_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8611,
   "name": "block_dst_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8620,
   "name": "dome_dst_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8624,
   "name": "tile_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8629,
   "name": "block18_dst_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8632,
   "name": "block_dst_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8641,
   "name": "dome_dst_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8645,
   "name": "tile_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8650,
   "name": "block18_dst_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 8653,
   "name": "block_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8674,
   "name": "block_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8695,
   "name": "floor_piece_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8697,
   "name": "floor_piece_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8699,
   "name": "panel_row_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8739,
   "name": "panel_row_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8779,
   "name": "stamina_meter_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8781,
   "name": "stamina_meter_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8783,
   "name": "holder_marker_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8785,
   "name": "slot_bg0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8791,
   "name": "slot_bg1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8797,
   "name": "slot_bg2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8803,
   "name": "bit_clear",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8811,
   "name": "bit_set",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8819,
   "name": "copy_src_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8823,
   "name": "copy_src_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8827,
   "name": "copy_dst_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8831,
   "name": "copy_dst_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8835,
   "name": "menu_handler_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8843,
   "name": "menu_handler_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8851,
   "name": "save_slot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8854,
   "name": "screen_copy_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8856,
   "name": "screen_copy_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8858,
   "name": "screen_d018",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8860,
   "name": "pow10_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8865,
   "name": "pow10_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8870,
   "name": "shop_check_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8900,
   "name": "shop_check_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8930,
   "name": "line_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8936,
   "name": "line_digit_src",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8942,
   "name": "line_digit_dst",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8948,
   "name": "score_digit_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8950,
   "name": "box_colour_offset_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8952,
   "name": "box_colour_offset_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8954,
   "name": "box_cell_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8969,
   "name": "box_cell_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8984,
   "name": "box_colour_ram",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 8999,
   "name": "box_colour_screen",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9014,
   "name": "box_bitmap_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9029,
   "name": "box_bitmap_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9044,
   "name": "box_width",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9059,
   "name": "box_rows",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9074,
   "name": "picture_src_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9086,
   "name": "picture_src_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9098,
   "name": "panel_dst_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9104,
   "name": "recolour_dst_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9107,
   "name": "panel_dst_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9113,
   "name": "recolour_dst_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9116,
   "name": "picture_mask_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9128,
   "name": "picture_mask_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9140,
   "name": "card_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9143,
   "name": "card_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9146,
   "name": "face_bitmap_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9176,
   "name": "face_bitmap_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9206,
   "name": "face_mask_ptr_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9236,
   "name": "face_mask_ptr_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9266,
   "name": "face_first",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9276,
   "name": "shop_line_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9287,
   "name": "shop_line_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9298,
   "name": "shop_text_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9309,
   "name": "shop_text_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9320,
   "name": "timer_fault_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 9321,
   "name": "text_group_count",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9347,
   "name": "text_group_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9373,
   "name": "text_group_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9399,
   "name": "load_text_group",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9402,
   "name": "message_dst_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9411,
   "name": "message_dst_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9420,
   "name": "message_text_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9429,
   "name": "message_text_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9438,
   "name": "message_lines",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 9447,
   "name": "text_items",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9759,
   "name": "strings",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9966,
   "name": "strings_credits",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10257,
   "name": "strings_headings",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10262,
   "name": "player_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10280,
   "name": "knockout_round_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10292,
   "name": "twoplayer_week_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10304,
   "name": "league_week_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 10756,
   "name": "message_texts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10824,
   "name": "leg_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 10984,
   "name": "message_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11032,
   "name": "card_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 11038,
   "name": "card_team_name",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11049,
   "name": "card_captain",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11063,
   "name": "card_height",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11075,
   "name": "card_weight",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11089,
   "name": "card_stamina",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11101,
   "name": "card_power",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11113,
   "name": "card_skill",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11116,
   "name": "league_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11122,
   "name": "league_line_name",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11168,
   "name": "glyph_of",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11259,
   "name": "menu_bar_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11269,
   "name": "shop_cursor_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11280,
   "name": "stick_to_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11296,
   "name": "computer_run_dirs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11299,
   "name": "shop_cost",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11310,
   "name": "token_icon_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11312,
   "name": "token_icon_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11314,
   "name": "fine_scroll",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11322,
   "name": "slot_handler_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11334,
   "name": "slot_handler_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11346,
   "name": "slot_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11347,
   "name": "slot_line_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11358,
   "name": "slot_next",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11370,
   "name": "slot_d011",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11382,
   "name": "slot_d016",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11394,
   "name": "slot_d018",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11406,
   "name": "slot_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11418,
   "name": "slot_d015",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11430,
   "name": "key_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11433,
   "name": "key_columns",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11436,
   "name": "countdown_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11447,
   "name": "sprite_last_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11455,
   "name": "sprite_msb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11456,
   "name": "sprite_mc",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11457,
   "name": "obj_sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11471,
   "name": "countdown_sprite_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11473,
   "name": "obj_sprite_msb",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11487,
   "name": "countdown_sprite_msb",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11489,
   "name": "obj_sprite_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11505,
   "name": "obj_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11510,
   "name": "obj_colour_side1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11515,
   "name": "obj_colour_launcher",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11519,
   "name": "countdown_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11520,
   "name": "ball_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11521,
   "name": "obj_pointer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11531,
   "name": "obj_pointer_launcher",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11535,
   "name": "countdown_pointer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11536,
   "name": "ball_pointer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11537,
   "name": "obj_multicolour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11547,
   "name": "obj_multicolour_launcher",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11553,
   "name": "launcher_x_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11561,
   "name": "launcher_x_hi_tab",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11569,
   "name": "launcher_y_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11577,
   "name": "launcher_y_hi_tab",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11585,
   "name": "launcher_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11593,
   "name": "launcher_pointer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11601,
   "name": "launcher_mc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11609,
   "name": "unused_table_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11613,
   "name": "unused_table_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11625,
   "name": "ball_height_pointer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11633,
   "name": "mask_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11634,
   "name": "sprite_blocks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11635,
   "name": "sprite_block_y0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11636,
   "name": "sprite_block_x1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11637,
   "name": "sprite_block_y1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11638,
   "name": "sprite_block_x2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11639,
   "name": "sprite_block_y2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11640,
   "name": "sprite_block_x3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11641,
   "name": "sprite_block_y3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11649,
   "name": "sprite_block_y7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11657,
   "name": "sprite_block_d028",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11675,
   "name": "sprite_block1_y0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11714,
   "name": "countdown_msb_tab",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11716,
   "name": "countdown_x_tab",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11718,
   "name": "countdown_colour_tab",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11720,
   "name": "digit_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11721,
   "name": "number",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11722,
   "name": "number_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11723,
   "name": "digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11725,
   "name": "digits_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11726,
   "name": "score_digit_a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11727,
   "name": "score_digit_b",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11728,
   "name": "timer_check_sum",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11729,
   "name": "dome_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11733,
   "name": "dome_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11737,
   "name": "start_role",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11747,
   "name": "start_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11757,
   "name": "start_value",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11767,
   "name": "start_pointer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11777,
   "name": "start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11787,
   "name": "start_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11797,
   "name": "start_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11807,
   "name": "role_routine_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11817,
   "name": "role_routine_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11827,
   "name": "bump_stick",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11891,
   "name": "dome_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11931,
   "name": "dome_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11971,
   "name": "dome_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12011,
   "name": "team_anim_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12014,
   "name": "team_anim_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12017,
   "name": "team_anim_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12054,
   "name": "team_anim_height",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12057,
   "name": "dist_row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12067,
   "name": "dist_row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12077,
   "name": "team_picture_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12080,
   "name": "team_picture_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12083,
   "name": "frame_sprite_last",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12086,
   "name": "frame_sprite_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12098,
   "name": "frame_sprite_msb",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12101,
   "name": "frame_sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12113,
   "name": "row_sprite_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12121,
   "name": "frame_sprite_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12133,
   "name": "title_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12190,
   "name": "fixtures",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12191,
   "name": "fixtures_away",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12280,
   "name": "table_row_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12320,
   "name": "team_name_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12334,
   "name": "team_card_end",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12348,
   "name": "team_names",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12426,
   "name": "captains",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 12647,
   "name": "main_menu_resume",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12660,
   "name": "main_menu_boot",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12665,
   "name": "main_menu",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12676,
   "name": "new_game_reset",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12715,
   "name": "match_series_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12723,
   "name": "match_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12738,
   "name": "match_restart",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12767,
   "name": "b_31DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12783,
   "name": "b_31EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12786,
   "name": "j_31F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 12792,
   "name": "kickoff",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12804,
   "name": "b_3204",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12865,
   "name": "b_3241",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12892,
   "name": "match_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12899,
   "name": "b_3263",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12919,
   "name": "b_3277",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12930,
   "name": "b_3282",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12941,
   "name": "b_328D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12950,
   "name": "b_3296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12961,
   "name": "b_32A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12972,
   "name": "b_32AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 12981,
   "name": "b_32B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13011,
   "name": "match_frame_tail",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13038,
   "name": "goal_scored",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 13061,
   "name": "b_3305",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13069,
   "name": "match_quit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13073,
   "name": "time_up",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 13088,
   "name": "match_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 13113,
   "name": "b_3339",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13162,
   "name": "b_336A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13168,
   "name": "b_3370",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13173,
   "name": "b_3375",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13176,
   "name": "b_3378",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13186,
   "name": "b_3382",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13200,
   "name": "b_3390",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13203,
   "name": "clock_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13217,
   "name": "b_33A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13229,
   "name": "b_33AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13231,
   "name": "b_33AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13260,
   "name": "b_33CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13263,
   "name": "b_33CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13267,
   "name": "tile_remove",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13274,
   "name": "effects_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13293,
   "name": "tile_floor_put",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13308,
   "name": "b_33FC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13330,
   "name": "launcher_objects_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13332,
   "name": "b_3414",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13379,
   "name": "launcher_objects_hide",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13383,
   "name": "b_3447",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13393,
   "name": "tile_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13454,
   "name": "b_348E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13466,
   "name": "b_349A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13484,
   "name": "b_34AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13497,
   "name": "r_34B9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 13498,
   "name": "players_attributes_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13500,
   "name": "b_34BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13528,
   "name": "players_reset_all",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13534,
   "name": "b_34DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13549,
   "name": "player_reset",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13621,
   "name": "players_walk_home",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13625,
   "name": "b_3539",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13695,
   "name": "b_357F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13705,
   "name": "ball_distances",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13707,
   "name": "b_358B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13781,
   "name": "nearest_player",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13787,
   "name": "b_35DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13801,
   "name": "b_35E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13808,
   "name": "stick_toward",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13818,
   "name": "dir_to_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13856,
   "name": "b_3620",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13873,
   "name": "b_3631",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13886,
   "name": "b_363E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13889,
   "name": "b_3641",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13903,
   "name": "b_364F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13920,
   "name": "b_3660",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13933,
   "name": "b_366D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13936,
   "name": "b_3670",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13939,
   "name": "b_3673",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13965,
   "name": "b_368D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13982,
   "name": "b_369E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13995,
   "name": "b_36AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 13998,
   "name": "b_36AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14012,
   "name": "b_36BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14029,
   "name": "b_36CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14042,
   "name": "b_36DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14045,
   "name": "diff_37",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14061,
   "name": "negate_37",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14075,
   "name": "diff_ge_6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14085,
   "name": "diff_ge_20",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14095,
   "name": "player_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14097,
   "name": "b_3711",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14136,
   "name": "r_3738",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14137,
   "name": "launcher_sequence",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14144,
   "name": "b_3740",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14194,
   "name": "b_3772",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14196,
   "name": "b_3774",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14198,
   "name": "b_3776",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14293,
   "name": "launcher_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14311,
   "name": "ball_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14327,
   "name": "b_37F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14339,
   "name": "b_3803",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14350,
   "name": "ball_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14361,
   "name": "b_3819",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14410,
   "name": "b_384A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14445,
   "name": "b_386D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14456,
   "name": "b_3878",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14467,
   "name": "b_3883",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14485,
   "name": "b_3895",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14488,
   "name": "b_3898",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14528,
   "name": "b_38C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14568,
   "name": "b_38E8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14584,
   "name": "b_38F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14618,
   "name": "b_391A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14631,
   "name": "j_3927",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14667,
   "name": "b_394B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14683,
   "name": "b_395B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14723,
   "name": "b_3983",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14736,
   "name": "j_3990",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14751,
   "name": "b_399F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14754,
   "name": "b_39A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14766,
   "name": "b_39AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14779,
   "name": "b_39BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14782,
   "name": "b_39BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14785,
   "name": "b_39C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14805,
   "name": "b_39D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14832,
   "name": "b_39F0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14839,
   "name": "j_39F7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 14842,
   "name": "ball_slide_home",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14884,
   "name": "b_3A24",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14914,
   "name": "ball_to_launcher",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14934,
   "name": "r_3A56",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 14935,
   "name": "goal_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14946,
   "name": "b_3A62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14967,
   "name": "b_3A77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14970,
   "name": "b_3A7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 14973,
   "name": "tunnel_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14984,
   "name": "b_3A88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15010,
   "name": "ball_bounce_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15020,
   "name": "ball_bounce_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15030,
   "name": "unused_code",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15071,
   "name": "ball_pickup_side0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15075,
   "name": "ball_pickup_side1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15077,
   "name": "b_3AE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15101,
   "name": "b_3AFD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15103,
   "name": "b_3AFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15141,
   "name": "b_3B25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15148,
   "name": "b_3B2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15152,
   "name": "r_3B30",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15153,
   "name": "b_3B31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15166,
   "name": "b_3B3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15173,
   "name": "b_3B45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15182,
   "name": "ball_take_side0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15186,
   "name": "b_3B52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15218,
   "name": "b_3B72",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15240,
   "name": "b_3B88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15258,
   "name": "ball_take_side1",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15286,
   "name": "b_3BB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15306,
   "name": "keeper_throw_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15331,
   "name": "keeper_throw_down",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15344,
   "name": "b_3BF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15355,
   "name": "keeper_throw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15394,
   "name": "menu_resume",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15398,
   "name": "menu_main",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15400,
   "name": "b_3C28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15403,
   "name": "menu_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15438,
   "name": "menu_knockout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15446,
   "name": "menu_teams",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15465,
   "name": "b_3C69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15471,
   "name": "b_3C6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15474,
   "name": "j_3C72",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15478,
   "name": "menu_twoplayer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15488,
   "name": "menu_league",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15498,
   "name": "menu_save",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15521,
   "name": "b_3CA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15561,
   "name": "b_3CC9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15566,
   "name": "j_3CCE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15569,
   "name": "b_3CD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15572,
   "name": "menu_load_league",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15577,
   "name": "menu_load_knockout",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15581,
   "name": "menu_load_twoplayer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15583,
   "name": "menu_load",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 15606,
   "name": "b_3CF6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15651,
   "name": "b_3D23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15656,
   "name": "j_3D28",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 15659,
   "name": "b_3D2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15662,
   "name": "menu_continue",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15691,
   "name": "r_3D4B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15692,
   "name": "team_select",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15820,
   "name": "r_3DCC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 15821,
   "name": "team_choose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15841,
   "name": "b_3DE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15851,
   "name": "b_3DEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15889,
   "name": "b_3E11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15893,
   "name": "b_3E15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15907,
   "name": "b_3E23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15917,
   "name": "b_3E2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15921,
   "name": "b_3E31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15931,
   "name": "b_3E3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15939,
   "name": "b_3E43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15949,
   "name": "b_3E4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15962,
   "name": "b_3E5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 15994,
   "name": "b_3E7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16008,
   "name": "b_3E88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16040,
   "name": "b_3EA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16062,
   "name": "b_3EBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16077,
   "name": "side0_attributes_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16082,
   "name": "b_3ED2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16101,
   "name": "both_attributes_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16111,
   "name": "league_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16115,
   "name": "b_3EF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16133,
   "name": "knockout_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16150,
   "name": "b_3F16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16163,
   "name": "b_3F23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16178,
   "name": "team_record_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16257,
   "name": "opponent_load",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16306,
   "name": "league_length_menu",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16346,
   "name": "match_result_shop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16370,
   "name": "b_3FF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16378,
   "name": "b_3FFA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16384,
   "name": "spr_menu",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17152,
   "name": "spr_countdown",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17792,
   "name": "spr_run_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 18752,
   "name": "spr_run_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19712,
   "name": "spr_ball",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 19968,
   "name": "spr_jump_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20736,
   "name": "spr_jump_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21504,
   "name": "spr_slide",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21760,
   "name": "spr_throw_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "spr_run_c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23168,
   "name": "spr_throw_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23552,
   "name": "menu_colour_screen",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23686,
   "name": "menu_box_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 23808,
   "name": "menu_colour_p2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24064,
   "name": "menu_colour_p3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24072,
   "name": "menu_mark_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24111,
   "name": "menu_mark_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24112,
   "name": "menu_mark_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24151,
   "name": "menu_mark_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24192,
   "name": "prematch_row_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24296,
   "name": "prematch_row_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24320,
   "name": "menu_colour_p4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24568,
   "name": "menu_sprite_ptrs",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24576,
   "name": "unused_entry_a",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24648,
   "name": "unused_entry_b",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 24832,
   "name": "file7_p2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24960,
   "name": "spr_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25088,
   "name": "file7_p3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25344,
   "name": "file7_p4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25600,
   "name": "file7_p5",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25984,
   "name": "spr_blocks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27648,
   "name": "f_6C00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27728,
   "name": "f_6C50",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27808,
   "name": "f_6CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27888,
   "name": "f_6CF0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 27968,
   "name": "f_6D40",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28048,
   "name": "f_6D90",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28128,
   "name": "f_6DE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28208,
   "name": "f_6E30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28288,
   "name": "f_6E80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28368,
   "name": "f_6ED0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28448,
   "name": "f_6F20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 28664,
   "name": "f_6FF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29512,
   "name": "f_7348",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29552,
   "name": "f_7370",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29555,
   "name": "f_7373",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29560,
   "name": "f_7378",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29561,
   "name": "f_7379",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29569,
   "name": "f_7381",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29592,
   "name": "f_7398",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29696,
   "name": "f_7400",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29736,
   "name": "f_7428",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29776,
   "name": "f_7450",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29856,
   "name": "f_74A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 29936,
   "name": "f_74F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30016,
   "name": "f_7540",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30096,
   "name": "f_7590",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30176,
   "name": "f_75E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30256,
   "name": "f_7630",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30336,
   "name": "f_7680",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30416,
   "name": "f_76D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30496,
   "name": "f_7720",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30656,
   "name": "f_77C0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 30712,
   "name": "f_77F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32232,
   "name": "f_7DE8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32248,
   "name": "f_7DF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32704,
   "name": "f_7FC0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32720,
   "name": "f_7FD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 32768,
   "name": "menu_select",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32839,
   "name": "b_8047",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32872,
   "name": "b_8068",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32895,
   "name": "b_807F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32918,
   "name": "b_8096",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32930,
   "name": "r_80A2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 32931,
   "name": "token_shop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32969,
   "name": "b_80C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33016,
   "name": "b_80F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33033,
   "name": "b_8109",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33124,
   "name": "r_8164",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33125,
   "name": "b_8165",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33135,
   "name": "b_816F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33145,
   "name": "b_8179",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33159,
   "name": "b_8187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33167,
   "name": "b_818F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33173,
   "name": "knockout_round_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33192,
   "name": "b_81A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33195,
   "name": "b_81AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33221,
   "name": "b_81C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33224,
   "name": "b_81C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33231,
   "name": "b_81CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33237,
   "name": "b_81D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33249,
   "name": "b_81E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33252,
   "name": "twoplayer_week_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33291,
   "name": "b_820B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33294,
   "name": "b_820E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33300,
   "name": "twoplayer_final",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33358,
   "name": "b_824E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33363,
   "name": "j_8253",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33370,
   "name": "league_over_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33401,
   "name": "knockout_won_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33429,
   "name": "knockout_lost_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33457,
   "name": "knockout_prematch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33493,
   "name": "b_82D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33501,
   "name": "r_82DD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33502,
   "name": "twoplayer_prematch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33530,
   "name": "b_82FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33558,
   "name": "b_8316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33570,
   "name": "league_prematch",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33598,
   "name": "b_833E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33626,
   "name": "b_835A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33638,
   "name": "prematch_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33659,
   "name": "prematch_messages",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33678,
   "name": "b_838E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33721,
   "name": "b_83B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33732,
   "name": "b_83C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33735,
   "name": "j_83C7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33738,
   "name": "prematch_wait",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33742,
   "name": "b_83CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33758,
   "name": "b_83DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33773,
   "name": "b_83ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33776,
   "name": "left_team_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33796,
   "name": "left_card_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33830,
   "name": "team_card_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33836,
   "name": "card_rows_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33850,
   "name": "b_843A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33852,
   "name": "b_843C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33878,
   "name": "right_team_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33891,
   "name": "right_card_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33918,
   "name": "opponent_card_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33939,
   "name": "b_8493",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33954,
   "name": "team_line_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33971,
   "name": "b_84B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33983,
   "name": "b_84BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34005,
   "name": "b_84D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34009,
   "name": "b_84D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34016,
   "name": "b_84E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34027,
   "name": "b_84EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34034,
   "name": "b_84F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34048,
   "name": "b_8500",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34073,
   "name": "league_week_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34089,
   "name": "j_8529",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34101,
   "name": "b_8535",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34148,
   "name": "b_8564",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34202,
   "name": "b_859A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34205,
   "name": "j_859D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34261,
   "name": "r_85D5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34262,
   "name": "league_table_screen",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34278,
   "name": "b_85E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34283,
   "name": "j_85EB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34301,
   "name": "b_85FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34324,
   "name": "b_8614",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34338,
   "name": "b_8622",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34350,
   "name": "b_862E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34362,
   "name": "b_863A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34374,
   "name": "b_8646",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34388,
   "name": "table_row_copy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34390,
   "name": "b_8656",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34399,
   "name": "table_frame_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34408,
   "name": "b_8668",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34429,
   "name": "b_867D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34431,
   "name": "b_867F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34449,
   "name": "b_8691",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34493,
   "name": "b_86BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34495,
   "name": "b_86BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34515,
   "name": "irq_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34555,
   "name": "b_86FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34563,
   "name": "irq_return",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34564,
   "name": "irq_slot_run",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34616,
   "name": "b_8738",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34629,
   "name": "irq_slot_play_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34637,
   "name": "prot_eor_a_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34640,
   "name": "prot_eor_b_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34650,
   "name": "prot_lda_a_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34653,
   "name": "prot_cmp_a_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34660,
   "name": "b_8764",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34667,
   "name": "b_876B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34689,
   "name": "irq_slot_panel",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34728,
   "name": "b_87A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34761,
   "name": "r_87C9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34762,
   "name": "irq_slot_menu_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34768,
   "name": "irq_slot_none",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34769,
   "name": "irq_slot_shop_sprites",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34798,
   "name": "b_87EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34823,
   "name": "b_8807",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34839,
   "name": "b_8817",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34845,
   "name": "irq_slot_shop_row",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34849,
   "name": "b_8821",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34926,
   "name": "sticks_read",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34961,
   "name": "keys_read",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34973,
   "name": "b_889D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35006,
   "name": "r_88BE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35007,
   "name": "screen_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35018,
   "name": "screen_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35029,
   "name": "slot_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35035,
   "name": "frame_work",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35059,
   "name": "b_88F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35065,
   "name": "r_88F9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35066,
   "name": "colours_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35076,
   "name": "colours_load",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35095,
   "name": "sprite_block_load",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35097,
   "name": "b_8919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35159,
   "name": "b_8957",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35176,
   "name": "irq_slot_multiplex",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35188,
   "name": "b_8974",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35210,
   "name": "b_898A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35229,
   "name": "b_899D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35246,
   "name": "b_89AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35262,
   "name": "b_89BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35266,
   "name": "b_89C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35280,
   "name": "sprite_assign",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35368,
   "name": "sprites_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35407,
   "name": "b_8A4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35436,
   "name": "b_8A6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35444,
   "name": "camera_follow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35468,
   "name": "b_8A8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35470,
   "name": "b_8A8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35500,
   "name": "b_8AAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35506,
   "name": "r_8AB2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35507,
   "name": "object_screen_pos",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35533,
   "name": "b_8ACD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35549,
   "name": "sprites_sort",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35556,
   "name": "b_8AE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35570,
   "name": "b_8AF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35579,
   "name": "b_8AFB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35595,
   "name": "player_frame_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35621,
   "name": "tune_play_fade",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35631,
   "name": "tune_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35660,
   "name": "music_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35679,
   "name": "music_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35690,
   "name": "b_8B6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35711,
   "name": "r_8B7F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35712,
   "name": "sound_play",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35743,
   "name": "b_8B9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35745,
   "name": "b_8BA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35756,
   "name": "b_8BAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35768,
   "name": "dome_bounce",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35778,
   "name": "b_8BC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35849,
   "name": "b_8C09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35855,
   "name": "b_8C0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35867,
   "name": "b_8C1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35879,
   "name": "b_8C27",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35882,
   "name": "b_8C2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35907,
   "name": "b_8C43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35919,
   "name": "b_8C4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35932,
   "name": "b_8C5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35944,
   "name": "b_8C68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35948,
   "name": "b_8C6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35952,
   "name": "stamina_meters",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35957,
   "name": "b_8C75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35974,
   "name": "b_8C86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35990,
   "name": "b_8C96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36022,
   "name": "b_8CB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36024,
   "name": "b_8CB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36033,
   "name": "marker_facing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36045,
   "name": "b_8CCD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36059,
   "name": "b_8CDB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36065,
   "name": "b_8CE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36068,
   "name": "direction_to",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36105,
   "name": "b_8D09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36121,
   "name": "b_8D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36152,
   "name": "b_8D38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36168,
   "name": "b_8D48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36171,
   "name": "b_8D4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36174,
   "name": "b_8D4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36177,
   "name": "b_8D51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36180,
   "name": "dx_get",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36198,
   "name": "dx_negate",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36212,
   "name": "dy_vs_half_dx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36232,
   "name": "half_dy_vs_dx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36246,
   "name": "list_min",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36262,
   "name": "b_8DA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36270,
   "name": "b_8DAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36276,
   "name": "zone_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36290,
   "name": "b_8DC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36295,
   "name": "roles_swap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36309,
   "name": "r_8DD5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36310,
   "name": "tackles_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36326,
   "name": "b_8DE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36351,
   "name": "b_8DFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36377,
   "name": "b_8E19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36383,
   "name": "b_8E1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36396,
   "name": "b_8E2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36399,
   "name": "b_8E2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36410,
   "name": "b_8E3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36420,
   "name": "b_8E44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36446,
   "name": "b_8E5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36449,
   "name": "b_8E61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36458,
   "name": "player_pos_undo",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36483,
   "name": "player_bump",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36539,
   "name": "r_8EBB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36540,
   "name": "b_8EBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36585,
   "name": "b_8EE9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36591,
   "name": "b_8EEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36596,
   "name": "r_8EF4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36597,
   "name": "tackle_resolve",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36623,
   "name": "b_8F0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36633,
   "name": "b_8F19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36673,
   "name": "b_8F41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36676,
   "name": "b_8F44",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36683,
   "name": "b_8F4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36712,
   "name": "b_8F68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36752,
   "name": "b_8F90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36771,
   "name": "b_8FA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36778,
   "name": "b_8FAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36843,
   "name": "r_8FEB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36844,
   "name": "j_8FEC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36870,
   "name": "j_9006",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36890,
   "name": "b_901A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36893,
   "name": "j_901D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36906,
   "name": "b_902A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36909,
   "name": "r_902D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36910,
   "name": "j_902E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36917,
   "name": "b_9035",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36936,
   "name": "b_9048",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36945,
   "name": "j_9051",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36988,
   "name": "b_907C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36994,
   "name": "b_9082",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37002,
   "name": "stamina_drain",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37013,
   "name": "b_9095",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37023,
   "name": "stamina_drain_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37034,
   "name": "b_90AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37044,
   "name": "throw_speed_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37064,
   "name": "pitch_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37155,
   "name": "play_sprites_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37191,
   "name": "play_sprites_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37207,
   "name": "j_9157",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37209,
   "name": "b_9159",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37211,
   "name": "b_915B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37226,
   "name": "play_sprites_in",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37245,
   "name": "pitch_map_build",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37255,
   "name": "b_9187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37257,
   "name": "b_9189",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37272,
   "name": "b_9198",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37290,
   "name": "b_91AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37301,
   "name": "block_put",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37329,
   "name": "b_91D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37332,
   "name": "b_91D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37353,
   "name": "panel_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37360,
   "name": "scores_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37362,
   "name": "b_91F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37401,
   "name": "panel_rows",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37406,
   "name": "b_921E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37441,
   "name": "domes_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37450,
   "name": "b_924A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37516,
   "name": "scroll_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37522,
   "name": "scroll_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37535,
   "name": "b_929F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37555,
   "name": "j_92B3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37559,
   "name": "scroll_row",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37570,
   "name": "b_92C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37572,
   "name": "scroll_fine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37584,
   "name": "screen_flip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37598,
   "name": "map_copy_7400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37732,
   "name": "b_9364",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37733,
   "name": "map_src_7400_0_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37734,
   "name": "map_src_7400_0_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37739,
   "name": "map_src_7400_1_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37740,
   "name": "map_src_7400_1_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37745,
   "name": "map_src_7400_2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37746,
   "name": "map_src_7400_2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37751,
   "name": "map_src_7400_3_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37752,
   "name": "map_src_7400_3_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37757,
   "name": "map_src_7400_4_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37758,
   "name": "map_src_7400_4_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37763,
   "name": "map_src_7400_5_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37764,
   "name": "map_src_7400_5_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37769,
   "name": "map_src_7400_6_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37770,
   "name": "map_src_7400_6_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37775,
   "name": "map_src_7400_7_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37776,
   "name": "map_src_7400_7_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37781,
   "name": "map_src_7400_8_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37782,
   "name": "map_src_7400_8_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37787,
   "name": "map_src_7400_9_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37788,
   "name": "map_src_7400_9_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37793,
   "name": "map_src_7400_10_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37794,
   "name": "map_src_7400_10_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37802,
   "name": "map_copy_6C00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37936,
   "name": "b_9430",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37937,
   "name": "map_src_6C00_0_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37938,
   "name": "map_src_6C00_0_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37943,
   "name": "map_src_6C00_1_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37944,
   "name": "map_src_6C00_1_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37949,
   "name": "map_src_6C00_2_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37950,
   "name": "map_src_6C00_2_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37955,
   "name": "map_src_6C00_3_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37956,
   "name": "map_src_6C00_3_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37961,
   "name": "map_src_6C00_4_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37962,
   "name": "map_src_6C00_4_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37967,
   "name": "map_src_6C00_5_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37968,
   "name": "map_src_6C00_5_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37973,
   "name": "map_src_6C00_6_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37974,
   "name": "map_src_6C00_6_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37979,
   "name": "map_src_6C00_7_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37980,
   "name": "map_src_6C00_7_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37985,
   "name": "map_src_6C00_8_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37986,
   "name": "map_src_6C00_8_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37991,
   "name": "map_src_6C00_9_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37992,
   "name": "map_src_6C00_9_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37997,
   "name": "map_src_6C00_10_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37998,
   "name": "map_src_6C00_10_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 38006,
   "name": "random_range",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38024,
   "name": "b_9488",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38032,
   "name": "b_9490",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38036,
   "name": "random_nybble_hi",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38046,
   "name": "random_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38066,
   "name": "io_in",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38071,
   "name": "io_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38076,
   "name": "jump_06",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38079,
   "name": "ptr12_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38091,
   "name": "ptr14_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38103,
   "name": "number_digits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38105,
   "name": "b_94D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38110,
   "name": "b_94DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38136,
   "name": "b_94F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38161,
   "name": "number_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38169,
   "name": "b_9519",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38183,
   "name": "table_row_addr",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38194,
   "name": "b_9532",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38203,
   "name": "points_add_goals",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38207,
   "name": "b_953F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38215,
   "name": "r_9547",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38216,
   "name": "points_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38232,
   "name": "goals_for_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38248,
   "name": "goals_against_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38264,
   "name": "block_copy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38288,
   "name": "b_9590",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38303,
   "name": "panel_copy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38309,
   "name": "colour_fill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38316,
   "name": "b_95AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38335,
   "name": "box_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38361,
   "name": "b_95D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38365,
   "name": "b_95DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38388,
   "name": "text_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38403,
   "name": "b_9603",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38405,
   "name": "b_9605",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38430,
   "name": "j_961E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38472,
   "name": "b_9648",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38477,
   "name": "text_next_char",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38498,
   "name": "b_9662",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38505,
   "name": "nybble_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38543,
   "name": "b_968F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38562,
   "name": "glyph_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38572,
   "name": "b_96AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38605,
   "name": "b_96CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38620,
   "name": "card_text_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38645,
   "name": "b_96F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38647,
   "name": "b_96F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38673,
   "name": "team_panel_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38684,
   "name": "b_971C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38686,
   "name": "b_971E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38714,
   "name": "panel_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38772,
   "name": "b_9774",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38776,
   "name": "b_9778",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38783,
   "name": "b_977F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38795,
   "name": "b_978B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38814,
   "name": "panel_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38829,
   "name": "b_97AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38833,
   "name": "b_97B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38855,
   "name": "b_97C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38877,
   "name": "panel_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38897,
   "name": "b_97F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38899,
   "name": "b_97F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38911,
   "name": "b_97FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38916,
   "name": "b_9804",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38943,
   "name": "panel_face_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39012,
   "name": "face_cells",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39024,
   "name": "b_9870",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39028,
   "name": "b_9874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39035,
   "name": "b_987B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39047,
   "name": "b_9887",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39063,
   "name": "face_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39075,
   "name": "b_98A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39079,
   "name": "b_98A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39101,
   "name": "b_98BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39123,
   "name": "mask_bit_next",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39150,
   "name": "b_98EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39152,
   "name": "panel_ptrs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39183,
   "name": "face_ptrs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39212,
   "name": "menu_bar_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39214,
   "name": "b_992E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39226,
   "name": "shop_cursor_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39234,
   "name": "b_9942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39242,
   "name": "league_record",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39317,
   "name": "b_9995",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39348,
   "name": "b_99B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39365,
   "name": "j_99C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39384,
   "name": "random_win_score",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39407,
   "name": "tiles_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39418,
   "name": "tile_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39508,
   "name": "b_9A54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39528,
   "name": "b_9A68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39538,
   "name": "r_9A72",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39539,
   "name": "tile_token",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39553,
   "name": "tile_freeze",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39563,
   "name": "tile_slow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39573,
   "name": "tile_protect",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39583,
   "name": "tile_ball_tackles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39593,
   "name": "tile_reverse",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39603,
   "name": "tile_countdown",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 39645,
   "name": "tile_stamina_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39660,
   "name": "b_9AEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39664,
   "name": "b_9AF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39676,
   "name": "b_9AFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39684,
   "name": "tile_stamina_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39693,
   "name": "b_9B0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39695,
   "name": "b_9B0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39705,
   "name": "b_9B19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39713,
   "name": "tile_get_ball",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39725,
   "name": "b_9B2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39733,
   "name": "b_9B35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39743,
   "name": "j_9B3F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39754,
   "name": "r_9B4A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39755,
   "name": "countdown_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39779,
   "name": "b_9B63",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39790,
   "name": "players_update",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39842,
   "name": "b_9BA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39845,
   "name": "b_9BA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39848,
   "name": "b_9BA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39864,
   "name": "b_9BB8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39908,
   "name": "j_9BE4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39919,
   "name": "b_9BEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39925,
   "name": "b_9BF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39952,
   "name": "b_9C10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39957,
   "name": "b_9C15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39979,
   "name": "b_9C2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40000,
   "name": "side0_control",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40040,
   "name": "r_9C68",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40041,
   "name": "side1_control",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40083,
   "name": "b_9C93",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40091,
   "name": "b_9C9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40110,
   "name": "b_9CAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40124,
   "name": "b_9CBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40143,
   "name": "b_9CCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40153,
   "name": "b_9CD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40176,
   "name": "b_9CF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40200,
   "name": "b_9D08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40217,
   "name": "b_9D19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40235,
   "name": "b_9D2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40248,
   "name": "b_9D38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40251,
   "name": "j_9D3B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40268,
   "name": "j_9D4C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40288,
   "name": "b_9D60",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40291,
   "name": "j_9D63",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40362,
   "name": "r_9DAA",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40363,
   "name": "players_ai",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40365,
   "name": "b_9DAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40388,
   "name": "j_9DC4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40410,
   "name": "b_9DDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40453,
   "name": "b_9E05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40456,
   "name": "j_9E08",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40460,
   "name": "b_9E0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40470,
   "name": "b_9E16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40473,
   "name": "b_9E19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40477,
   "name": "side0_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40487,
   "name": "side1_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40497,
   "name": "side0_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40507,
   "name": "side1_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40517,
   "name": "player_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40581,
   "name": "b_9E85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40591,
   "name": "b_9E8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40611,
   "name": "b_9EA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40614,
   "name": "b_9EA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40620,
   "name": "b_9EAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40642,
   "name": "b_9EC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40658,
   "name": "b_9ED2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40662,
   "name": "b_9ED6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40668,
   "name": "b_9EDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40680,
   "name": "b_9EE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40684,
   "name": "b_9EEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40694,
   "name": "player_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40709,
   "name": "b_9F05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40715,
   "name": "b_9F0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40727,
   "name": "b_9F17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40737,
   "name": "b_9F21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40787,
   "name": "b_9F53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40810,
   "name": "b_9F6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40833,
   "name": "b_9F81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40856,
   "name": "player_dir_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40876,
   "name": "b_9FAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40881,
   "name": "b_9FB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40907,
   "name": "b_9FCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40922,
   "name": "b_9FDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40926,
   "name": "b_9FDE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40929,
   "name": "b_9FE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40939,
   "name": "b_9FEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40945,
   "name": "b_9FF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40967,
   "name": "b_A007",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40976,
   "name": "b_A010",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41006,
   "name": "j_A02E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41042,
   "name": "r_A052",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41043,
   "name": "ball_throw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41121,
   "name": "action_run",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41133,
   "name": "r_A0AD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41134,
   "name": "action_set_sound14",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41143,
   "name": "action_set_sound6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41152,
   "name": "action_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41159,
   "name": "action_set_now",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41229,
   "name": "b_A10D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41237,
   "name": "r_A115",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41238,
   "name": "ai_keeper_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41246,
   "name": "b_A11E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41274,
   "name": "b_A13A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41288,
   "name": "b_A148",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41297,
   "name": "b_A151",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41306,
   "name": "j_A15A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41318,
   "name": "j_A166",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41320,
   "name": "b_A168",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41335,
   "name": "b_A177",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41341,
   "name": "b_A17D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41345,
   "name": "b_A181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41354,
   "name": "b_A18A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41357,
   "name": "b_A18D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41389,
   "name": "b_A1AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41395,
   "name": "j_A1B3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41410,
   "name": "b_A1C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41432,
   "name": "b_A1D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41438,
   "name": "j_A1DE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41451,
   "name": "b_A1EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41466,
   "name": "b_A1FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41470,
   "name": "b_A1FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41476,
   "name": "j_A204",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41515,
   "name": "b_A22B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41540,
   "name": "b_A244",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41546,
   "name": "j_A24A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41565,
   "name": "ai_side0_role1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41597,
   "name": "b_A27D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41614,
   "name": "b_A28E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41655,
   "name": "ai_side0_role2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41686,
   "name": "b_A2D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41705,
   "name": "b_A2E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41737,
   "name": "ai_side0_role3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41778,
   "name": "b_A332",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41781,
   "name": "b_A335",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41800,
   "name": "b_A348",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41832,
   "name": "b_A368",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41873,
   "name": "ai_keeper_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41881,
   "name": "b_A399",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41923,
   "name": "b_A3C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41926,
   "name": "b_A3C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41944,
   "name": "b_A3D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41972,
   "name": "j_A3F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41983,
   "name": "j_A3FF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41988,
   "name": "b_A404",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42013,
   "name": "b_A41D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42039,
   "name": "b_A437",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42042,
   "name": "b_A43A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42061,
   "name": "b_A44D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42067,
   "name": "j_A453",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42098,
   "name": "b_A472",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42104,
   "name": "b_A478",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42135,
   "name": "b_A497",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42141,
   "name": "b_A49D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42151,
   "name": "b_A4A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42211,
   "name": "b_A4E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42214,
   "name": "b_A4E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42217,
   "name": "b_A4E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42230,
   "name": "j_A4F6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42243,
   "name": "b_A503",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42258,
   "name": "b_A512",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42291,
   "name": "b_A533",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42304,
   "name": "b_A540",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42311,
   "name": "b_A547",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42318,
   "name": "b_A54E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42375,
   "name": "b_A587",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42401,
   "name": "b_A5A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42446,
   "name": "j_A5CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42452,
   "name": "j_A5D4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42458,
   "name": "j_A5DA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 42466,
   "name": "b_A5E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42498,
   "name": "b_A602",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42501,
   "name": "b_A605",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42504,
   "name": "b_A608",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42514,
   "name": "b_A612",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42517,
   "name": "b_A615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42533,
   "name": "b_A625",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42536,
   "name": "ai_side1_role6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42570,
   "name": "b_A64A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42627,
   "name": "ai_side1_role7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42658,
   "name": "b_A6A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42677,
   "name": "b_A6B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42725,
   "name": "ai_side1_role8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42766,
   "name": "b_A70E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42769,
   "name": "b_A711",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42788,
   "name": "b_A724",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42820,
   "name": "b_A744",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42877,
   "name": "stick_reverse_side1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42883,
   "name": "b_A783",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42893,
   "name": "r_A78D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42894,
   "name": "stick_reverse_side0",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42901,
   "name": "keeper_target_left",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42928,
   "name": "b_A7B0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42939,
   "name": "keeper_target_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42966,
   "name": "b_A7D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42977,
   "name": "x_vs_64",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42989,
   "name": "x_vs_C8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43001,
   "name": "pos_to_37",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43022,
   "name": "target_get",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43043,
   "name": "target_ball",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43064,
   "name": "target_put",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43085,
   "name": "zone_index",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43112,
   "name": "target_x_scale",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43129,
   "name": "target_y_scale",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43146,
   "name": "y_vs",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43160,
   "name": "ai_side1_target",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43180,
   "name": "b_A8AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43238,
   "name": "pass_target_find",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43259,
   "name": "r_A8FB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43260,
   "name": "role_find",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43262,
   "name": "b_A8FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43272,
   "name": "r_A908",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43273,
   "name": "ball_landing",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43284,
   "name": "b_A914",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43317,
   "name": "b_A935",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43340,
   "name": "tile_place",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43360,
   "name": "b_A960",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43388,
   "name": "b_A97C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43411,
   "name": "r_A993",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43412,
   "name": "tile_choose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43421,
   "name": "b_A99D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43433,
   "name": "b_A9A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43449,
   "name": "b_A9B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43454,
   "name": "j_A9BE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 43463,
   "name": "b_A9C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43488,
   "name": "ai_shot_choose",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43514,
   "name": "b_A9FA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43562,
   "name": "b_AA2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43595,
   "name": "b_AA4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43613,
   "name": "r_AA5D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43614,
   "name": "prematch_screen_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43627,
   "name": "b_AA6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43656,
   "name": "b_AA88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43660,
   "name": "b_AA8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43703,
   "name": "title_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43713,
   "name": "b_AAC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43748,
   "name": "b_AAE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43763,
   "name": "r_AAF3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43764,
   "name": "screen_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43778,
   "name": "b_AB02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43804,
   "name": "b_AB1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43816,
   "name": "screen_off_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43823,
   "name": "shop_effect_index",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43839,
   "name": "b_AB3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43845,
   "name": "menu_text_cycle",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43866,
   "name": "r_AB5A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43867,
   "name": "league_rank",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43869,
   "name": "b_AB5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43887,
   "name": "b_AB6F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43897,
   "name": "b_AB79",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43931,
   "name": "b_AB9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43948,
   "name": "table_row_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43953,
   "name": "league_row_text",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43967,
   "name": "b_ABBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43975,
   "name": "b_ABC7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44000,
   "name": "b_ABE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44151,
   "name": "b_AC77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44155,
   "name": "team_text_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44175,
   "name": "b_AC8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44180,
   "name": "b_AC94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44192,
   "name": "b_ACA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44204,
   "name": "b_ACAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44218,
   "name": "b_ACBA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44234,
   "name": "b_ACCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44241,
   "name": "b_ACD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44252,
   "name": "b_ACDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44262,
   "name": "attributes_text_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44281,
   "name": "b_ACF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44323,
   "name": "b_AD23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44338,
   "name": "shop_clear_bought",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44342,
   "name": "b_AD36",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44349,
   "name": "shop_list_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44367,
   "name": "b_AD4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44440,
   "name": "b_AD98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44461,
   "name": "b_ADAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44482,
   "name": "r_ADC2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44483,
   "name": "b_ADC3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44502,
   "name": "token_bar_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44518,
   "name": "b_ADE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44522,
   "name": "b_ADEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44536,
   "name": "b_ADF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44548,
   "name": "b_AE04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44572,
   "name": "b_AE1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44607,
   "name": "shop_bribe_official",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44613,
   "name": "shop_extra_stamina",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44623,
   "name": "shop_extra_power",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44633,
   "name": "shop_extra_skill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44643,
   "name": "shop_reduce_stamina",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44649,
   "name": "shop_reduce_power",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44655,
   "name": "shop_reduce_skill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44661,
   "name": "shop_bribe_trainer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44667,
   "name": "shop_bribe_ref",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44673,
   "name": "shop_bribe_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44692,
   "name": "shop_reduce_stamina_now",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44702,
   "name": "shop_reduce_power_now",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44706,
   "name": "shop_reduce_skill_now",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44715,
   "name": "shop_none",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44716,
   "name": "shop_check_official",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44720,
   "name": "shop_check_stamina",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44729,
   "name": "shop_check_power",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44738,
   "name": "shop_check_skill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44747,
   "name": "shop_check_timer",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44756,
   "name": "shop_check_opp_stamina",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44765,
   "name": "shop_check_opp_power",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44774,
   "name": "shop_check_opp_skill",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44783,
   "name": "shop_allowed",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 44786,
   "name": "shop_refused",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 44789,
   "name": "attributes_handicap",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44829,
   "name": "handicap_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44844,
   "name": "menu_screen_init",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44867,
   "name": "b_AF43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44871,
   "name": "b_AF47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44905,
   "name": "b_AF69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44934,
   "name": "b_AF86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44962,
   "name": "b_AFA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45003,
   "name": "menu_inner_fill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45013,
   "name": "b_AFD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45017,
   "name": "b_AFD9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45031,
   "name": "menu_frame_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45035,
   "name": "b_AFEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45060,
   "name": "b_B004",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45064,
   "name": "b_B008",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45112,
   "name": "pair_distances",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45120,
   "name": "b_B040",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45143,
   "name": "b_B057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45167,
   "name": "pair_dx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45199,
   "name": "b_B08F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45208,
   "name": "b_B098",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45213,
   "name": "pair_dy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45245,
   "name": "b_B0BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45254,
   "name": "b_B0C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45259,
   "name": "distance_approx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45281,
   "name": "b_B0E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45330,
   "name": "b_B112",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45332,
   "name": "b_B114",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45340,
   "name": "abs_dx",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45356,
   "name": "r_B12C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45357,
   "name": "abs_dy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45373,
   "name": "r_B13D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45374,
   "name": "panels_recolour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45376,
   "name": "b_B140",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45383,
   "name": "panel_recolour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45403,
   "name": "b_B15B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45405,
   "name": "b_B15D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45417,
   "name": "b_B169",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45433,
   "name": "wait_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45437,
   "name": "b_B17D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45442,
   "name": "wait_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45451,
   "name": "wait_fire_release",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45461,
   "name": "box_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45482,
   "name": "box_fill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45519,
   "name": "b_B1CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45523,
   "name": "b_B1D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45541,
   "name": "box_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45628,
   "name": "box_hline",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45665,
   "name": "box_vline",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45667,
   "name": "b_B263",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45691,
   "name": "logo_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45709,
   "name": "b_B28D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45711,
   "name": "b_B28F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45753,
   "name": "launcher_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45771,
   "name": "b_B2CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45776,
   "name": "b_B2D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45785,
   "name": "b_B2D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45804,
   "name": "b_B2EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45814,
   "name": "r_B2F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45815,
   "name": "holder_markers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45817,
   "name": "b_B2F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45830,
   "name": "b_B306",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45834,
   "name": "b_B30A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45844,
   "name": "b_B314",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45846,
   "name": "b_B316",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45858,
   "name": "b_B322",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45865,
   "name": "file7_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45867,
   "name": "b_B32B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45901,
   "name": "b_B34D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45905,
   "name": "pitch_top_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46145,
   "name": "pitch_bottom_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46265,
   "name": "pitch_wall_left_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46390,
   "name": "pitch_wall_left_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46515,
   "name": "pitch_wall_left_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46635,
   "name": "pitch_wall_right_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46760,
   "name": "pitch_wall_right_mid",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46885,
   "name": "pitch_wall_right_low",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47005,
   "name": "team_anim_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47170,
   "name": "team_anim_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47290,
   "name": "team_anim_c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47455,
   "name": "team_anim_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47465,
   "name": "team_anim_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47475,
   "name": "pair_row_start",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47510,
   "name": "tackle_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47574,
   "name": "human_stamina",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47577,
   "name": "human_power",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47580,
   "name": "human_tackle",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47583,
   "name": "template_figure_3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47594,
   "name": "template_aim_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47605,
   "name": "template_keeper_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47616,
   "name": "template_fire_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47627,
   "name": "template_stamina",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47638,
   "name": "template_power",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47649,
   "name": "template_tackle",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47660,
   "name": "player_marker",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47670,
   "name": "text_alphabet",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47713,
   "name": "speed_step_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47793,
   "name": "speed_step_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47873,
   "name": "ball_feet_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47881,
   "name": "ball_feet_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47889,
   "name": "ball_feet_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47897,
   "name": "ball_feet_y_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47905,
   "name": "tile_pick",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47916,
   "name": "launcher_flash_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47918,
   "name": "launcher_flash_colour",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47920,
   "name": "action_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47933,
   "name": "action_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47946,
   "name": "action_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47959,
   "name": "action_next",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47972,
   "name": "action_flags",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47985,
   "name": "effect_sign",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47987,
   "name": "stick_mirror",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48003,
   "name": "shop_effect_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48033,
   "name": "shop_effect_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48063,
   "name": "tile_effect_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48074,
   "name": "tile_effect_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48085,
   "name": "action_list_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48098,
   "name": "action_list_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48111,
   "name": "zone_of_column",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48131,
   "name": "action_lists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48464,
   "name": "game_save",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48496,
   "name": "game_load",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48544,
   "name": "load_name_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48576,
   "name": "save_name_set",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48640,
   "name": "kernal_enter",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48651,
   "name": "b_BE0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48661,
   "name": "b_BE15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48800,
   "name": "kernal_leave",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48836,
   "name": "b_BEC4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48846,
   "name": "b_BECE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 49024,
   "name": "kept_zero_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49088,
   "name": "kept_low_page",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49112,
   "name": "kept_rs232",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49113,
   "name": "kept_stop_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49114,
   "name": "kept_stop_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49115,
   "name": "kept_sprites",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49116,
   "name": "kept_vic_irq",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49145,
   "name": "slot_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49146,
   "name": "slot_digits",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49149,
   "name": "save_name",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49151,
   "name": "name_digit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "ai_pos_x_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49296,
   "name": "ai_pos_y_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49472,
   "name": "ai_pos_x_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49648,
   "name": "ai_pos_y_c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49824,
   "name": "ai_pos_x_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49872,
   "name": "ai_pos_y_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49920,
   "name": "ai_target_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49968,
   "name": "ai_target_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50016,
   "name": "pic_verna",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51168,
   "name": "pic_lacata",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51720,
   "name": "pic_draco",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52040,
   "name": "pic_versus",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52480,
   "name": "face_base",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52992,
   "name": "face_antlia",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53152,
   "name": "face_tucana",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53432,
   "name": "face_mira",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53672,
   "name": "face_volans",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53872,
   "name": "face_castor",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 53968,
   "name": "face_pavo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54288,
   "name": "face_persus",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54592,
   "name": "face_vela",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 54920,
   "name": "face_dorado",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55048,
   "name": "pic_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55120,
   "name": "face_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55200,
   "name": "tile_glyphs_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55296,
   "name": "colour_ram",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55376,
   "name": "tile_glyphs_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55430,
   "name": "colour_ram_box",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55552,
   "name": "colour_ram_p2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55752,
   "name": "menu_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55808,
   "name": "colour_ram_p3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55816,
   "name": "mark_colour_1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55832,
   "name": "menu_left",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55855,
   "name": "mark_colour_2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55856,
   "name": "mark_colour_3",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55868,
   "name": "menu_right",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55895,
   "name": "mark_colour_4",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55904,
   "name": "menu_tile",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 55913,
   "name": "row_text",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55914,
   "name": "row_text_name",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55936,
   "name": "prematch_colour_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55945,
   "name": "row_arrow",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 55953,
   "name": "row_blank",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 55993,
   "name": "table_row_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56033,
   "name": "table_bottom",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56040,
   "name": "prematch_colour_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56064,
   "name": "colour_ram_p4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56073,
   "name": "table_head_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56113,
   "name": "table_head_1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56136,
   "name": "panel_above_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56153,
   "name": "table_colours_copy",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56176,
   "name": "panel_colour_ram",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56193,
   "name": "floor_row_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56216,
   "name": "panel_below_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56223,
   "name": "floor_row_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56253,
   "name": "launcher_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56289,
   "name": "dome_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56305,
   "name": "floor_piece_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56309,
   "name": "floor_piece_b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56313,
   "name": "tile_block",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56317,
   "name": "launcher_rise_a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56349,
   "name": "launcher_rise_b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56381,
   "name": "tile_rows_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56397,
   "name": "tile_rows_left_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56413,
   "name": "tile_rows_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56429,
   "name": "tile_rows_right_2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56445,
   "name": "panel_pattern",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 56477,
   "name": "token_lit",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56509,
   "name": "token_dark",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56541,
   "name": "text_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 56869,
   "name": "card_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 57173,
   "name": "play_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59157,
   "name": "menu_font",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 60429,
   "name": "panel_charset",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61269,
   "name": "panel_copy_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61317,
   "name": "pic_colour_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61389,
   "name": "face_colour_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61469,
   "name": "pic_ram_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61541,
   "name": "face_ram_masks",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61621,
   "name": "pic_colours",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 61850,
   "name": "face_colours_src",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62019,
   "name": "pair_first",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62064,
   "name": "pair_second",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62096,
   "name": "pair_cell_early",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62109,
   "name": "pair_cell",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 62154,
   "name": "pair_cell_mirror",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 62208,
   "name": "f_F300",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62288,
   "name": "f_F350",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62368,
   "name": "f_F3A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62448,
   "name": "f_F3F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62528,
   "name": "f_F440",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62608,
   "name": "f_F490",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62629,
   "name": "s_F4A5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 62688,
   "name": "f_F4E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62768,
   "name": "f_F530",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62848,
   "name": "f_F580",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62928,
   "name": "f_F5D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 62957,
   "name": "s_F5ED",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 63008,
   "name": "f_F620",
   "type": "Field",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The 6510's own data direction register; the disassembler's name for address 0 and the start of zero page."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The processor port: which of RAM, the chips, the KERNAL and BASIC the processor sees. $30 (all RAM) through the game, $0D in the raster interrupt and between io_in and io_out, $36 for the KERNAL's save and load."
  },
  {
   "address": 2,
   "type": "line",
   "text": "Two bytes: the address irq_slot_run jumps through, the current slot's handler. The save code keeps $02-$0D at $BFC0 while the KERNAL runs."
  },
  {
   "address": 3,
   "type": "line",
   "text": "High byte of the slot handler's address."
  },
  {
   "address": 4,
   "type": "line",
   "text": "Two zero page bytes no routine was found to use; the save code keeps them with $02-$0D."
  },
  {
   "address": 6,
   "type": "line",
   "text": "Two bytes the game jumps through (jump_06): the chosen menu entry's handler, a computer player's role routine, a tile's effect, the screen-copy routine for the scroll."
  },
  {
   "address": 7,
   "type": "line",
   "text": "High byte of the jump address."
  },
  {
   "address": 8,
   "type": "line",
   "text": "The raster interrupt's current slot, 0-11: the line, video settings and handler come from the tables at $2C3A-$2C9F. keys_read flips it with $AA when the timer check fails."
  },
  {
   "address": 9,
   "type": "line",
   "text": "ORed into every slot's VIC control register 1: $10 shows the screen, 0 blanks it."
  },
  {
   "address": 10,
   "type": "line",
   "text": "ANDed with every slot's sprite-enable byte: $FF shows the sprites, 0 hides them."
  },
  {
   "address": 11,
   "type": "line",
   "text": "wait_frame sets it to 1 and waits for the interrupt to clear it. frame_work stores $2DD0 there, 0 on a genuine copy; anything else would keep wait_frame waiting for ever."
  },
  {
   "address": 12,
   "type": "line",
   "text": "Port 2's joystick, read each frame: 1 up, 2 down, 4 left, 8 right, $10 fire, ORed with $2DD0. Player 1, and the menus."
  },
  {
   "address": 13,
   "type": "line",
   "text": "Port 1's joystick, read each frame and EORed with $2468: player 2 in a two player game."
  },
  {
   "address": 15,
   "type": "line",
   "text": "Counts frames, one a raster interrupt pass of frame_work; the music fade reads it."
  },
  {
   "address": 16,
   "type": "line",
   "text": "Counts down once a frame: the menus' wait for a key, and repeat delays."
  },
  {
   "address": 17,
   "type": "line",
   "text": "Counts down once every 256 frames, about five seconds: the team choice gives up after six."
  },
  {
   "address": 18,
   "type": "line",
   "text": "A source pointer, two bytes, for the copy and drawing routines."
  },
  {
   "address": 19,
   "type": "line",
   "text": "High byte of the source pointer."
  },
  {
   "address": 20,
   "type": "line",
   "text": "A destination pointer, two bytes, for the copy and drawing routines (screen, bitmap or colour RAM)."
  },
  {
   "address": 21,
   "type": "line",
   "text": "High byte of the destination pointer."
  },
  {
   "address": 22,
   "type": "line",
   "text": "Two bytes: the packed string text_draw is reading."
  },
  {
   "address": 23,
   "type": "line",
   "text": "High byte of the packed string's address."
  },
  {
   "address": 24,
   "type": "line",
   "text": "A work byte for many routines: a loop counter, a row count, a pair index."
  },
  {
   "address": 25,
   "type": "line",
   "text": "A second work byte: a count, a colour, an OR mask."
  },
  {
   "address": 26,
   "type": "line",
   "text": "Two bytes: the glyph text_draw copies, in the font at $DCDD."
  },
  {
   "address": 27,
   "type": "line",
   "text": "High byte of the glyph's address."
  },
  {
   "address": 28,
   "type": "line",
   "text": "The multiplexer's next entry in the sorted object list $1E-$2D; sprites_place sets it to the number of objects above the panel."
  },
  {
   "address": 29,
   "type": "line",
   "text": "The multiplexer's position at the start of a pass, to tell whether a pass placed any sprite."
  },
  {
   "address": 30,
   "type": "line",
   "text": "Sixteen bytes, $1E-$2D: the objects (players 0-9, launcher 10-13, ball 15) in order of their height on screen, sorted each pass by sprites_sort for the multiplexer."
  },
  {
   "address": 31,
   "type": "line",
   "text": "The second entry of the sorted object list, which sprites_sort compares with the first."
  },
  {
   "address": 46,
   "type": "line",
   "text": "Two bytes: the pitch line at the top of the view, which the scroll follows: the followed object's y less $54, kept between 0 and $1A8 (camera_follow)."
  },
  {
   "address": 47,
   "type": "line",
   "text": "High byte of the camera's line."
  },
  {
   "address": 48,
   "type": "line",
   "text": "An object's line on screen, from object_screen_pos: its y less the view's top."
  },
  {
   "address": 49,
   "type": "line",
   "text": "High byte of the object's screen line: not 0 when it is off the view."
  },
  {
   "address": 50,
   "type": "line",
   "text": "Two bytes of the random generator's state, seeded $19, $63 at start-up; random_next shifts and mixes them, and the low byte is the number."
  },
  {
   "address": 51,
   "type": "line",
   "text": "High byte of the random generator's state."
  },
  {
   "address": 52,
   "type": "line",
   "text": "random_range keeps X here."
  },
  {
   "address": 53,
   "type": "line",
   "text": "random_range's lower limit."
  },
  {
   "address": 54,
   "type": "line",
   "text": "random_range's result, brought within the limits."
  },
  {
   "address": 55,
   "type": "line",
   "text": "The 16-bit position the direction routines start from: x at $37/$3B, y at $38/$3C; the target follows at $39/$3D and $3A/$3E, and the differences are left here."
  },
  {
   "address": 56,
   "type": "line",
   "text": "The start position's y low byte (high byte $3C)."
  },
  {
   "address": 57,
   "type": "line",
   "text": "The target's x low byte (high byte $3D): where a computer-run player is heading."
  },
  {
   "address": 58,
   "type": "line",
   "text": "The target's y low byte (high byte $3E)."
  },
  {
   "address": 59,
   "type": "line",
   "text": "High byte of the start position's x."
  },
  {
   "address": 60,
   "type": "line",
   "text": "High byte of the start position's y."
  },
  {
   "address": 61,
   "type": "line",
   "text": "High byte of the target's x."
  },
  {
   "address": 62,
   "type": "line",
   "text": "High byte of the target's y."
  },
  {
   "address": 63,
   "type": "line",
   "text": "A loop counter: blocks, rows, domes."
  },
  {
   "address": 64,
   "type": "line",
   "text": "A second loop counter: rows of a picture or a frame."
  },
  {
   "address": 65,
   "type": "line",
   "text": "The stick bits being acted on for the current player: the joystick for a human, the computer's choice for the rest (1 up, 2 down, 4 left, 8 right, $10 fire)."
  },
  {
   "address": 66,
   "type": "line",
   "text": "Two bytes: the mask list the face routines step through (mask_bit_next)."
  },
  {
   "address": 67,
   "type": "line",
   "text": "High byte of mask_ptr: the mask list's address for the picture and face copies (mask_bit_next); the team animation at $3E5A also uses $42/$43 as the address of the bitmap it draws to (team_picture_lo/hi)."
  },
  {
   "address": 68,
   "type": "line",
   "text": "Which of the two pitch screens is on show: 0 $6C00 or 1 $7400; screen_flip swaps it."
  },
  {
   "address": 69,
   "type": "line",
   "text": "The x difference between two objects (pair_distances, ball_distances, dome_bounce), held to $7F; or a point's x for distance_approx, which leaves the distance here."
  },
  {
   "address": 70,
   "type": "line",
   "text": "The y difference between two objects, held to $7F; or a point's y for distance_approx."
  },
  {
   "address": 71,
   "type": "line",
   "text": "High byte of the x difference, or the second point's x for distance_approx."
  },
  {
   "address": 72,
   "type": "line",
   "text": "High byte of the y difference, or the second point's y for distance_approx."
  },
  {
   "address": 73,
   "type": "line",
   "text": "A work counter: rows, cells, the tackle loop."
  },
  {
   "address": 74,
   "type": "line",
   "text": "The map row at the top of the screen last drawn; $FF forces scroll_update to draw the screen again (after a tile appears or goes)."
  },
  {
   "address": 75,
   "type": "line",
   "text": "1 holds the camera where it is (the launcher and the start of a match); 0 lets camera_follow move it."
  },
  {
   "address": 76,
   "type": "line",
   "text": "Set by pair_distances when it has worked out every pair's distance; tackles_check runs only then and clears it."
  },
  {
   "address": 77,
   "type": "line",
   "text": "Two bytes: the camera's line less $36, taken from each object's y to give its sprite's y."
  },
  {
   "address": 78,
   "type": "line",
   "text": "High byte of the sprite offset."
  },
  {
   "address": 79,
   "type": "line",
   "text": "Set when the sprite pointers and colours have changed; irq_slot_panel copies them to the hidden screen's pointers and clears it."
  },
  {
   "address": 80,
   "type": "line",
   "text": "The number of objects in view this pass, from sprites_place."
  },
  {
   "address": 81,
   "type": "line",
   "text": "sound_play keeps X here."
  },
  {
   "address": 82,
   "type": "line",
   "text": "sound_play keeps Y here."
  },
  {
   "address": 83,
   "type": "line",
   "text": "A flag for a tune playing over the match: sound_play would then play no effect, and kick-off would start tune 0. Nothing writes it after the start-up clears zero page, so it is always 0."
  },
  {
   "address": 84,
   "type": "line",
   "text": "Which half of a packed byte the string reader is on."
  },
  {
   "address": 85,
   "type": "line",
   "text": "F3, read each frame: quit the match, back to the menu from the prematch screens."
  },
  {
   "address": 86,
   "type": "line",
   "text": "RUN/STOP, read each frame: pause."
  },
  {
   "address": 87,
   "type": "line",
   "text": "F5, read each frame; nothing in the game reads it."
  },
  {
   "address": 88,
   "type": "line",
   "text": "A 16-bit work value, low byte (high byte $59): a y position for the keeper and the computer's shot, or a player's new y in player_step."
  },
  {
   "address": 89,
   "type": "line",
   "text": "High byte of the work value at $58."
  },
  {
   "address": 90,
   "type": "line",
   "text": "Two bytes: the x step for player_step, from the speed tables at $BA61."
  },
  {
   "address": 91,
   "type": "line",
   "text": "High byte of the x step (the sign)."
  },
  {
   "address": 92,
   "type": "line",
   "text": "The current side's fire counter (from $64 or $65, back there after player_move). It moves on only after a throw has started: a press with the ball throws at once (ball_throw) and then each pass with fire held adds one, while human_turn ($5F) is set, and at 5 the throw becomes a high one; $FF marks it done. A press without the ball leaves it at 0."
  },
  {
   "address": 93,
   "type": "line",
   "text": "The direction (0-7) player_dir_step moves the player in: from the stick, or his facing when he is turned away."
  },
  {
   "address": 94,
   "type": "line",
   "text": "Set when the controlled player has fire held without the ball: copied to $1EC0 or $1EC1, the side's edge in a tackle."
  },
  {
   "address": 95,
   "type": "line",
   "text": "1 while the two controlled players are being moved, 0 for the rest; fire acts only in the first."
  },
  {
   "address": 96,
   "type": "line",
   "text": "The side 0 player under control, 0-4: the one nearest the ball, or the one holding it. Starts at 4."
  },
  {
   "address": 97,
   "type": "line",
   "text": "The side 1 player under control, 5-9. Starts at 9."
  },
  {
   "address": 98,
   "type": "line",
   "text": "Counts passes of the match loop: the controlled players' flashing, the computer's timing."
  },
  {
   "address": 100,
   "type": "line",
   "text": "Side 0's fire counter, kept between passes (fire_count)."
  },
  {
   "address": 101,
   "type": "line",
   "text": "Side 1's fire counter."
  },
  {
   "address": 102,
   "type": "line",
   "text": "Steps once a pass: the offset tile_step reads the tile's patterns from, so the pattern rolls."
  },
  {
   "address": 103,
   "type": "line",
   "text": "Passes until the next tile appears; 0 while a tile is on the pitch; $FF none (taken, or removed for a goal)."
  },
  {
   "address": 104,
   "type": "line",
   "text": "The tile on the pitch: 0 a token, 1-10 the power-ups ($BB21 picks it)."
  },
  {
   "address": 105,
   "type": "line",
   "text": "The tile's column on the pitch grid, 2-12 (cells of 16 pixels)."
  },
  {
   "address": 106,
   "type": "line",
   "text": "The tile's row on the pitch grid, 2-30."
  },
  {
   "address": 107,
   "type": "line",
   "text": "Power-up P: the side that has it ($FF side 1, 1 side 0, 0 nobody); it protects that side's players from being knocked down."
  },
  {
   "address": 108,
   "type": "line",
   "text": "Power-up F: the opposing side's players stand still."
  },
  {
   "address": 109,
   "type": "line",
   "text": "Power-up R: the opposing side's players move one step slower."
  },
  {
   "address": 112,
   "type": "line",
   "text": "Power-up W: the ball becomes the electric one, and the opponents who touch it go down."
  },
  {
   "address": 113,
   "type": "line",
   "text": "Power-up J: the opposing side's stick is reversed."
  },
  {
   "address": 114,
   "type": "line",
   "text": "The music fade: added to the volume every 64 frames once $73 runs out; 0 no fade."
  },
  {
   "address": 115,
   "type": "line",
   "text": "Frames before the fade starts."
  },
  {
   "address": 116,
   "type": "line",
   "text": "Counts 112 passes down to the next step of the match clock."
  },
  {
   "address": 117,
   "type": "line",
   "text": "The time bar as drawn, 0-40: it fills at kick-off, then follows $76 down; full time when it is back to 0."
  },
  {
   "address": 118,
   "type": "line",
   "text": "The time left, in bars: 40 at the start, 13 for extra time, one off every 112 passes. The interrupt sets it to $FF when CIA 2's timer B is stopped, and a match then never ends."
  },
  {
   "address": 119,
   "type": "line",
   "text": "Passes left in the pause after a goal, 160 at the goal; kick-off at 0."
  },
  {
   "address": 120,
   "type": "line",
   "text": "Passes left in the pause at full time, 160; the match ends at 0."
  },
  {
   "address": 121,
   "type": "line",
   "text": "The number of entries in the menu on screen."
  },
  {
   "address": 122,
   "type": "line",
   "text": "Set when F3 quits a match: no shop and no result."
  },
  {
   "address": 123,
   "type": "line",
   "text": "Passes after a throw before anyone can pick the ball up."
  },
  {
   "address": 124,
   "type": "line",
   "text": "The slot the load is for: 0 league, 1 knockout, 2 two player."
  },
  {
   "address": 144,
   "type": "line",
   "text": "The KERNAL's status byte, and the start of $90-$C4, which the save code keeps at $BF80 while the KERNAL runs and puts back after."
  },
  {
   "address": 148,
   "type": "line",
   "text": "The KERNAL's flag for a byte waiting to go out on the serial bus; cleared before a save or load."
  },
  {
   "address": 149,
   "type": "line",
   "text": "The KERNAL's byte waiting to go out on the serial bus; cleared before a save or load."
  },
  {
   "address": 157,
   "type": "line",
   "text": "The KERNAL's message switch; 0, no messages."
  },
  {
   "address": 163,
   "type": "line",
   "text": "The KERNAL's serial end-of-data flag; cleared before a save or load."
  },
  {
   "address": 174,
   "type": "line",
   "text": "The KERNAL's end address for SAVE, low byte: the game sets $2000, one past the saved block."
  },
  {
   "address": 175,
   "type": "line",
   "text": "High byte of the save's end address."
  },
  {
   "address": 183,
   "type": "line",
   "text": "The KERNAL's file name length: 3 for a save (\"@:\" and the digit), 1 for a load."
  },
  {
   "address": 185,
   "type": "line",
   "text": "The KERNAL's secondary address: 1, so a load goes back to the address it was saved from."
  },
  {
   "address": 186,
   "type": "line",
   "text": "The KERNAL's device number: 8, the disk drive."
  },
  {
   "address": 187,
   "type": "line",
   "text": "The KERNAL's pointer to the file name: $BFFD for a save, $BFFF for a load."
  },
  {
   "address": 188,
   "type": "line",
   "text": "High byte of the file name's address."
  },
  {
   "address": 193,
   "type": "line",
   "text": "The KERNAL's start address for SAVE, low byte: the game sets $1C00."
  },
  {
   "address": 194,
   "type": "line",
   "text": "High byte of the save's start address."
  },
  {
   "address": 195,
   "type": "line",
   "text": "The KERNAL's load address, low byte: set to $1C00, though secondary address 1 makes the load use the file's own."
  },
  {
   "address": 196,
   "type": "line",
   "text": "High byte of the load address."
  },
  {
   "address": 240,
   "type": "line",
   "text": "Two bytes: music_init's pointer to each voice's order list in turn while it starts a tune, to fetch the list's first pattern address."
  },
  {
   "address": 241,
   "type": "line",
   "text": "High byte of music_init's order list pointer."
  },
  {
   "address": 512,
   "type": "line",
   "text": "The picture beside the SELECT GAME menu, an armoured player's legs, twelve rows of 96 bitmap bytes (twelve cells across, $0200-$067F) that logo_draw copies to the bitmap at $6840. The load leaves it at $6000-$64B1; file7_move moves it here, a page at a time, before the bitmap screen is first used. These are its first bytes."
  },
  {
   "address": 673,
   "type": "line",
   "text": "The KERNAL's RS-232 enable byte, which its disk routines look at. Here it is a byte of the menu picture, so kernal_enter keeps it at $BFD8 and clears it, and kernal_leave puts it back."
  },
  {
   "address": 768,
   "type": "line",
   "text": "The menu picture's second page, as file7_move writes it from $6100."
  },
  {
   "address": 808,
   "type": "line",
   "text": "The KERNAL's STOP vector, low byte, inside the menu picture: kernal_enter keeps it at $BFD9 and points the vector at $EB42 while the KERNAL runs, and kernal_leave puts the picture's byte back."
  },
  {
   "address": 809,
   "type": "line",
   "text": "The STOP vector's high byte, kept at $BFDA in the same way; then the rest of the picture's second page."
  },
  {
   "address": 1024,
   "type": "line",
   "text": "The menu picture's third page, as file7_move writes it from $6200."
  },
  {
   "address": 1280,
   "type": "line",
   "text": "The menu picture's fourth page, from $6300."
  },
  {
   "address": 1536,
   "type": "line",
   "text": "The last $B2 bytes file7_move copies, from $6400: the end of the picture, then its colours."
  },
  {
   "address": 1664,
   "type": "line",
   "text": "The menu picture's colours in the bitmap's colour screen, five by five cells (block 19, drawn at $5D08)."
  },
  {
   "address": 1689,
   "type": "line",
   "text": "The menu picture's colour RAM, five by five cells (block 20, drawn at $D908)."
  },
  {
   "address": 2064,
   "type": "line",
   "text": "Starts tune A (0-6): stops anything playing (music_stop_all), clears the three voices' records ($08D0, $08F4, $0918, $24 bytes each), takes the tune's tempo and each voice's order list from its seven bytes at $131E, points each voice at the first pattern of its list, sets the default arpeggio ($0E6F) and a global transpose of 0, clears the SID (sid_clear), and turns the music and all three voices on ($093C, $093E-$0940 = $FF)."
  },
  {
   "address": 2256,
   "type": "line",
   "text": "Voice 1's effect flags for the note playing, cleared at each new note: bit 0 flips every frame; $04 slide down, $20 slide up, $03 the drum (noise on alternate frames), $10 an arpeggio was chosen. Each voice's record is $24 bytes: voice 2's is at $08F4 and voice 3's at $0918, and the code reaches them with X = 0, $24 or $48."
  },
  {
   "address": 2257,
   "type": "line",
   "text": "Two bytes: where voice 1 is reading in its pattern."
  },
  {
   "address": 2258,
   "type": "line",
   "text": "High byte of voice 1's pattern pointer."
  },
  {
   "address": 2259,
   "type": "line",
   "text": "Two bytes: the start of voice 1's order list, the list of its patterns' addresses ending with 0."
  },
  {
   "address": 2260,
   "type": "line",
   "text": "High byte of voice 1's order list."
  },
  {
   "address": 2261,
   "type": "line",
   "text": "Two bytes: the offset of voice 1's next order-list entry; back to 2 when the list ends and the tune repeats."
  },
  {
   "address": 2262,
   "type": "line",
   "text": "High byte of voice 1's order-list offset."
  },
  {
   "address": 2263,
   "type": "line",
   "text": "Two bytes: how far voice 1's slide has moved its frequency, added or taken off each frame."
  },
  {
   "address": 2264,
   "type": "line",
   "text": "High byte of voice 1's slide."
  },
  {
   "address": 2265,
   "type": "line",
   "text": "Two bytes: voice 1's arpeggio table, semitones added to the note frame by frame ($0E6F, $0E70 or $0E72; command $C0-$C2)."
  },
  {
   "address": 2266,
   "type": "line",
   "text": "High byte of voice 1's arpeggio table."
  },
  {
   "address": 2267,
   "type": "line",
   "text": "Voice 1's place in its arpeggio table; $FF after an entry with bit 7 set, so it starts again."
  },
  {
   "address": 2268,
   "type": "line",
   "text": "Two bytes: voice 1's slide, added to $08D7 each frame (commands $84 and $85)."
  },
  {
   "address": 2269,
   "type": "line",
   "text": "High byte of voice 1's slide step."
  },
  {
   "address": 2270,
   "type": "line",
   "text": "Voice 1's slide delay: counted down each frame before the test (dec, then bne), so a delay of N applies the slide first on the Nth frame, N-1 frames after the command."
  },
  {
   "address": 2271,
   "type": "line",
   "text": "Tempo steps left of voice 1's note; at 0 the next is read from the pattern (music_step)."
  },
  {
   "address": 2272,
   "type": "line",
   "text": "Voice 1's note length in tempo steps, set by a byte $E0-$FF in the pattern (its low five bits plus one)."
  },
  {
   "address": 2273,
   "type": "line",
   "text": "Voice 1's note, 0-$7F semitones, before the arpeggio and the transposes."
  },
  {
   "address": 2274,
   "type": "line",
   "text": "Voice 1's attack and decay, written to $D405 (pattern command $D0-$DF, or 0 for a rest)."
  },
  {
   "address": 2275,
   "type": "line",
   "text": "Voice 1's sustain and release, written to $D406."
  },
  {
   "address": 2276,
   "type": "line",
   "text": "Two bytes: voice 1's frequency this frame, written to $D400/$D401."
  },
  {
   "address": 2277,
   "type": "line",
   "text": "High byte of voice 1's frequency."
  },
  {
   "address": 2278,
   "type": "line",
   "text": "Two bytes: voice 1's pulse width, written to $D402/$D403."
  },
  {
   "address": 2279,
   "type": "line",
   "text": "High byte of voice 1's pulse width."
  },
  {
   "address": 2280,
   "type": "line",
   "text": "Set by a new note: the frame's write turns voice 1's gate off and on again, restarting its envelope. A rest or a tied note leaves it clear."
  },
  {
   "address": 2281,
   "type": "line",
   "text": "Voice 1's vibrato depth (command $89)."
  },
  {
   "address": 2282,
   "type": "line",
   "text": "Voice 1's vibrato speed, the step its position moves each frame."
  },
  {
   "address": 2283,
   "type": "line",
   "text": "Voice 1's vibrato position, swinging between 0 and twice the depth."
  },
  {
   "address": 2284,
   "type": "line",
   "text": "Voice 1's vibrato: $40 on (commands $89 and $82, off with $81), $20 the swing going down."
  },
  {
   "address": 2285,
   "type": "line",
   "text": "Voice 1's pulse sweep's lower limit, a high byte (command $90)."
  },
  {
   "address": 2286,
   "type": "line",
   "text": "Voice 1's pulse sweep's upper limit, a high byte."
  },
  {
   "address": 2287,
   "type": "line",
   "text": "Voice 1's pulse sweep's step."
  },
  {
   "address": 2288,
   "type": "line",
   "text": "Voice 1's pulse sweep: 1 widening, $80 narrowing, 0 off (command $8F fixes the width)."
  },
  {
   "address": 2289,
   "type": "line",
   "text": "Voice 1's waveform: $10 triangle, $20 sawtooth, $40 pulse, $80 noise (commands $8A-$8D), $14 triangle with ring modulation ($92)."
  },
  {
   "address": 2290,
   "type": "line",
   "text": "Voice 1's waveform this frame, written to $D404 with the gate bit added; $80 on the drum's alternate frames."
  },
  {
   "address": 2291,
   "type": "line",
   "text": "Voice 1's transpose in semitones (command $97)."
  },
  {
   "address": 2292,
   "type": "line",
   "text": "Voice 2's effect flags, the start of its $24-byte record; music_init clears the three records through this address and $08D0 and $0918."
  },
  {
   "address": 2293,
   "type": "line",
   "text": "Two bytes: where voice 2 is reading in its pattern."
  },
  {
   "address": 2294,
   "type": "line",
   "text": "High byte of voice 2's pattern pointer."
  },
  {
   "address": 2295,
   "type": "line",
   "text": "Two bytes: the start of voice 2's order list."
  },
  {
   "address": 2296,
   "type": "line",
   "text": "High byte of voice 2's order list."
  },
  {
   "address": 2297,
   "type": "line",
   "text": "Voice 2's offset into its order list."
  },
  {
   "address": 2301,
   "type": "line",
   "text": "Two bytes: voice 2's arpeggio table, $0E6F at the start of a tune."
  },
  {
   "address": 2302,
   "type": "line",
   "text": "High byte of voice 2's arpeggio table."
  },
  {
   "address": 2307,
   "type": "line",
   "text": "Tempo steps left of voice 2's note; 1 at the start, so the first is read at once."
  },
  {
   "address": 2310,
   "type": "line",
   "text": "Voice 2's attack and decay, for $D40C."
  },
  {
   "address": 2311,
   "type": "line",
   "text": "Voice 2's sustain and release, for $D40D."
  },
  {
   "address": 2312,
   "type": "line",
   "text": "Two bytes: voice 2's frequency this frame, for $D407/$D408."
  },
  {
   "address": 2313,
   "type": "line",
   "text": "High byte of voice 2's frequency."
  },
  {
   "address": 2314,
   "type": "line",
   "text": "Two bytes: voice 2's pulse width, for $D409/$D40A."
  },
  {
   "address": 2315,
   "type": "line",
   "text": "High byte of voice 2's pulse width."
  },
  {
   "address": 2316,
   "type": "line",
   "text": "Voice 2's envelope restart for a new note."
  },
  {
   "address": 2326,
   "type": "line",
   "text": "Voice 2's waveform this frame, for $D40B."
  },
  {
   "address": 2328,
   "type": "line",
   "text": "Voice 3's effect flags, the start of its $24-byte record."
  },
  {
   "address": 2329,
   "type": "line",
   "text": "Two bytes: where voice 3 is reading in its pattern."
  },
  {
   "address": 2330,
   "type": "line",
   "text": "High byte of voice 3's pattern pointer."
  },
  {
   "address": 2331,
   "type": "line",
   "text": "Two bytes: the start of voice 3's order list."
  },
  {
   "address": 2332,
   "type": "line",
   "text": "High byte of voice 3's order list."
  },
  {
   "address": 2333,
   "type": "line",
   "text": "Voice 3's offset into its order list."
  },
  {
   "address": 2337,
   "type": "line",
   "text": "Two bytes: voice 3's arpeggio table."
  },
  {
   "address": 2338,
   "type": "line",
   "text": "High byte of voice 3's arpeggio table."
  },
  {
   "address": 2343,
   "type": "line",
   "text": "Tempo steps left of voice 3's note."
  },
  {
   "address": 2346,
   "type": "line",
   "text": "Voice 3's attack and decay, for $D413."
  },
  {
   "address": 2347,
   "type": "line",
   "text": "Voice 3's sustain and release, for $D414."
  },
  {
   "address": 2348,
   "type": "line",
   "text": "Two bytes: voice 3's frequency this frame, for $D40E/$D40F."
  },
  {
   "address": 2349,
   "type": "line",
   "text": "High byte of voice 3's frequency."
  },
  {
   "address": 2350,
   "type": "line",
   "text": "Two bytes: voice 3's pulse width, for $D410/$D411."
  },
  {
   "address": 2351,
   "type": "line",
   "text": "High byte of voice 3's pulse width."
  },
  {
   "address": 2352,
   "type": "line",
   "text": "Voice 3's envelope restart for a new note."
  },
  {
   "address": 2362,
   "type": "line",
   "text": "Voice 3's waveform this frame, for $D412."
  },
  {
   "address": 2364,
   "type": "line",
   "text": "Not 0 while a tune plays; music_stop_all clears it."
  },
  {
   "address": 2365,
   "type": "line",
   "text": "Not 0 while a sound effect plays on voices 1 and 3."
  },
  {
   "address": 2366,
   "type": "line",
   "text": "Not 0 while the music owns voice 1; a sound effect takes it and gives it back."
  },
  {
   "address": 2367,
   "type": "line",
   "text": "Not 0 while the music owns voice 2; the launcher's hum takes it."
  },
  {
   "address": 2368,
   "type": "line",
   "text": "Not 0 while the music owns voice 3."
  },
  {
   "address": 2369,
   "type": "line",
   "text": "Not 0 while the launcher's hum plays on voice 2."
  },
  {
   "address": 2370,
   "type": "line",
   "text": "The master volume, written to $D418 each frame; the fade steps it down."
  },
  {
   "address": 2371,
   "type": "line",
   "text": "The tune's tempo, kept so tune_play can put it back in the operand at $0954."
  },
  {
   "address": 2372,
   "type": "line",
   "text": "Twice the vibrato's depth, the top of its swing, for the voice being worked on."
  },
  {
   "address": 2373,
   "type": "line",
   "text": "Two bytes: the vibrato's offset from the note, signed, scaled up by the note's octave before it is added to the frequency."
  },
  {
   "address": 2374,
   "type": "line",
   "text": "High byte of the vibrato offset."
  },
  {
   "address": 2375,
   "type": "line",
   "text": "One frame of sound, from the raster interrupt: the music (music_frame_voices), then the sound effects (effects_frame)."
  },
  {
   "address": 2382,
   "type": "line",
   "text": "With music playing: adds the tempo to its running total ($0957), and on each carry steps every voice's pattern (music_step); every frame works each voice's arpeggio, slide, vibrato and pulse (music_voice_frame), and writes the voices the music owns to the SID, and the volume."
  },
  {
   "address": 2388,
   "type": "line",
   "text": "The operand of LDA #: the tune's tempo, set by music_init."
  },
  {
   "address": 2391,
   "type": "line",
   "text": "The operand of ADC #: the running total the tempo is added to each frame; a carry is a step."
  },
  {
   "address": 2611,
   "type": "line",
   "text": "The pattern commands' routines, two bytes each, for the bytes $80-$97: $80 rest, $81 vibrato off, $82 vibrato on, $84 slide down, $85 slide up, $88 next pattern, $89 vibrato, $8A-$8D a waveform, $8E drum, $8F pulse width, $90 pulse sweep, $91 end of the tune, $92 ring modulation, $94 global transpose, $95 tie, $97 transpose; $83, $86, $87, $93 and $96 are 0. Low byte first: the command's low seven bits times two index it."
  },
  {
   "address": 2612,
   "type": "line",
   "text": "The high bytes of the pattern commands' routines."
  },
  {
   "address": 2659,
   "type": "line",
   "text": "Command $88, a pattern's end: the voice's next pattern from its order list; at a 0 entry the list starts again. Then reads on."
  },
  {
   "address": 2734,
   "type": "line",
   "text": "Command $80: a rest. Attack, decay, sustain and release to 0, no envelope restart; then the note's length."
  },
  {
   "address": 2748,
   "type": "line",
   "text": "Command $95: the next note follows without restarting the envelope."
  },
  {
   "address": 2756,
   "type": "line",
   "text": "Command $94: the next byte is a transpose for every voice, stored in the operand at $0C65."
  },
  {
   "address": 2772,
   "type": "line",
   "text": "Command $97: the next byte is this voice's transpose ($08F3)."
  },
  {
   "address": 2788,
   "type": "line",
   "text": "Command $90: three bytes, the pulse sweep's lower and upper limits and its step, and the sweep starts widening."
  },
  {
   "address": 2826,
   "type": "line",
   "text": "Command $8A: noise waveform."
  },
  {
   "address": 2830,
   "type": "line",
   "text": "Command $8B: pulse waveform."
  },
  {
   "address": 2834,
   "type": "line",
   "text": "Command $8C: sawtooth waveform."
  },
  {
   "address": 2838,
   "type": "line",
   "text": "Command $8D: triangle waveform."
  },
  {
   "address": 2842,
   "type": "line",
   "text": "Command $92: triangle with ring modulation ($14)."
  },
  {
   "address": 2850,
   "type": "line",
   "text": "Command $8F: the next byte is the pulse width's high byte, low byte 0, and the sweep stops."
  },
  {
   "address": 2873,
   "type": "line",
   "text": "Command $91, the end of a tune that does not repeat: drops music_step's return address, so the frame's music ends here, and stops everything (music_stop_all)."
  },
  {
   "address": 2878,
   "type": "line",
   "text": "Command $85: slide up. The flag $20, then as cmd_slide_down."
  },
  {
   "address": 2882,
   "type": "line",
   "text": "Command $84: slide down (flag $04): three bytes, the slide's step (two) and its delay in frames; the slide so far back to 0."
  },
  {
   "address": 2929,
   "type": "line",
   "text": "Command $89: two bytes, the vibrato's speed and depth; its position starts at the depth, and the vibrato is on."
  },
  {
   "address": 2956,
   "type": "line",
   "text": "Command $82: the vibrato on again with the speed and depth it had."
  },
  {
   "address": 2963,
   "type": "line",
   "text": "Command $81: the vibrato off."
  },
  {
   "address": 2970,
   "type": "line",
   "text": "Command $8E: the drum (flags $03): on alternate frames the voice plays noise, with $30 added to its frequency's high byte."
  },
  {
   "address": 2980,
   "type": "line",
   "text": "One tempo step for voice X: counts its note down, and when it ends clears its flags and reads the pattern: $00-$7F a note (envelope restart, its length), $80-$BF a command (music_command), $C0-$CF an arpeggio, $D0-$DF two bytes of attack-decay and sustain-release, $E0-$FF the length of the notes that follow. Commands and settings are read until a note."
  },
  {
   "address": 3132,
   "type": "line",
   "text": "The operand of JMP at $0C3B: the command's routine, from command_table."
  },
  {
   "address": 3133,
   "type": "line",
   "text": "High byte of the command's routine."
  },
  {
   "address": 3134,
   "type": "line",
   "text": "One frame of voice X: the note plus its arpeggio entry, the global transpose ($0C65) and the voice's own as an index into the frequency table ($0DC3); then the vibrato, the slide after its delay, the pulse sweep between its limits, the drum, and the frequency for the SID write."
  },
  {
   "address": 3173,
   "type": "line",
   "text": "The operand of ADC #: the transpose added to every voice's notes (command $94)."
  },
  {
   "address": 3523,
   "type": "line",
   "text": "The frequency table, two bytes a note, low byte first: $0DC3-$0E68, 83 semitones from C1 (556, about 32.7 Hz) upward, in the SID's units on the PAL machine."
  },
  {
   "address": 3524,
   "type": "line",
   "text": "The high bytes of the frequency table."
  },
  {
   "address": 3689,
   "type": "line",
   "text": "Low bytes of the three arpeggio tables, for the bytes $C0-$C2 in a pattern; the high bytes follow at $0E6C, and the tables at $0E6F-$0E79. $0E6F holds $80, the plain note; $0E70 holds 0 and $8C, the note and its octave in turn; $0E72 holds 12 and seven 0s, the last with bit 7 set, so the note jumps an octave for one frame in eight. A byte with bit 7 set ends a table, its low seven bits the last entry."
  },
  {
   "address": 3692,
   "type": "line",
   "text": "High bytes of the three arpeggio tables."
  },
  {
   "address": 3706,
   "type": "line",
   "text": "Sound effect A, 0-25: takes voices 1 and 3 from the music and silences them, copies the effect's 20 bytes (effect_table) to $12C8, and starts both voices on its frequencies, envelopes, waveforms and pulse widths."
  },
  {
   "address": 3751,
   "type": "line",
   "text": "The copy loop: its LDA's operand ($0EA8) is set to the effect's record."
  },
  {
   "address": 3752,
   "type": "line",
   "text": "The operand of LDA abs,X at $0EA7: the effect's record."
  },
  {
   "address": 3753,
   "type": "line",
   "text": "High byte of the effect's record."
  },
  {
   "address": 3862,
   "type": "line",
   "text": "The addresses of the sound effects' records, two bytes each, low byte first, for effects 0-25 ($0F16-$0F49); then the 26 records, 20 bytes each, $0F4A-$1151: length in frames, step length, voice 1's and voice 3's starting frequencies, attack-decays, waveforms and pulse widths, each voice's slide and its direction, the repeat count, and a flag for a random pitch on each repeat. Known uses: 0 the ball taken, 1 a throw, 3 a tile, 5 a dome, $0F a wall, $12 the countdown, $16 a warp tunnel, $19 full time."
  },
  {
   "address": 3863,
   "type": "line",
   "text": "The high bytes of the effects' record addresses."
  },
  {
   "address": 3914,
   "type": "line",
   "text": "The 26 sound effects, 20 bytes each ($0F4A-$1151), in the order of effect_table's pointers. Starting an effect copies its record whole to $12C8-$12DB (effect_length to effect_random): the length and step, the start frequencies, envelopes, waveforms and pulse widths of voices 1 and 3, their slides and directions, the repeat count and the random flag."
  },
  {
   "address": 4096,
   "type": "line",
   "text": "The sound effect records continued, from two bytes into record 9 to the end of record 25 ($1151)."
  },
  {
   "address": 4434,
   "type": "line",
   "text": "Starts voice 2's hum again from where it is: used when an effect ends while the hum plays."
  },
  {
   "address": 4437,
   "type": "line",
   "text": "The launcher's hum on voice 2 (sound_play with $FE): frequency $0280, pulse waveform, sustain 12; the music gives up voice 2."
  },
  {
   "address": 4496,
   "type": "line",
   "text": "The launcher's hum off (sound_play with $FF): voice 2's envelope to 0 and back to the music."
  },
  {
   "address": 4512,
   "type": "line",
   "text": "A sound effect is over: its voices silenced and given back to the music."
  },
  {
   "address": 4542,
   "type": "line",
   "text": "One frame of the hum while it plays: voice 2's frequency, $20 higher on frames when two random bits are clear, so it warbles, and its pulse width moving on each frame."
  },
  {
   "address": 4594,
   "type": "line",
   "text": "One frame of effects, after stepping the random generator: an effect playing counts its length down; at the end of each step it puts the frequencies back to their start (adding a random number to voice 1's high byte if flagged) until its repeats run out; within a step it slides voice 1 and voice 3 each frame. Then the hum."
  },
  {
   "address": 4808,
   "type": "line",
   "text": "The effect playing: frames left; at 0 the effect ends. The first of the 20 bytes copied from the effect's record."
  },
  {
   "address": 4809,
   "type": "line",
   "text": "Frames in each step of the effect."
  },
  {
   "address": 4810,
   "type": "line",
   "text": "Two bytes: voice 1's frequency at the start of each step."
  },
  {
   "address": 4811,
   "type": "line",
   "text": "High byte of voice 1's starting frequency."
  },
  {
   "address": 4812,
   "type": "line",
   "text": "Two bytes: voice 3's frequency at the start of each step."
  },
  {
   "address": 4813,
   "type": "line",
   "text": "High byte of voice 3's starting frequency."
  },
  {
   "address": 4814,
   "type": "line",
   "text": "Voice 1's attack and decay for the effect."
  },
  {
   "address": 4815,
   "type": "line",
   "text": "Voice 3's attack and decay."
  },
  {
   "address": 4816,
   "type": "line",
   "text": "Voice 1's waveform for the effect."
  },
  {
   "address": 4817,
   "type": "line",
   "text": "Voice 3's waveform."
  },
  {
   "address": 4818,
   "type": "line",
   "text": "Voice 1's pulse width's high byte."
  },
  {
   "address": 4819,
   "type": "line",
   "text": "Voice 3's pulse width's high byte."
  },
  {
   "address": 4820,
   "type": "line",
   "text": "Two bytes: voice 1's frequency change each frame."
  },
  {
   "address": 4821,
   "type": "line",
   "text": "High byte of the effect's voice 1 slide, as the effect record sets it."
  },
  {
   "address": 4822,
   "type": "line",
   "text": "Two bytes: voice 3's frequency change each frame."
  },
  {
   "address": 4823,
   "type": "line",
   "text": "High byte of voice 3's slide."
  },
  {
   "address": 4824,
   "type": "line",
   "text": "Voice 1's slide: 0 none, positive up, negative down."
  },
  {
   "address": 4825,
   "type": "line",
   "text": "Voice 3's slide: 0 none, positive up, negative down."
  },
  {
   "address": 4826,
   "type": "line",
   "text": "Steps left that put the frequencies back to their start; at 0 the voices keep their last frequency until the length runs out."
  },
  {
   "address": 4827,
   "type": "line",
   "text": "Not 0: each step adds a random number to voice 1's starting frequency's high byte."
  },
  {
   "address": 4828,
   "type": "line",
   "text": "Frames left of this step."
  },
  {
   "address": 4829,
   "type": "line",
   "text": "Two bytes: voice 1's frequency now."
  },
  {
   "address": 4830,
   "type": "line",
   "text": "High byte of voice 1's frequency now."
  },
  {
   "address": 4831,
   "type": "line",
   "text": "Two bytes: voice 3's frequency now."
  },
  {
   "address": 4832,
   "type": "line",
   "text": "High byte of voice 3's frequency now."
  },
  {
   "address": 4833,
   "type": "line",
   "text": "The hum's frequency, low byte ($80 at the start)."
  },
  {
   "address": 4834,
   "type": "line",
   "text": "The hum's frequency, high byte (2)."
  },
  {
   "address": 4835,
   "type": "line",
   "text": "The hum's pulse width, low byte, growing each frame."
  },
  {
   "address": 4836,
   "type": "line",
   "text": "The hum's pulse width, high byte."
  },
  {
   "address": 4837,
   "type": "line",
   "text": "Stops the music, the effects and the hum, and clears the SID (sid_clear)."
  },
  {
   "address": 4848,
   "type": "line",
   "text": "Writes 0 to every SID register $D400-$D417, then the volume to $D418."
  },
  {
   "address": 4865,
   "type": "line",
   "text": "Steps the driver's own random generator, a 32-bit shift register at $131A-$131D, and returns its top byte."
  },
  {
   "address": 4890,
   "type": "line",
   "text": "The random generator's top byte, the one returned."
  },
  {
   "address": 4891,
   "type": "line",
   "text": "The random generator's second byte."
  },
  {
   "address": 4892,
   "type": "line",
   "text": "The random generator's third byte."
  },
  {
   "address": 4893,
   "type": "line",
   "text": "The random generator's low byte."
  },
  {
   "address": 4894,
   "type": "line",
   "text": "Seven bytes for each of the tunes 0-6: the tempo, then the three voices' order lists. Tune 0 the menu, 1 the prematch screens, 2 the league table after a win or a draw, 3 after a loss, 4 the team choice, 5 a goal for side 0 and the end of a match, 6 a goal for side 1."
  },
  {
   "address": 4895,
   "type": "line",
   "text": "Voice 1's order list for each tune (two bytes, tune * 7 + 1)."
  },
  {
   "address": 4896,
   "type": "line",
   "text": "Tune 0's header, byte 2: the high byte of its voice 1 order list. music_init reads each tune's voice 2 low byte through this address, with X one past the header's start."
  },
  {
   "address": 4897,
   "type": "line",
   "text": "Voice 2's order list for each tune."
  },
  {
   "address": 4898,
   "type": "line",
   "text": "Tune 0's header, byte 4: the high byte of its voice 2 order list. music_init reads voice 3's low byte through this address."
  },
  {
   "address": 4899,
   "type": "line",
   "text": "Voice 3's order list for each tune."
  },
  {
   "address": 4943,
   "type": "line",
   "text": "Tune 0's order lists, the addresses of its patterns in the order they play, each list ending with 0: voice 1's $134F-$13E6 (75 entries), voice 3's $13E7-$1470 (68), voice 2's $1471-$14A0 (23). A pattern is notes, lengths, settings and commands (music_step), ending with $88."
  },
  {
   "address": 5281,
   "type": "line",
   "text": "Tune 0's ten patterns for voice 1, $14A1-$1664."
  },
  {
   "address": 5733,
   "type": "line",
   "text": "Tune 0's six patterns for voice 3, $1665-$16D4."
  },
  {
   "address": 5845,
   "type": "line",
   "text": "A pattern no order list names: note $20 twelve times and $88."
  },
  {
   "address": 5862,
   "type": "line",
   "text": "Tune 0's eight patterns for voice 2, $16E6-$1873."
  },
  {
   "address": 6260,
   "type": "line",
   "text": "Tune 1, the prematch screens' tune: its order lists ($1874-$188D) and its patterns ($188E-$18F9)."
  },
  {
   "address": 6394,
   "type": "line",
   "text": "Tune 2, after a league match won or drawn: order lists $18FA-$1911 and patterns $1912-$1971."
  },
  {
   "address": 6514,
   "type": "line",
   "text": "Tune 3, after a league match lost: order lists $1972-$1989 and patterns $198A-$19EF."
  },
  {
   "address": 6640,
   "type": "line",
   "text": "Tune 4, the team choice: order lists $19F0-$19FB and patterns $19FC-$1AE0."
  },
  {
   "address": 6881,
   "type": "line",
   "text": "Tune 5, a goal for side 0 and the end of a match: order lists $1AE1-$1AEC and patterns $1AED-$1B24."
  },
  {
   "address": 6949,
   "type": "line",
   "text": "Tune 6, a goal for side 1: order lists $1B25-$1B2C (voice 2 shares tune 5's) and patterns $1B2D-$1B66."
  },
  {
   "address": 7015,
   "type": "line",
   "text": "Three-byte patterns the tunes share: $1B67 a rest of 32 steps; $1B6A-$1B75 the transposes -12, 0, +12 and +24 (the last unused); $1B76-$1B84 the global transposes 0, 1, 4, 8 and 12."
  },
  {
   "address": 7045,
   "type": "line",
   "text": "The last eleven bytes of FILE0, $EA and then $AA and $55 in pairs: nothing reads them."
  },
  {
   "address": 7168,
   "type": "line",
   "text": "Eleven team records follow, one byte per team in each table, team 0 the human's in a league: goals scored, low bytes. The whole block $1C00-$1FFF is what SAVE GAME writes and the LOAD entries read back."
  },
  {
   "address": 7179,
   "type": "line",
   "text": "Goals scored by each team, high bytes."
  },
  {
   "address": 7190,
   "type": "line",
   "text": "Goals conceded by each team, low bytes."
  },
  {
   "address": 7201,
   "type": "line",
   "text": "Goals conceded, high bytes."
  },
  {
   "address": 7212,
   "type": "line",
   "text": "Matches played by each team."
  },
  {
   "address": 7223,
   "type": "line",
   "text": "Each team's place in the league table, 0 the top (league_rank); also the row it is drawn in."
  },
  {
   "address": 7234,
   "type": "line",
   "text": "Each team's place before this week's matches, for the up and down arrows."
  },
  {
   "address": 7245,
   "type": "line",
   "text": "Each team's power, from its template ($BA16)."
  },
  {
   "address": 7256,
   "type": "line",
   "text": "Each team's stamina, from its template ($BA0B)."
  },
  {
   "address": 7267,
   "type": "line",
   "text": "A figure from each team's template ($B9DF), loaded into $1EBB for the computer's side; nothing reads it there."
  },
  {
   "address": 7278,
   "type": "line",
   "text": "Each team's delay between the computer's new aims ($B9EA), loaded into $1EBC."
  },
  {
   "address": 7289,
   "type": "line",
   "text": "Each team's keeper delay ($B9F5), loaded into $1EBD."
  },
  {
   "address": 7300,
   "type": "line",
   "text": "Each team's delay between the computer's throws ($BA00), loaded into $1EBE and $1EBF."
  },
  {
   "address": 7311,
   "type": "line",
   "text": "Each team's league points, low bytes: 100 a win, 20 a draw, 5 a goal."
  },
  {
   "address": 7312,
   "type": "line",
   "text": "Team 1's points, low byte: in a two player game side 1's, which twoplayer_final compares with side 0's."
  },
  {
   "address": 7322,
   "type": "line",
   "text": "League points, high bytes."
  },
  {
   "address": 7323,
   "type": "line",
   "text": "Team 1's points, high byte."
  },
  {
   "address": 7333,
   "type": "line",
   "text": "Each team's tackle figure ($BA21); its card shows 255 less it as SKILL. In play it is read only when a player slides into one of this team's: the slide brings him down when a random byte is at least this figure (tackle_resolve), so a low figure, a high SKILL, makes the team easier to bring down. The computer's matches against each other go by it too (league_week_end)."
  },
  {
   "address": 7344,
   "type": "line",
   "text": "Matches won by each team."
  },
  {
   "address": 7355,
   "type": "line",
   "text": "Matches lost by each team."
  },
  {
   "address": 7366,
   "type": "line",
   "text": "Matches drawn by each team."
  },
  {
   "address": 7377,
   "type": "line",
   "text": "Which of the eleven templates each record came from: its name, picture and figures. In a knockout, record n's template is the team the screens name as round n's opponent; match_restart then loads the figures of the record numbered by that template, another team in almost every round."
  },
  {
   "address": 7399,
   "type": "line",
   "text": "Each player's stamina, players 0-9: drained by tackles (stamina_drain), raised by power-up S; below 12 he runs a step slower (player_dir_step, $9FE4), and below 6 his throws are a step weaker (player_move)."
  },
  {
   "address": 7404,
   "type": "line",
   "text": "Stamina of players 5-9, where players_attributes_set stores side 1's figure."
  },
  {
   "address": 7409,
   "type": "line",
   "text": "Each player's power, 0-9: how much stamina his tackles take from the other."
  },
  {
   "address": 7414,
   "type": "line",
   "text": "Power of players 5-9, where side 1's figure is stored."
  },
  {
   "address": 7419,
   "type": "line",
   "text": "Each player's state flags. $04 and $08 are kept from action to action: $04 keeps the role routines off him (players_ai), $08 a throw, jump or slide under way. The others come with his action from $BB64: $40 holds his facing, $80 (knocked down) stops him taking the ball, and $10 and $20 shape how fire and the stick act on him."
  },
  {
   "address": 7429,
   "type": "line",
   "text": "Set for each player from $2DED when he goes back to his start; nothing reads it."
  },
  {
   "address": 7439,
   "type": "line",
   "text": "Each player's facing, 0 up, 1 up-right, 2 right and so on to 7 up-left."
  },
  {
   "address": 7449,
   "type": "line",
   "text": "Each player's frame within his animation."
  },
  {
   "address": 7459,
   "type": "line",
   "text": "Each player's role, the index of his computer routine ($2E1F/$2E29): 0 and 5 the keepers; the controlled player swaps his role with the one he takes over from (roles_swap)."
  },
  {
   "address": 7469,
   "type": "line",
   "text": "Cleared for each player at his start; nothing reads it."
  },
  {
   "address": 7479,
   "type": "line",
   "text": "Each player's timer for the computer's next decision, counted down each pass."
  },
  {
   "address": 7489,
   "type": "line",
   "text": "Each player's distance from the ball, in units of 4 pixels (ball_distances)."
  },
  {
   "address": 7499,
   "type": "line",
   "text": "Each player's speed, from his action ($BB3D): with the facing it picks the step in $BA61/$BAB1."
  },
  {
   "address": 7509,
   "type": "line",
   "text": "Each player's stick bits from his last step."
  },
  {
   "address": 7519,
   "type": "line",
   "text": "Passes each player stays knocked down."
  },
  {
   "address": 7529,
   "type": "line",
   "text": "The stick bits that carry a knocked player along while he is down ($2E33, by the tackle's direction)."
  },
  {
   "address": 7539,
   "type": "line",
   "text": "Passes to each player's next animation frame."
  },
  {
   "address": 7549,
   "type": "line",
   "text": "Passes between each player's animation frames, from his action ($BB4A)."
  },
  {
   "address": 7559,
   "type": "line",
   "text": "The action each player goes into when this one's frames are done ($BB57)."
  },
  {
   "address": 7569,
   "type": "line",
   "text": "The number of frames in each player's animation ($BB30)."
  },
  {
   "address": 7579,
   "type": "line",
   "text": "Each player's action: 1 a jump, 2 running, 3 a throw, 4 a slide, 5 knocked down; it picks his animation and speed (action_set)."
  },
  {
   "address": 7589,
   "type": "line",
   "text": "Each player's animation frame list, low bytes ($BBD5)."
  },
  {
   "address": 7599,
   "type": "line",
   "text": "Each player's animation frame list, high bytes ($BBE2)."
  },
  {
   "address": 7609,
   "type": "line",
   "text": "Each player's x before his last step, low bytes, for undoing it when he bumps into someone (player_pos_undo)."
  },
  {
   "address": 7619,
   "type": "line",
   "text": "Each player's previous x, high bytes."
  },
  {
   "address": 7629,
   "type": "line",
   "text": "Each player's previous y, low bytes."
  },
  {
   "address": 7639,
   "type": "line",
   "text": "Each player's previous y, high bytes."
  },
  {
   "address": 7649,
   "type": "line",
   "text": "Each player's target x for the computer, low bytes."
  },
  {
   "address": 7659,
   "type": "line",
   "text": "Each player's target x, high bytes."
  },
  {
   "address": 7669,
   "type": "line",
   "text": "Each player's target y, low bytes."
  },
  {
   "address": 7679,
   "type": "line",
   "text": "Each player's target y, high bytes."
  },
  {
   "address": 7689,
   "type": "line",
   "text": "The sixteen objects' x, low bytes: players 0-9, the launcher's parts 10-13, nothing at 14, the ball 15. Pitch coordinates: x $20-$108 for players, y $18-$228."
  },
  {
   "address": 7699,
   "type": "line",
   "text": "The launcher parts' x (objects 10-13), low bytes."
  },
  {
   "address": 7704,
   "type": "line",
   "text": "The ball's x, low byte (object 15)."
  },
  {
   "address": 7705,
   "type": "line",
   "text": "The objects' x, high bytes."
  },
  {
   "address": 7715,
   "type": "line",
   "text": "The launcher parts' x, high bytes."
  },
  {
   "address": 7720,
   "type": "line",
   "text": "The ball's x, high byte."
  },
  {
   "address": 7721,
   "type": "line",
   "text": "The objects' y, low bytes."
  },
  {
   "address": 7731,
   "type": "line",
   "text": "The launcher parts' y, low bytes."
  },
  {
   "address": 7736,
   "type": "line",
   "text": "The ball's y, low byte."
  },
  {
   "address": 7737,
   "type": "line",
   "text": "The objects' y, high bytes; $80 hides an object."
  },
  {
   "address": 7747,
   "type": "line",
   "text": "The launcher parts' y, high bytes; $80 while the launcher is hidden."
  },
  {
   "address": 7752,
   "type": "line",
   "text": "The ball's y, high byte."
  },
  {
   "address": 7753,
   "type": "line",
   "text": "A ten by ten table, $1E49-$1EAC: for two players a and b, the distance between them less $12 (pair_distances), negative when they touch; tackles_check reads it."
  },
  {
   "address": 7853,
   "type": "line",
   "text": "Side 0's goals this match (green, playing up the pitch)."
  },
  {
   "address": 7854,
   "type": "line",
   "text": "Side 1's goals (red, playing down)."
  },
  {
   "address": 7855,
   "type": "line",
   "text": "$FF league, 1 knockout, 0 two player; $80 at start-up, no game."
  },
  {
   "address": 7856,
   "type": "line",
   "text": "The league's length as chosen, 1-10 (the menu's choice plus one): match_over ends the league when $1EC4 reaches it. A one player league starts its $1EDB at 2, so it lasts one run of eleven weeks more than the menu says: TEN WEEKS is 22 weeks, ONE HUNDRED WEEKS 121."
  },
  {
   "address": 7857,
   "type": "line",
   "text": "Side 0's tokens, to spend in the shop after a match."
  },
  {
   "address": 7858,
   "type": "line",
   "text": "Side 1's tokens; in a one player game the computer collects them too."
  },
  {
   "address": 7859,
   "type": "line",
   "text": "Side 0's formation, from the column where it last got the ball ($BBEF): which part of the AI's tables its players run to."
  },
  {
   "address": 7860,
   "type": "line",
   "text": "Side 1's formation."
  },
  {
   "address": 7861,
   "type": "line",
   "text": "Side 0's power, from its team (and the shop)."
  },
  {
   "address": 7862,
   "type": "line",
   "text": "Side 1's power."
  },
  {
   "address": 7863,
   "type": "line",
   "text": "Side 0's stamina, the most a player of it can have."
  },
  {
   "address": 7864,
   "type": "line",
   "text": "Side 1's stamina."
  },
  {
   "address": 7865,
   "type": "line",
   "text": "Side 0's tackle figure, SKILL on screen being 255 less it: a slide by side 1 brings a side 0 player down when a random byte is at least this (j_9051)."
  },
  {
   "address": 7866,
   "type": "line",
   "text": "Side 1's tackle figure: a slide by side 0 brings a side 1 player down when a random byte is at least this (tackle_resolve)."
  },
  {
   "address": 7867,
   "type": "line",
   "text": "The computer's copy of its team's $1C63; nothing reads it."
  },
  {
   "address": 7868,
   "type": "line",
   "text": "Passes between the computer's new aims for its controlled player ($1EC5)."
  },
  {
   "address": 7869,
   "type": "line",
   "text": "The computer keeper's delay; bribing the trainer adds 3."
  },
  {
   "address": 7870,
   "type": "line",
   "text": "Counts down to the computer's next throw or slide; reloaded from $1EBF."
  },
  {
   "address": 7871,
   "type": "line",
   "text": "The computer's delay between throws."
  },
  {
   "address": 7872,
   "type": "line",
   "text": "Fire held by side 0's controlled player without the ball: in a tackle the human then wins."
  },
  {
   "address": 7873,
   "type": "line",
   "text": "The same for side 1's."
  },
  {
   "address": 7874,
   "type": "line",
   "text": "The knockout round's points so far: 2 a win, 1 a draw; 3 goes through."
  },
  {
   "address": 7875,
   "type": "line",
   "text": "The leg of the knockout round, 0-2."
  },
  {
   "address": 7876,
   "type": "line",
   "text": "The knockout round; in a league or a two player game, the runs of weeks completed (match_over, twoplayer_week_end); 0 for a new game."
  },
  {
   "address": 7877,
   "type": "line",
   "text": "Passes to the computer's next aim for its controlled player; $FF when it has just taken the ball, so the delay $1EBC starts on the next pass."
  },
  {
   "address": 7878,
   "type": "line",
   "text": "A short delay (6) before the computer looks for a pass."
  },
  {
   "address": 7879,
   "type": "line",
   "text": "How long side 0's power-ups last: 120 passes, ten more for each bribe of the timer."
  },
  {
   "address": 7880,
   "type": "line",
   "text": "How long side 1's last."
  },
  {
   "address": 7881,
   "type": "line",
   "text": "The pace of side 0's power-up countdown, 12, one more for each bribe of the timer."
  },
  {
   "address": 7882,
   "type": "line",
   "text": "The pace of side 1's countdown."
  },
  {
   "address": 7884,
   "type": "line",
   "text": "Stages left in the power-up countdown shown in the panel, from 10."
  },
  {
   "address": 7885,
   "type": "line",
   "text": "Passes left of the power-up in force; all end at 0."
  },
  {
   "address": 7886,
   "type": "line",
   "text": "Passes to the countdown's next stage."
  },
  {
   "address": 7887,
   "type": "line",
   "text": "Passes between the countdown's stages."
  },
  {
   "address": 7888,
   "type": "line",
   "text": "Which of the ten dome layouts the pitch has (domes_place, $2E73), moving on after every match."
  },
  {
   "address": 7889,
   "type": "line",
   "text": "The team side 0 chose, 0-2: Verna, Lacata, Draco."
  },
  {
   "address": 7890,
   "type": "line",
   "text": "The team side 1 chose, in a two player game."
  },
  {
   "address": 7891,
   "type": "line",
   "text": "Stamina taken off the computer's side before the next match (shop item 6)."
  },
  {
   "address": 7892,
   "type": "line",
   "text": "Power taken off the computer's side (item 10)."
  },
  {
   "address": 7893,
   "type": "line",
   "text": "Added to the computer's tackle figure (item 8)."
  },
  {
   "address": 7894,
   "type": "line",
   "text": "Added to the computer keeper's delay (item 4)."
  },
  {
   "address": 7895,
   "type": "line",
   "text": "The team record the prematch screen draws: the knockout round plus one, or the league week. Its template ($1CD1) gives the face and name; the figures on the card are side 1's, which opponent_load set."
  },
  {
   "address": 7896,
   "type": "line",
   "text": "The week of the league, 1-11, or of a two player game, 1-10."
  },
  {
   "address": 7897,
   "type": "line",
   "text": "The team recorded with $1EAD's goals (league_record)."
  },
  {
   "address": 7898,
   "type": "line",
   "text": "The team recorded with $1EAE's goals."
  },
  {
   "address": 7899,
   "type": "line",
   "text": "Counts a league's runs of eleven weeks: 2 at its start, so the round $1EC4 first moves on after 22 weeks, then 1 after each; set to 1 for a knockout, which does not use it."
  },
  {
   "address": 7900,
   "type": "line",
   "text": "Set by bribing the official: a drawn match gets extra time."
  },
  {
   "address": 7901,
   "type": "line",
   "text": "The ball's sideways speed, signed, added to its x each pass."
  },
  {
   "address": 7902,
   "type": "line",
   "text": "The ball's speed up or down the pitch, signed."
  },
  {
   "address": 7903,
   "type": "line",
   "text": "Passes between friction's steps, which take one off each speed: 14, or 12 after a keeper's throw."
  },
  {
   "address": 7904,
   "type": "line",
   "text": "The strength of the next throw, 7 at kick-off; the fire count sets it."
  },
  {
   "address": 7905,
   "type": "line",
   "text": "Who holds the ball: 0 nobody, otherwise the holder's marker ($BA2C), negative for side 1."
  },
  {
   "address": 7906,
   "type": "line",
   "text": "The marker of the player who threw the ball last; he cannot take it back until $1EEF runs out."
  },
  {
   "address": 7907,
   "type": "line",
   "text": "The ball's height phase: 0 on the ground, 1-7 rising, -7 to -1 falling."
  },
  {
   "address": 7908,
   "type": "line",
   "text": "Passes to the next step of the height phase: 4, and 8 at the top."
  },
  {
   "address": 7909,
   "type": "line",
   "text": "Cleared at kick-off and by power-up G; nothing reads it."
  },
  {
   "address": 7910,
   "type": "line",
   "text": "Passes the ball has been still; at 120 it is shot off at random."
  },
  {
   "address": 7911,
   "type": "line",
   "text": "Passes after a dome bounce before the next can happen."
  },
  {
   "address": 7912,
   "type": "line",
   "text": "The highlighted entry in a menu, the team choice or the shop."
  },
  {
   "address": 7913,
   "type": "line",
   "text": "Set when there is a game to continue: a match under way when F3 left it, or a game loaded."
  },
  {
   "address": 7914,
   "type": "line",
   "text": "The flashing text group on the menu, 1-4."
  },
  {
   "address": 7915,
   "type": "line",
   "text": "Counts calls to menu_text_cycle down to the next flashing text."
  },
  {
   "address": 7916,
   "type": "line",
   "text": "The sprite settings block the menu interrupt loads ($2D72)."
  },
  {
   "address": 7917,
   "type": "line",
   "text": "Set by sprites_sort when a pass swapped two objects."
  },
  {
   "address": 7918,
   "type": "line",
   "text": "Flips between a team's card and its attributes on the prematch screens."
  },
  {
   "address": 7919,
   "type": "line",
   "text": "The thrower's wait before he may take the ball back: 26 at a throw. The decrement at $3AF3 is shared by ball_pickup_side0 and ball_pickup_side1, both called every pass while the ball is free and $7B is 0, so it lasts 13 passes."
  },
  {
   "address": 7920,
   "type": "line",
   "text": "Goals bought for side 0 (bribing the referee), added at the next kick-off."
  },
  {
   "address": 7921,
   "type": "line",
   "text": "Goals bought for side 1."
  },
  {
   "address": 7922,
   "type": "line",
   "text": "How far the launcher has risen, 0-16, drawn into its characters (launcher_lift)."
  },
  {
   "address": 7923,
   "type": "line",
   "text": "The launcher's movement: 1 rising, $FF sinking, 0 still."
  },
  {
   "address": 7924,
   "type": "line",
   "text": "The computer's choice of shot at goal (ai_shot_choose)."
  },
  {
   "address": 7925,
   "type": "line",
   "text": "The side being served: the shop, the cards, the attribute numbers."
  },
  {
   "address": 7926,
   "type": "line",
   "text": "The side's tokens while the price list is drawn."
  },
  {
   "address": 7927,
   "type": "line",
   "text": "Eleven bytes, $1EF7-$1F01: which shop items this side has bought this time."
  },
  {
   "address": 8192,
   "type": "line",
   "text": "The loader jumps here when every file is in memory. JMP to the start-up at $201A, then four more jumps: $2003 and $2006 to $6000 and $6048, which no code calls (at run time $6000 holds a bitmap, at the hand-over the block the start-up copies to $0200); $2009 the save routine and $200C the load routine, which the menu calls."
  },
  {
   "address": 8201,
   "type": "line",
   "text": "JMP save_game ($BD50): the SAVE GAME entry calls it with the file's digit in A."
  },
  {
   "address": 8204,
   "type": "line",
   "text": "JMP load_game ($BD70): the three LOAD entries call it with the slot number in A."
  },
  {
   "address": 8207,
   "type": "line",
   "text": "Waits 256 frames: Y is set to 0 and wait_frame ($B179) called until it counts back round to 0; then it clears the carry, sets it again, and returns. No code found calls it, directly or through a table."
  },
  {
   "address": 8218,
   "type": "line",
   "text": "Start-up, run once. Interrupts off, $01 = $0D (RAM at $A000 and $E000, the chips in), waits for raster line $FB, blacks the border and backgrounds, blanks the screen, selects video bank 1 ($4000-$7FFF), sprites off and all multicolour. Stops CIA 1's interrupts, points the NMI and reset vectors at $8703 (an RTI) and the IRQ vector at irq_handler ($86D3), clears zero page $02-$FF, fills the sprite order list $1E-$2D with 0-15, arms the raster interrupt at line $28 with slot 5, seeds the random generator ($32/$33 = $19, $63), and starts CIA 2's timers A and B, period $231F, with their interrupts masked: two stores four cycles apart, the gap the protection checks rely on (irq_slot_play_top). Then all RAM ($01 = $30), the block at $6000 copied to $0200 (file7_move), and on to the menu (main_menu_boot)."
  },
  {
   "address": 8421,
   "type": "line",
   "text": "The pitch map's row addresses, low bytes, 74 rows ($20E5-$212E): row n starts at $F300 + 40n. The screen copies read eleven pairs of rows from here, one label for each pair below."
  },
  {
   "address": 8423,
   "type": "line",
   "text": "Low bytes of the map rows from 2 on, as the screen copy's second pair of rows reads them."
  },
  {
   "address": 8425,
   "type": "line",
   "text": "Low bytes of the map rows from 4 on, for the screen copy's third pair of rows."
  },
  {
   "address": 8427,
   "type": "line",
   "text": "Low bytes of the map rows from 6 on, the fourth pair."
  },
  {
   "address": 8429,
   "type": "line",
   "text": "Low bytes of the map rows from 8 on, the fifth pair."
  },
  {
   "address": 8431,
   "type": "line",
   "text": "Low bytes of the map rows from 10 on, the sixth pair."
  },
  {
   "address": 8433,
   "type": "line",
   "text": "Low bytes of the map rows from 12 on, the seventh pair."
  },
  {
   "address": 8435,
   "type": "line",
   "text": "Low bytes of the map rows from 14 on, the eighth pair."
  },
  {
   "address": 8437,
   "type": "line",
   "text": "Low bytes of the map rows from 16 on, the ninth pair."
  },
  {
   "address": 8439,
   "type": "line",
   "text": "Low bytes of the map rows from 18 on, the tenth pair."
  },
  {
   "address": 8441,
   "type": "line",
   "text": "Low bytes of the map rows from 20 on, the screen copy's last pair of rows."
  },
  {
   "address": 8495,
   "type": "line",
   "text": "The pitch map's row addresses, high bytes ($212F-$2178)."
  },
  {
   "address": 8497,
   "type": "line",
   "text": "High bytes of the map rows from 2 on, the screen copy's second pair."
  },
  {
   "address": 8499,
   "type": "line",
   "text": "High bytes of the map rows from 4 on, the third pair."
  },
  {
   "address": 8501,
   "type": "line",
   "text": "High bytes of the map rows from 6 on, the fourth pair."
  },
  {
   "address": 8503,
   "type": "line",
   "text": "High bytes of the map rows from 8 on, the fifth pair."
  },
  {
   "address": 8505,
   "type": "line",
   "text": "High bytes of the map rows from 10 on, the sixth pair."
  },
  {
   "address": 8507,
   "type": "line",
   "text": "High bytes of the map rows from 12 on, the seventh pair."
  },
  {
   "address": 8509,
   "type": "line",
   "text": "High bytes of the map rows from 14 on, the eighth pair."
  },
  {
   "address": 8511,
   "type": "line",
   "text": "High bytes of the map rows from 16 on, the ninth pair."
  },
  {
   "address": 8513,
   "type": "line",
   "text": "High bytes of the map rows from 18 on, the tenth pair."
  },
  {
   "address": 8515,
   "type": "line",
   "text": "High bytes of the map rows from 20 on, the last pair."
  },
  {
   "address": 8569,
   "type": "line",
   "text": "The 21 blocks block_put draws, six tables of 21 bytes: the source's low bytes. 0 the top end of the pitch ($B351, 30 by 8 cells), 1 the bottom end ($B441, 30 by 4), 2 the launcher ($DBBD, 6 by 6), 3-8 the side walls in six pieces ($B4B9-$B79C, 5 cells wide), 9-12 the four domes ($DBE1, 4 by 4), 13 the tile ($DBF9, 2 by 2), 14-18 the menu screen's pieces ($D900-$DA68), 19 and 20 the logo's colours ($0680 for the screen, $0699 for colour RAM)."
  },
  {
   "address": 8582,
   "type": "line",
   "text": "Block 13's source, low byte: the tile, or the floor piece tile_floor_put puts back."
  },
  {
   "address": 8590,
   "type": "line",
   "text": "The blocks' sources, high bytes."
  },
  {
   "address": 8603,
   "type": "line",
   "text": "Block 13's source, high byte."
  },
  {
   "address": 8611,
   "type": "line",
   "text": "The blocks' destinations, low bytes: in the pitch map at $F300 for 0-13, the menu screen at $5C00 for 14-19, colour RAM for 20."
  },
  {
   "address": 8620,
   "type": "line",
   "text": "Blocks 9-12's destinations, low bytes: the domes, placed for each layout by domes_place."
  },
  {
   "address": 8624,
   "type": "line",
   "text": "Block 13's destination, low byte: the tile's cell, set by tile_step."
  },
  {
   "address": 8629,
   "type": "line",
   "text": "Block 18's destination, low byte: menu_frame_draw steps it across the menu screen to tile its pattern."
  },
  {
   "address": 8632,
   "type": "line",
   "text": "The blocks' destinations, high bytes."
  },
  {
   "address": 8641,
   "type": "line",
   "text": "The domes' destinations, high bytes."
  },
  {
   "address": 8645,
   "type": "line",
   "text": "The tile's destination, high byte."
  },
  {
   "address": 8650,
   "type": "line",
   "text": "Block 18's destination, high byte."
  },
  {
   "address": 8653,
   "type": "line",
   "text": "The blocks' widths in cells."
  },
  {
   "address": 8674,
   "type": "line",
   "text": "The blocks' heights in rows, less one."
  },
  {
   "address": 8695,
   "type": "line",
   "text": "The two floor pieces tile_floor_put can put back where the tile was, low bytes ($DBF1, $DBF5: two 2 by 2 blocks of floor characters)."
  },
  {
   "address": 8697,
   "type": "line",
   "text": "The floor pieces' high bytes."
  },
  {
   "address": 8699,
   "type": "line",
   "text": "The score panel's middle row, 40 characters, copied to $7370 by panel_rows: the clock, the scores and the meters."
  },
  {
   "address": 8739,
   "type": "line",
   "text": "The colours of that row, 40 bytes, for colour RAM at $DB70."
  },
  {
   "address": 8779,
   "type": "line",
   "text": "Where each side's stamina meter goes in the panel, low bytes ($7372 for side 0, $7393 for side 1)."
  },
  {
   "address": 8781,
   "type": "line",
   "text": "The meters' addresses, high bytes."
  },
  {
   "address": 8783,
   "type": "line",
   "text": "The columns of the two ball-holder markers in the panel's row at $7370: 7 for side 0, $1D for side 1."
  },
  {
   "address": 8785,
   "type": "line",
   "text": "The background colour ($D021) for each colour set, six sets ($2251-$2256); colours_load picks one by Y."
  },
  {
   "address": 8791,
   "type": "line",
   "text": "Multicolour 1 ($D022) for each of the six colour sets."
  },
  {
   "address": 8797,
   "type": "line",
   "text": "Multicolour 2 ($D023) for each of the six colour sets."
  },
  {
   "address": 8803,
   "type": "line",
   "text": "One byte for each bit, with that bit clear: $FE, $FD, $FB ... $7F."
  },
  {
   "address": 8811,
   "type": "line",
   "text": "One byte for each bit, with that bit set: 1, 2, 4 ... $80."
  },
  {
   "address": 8819,
   "type": "line",
   "text": "block_copy's four eight-page copies, sources low bytes: 0 the menu character set $DE25 and 1 the play character set $DF55, both to $7800; 2 the panel's screen $EC0D to $7000; 3 the same to $7800."
  },
  {
   "address": 8823,
   "type": "line",
   "text": "The copies' sources, high bytes."
  },
  {
   "address": 8827,
   "type": "line",
   "text": "The copies' destinations, low bytes."
  },
  {
   "address": 8831,
   "type": "line",
   "text": "The copies' destinations, high bytes."
  },
  {
   "address": 8835,
   "type": "line",
   "text": "The SELECT GAME menu's eight entries' routines, low bytes: $3C4E knockout, $3C76 two player, $3C80 league, $3C8A save, $3CD4, $3CD9 and $3CDD the three loads, $3D2E continue."
  },
  {
   "address": 8843,
   "type": "line",
   "text": "The menu entries' routines, high bytes."
  },
  {
   "address": 8851,
   "type": "line",
   "text": "The save file's slot by game type, read at game type + 1: index 0 the league ($FF + 1) slot 0, index 1 a two player game slot 2, index 2 a knockout slot 1. So the league saves as \"0\", the knockout as \"1\" and the two player game as \"2\", the files the three LOAD entries read."
  },
  {
   "address": 8854,
   "type": "line",
   "text": "The two screen-copy routines for the scroll, low bytes: $93AA writes the screen at $6C00, $92DE the one at $7400."
  },
  {
   "address": 8856,
   "type": "line",
   "text": "The screen-copy routines, high bytes."
  },
  {
   "address": 8858,
   "type": "line",
   "text": "The video chip's memory setting for each pitch screen: $DE shows $7400, $BE shows $6C00, both with the character set at $7800."
  },
  {
   "address": 8860,
   "type": "line",
   "text": "Powers of ten for number_digits: 10000, 1000, 100, 10, 1, low bytes."
  },
  {
   "address": 8865,
   "type": "line",
   "text": "Powers of ten, high bytes."
  },
  {
   "address": 8870,
   "type": "line",
   "text": "The shop's availability checks, three lists of ten, low bytes: items 1-10 for the one player game, for two player side 0, and side 1 (shop_effect_index). Each returns 1 when the item cannot be bought."
  },
  {
   "address": 8900,
   "type": "line",
   "text": "The checks' high bytes, all $AE."
  },
  {
   "address": 8930,
   "type": "line",
   "text": "For the six numbers of a league line (team_line_draw), how many digits each has: 3, 3, 3, 3, 3 and 5."
  },
  {
   "address": 8936,
   "type": "line",
   "text": "Where each of the league line's six numbers starts in the row text at $DA69."
  },
  {
   "address": 8942,
   "type": "line",
   "text": "Where in the line's text ($2B6C) each number goes."
  },
  {
   "address": 8948,
   "type": "line",
   "text": "The column offsets of the two scores in the panel, 0 and $16."
  },
  {
   "address": 8950,
   "type": "line",
   "text": "Where a box's colours go, low bytes: 0 colour RAM ($D800), 1 the bitmap's colour screen ($5C00)."
  },
  {
   "address": 8952,
   "type": "line",
   "text": "The two colour areas' high bytes, $D8 and $5C."
  },
  {
   "address": 8954,
   "type": "line",
   "text": "The fifteen text boxes, eight tables of fifteen: the box's first cell from the screen's start, low bytes."
  },
  {
   "address": 8969,
   "type": "line",
   "text": "The boxes' first cells, high bytes."
  },
  {
   "address": 8984,
   "type": "line",
   "text": "Each box's colour in colour RAM."
  },
  {
   "address": 8999,
   "type": "line",
   "text": "Each box's two colours in the bitmap's colour screen."
  },
  {
   "address": 9014,
   "type": "line",
   "text": "For each text box, the bitmap address one byte before its first byte (the cell to its left, which box_frame draws in), low bytes: box_clear writes from this address plus 1."
  },
  {
   "address": 9029,
   "type": "line",
   "text": "The boxes' bitmap addresses, high bytes."
  },
  {
   "address": 9044,
   "type": "line",
   "text": "Each box's width in bytes (eight to a cell)."
  },
  {
   "address": 9059,
   "type": "line",
   "text": "Each box's height in rows; box 0's is set by the menu that uses it (12 for SELECT GAME, 15 for the league's length)."
  },
  {
   "address": 9074,
   "type": "line",
   "text": "The pictures panel_picture draws, three entries for each of four pictures, low bytes: the bitmap (0-3, from $C360), the screen colours (4-7) and the colour RAM (8-11, both near $F0B5-$F1A7). team_panel_draw draws picture 0 as the frame, then the team's."
  },
  {
   "address": 9086,
   "type": "line",
   "text": "The pictures' sources, high bytes."
  },
  {
   "address": 9098,
   "type": "line",
   "text": "The three team panels, three entries each, low bytes: the bitmap address (0-2, $6508, $6570, $65D8), the colour screen (3-5, $5CA1, $5CAE, $5CBB) and colour RAM (6-8, $D8A1, $D8AE, $D8BB)."
  },
  {
   "address": 9104,
   "type": "line",
   "text": "The panels' colour RAM addresses (entries 6-8 above), as menu_frame_draw reads them on their own to recolour a panel."
  },
  {
   "address": 9107,
   "type": "line",
   "text": "The panels' addresses, high bytes."
  },
  {
   "address": 9113,
   "type": "line",
   "text": "The panels' colour RAM addresses, high bytes, as menu_frame_draw reads them."
  },
  {
   "address": 9116,
   "type": "line",
   "text": "For each of the twelve picture entries, its mask, low bytes: 18 bytes, a bit for each of the twelve by twelve cells that panel_picture draws."
  },
  {
   "address": 9128,
   "type": "line",
   "text": "The masks' high bytes ($D7, $EF, $F0)."
  },
  {
   "address": 9140,
   "type": "line",
   "text": "The three card positions, one under each panel, in the colour screen ($5EA9, $5EB6, $5EC3), low bytes."
  },
  {
   "address": 9143,
   "type": "line",
   "text": "The card positions, high bytes."
  },
  {
   "address": 9146,
   "type": "line",
   "text": "The faces' parts, four tables of 30 entries, read by face_ptrs: here the source the part is copied from, low bytes (entries 0-9 the ten face layers' bitmap bytes, 10-29 their colour bytes); $23D8 the high bytes; $23F6 and $2414 the mask list that says which cells are copied."
  },
  {
   "address": 9176,
   "type": "line",
   "text": "The faces' part sources, high bytes."
  },
  {
   "address": 9206,
   "type": "line",
   "text": "The faces' mask lists, low bytes, which face_ptrs puts in mask_ptr ($42): entries 0-9 the face layers' cell masks ($D750-$D798), 10-29 the colour masks at $EFCD-$F0AD."
  },
  {
   "address": 9236,
   "type": "line",
   "text": "The faces' mask lists, high bytes ($42/$43 through face_ptrs, read by mask_bit_next); no other code reads them."
  },
  {
   "address": 9266,
   "type": "line",
   "text": "For each of the ten faces, its first part in the face tables."
  },
  {
   "address": 9276,
   "type": "line",
   "text": "The shop list's eleven lines, where each is drawn in the bitmap, low bytes."
  },
  {
   "address": 9287,
   "type": "line",
   "text": "The shop lines' bitmap addresses, high bytes."
  },
  {
   "address": 9298,
   "type": "line",
   "text": "The shop lines' packed texts, low bytes."
  },
  {
   "address": 9309,
   "type": "line",
   "text": "The shop lines' texts, high bytes."
  },
  {
   "address": 9320,
   "type": "line",
   "text": "A copy-protection counter: the top slot of play (irq_slot_play_top) adds one each time two reads of CIA 2's timer A agree, which happens only when the timer is stopped. sticks_read EORs it into port 1's joystick, and prematch_messages uses it as the message number, so on a genuine copy it stays 0."
  },
  {
   "address": 9321,
   "type": "line",
   "text": "The 26 text groups text_draw draws: the number of strings in each. ball_take_side0 adds $2DD0 into it, harmless on a genuine copy."
  },
  {
   "address": 9347,
   "type": "line",
   "text": "Each text group's list of items, low bytes."
  },
  {
   "address": 9373,
   "type": "line",
   "text": "The groups' item lists, high bytes."
  },
  {
   "address": 9399,
   "type": "line",
   "text": "The text group of instructions for each load slot: $11 league, $12 knockout, $13 two player."
  },
  {
   "address": 9402,
   "type": "line",
   "text": "The nine prematch messages (card_text_draw): where each goes on the screen, low bytes."
  },
  {
   "address": 9411,
   "type": "line",
   "text": "The messages' screen addresses, high bytes."
  },
  {
   "address": 9420,
   "type": "line",
   "text": "The messages' texts, low bytes: lines of twelve plain characters at $2A04-$2B17."
  },
  {
   "address": 9429,
   "type": "line",
   "text": "The messages' texts, high bytes."
  },
  {
   "address": 9438,
   "type": "line",
   "text": "The number of twelve-character lines in each message."
  },
  {
   "address": 9447,
   "type": "line",
   "text": "The text groups' items, four bytes each: the bitmap address to draw at and the packed string's address. Group 0, SELECT GAME and its eight entries, is first."
  },
  {
   "address": 9759,
   "type": "line",
   "text": "The packed strings, $261F-$2A03 (text_draw): each character is one nybble for space, A, E, O, R, S and T, or two for the rest, through the alphabet at $BA36; 0 ends a string. SELECT GAME and its entries, then the league lengths, TEN WEEKS to ONE HUNDRED WEEKS."
  },
  {
   "address": 9966,
   "type": "line",
   "text": "The menu's flashing credits, three lines each: SPEEDBALL (C) 1989 THE BITMAP BROTHERS; CONVERTED BY PANTHEON SOFTWARE; GRAPHICS BY SAM MOHABULL; MUSIC AND SOUND EFFECTS BY DAVE WHITTAKER."
  },
  {
   "address": 10257,
   "type": "line",
   "text": "PLAYER 1 SELECT, KNOCKOUT ROUND, 2 PLAYER WEEK and LEAGUE WEEK, with the digits the game writes into them; then YOU CANT SELECT ANY MORE OPTIONS, the knockout's and the league's endings, and the save and load instructions and results."
  },
  {
   "address": 10262,
   "type": "line",
   "text": "The packed digit in PLAYER 1 SELECT: the team choice and the shop set it to 1 or 2."
  },
  {
   "address": 10280,
   "type": "line",
   "text": "The digit of the round in KNOCKOUT ROUND."
  },
  {
   "address": 10292,
   "type": "line",
   "text": "The two digits of the week in 2 PLAYER WEEK."
  },
  {
   "address": 10304,
   "type": "line",
   "text": "The two digits of the week in LEAGUE WEEK."
  },
  {
   "address": 10756,
   "type": "line",
   "text": "The nine prematch messages in plain characters, twelve to a line: FIRE TO PLAY OR F3 FOR MAIN MENU, PLAYING EXTRA TIME, LEG 1, and the knockout's WIN OR DRAW and YOU MUST WIN lines, and END OF THE TOURNAMENT PRESS THE FIRE BUTTON."
  },
  {
   "address": 10824,
   "type": "line",
   "text": "The leg's digit in LEG 1, written by prematch_messages."
  },
  {
   "address": 10984,
   "type": "line",
   "text": "The last message, END OF THE TOURNAMENT, PRESS THE FIRE BUTTON, four lines."
  },
  {
   "address": 11032,
   "type": "line",
   "text": "A team's card, seven lines of twelve characters (team_text_set, attributes_text_set): TEAM and the name, CAPT, HEIGHT, WEIGHT, STAMINA, POWER and SKILL."
  },
  {
   "address": 11038,
   "type": "line",
   "text": "The team's name in the card, six characters."
  },
  {
   "address": 11049,
   "type": "line",
   "text": "The captain's name, seven characters."
  },
  {
   "address": 11063,
   "type": "line",
   "text": "The captain's height, five characters."
  },
  {
   "address": 11075,
   "type": "line",
   "text": "The captain's weight, five characters."
  },
  {
   "address": 11089,
   "type": "line",
   "text": "The team's stamina, three digits."
  },
  {
   "address": 11101,
   "type": "line",
   "text": "The team's power, one digit followed by two zeros, so 1 shows as 100."
  },
  {
   "address": 11113,
   "type": "line",
   "text": "The team's skill, three digits: 255 less its tackle figure."
  },
  {
   "address": 11116,
   "type": "line",
   "text": "A team's league line, seven lines of twelve: TEAM and the name, WON, LOST, DRAWN, GLS FOR, GLS AST and POINTS (team_line_draw)."
  },
  {
   "address": 11122,
   "type": "line",
   "text": "The team's name in the league line."
  },
  {
   "address": 11168,
   "type": "line",
   "text": "The glyph number in the font at $DCDD for each character code: blank, then the digits 1-10, the letters 11-36, and punctuation. Codes below $20 never come, so its first 32 bytes are the end of the league line above."
  },
  {
   "address": 11259,
   "type": "line",
   "text": "The highlight bar's sprite y for each menu entry, ten entries twelve lines apart."
  },
  {
   "address": 11269,
   "type": "line",
   "text": "The shop cursor's sprite y for each of the eleven lines."
  },
  {
   "address": 11280,
   "type": "line",
   "text": "The direction (0 up to 7 up-left) for each combination of stick bits; $FF for none or an impossible one."
  },
  {
   "address": 11296,
   "type": "line",
   "text": "The three ways side1_control can send a computer player running, as stick bits, picked by the first set bit of $1EF4 from a rotating start: 2 down, $0A down and right, 6 down and left."
  },
  {
   "address": 11299,
   "type": "line",
   "text": "The shop items' prices in tokens: 0 for EXIT, then 2, 3, 3, 4, 4, 4, 6, 6, 6, 7 for items 1-10."
  },
  {
   "address": 11310,
   "type": "line",
   "text": "The token bar's two icons, low bytes: $9D the lit token at $DC9D, $BD the dark one at $DCBD (token_bar_draw, by whether the side has the token)."
  },
  {
   "address": 11312,
   "type": "line",
   "text": "The icons' high bytes, both $DC."
  },
  {
   "address": 11314,
   "type": "line",
   "text": "The vertical fine scroll for each line of the camera within a character row: 7 down to 0."
  },
  {
   "address": 11322,
   "type": "line",
   "text": "The raster chain's twelve slots, nine tables of twelve: the handler's address, low bytes. 0 $8745 the top of play, 1 $8968 the multiplexer, 2 $8781 the panel, 3 $87CA the menu's sprites, 4, 5, 7 and 11 $88DB the frame's work only, 6 $87D0, 8 $87D1, 9 $881D, 10 $886D."
  },
  {
   "address": 11334,
   "type": "line",
   "text": "The slots' handlers, high bytes."
  },
  {
   "address": 11346,
   "type": "line",
   "text": "The raster line each slot runs at."
  },
  {
   "address": 11347,
   "type": "line",
   "text": "Slot 1's line, which the multiplexer moves down the screen as it places sprites."
  },
  {
   "address": 11358,
   "type": "line",
   "text": "The slot that runs after each. Play: 0, then 1 again and again while the multiplexer has sprites to place, then 2 and back to 0. Menus: 3 and 4. Blank: 5 alone. 6 and 7 alternate. Prematch and team choice screens: 8, 9, 10, 11."
  },
  {
   "address": 11370,
   "type": "line",
   "text": "Each slot's VIC control register 1, ORed with screen_enable ($09)."
  },
  {
   "address": 11382,
   "type": "line",
   "text": "Each slot's VIC control register 2."
  },
  {
   "address": 11394,
   "type": "line",
   "text": "Each slot's VIC memory setting."
  },
  {
   "address": 11406,
   "type": "line",
   "text": "$FF for a slot that sets no video registers (the multiplexer)."
  },
  {
   "address": 11418,
   "type": "line",
   "text": "Each slot's sprite enable, ANDed with sprites_enable ($0A)."
  },
  {
   "address": 11430,
   "type": "line",
   "text": "The keyboard rows read for F3, RUN/STOP and F5 ($FE, $7F, $FE)."
  },
  {
   "address": 11433,
   "type": "line",
   "text": "The columns of those keys ($20, $80, $40)."
  },
  {
   "address": 11436,
   "type": "line",
   "text": "The countdown sprite's frame for each stage, 0 none and $0C-$15."
  },
  {
   "address": 11447,
   "type": "line",
   "text": "The y each of the eight hardware sprites was last placed at, so the multiplexer knows which is free."
  },
  {
   "address": 11455,
   "type": "line",
   "text": "The sprites' high x bits for $D010, play."
  },
  {
   "address": 11456,
   "type": "line",
   "text": "The sprites' multicolour bits for $D01C, play."
  },
  {
   "address": 11457,
   "type": "line",
   "text": "Each object's sprite x, low bytes (object_screen_pos), for the multiplexer."
  },
  {
   "address": 11471,
   "type": "line",
   "text": "The countdown sprite's x (object 14)."
  },
  {
   "address": 11473,
   "type": "line",
   "text": "Each object's sprite x high bit, $FF when set."
  },
  {
   "address": 11487,
   "type": "line",
   "text": "The countdown sprite's high x bit."
  },
  {
   "address": 11489,
   "type": "line",
   "text": "Each object's sprite y on screen; sprites_sort orders by it."
  },
  {
   "address": 11505,
   "type": "line",
   "text": "Each object's sprite colour."
  },
  {
   "address": 11510,
   "type": "line",
   "text": "Players 5-9's colours."
  },
  {
   "address": 11515,
   "type": "line",
   "text": "The launcher parts' colours."
  },
  {
   "address": 11519,
   "type": "line",
   "text": "The countdown sprite's colour."
  },
  {
   "address": 11520,
   "type": "line",
   "text": "The ball's colour."
  },
  {
   "address": 11521,
   "type": "line",
   "text": "Each object's sprite pointer (its shape)."
  },
  {
   "address": 11531,
   "type": "line",
   "text": "The launcher parts' pointers."
  },
  {
   "address": 11535,
   "type": "line",
   "text": "The countdown sprite's pointer."
  },
  {
   "address": 11536,
   "type": "line",
   "text": "The ball's pointer: its height, the launcher's arrow, or the electric ball."
  },
  {
   "address": 11537,
   "type": "line",
   "text": "Each object's multicolour flag."
  },
  {
   "address": 11547,
   "type": "line",
   "text": "The launcher parts' multicolour flags."
  },
  {
   "address": 11553,
   "type": "line",
   "text": "The launcher's parts in two sets of four (launcher_objects_set): x low bytes."
  },
  {
   "address": 11561,
   "type": "line",
   "text": "The parts' x high bytes."
  },
  {
   "address": 11569,
   "type": "line",
   "text": "The parts' y low bytes."
  },
  {
   "address": 11577,
   "type": "line",
   "text": "The parts' y high bytes."
  },
  {
   "address": 11585,
   "type": "line",
   "text": "The parts' colours."
  },
  {
   "address": 11593,
   "type": "line",
   "text": "The parts' sprite pointers."
  },
  {
   "address": 11601,
   "type": "line",
   "text": "The parts' multicolour flags."
  },
  {
   "address": 11609,
   "type": "line",
   "text": "Four bytes the unused code at $3AB6 negates."
  },
  {
   "address": 11613,
   "type": "line",
   "text": "Four more bytes the unused code negates, then eight ($2D61) nothing reads."
  },
  {
   "address": 11625,
   "type": "line",
   "text": "The ball's sprite pointer for each height phase 0-7: it grows as it rises."
  },
  {
   "address": 11633,
   "type": "line",
   "text": "A count the face and panel routines keep: bits left in the mask byte."
  },
  {
   "address": 11634,
   "type": "line",
   "text": "The menus' sprite settings, two blocks of 40 bytes ($2D72 and $2D9A) that sprite_block_load writes to the video chip: x and y for eight sprites (0-15), then $D010, $D015, $D017, $D01B, $D01C, $D01D, two bytes for $D027 and $D028 that the colours overwrite at once (16-23), the eight colours (24-31) and the eight pointers (32-39). Block 0 is the SELECT GAME highlight: seven orange sprites side by side at y $52."
  },
  {
   "address": 11635,
   "type": "line",
   "text": "Block 0's first sprite's y; menu_bar_y writes every other byte from here to move the highlight bar. sprite_block_load reads through it, past the positions, for $D015."
  },
  {
   "address": 11636,
   "type": "line",
   "text": "Block 0's second sprite's x. sprite_block_load reads through it for $D017."
  },
  {
   "address": 11637,
   "type": "line",
   "text": "Block 0's second sprite's y. sprite_block_load reads through it for $D01B."
  },
  {
   "address": 11638,
   "type": "line",
   "text": "Block 0's third sprite's x. sprite_block_load reads through it for $D01C."
  },
  {
   "address": 11639,
   "type": "line",
   "text": "Block 0's third sprite's y. sprite_block_load reads through it for $D01D."
  },
  {
   "address": 11640,
   "type": "line",
   "text": "Block 0's fourth sprite's x. sprite_block_load reads through it for $D027."
  },
  {
   "address": 11641,
   "type": "line",
   "text": "Block 0's fourth sprite's y. sprite_block_load reads through it for $D028."
  },
  {
   "address": 11649,
   "type": "line",
   "text": "Block 0's eighth sprite's y. sprite_block_load reads the eight colours through it, offset 24-31 of the block."
  },
  {
   "address": 11657,
   "type": "line",
   "text": "Block 0's byte for $D028. sprite_block_load reads the eight pointers through it, offset 32-39 of the block, into $5FF8-$5FFF."
  },
  {
   "address": 11675,
   "type": "line",
   "text": "Block 1 (from $2D9A) is the shop's cursor: six orange sprites side by side at y $5A. This is its first sprite's y; shop_cursor_y writes every other byte from here."
  },
  {
   "address": 11714,
   "type": "line",
   "text": "The countdown sprite's high x bit for each side."
  },
  {
   "address": 11716,
   "type": "line",
   "text": "The countdown sprite's x for each side."
  },
  {
   "address": 11718,
   "type": "line",
   "text": "The countdown sprite's colour for each side."
  },
  {
   "address": 11720,
   "type": "line",
   "text": "The number of digits number_text writes."
  },
  {
   "address": 11721,
   "type": "line",
   "text": "A 16-bit number to turn into digits (number_digits)."
  },
  {
   "address": 11722,
   "type": "line",
   "text": "The number's high byte."
  },
  {
   "address": 11723,
   "type": "line",
   "text": "The number's five digits, as character codes."
  },
  {
   "address": 11725,
   "type": "line",
   "text": "The last three digits."
  },
  {
   "address": 11726,
   "type": "line",
   "text": "The tens digit of a score."
  },
  {
   "address": 11727,
   "type": "line",
   "text": "The units digit of a score."
  },
  {
   "address": 11728,
   "type": "line",
   "text": "The copy protection's sum: the top slot of play adds CIA 2's timer A and timer B low bytes, EORed, each frame. On a genuine copy the two timers count in step and it stays 0. Its readers: ORed into port 2's stick (sticks_read) and into the ball's speed index (throw_speed_set), stored into the frame flag (so wait_frame would never end), used as the play interrupt chain's first slot (pitch_setup, $9119) and as the league's load slot (menu_load_league), and added in at $3B61 and $3B68."
  },
  {
   "address": 11729,
   "type": "line",
   "text": "The four domes' columns in the pitch grid, for tile_place to avoid."
  },
  {
   "address": 11733,
   "type": "line",
   "text": "The four domes' rows in the grid."
  },
  {
   "address": 11737,
   "type": "line",
   "text": "Each player's role at kick-off: players 0-3 roles 0-3 (side 0's keeper and three outfield players), 5-8 roles 5-8 (side 1's), and players 4 and 9 role 4, which has no routine."
  },
  {
   "address": 11747,
   "type": "line",
   "text": "Each player's facing at kick-off: up for side 0, down (4) for side 1."
  },
  {
   "address": 11757,
   "type": "line",
   "text": "A value for each player at kick-off, 1-5 and $FF-$FB, stored in $1D05 and never read."
  },
  {
   "address": 11767,
   "type": "line",
   "text": "Each player's sprite pointer at kick-off."
  },
  {
   "address": 11777,
   "type": "line",
   "text": "Each player's x at kick-off: keepers at $9A."
  },
  {
   "address": 11787,
   "type": "line",
   "text": "Each player's y at kick-off, low bytes."
  },
  {
   "address": 11797,
   "type": "line",
   "text": "Each player's y at kick-off, high bytes: side 0's keeper at $220, side 1's at $20."
  },
  {
   "address": 11807,
   "type": "line",
   "text": "The role routines, low bytes: 0 $A116 side 0's keeper at the bottom, 1-3 $A25D, $A2B7, $A309 side 0's outfield players, 4 and 9 $9E19 none, 5 $A391 side 1's keeper at the top, 6-8 $A628, $A683, $A6E5 side 1's outfield players."
  },
  {
   "address": 11817,
   "type": "line",
   "text": "The role routines, high bytes."
  },
  {
   "address": 11827,
   "type": "line",
   "text": "The push a bumped player gets, 64 entries: by his facing times 8 plus the direction to the other player."
  },
  {
   "address": 11891,
   "type": "line",
   "text": "The domes' x for the ten layouts, four each ($2E73-$2E9A)."
  },
  {
   "address": 11931,
   "type": "line",
   "text": "The domes' y, low bytes."
  },
  {
   "address": 11971,
   "type": "line",
   "text": "The domes' y, high bytes."
  },
  {
   "address": 12011,
   "type": "line",
   "text": "Where each team's animation starts in the frame list at $2EF4."
  },
  {
   "address": 12014,
   "type": "line",
   "text": "Where each team's animation ends."
  },
  {
   "address": 12017,
   "type": "line",
   "text": "The frame numbers of the three teams' animations on the team choice screen, read from each team's start to its end ($2EF1-$2F15): 0-2 and back for the first team, 3-6 and back for the second, 7-9 twice for the third. Each frame's picture comes from $B95F/$B969."
  },
  {
   "address": 12054,
   "type": "line",
   "text": "For each team, the bytes in each of its animation's five columns, less one (10, 5, 10)."
  },
  {
   "address": 12057,
   "type": "line",
   "text": "For each of the ten players, the address of his row of distances in the table at $1E49 (ten bytes a row), low bytes. marker_facing reads entries 0-4 of a row, list_min entries 1-4, and side1_control the one entry for the controlled player $60."
  },
  {
   "address": 12067,
   "type": "line",
   "text": "The distance rows' addresses, high bytes, all $1E."
  },
  {
   "address": 12077,
   "type": "line",
   "text": "Where each team's animated picture is drawn, low bytes."
  },
  {
   "address": 12080,
   "type": "line",
   "text": "The animated pictures' addresses, high bytes."
  },
  {
   "address": 12083,
   "type": "line",
   "text": "The team choice's highlight frame, four expanded black sprites round the team the cursor ($1EE8) is on (irq_slot_shop_sprites): for each team, the last of its four entries in the tables below."
  },
  {
   "address": 12086,
   "type": "line",
   "text": "The frame's sprite pointers, four for each team (4-7)."
  },
  {
   "address": 12098,
   "type": "line",
   "text": "The frame's $D010 for each team: 0, 0, $0A for the third, whose frame crosses x 256."
  },
  {
   "address": 12101,
   "type": "line",
   "text": "The frame's sprites' x, four for each team."
  },
  {
   "address": 12113,
   "type": "line",
   "text": "The x of each of the eight sprites in the row slot 9 shows at line $B2 (irq_slot_shop_row)."
  },
  {
   "address": 12121,
   "type": "line",
   "text": "The frame's sprites' y, four for each team: $52 and $7C."
  },
  {
   "address": 12133,
   "type": "line",
   "text": "The prematch screen's title, character codes in the font at $E715, ending with 0 (title_draw)."
  },
  {
   "address": 12190,
   "type": "line",
   "text": "The league fixtures the computer plays out (league_week_end), two team numbers a match, counted from 1 (1, the human's team, never appears): four matches a week for weeks 1-10 from (week-1)*8, and five for week 11, when the human's team rests."
  },
  {
   "address": 12191,
   "type": "line",
   "text": "The second team of each fixture."
  },
  {
   "address": 12280,
   "type": "line",
   "text": "The league table's colours for a row, 40 bytes: brown (9) at the column lines and yellow (7) between, which table_frame_draw writes to colour RAM row by row from $D878."
  },
  {
   "address": 12320,
   "type": "line",
   "text": "For teams 1-13, the offset of the last character of the team's name in $303C; entry 0 is not used. The routines copy six characters backwards from it."
  },
  {
   "address": 12334,
   "type": "line",
   "text": "For teams 1-13, the offset of the last character of the captain's text in $308A (seventeen characters a team); entry 0 is not used."
  },
  {
   "address": 12348,
   "type": "line",
   "text": "The thirteen teams' names, six characters each: MIRA, AURIGA, CASTOR, VOLANS, DORADO, VELA, TUCANA, ANTLIA, PAVO, PERSUS, and the three you can choose, VERNA, LACATA and DRACO."
  },
  {
   "address": 12426,
   "type": "line",
   "text": "Each team's captain, height and weight, seventeen characters: XENON 1.84M 80KG, SIMION, SOHO, ARTECH, ROONEY, TYCHO, BROD, ZEIT, RUBYCON, KEPLER, and the chosen teams' KEF 2.00M 83KG, CONROY 1.92M 86KG and VERIK 2.08M 77KG."
  },
  {
   "address": 12647,
   "type": "line",
   "text": "Re-entry from a prematch screen's F3 (prematch_wait), stack reset: the menu with \"continue\" possible (menu_resume); if a game is under way or was loaded ($1EE9) it goes on with it at match_restart, otherwise to new_game_reset."
  },
  {
   "address": 12660,
   "type": "line",
   "text": "From start-up: no game in progress (game type $1EAF = $80), then main_menu."
  },
  {
   "address": 12665,
   "type": "line",
   "text": "The top of the game, stack reset: the SELECT GAME menu (menu_main), whose entries set up a game and return here. A loaded or unfinished game ($1EE9) goes on at match_restart."
  },
  {
   "address": 12676,
   "type": "line",
   "text": "A new game: round $1EC4, both sides' tokens ($1EB1, $1EB2), the bribed goals ($1EF0, $1EF1) and the pitch layout counter $1ED0 to 0, the bought handicaps cleared (handicap_clear), both power-up durations ($1EC7, $1EC8) 120 passes and the countdown paces ($1EC9, $1ECA) 12."
  },
  {
   "address": 12715,
   "type": "line",
   "text": "Clears the knockout round's points and legs ($1EC2, $1EC3), then match_start."
  },
  {
   "address": 12723,
   "type": "line",
   "text": "A new match: 40 bars on the clock target ($76), no extra time ($1EDC), both scores 0."
  },
  {
   "address": 12738,
   "type": "line",
   "text": "The start of a match or of its extra time: the drawn clock bar $75 at 0, the quit flag $7A clear, the clock's pass counter $74 at 112. By game type ($1EAF): a league loads this week's opponent (opponent_load, record = week) and shows the league prematch screen; a knockout takes the template number $1CD1 of record round + 1 and loads the record with that number (a second lookup, so the figures are another team's than the one the screen names), then its screen; a two player game its own. Then the players' stamina and power (players_attributes_set) and the pitch (pitch_setup)."
  },
  {
   "address": 12792,
   "type": "line",
   "text": "Every kick-off, after a goal too: music stopped (tune 0 when $53 is set), the goal countdown $77, ball holder, thrower, flight, height, throw counters, the computer's timers and both ball speeds cleared; friction pace $1EDF = 14, throw strength $1EE0 = 7, flight $1EEF = 26; power-ups cleared (effects_clear) and the next tile in 50 passes ($67); the ball to the launcher, any bribed goals ($1EF0, $1EF1) added to the scores, the scores drawn, every player to his start (players_reset_all), and the ball launcher (launcher_sequence)."
  },
  {
   "address": 12892,
   "type": "line",
   "text": "One pass of play, after a frame wait. With RUN/STOP held ($56) the game pauses until fire on port 2 (or port 1 in a two player game). F3 ($55), unless full time is already counting, quits the match (match_quit). During the goal countdown ($77) the players walk back to their places (players_walk_home) and the ball slides to the centre (ball_slide_home), and at its end comes the kick-off. During the full-time countdown ($78) the same, tune 5 at step 80, and at its end match_over. Otherwise the clock (clock_step), and full time when its drawn bar is back to 0; then the players (players_update), the ball (ball_move: a goal goes to goal_scored), the ball's sprite, stamina meters, tiles, pick-ups for both sides."
  },
  {
   "address": 13011,
   "type": "line",
   "text": "The rest of every pass: flags a sprite update ($4F), waits a frame, counts $62, the tile (tile_step), the launcher's lift (launcher_lift), the power-up countdown, the ball-holder markers in the panel (holder_markers), the scroll (scroll_update), then match_loop again."
  },
  {
   "address": 13038,
   "type": "line",
   "text": "A goal: the scores drawn, the tile removed, the 160-pass countdown ($77), and tune 5 when the ball went in at the top ($1E48 = 0, side 0 scored) or tune 6 at the bottom."
  },
  {
   "address": 13069,
   "type": "line",
   "text": "F3 during a match: sets the quit flag $7A and falls into time_up."
  },
  {
   "address": 13073,
   "type": "line",
   "text": "Full time: the 160-pass countdown ($78), the tile removed, and sound $19."
  },
  {
   "address": 13088,
   "type": "line",
   "text": "The full-time countdown is over: music stopped, the play sprites saved back to $F300 (play_sprites_out). A quit match goes straight to the menu. Otherwise the token shop (match_result_shop); a draw with extra time bought ($1EDC) restarts with 13 bars on the clock. Then by game type: a league plays out the week (league_week_end), moves the week $1ED8 on (1 again after 11, with the week count $1EDB and the season $1EC4, ending the league at $1EB0 with league_over_screen); a knockout scores the leg (knockout_round_end: next leg, next round, or out); a two player game records the match (twoplayer_week_end). The pitch layout $1ED0 moves on, 0-9."
  },
  {
   "address": 13203,
   "type": "line",
   "text": "The match clock, once a pass: every 112 passes ($74) the target $76 comes down one bar, and each pass the drawn bar $75 moves one step toward it, so it fills from 0 to 40 at kick-off and then empties as time runs; match_loop calls full time when it is back to 0. Draws the bar into the ten cells at $7381: full cells (character 8) up to its end, the end cell 9-12 by quarter, and all ten full at 40."
  },
  {
   "address": 13267,
   "type": "line",
   "text": "Takes the tile off the pitch (tile_floor_put), sets the tile delay $67 to 255, and falls into effects_clear."
  },
  {
   "address": 13274,
   "type": "line",
   "text": "Ends every power-up: $6B (P), $6C (F), $6D (R), $70 (W) and $71 (J) cleared, the countdown $1ECC stopped, and the launcher objects hidden (launcher_objects_hide)."
  },
  {
   "address": 13293,
   "type": "line",
   "text": "Puts the floor back where the tile was: block 13's source is the floor piece at $21F7/$21F9 (the second one when the tile's column $69 is 3 or more and its row $6A 2 or more), drawn by block_put; $4A = $FF makes the next pass redraw the screen."
  },
  {
   "address": 13330,
   "type": "line",
   "text": "Sets up objects 10-13, the parts of the ball launcher, from row Y of the table at $2D21: x ($2D21, $2D29), y ($2D31, $2D39), colour ($2D41), sprite pointer ($2D49) and multicolour flag ($2D51)."
  },
  {
   "address": 13379,
   "type": "line",
   "text": "Hides objects 10-13 by setting their y high bytes ($1E33-$1E36, $1E43-$1E46) to $80."
  },
  {
   "address": 13393,
   "type": "line",
   "text": "Once a pass. While the tile delay $67 runs it counts down, and at 0 a new tile appears: its cell chosen (tile_place) and its type (tile_choose), and block 13 drawn there from $DBF9 (characters $F8-$FB). While a tile is on the pitch its four characters at $7FC0-$7FDF are redrawn each pass from the type's patterns at $DC3D and $DC5D, one byte further on ($66), so the pattern rolls. Then the power-up time $1ECD counts down, and at 0 every power-up ends (effects_clear)."
  },
  {
   "address": 13498,
   "type": "line",
   "text": "Each side's stamina and power into its five players: $1EB7 and $1EB5 into $1CE7 and $1CF1 for players 0-4, $1EB8 and $1EB6 into $1CEC and $1CF6 for players 5-9."
  },
  {
   "address": 13528,
   "type": "line",
   "text": "Every player to his start (player_reset, with $41 = $FF), and players 4 and 9 the controlled ones ($60, $61)."
  },
  {
   "address": 13549,
   "type": "line",
   "text": "Player X back to his start: facing ($2DE3), action 2, $1D05 from $2DED, position from $2E01 (x) and $2E0B/$2E15 (y), role from $2DD9 and sprite pointer from $2DF7, and $1D2D, his flags, $1D69 and $1D5F cleared."
  },
  {
   "address": 13621,
   "type": "line",
   "text": "During a countdown: each player steps toward his start ($2E01, $2E0B, $2E15) and, once there, faces his start way and stops (flags $10 and $40 cleared)."
  },
  {
   "address": 13705,
   "type": "line",
   "text": "For the five players from X: the distance to the ball, in units of 4 pixels (distance_approx), into $1D41. Clears $7B."
  },
  {
   "address": 13781,
   "type": "line",
   "text": "The player of the four from X with the smallest $1D41: the one nearest the ball."
  },
  {
   "address": 13808,
   "type": "line",
   "text": "The stick bits that take player X toward the target ($39-$3E) from where he is ($37-$3C), in $41 (dir_to_target)."
  },
  {
   "address": 13818,
   "type": "line",
   "text": "Stick bits (1 up, 2 down, 4 left, 8 right) from the position in $37/$3B, $38/$3C toward the target $39/$3D, $3A/$3E: 0 when both differences are under 6; a single direction when one difference is at least 20 more than the other; a diagonal otherwise."
  },
  {
   "address": 14045,
   "type": "line",
   "text": "Subtracts the 16-bit value at $39+Y-2 ($37+Y, $3B+Y) from the one at $37+X ($3B+X): the difference of two coordinates."
  },
  {
   "address": 14061,
   "type": "line",
   "text": "Negates the 16-bit coordinate difference at $37+X, $3B+X."
  },
  {
   "address": 14075,
   "type": "line",
   "text": "Carry set when the difference at $37+X is 6 or more."
  },
  {
   "address": 14085,
   "type": "line",
   "text": "Carry set when the difference at $37+X is 20 ($14) or more."
  },
  {
   "address": 14095,
   "type": "line",
   "text": "Sprite colours: players 0-4 green (5), 5-9 red (2). Unless a countdown is running, every fourth frame ($62 bit 2) the controlled players show light green ($0D) and light red ($0A)."
  },
  {
   "address": 14137,
   "type": "line",
   "text": "The ball launcher at a kick-off: waits for it to rise (launcher_lift, $1EF3), puts the ball on it at ($94, $0E low bytes), starts its sound ($FE), sets up its parts (launcher_objects_set, row 3) and spins it a random 16-48 turns: its direction $19 steps round the eight directions, shown as the ball's sprite (launcher_frame), with sprite multicolour 0 flashed at the raster lines in $BB2C. Then shoots the ball out in the last direction at a random strength 1-4 ($BA61, $BAB1), sounds $FF and 0, hides the launcher, puts the ball back on the centre, lets the camera follow, and lowers the launcher ($1EF3 = $FF)."
  },
  {
   "address": 14293,
   "type": "line",
   "text": "The ball's sprite shows the launcher's arrow: pointer $7A + direction $19, colour 15, and a sprite update flagged."
  },
  {
   "address": 14311,
   "type": "line",
   "text": "The ball's sprite by its height: pointer from $2D69 at the height phase |$1EE3|, colour 15. Under power-up W ($70) the ball is the electric one: pointer $37, colour light red."
  },
  {
   "address": 14350,
   "type": "line",
   "text": "One pass of the ball. Held ($1EE1), it sits at the holder's feet: his position plus the offset for his facing ($BB01/$BB09, $BB11/$BB19), on the ground. Free: its height phase steps up to 7 and back down through -7 to 0 ($1EE3, a step every $1EE4 passes); still for 120 passes, it is shot off in a random direction at strength $1EE0. Side walls at x $1C and $108 bounce it (sound $0F) unless it is on the ground in the warp tunnels (y $108-$127, tunnel_check), which send it out of the other side (sound $16). At the top (y below $18) and bottom (y $228 on) a ball on the ground between x $64 and $C7 (goal_check) is a goal: side 0's score $1EAD or side 1's $1EAE goes up, the ball is put back in front of the goal, and it returns 1; otherwise it bounces. On the ground it can hit a dome (dome_bounce). Every 14 passes ($1EDF) friction takes a step off each speed; then the speeds are added to the position."
  },
  {
   "address": 14842,
   "type": "line",
   "text": "During a countdown, the ball slides 2 pixels a pass toward line $118. The test that should stop it there compares the position's high byte with $18, so it never matches; ball_to_launcher, the snap it was meant to make, is reached only through the other branch's end."
  },
  {
   "address": 14914,
   "type": "line",
   "text": "Puts the ball on the centre spot: x $A0, y $118."
  },
  {
   "address": 14935,
   "type": "line",
   "text": "Returns 1 when the ball is on the ground (height phase 0) between x $64 and $C7, the goal mouth."
  },
  {
   "address": 14973,
   "type": "line",
   "text": "Returns 1 when the ball is on the ground with y between $108 and $127, in front of a warp tunnel."
  },
  {
   "address": 15010,
   "type": "line",
   "text": "Reverses the ball's horizontal speed $1EDD."
  },
  {
   "address": 15020,
   "type": "line",
   "text": "Reverses the ball's vertical speed $1EDE."
  },
  {
   "address": 15030,
   "type": "line",
   "text": "41 bytes of code that no instruction or table reaches: a tunnel check for any object Y, without the ground test (1 when its y is $108-$127, sharing tunnel_check's exits), then two routines that negate $2D59,Y and $2D5D,Y."
  },
  {
   "address": 15071,
   "type": "line",
   "text": "Whether a side 0 player picks up the free ball: nobody holds it, the throw's pick-up delay $7B is over; the thrower ($1EE2) cannot take it back until $1EEF runs out. A player within 3 units ($1D41), not marked $80, takes it; a ball in the air only by one jumping (action 1, at frame 2 or later, other than 6). The keeper (role 0) throws it straight back up the pitch at once; the top keeper (player 5) down it; any other player takes it (ball_take_side0, ball_take_side1)."
  },
  {
   "address": 15075,
   "type": "line",
   "text": "The same for side 1's players 5-9."
  },
  {
   "address": 15182,
   "type": "line",
   "text": "Side 0's player X takes the ball. Under side 1's power-up W ($70 negative) the ball bounces off him instead and he goes down (action 5); that path also adds $2DD0 into the text counts at $2469, a corruption that only a copy with mismatched timers suffers. Otherwise sound 0, the ball held by his marker ($1EE1), he becomes the controlled player ($60, roles swapped), the computer's timers cleared, and the column he took it in ($BBEF) set as side 0's formation $1EB3."
  },
  {
   "address": 15258,
   "type": "line",
   "text": "Side 1's player X takes the ball: the same, with side 0's W ($70 = 1) bouncing it, $61 the controlled player, $1EC5 = $FF and the formation $1EB4."
  },
  {
   "address": 15306,
   "type": "line",
   "text": "The bottom keeper throws the ball straight up the pitch: sound 1, sideways speed by his facing (throw_speed_set), up at the throw strength $1EE0, facing up; then keeper_throw."
  },
  {
   "address": 15331,
   "type": "line",
   "text": "The top keeper throws it down the pitch: straight in a one player game, by his facing in a two player game."
  },
  {
   "address": 15355,
   "type": "line",
   "text": "The rest of a keeper's throw: flight counters $1EEF and $7B at 26, friction pace 12, a lob (height phase 1, step 6), the keeper as the thrower, nobody holding, and action 3."
  },
  {
   "address": 15394,
   "type": "line",
   "text": "The menu with a game under way ($1EE9 = 1), then menu_loop."
  },
  {
   "address": 15398,
   "type": "line",
   "text": "The menu with no game kept ($1EE9 = 0)."
  },
  {
   "address": 15403,
   "type": "line",
   "text": "Tune 0, eight entries ($79), the box twelve rows high ($2363), the SELECT GAME menu (menu_select, text group 0), then a jump to the chosen entry's handler through $2283/$228B."
  },
  {
   "address": 15438,
   "type": "line",
   "text": "ONE PLAYER KNOCKOUT: the eleven teams' records (knockout_init) and game type 1, then menu_teams."
  },
  {
   "address": 15446,
   "type": "line",
   "text": "The team choice (team_select), nothing kept; the sides' attributes set by game type (side_attributes_set, both_attributes_set) and, for a league or a two player game, the league's length (league_length_menu)."
  },
  {
   "address": 15478,
   "type": "line",
   "text": "TWO PLAYER GAME: the records (league_init), game type 0, then menu_teams."
  },
  {
   "address": 15488,
   "type": "line",
   "text": "ONE PLAYER LEAGUE: the records (league_teams_init), game type $FF, then menu_teams."
  },
  {
   "address": 15498,
   "type": "line",
   "text": "SAVE GAME, when a game is in progress: a screen of instructions (box 12, text group 16), fire to go on or F3 to give up; then box 13, text group $14, the save (jv_save_game) of the file for this game type ($2293: \"0\" league, \"1\" knockout, \"2\" two player), text group $15 or $18 by the carry, and a wait for fire."
  },
  {
   "address": 15572,
   "type": "line",
   "text": "LOAD LEAGUE: slot $2DD0 (0 on a genuine copy), then menu_load."
  },
  {
   "address": 15577,
   "type": "line",
   "text": "LOAD KNOCKOUT: slot 1."
  },
  {
   "address": 15581,
   "type": "line",
   "text": "LOAD TWO PLAYER GAME: slot 2."
  },
  {
   "address": 15583,
   "type": "line",
   "text": "Loading slot X ($7C): the instructions (box 11, text group $11-$13 from $24B7), fire or F3; then $1EE9 = 1, box 14, text group $16, the load (jv_load_game), and text $17 or, on an error, $19 with $1EE9 cleared; a wait for fire and back to the menu."
  },
  {
   "address": 15662,
   "type": "line",
   "text": "CONTINUE GAME: with a game kept ($1EE9) it returns, and main_menu goes on with it; otherwise box 10 and text group 15, game type 1, and back to the menu after fire."
  },
  {
   "address": 15692,
   "type": "line",
   "text": "PLAYER 1 SELECT: the screen set up, the three teams' pictures and cards side by side, tune 4 fading; side 0 chooses (team_choose) into $1ED1; in a two player game the pictures are recoloured and side 1 chooses (heading \"2\") into $1ED2."
  },
  {
   "address": 15821,
   "type": "line",
   "text": "One side's choice among the three teams, the one already taken ($1ED1) skipped: text group 6, the cursor $1EE8 moved by left and right with a ten-frame repeat; fire plays the chosen team's animation (frames from $B95F/$B969 by the lists at $2EEB, $2EEE and $2EF1, into the picture at $2F2D/$2F30, five 8-byte columns, four frames apart). Six slow ticks ($11) with no input go back to the menu."
  },
  {
   "address": 16077,
   "type": "line",
   "text": "Side 0's stamina, power and tackle figure ($1EB7, $1EB5, $1EB9) from team $1ED1's entries at $B9D6, $B9D9 and $B9DC."
  },
  {
   "address": 16101,
   "type": "line",
   "text": "Both sides': side 0's as above, side 1's ($1EB8, $1EB6, $1EBA) from team $1ED2."
  },
  {
   "address": 16111,
   "type": "line",
   "text": "The eleven team records 10 down to 0 from the eleven templates (team_record_init), week $1ED8 = 1, $1EDB = 2."
  },
  {
   "address": 16133,
   "type": "line",
   "text": "Record 0 from template 0, then templates 1-10 into the records starting at a random record 1-10 and stepping by 3 (wrapping within 1-10), so $1CD1 holds a shuffled order of the templates: the knockout's opponents as the screens name them. Week and $1EDB = 1."
  },
  {
   "address": 16178,
   "type": "line",
   "text": "Team record X from template Y: the template number ($1CD1), power ($1C4D from $BA16), stamina ($1C58 from $BA0B), $1C63 ($B9DF), $1C6E ($B9EA), keeper delay ($1C79 from $B9F5), $1C84 ($BA00), tackle figure ($1CA5 from $BA21); goals, points, matches, wins, losses and draws cleared."
  },
  {
   "address": 16257,
   "type": "line",
   "text": "The computer's side from team record Y: power $1EB6, stamina $1EB8, $1EBB, $1EBC, keeper delay $1EBD, $1EBE and $1EBF, and the tackle figure $1EBA; then the bought handicaps (attributes_handicap)."
  },
  {
   "address": 16306,
   "type": "line",
   "text": "The league's length: music off, ten entries, a box fifteen rows high, menu_select with text group 5; the choice plus one into $1EB0."
  },
  {
   "address": 16346,
   "type": "line",
   "text": "After a match: side 0's token shop, then in a two player game side 1's, with the screen blanked between; extra time bought ($1EDC) counts down one; waits for fire to be released."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "Sprites 0-11, hires: 0 empty; 1-3 the SELECT GAME highlight bar's left end, middle and right end; 4-7 the four corners of the frame round the team being chosen; 8 and 9 two corner pieces; 10 a bar, which slot 9 repeats across the prematch screens; 11 a block of upright stripes."
  },
  {
   "address": 17152,
   "type": "line",
   "text": "Sprites 12-21 ($0C-$15), the digits 0 to 9 of the power-up countdown in the panel (countdown_step, through $2CAC)."
  },
  {
   "address": 17792,
   "type": "line",
   "text": "Sprites $16-$24, a player running, five frames for each way he faces (action 0's frame lists at $BC03): $16-$1A right, $1B-$1F left, $20-$24 up and to the right. The middle frame of each, $16, $1B and $22, is also how he stands (action 2). Players are multicolour; the sides differ only in their sprite colours."
  },
  {
   "address": 18752,
   "type": "line",
   "text": "Sprites $25-$33, running on: $25-$29 up and to the left, $2A-$2E down and to the right, $2F-$33 down and to the left; $27, $2C and $31 are also the standing frames."
  },
  {
   "address": 19712,
   "type": "line",
   "text": "Sprites $34-$37, the ball at four sizes, $34 the largest: ball_sprite picks one by its height ($2D69), the smallest on the ground. $37, coloured light red, is also the electric ball of power-up W."
  },
  {
   "address": 19968,
   "type": "line",
   "text": "Sprites $38-$43, a player jumping for the ball, three frames for each way he faces (action 1): $38-$3A facing down, $3B-$3D up, $3E-$40 up and to the right, $41-$43 up and to the left."
  },
  {
   "address": 20736,
   "type": "line",
   "text": "Sprites $44-$4F, jumping on: $44-$46 down and to the right, $47-$49 down and to the left, $4A-$4C right, $4D-$4F left."
  },
  {
   "address": 21504,
   "type": "line",
   "text": "Sprites $50-$53, the sliding tackle (action 4) facing up and to the right, up and to the left, down and to the right, and down and to the left. Slides up and down reuse running frames $64 and $69, slides across $70 and $71."
  },
  {
   "address": 21760,
   "type": "line",
   "text": "Sprites $54-$5F, a player throwing, three frames for each diagonal (action 3): $54-$56 up and to the right, $57-$59 up and to the left, $5A-$5C down and to the right, $5D-$5F down and to the left."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "Sprites $60-$69, running up ($60-$64) and down ($65-$69). $62 and $67 are the standing frames that side 0 and side 1 kick off in, facing up and down the pitch."
  },
  {
   "address": 23168,
   "type": "line",
   "text": "Sprites $6A-$6F, throwing up ($6A-$6C) and down ($6D-$6F)."
  },
  {
   "address": 23552,
   "type": "line",
   "text": "In this snapshot, a match, sprites $70 and $71, sliding to the right and to the left, and the start of $72, moved here from $F300 by play_sprites_in. On the menus the same addresses are the bitmap screen's colour screen, which menu_screen_init fills a page at a time from here."
  },
  {
   "address": 23686,
   "type": "line",
   "text": "In a match, the rest of sprites $72 and $73, a throw to the right. On the menus, the colour screen cell where the menu box's border starts (menu_screen_init)."
  },
  {
   "address": 23808,
   "type": "line",
   "text": "In a match, sprite $74, the end of the throw to the right, and $75-$77, a throw to the left. On the menus, the colour screen's second page."
  },
  {
   "address": 24064,
   "type": "line",
   "text": "The start of sprite $78, the keeper diving to the right; on the menus, the colour screen's third page."
  },
  {
   "address": 24072,
   "type": "line",
   "text": "Inside sprite $78. On the menus, the first of the four marks menu_screen_init colours $98."
  },
  {
   "address": 24111,
   "type": "line",
   "text": "Inside sprite $78; on the menus, the second mark."
  },
  {
   "address": 24112,
   "type": "line",
   "text": "Inside sprite $78; on the menus, the third mark."
  },
  {
   "address": 24151,
   "type": "line",
   "text": "Inside sprite $78, then sprite $79, the keeper diving to the left; on the menus, the fourth mark."
  },
  {
   "address": 24192,
   "type": "line",
   "text": "In a match, sprite $7A and the start of $7B, the launcher's arrow pointing up and up to the right (launcher_frame shows $7A plus its direction). On the prematch screens, a row of the colour screen that prematch_screen_setup clears with colour 9."
  },
  {
   "address": 24296,
   "type": "line",
   "text": "The rest of sprite $7B. On the prematch screens, the second row prematch_screen_setup clears."
  },
  {
   "address": 24320,
   "type": "line",
   "text": "Sprites $7C-$7F, the launcher's arrow pointing right, down and to the right, down, and down and to the left. On the menus, the colour screen's last page."
  },
  {
   "address": 24568,
   "type": "line",
   "text": "The end of sprite $7F in a match. On the menu and prematch screens, the eight sprite pointers of the screen at $5C00, which sprite_block_load and slots 8 and 9 write."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "Sprite $80, the launcher's arrow pointing left, and the start of $81, in a match. The game's entry table jumps here from $2003, a jump nothing takes (game_entry); at the hand-over these bytes are the block file7_move copies to $0200, and on the menus the start of the bitmap screen."
  },
  {
   "address": 24648,
   "type": "line",
   "text": "The rest of sprite $81, the arrow pointing up and to the left, then $82 and $83, two of the launcher's four parts (launcher_objects_set). The entry table's $2006 jumps here, a jump nothing takes."
  },
  {
   "address": 24832,
   "type": "line",
   "text": "Sprites $84 and $85, the launcher's other two parts, in a match. At the hand-over, the second page of the block file7_move copies."
  },
  {
   "address": 24960,
   "type": "line",
   "text": "Sprites $86 and $87 in a match, the first of a player knocked down and rolling (action 5): $86-$8B when he faced down, down and to either side, or left; $8C-$91 when he faced up, up and to either side, or right."
  },
  {
   "address": 25088,
   "type": "line",
   "text": "Sprites $88-$8B in a match, the rest of the roll that starts facing down. At the hand-over, the third page of the block file7_move copies."
  },
  {
   "address": 25344,
   "type": "line",
   "text": "Sprites $8C-$8F in a match, the roll that starts facing up. At the hand-over, the fourth page of the block file7_move copies."
  },
  {
   "address": 25600,
   "type": "line",
   "text": "Sprites $90-$95 in a match: the end of that roll ($90, $91), side 1's keeper punching ($92, $93) and side 0's ($94, $95), actions 11 and 8. At the hand-over, the last part of the block file7_move copies."
  },
  {
   "address": 25984,
   "type": "line",
   "text": "Sprites $96-$9F in a match, alternately all set ($96, $98 ... $9E) and empty: no frame list or pointer table in the game names them."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "The SELECT GAME menu and its cursor. Clears the bitmap screen (screen_off_clear), clears text boxes 0-2 and draws text group A (the caller's) and group 1, draws the Speedball logo (logo_draw), puts the seven highlight sprites on row $6A, picks sprite block 0 ($1EEC) and the menu interrupt chain (slot 3), turns the screen on and waits for fire to be let go. Then, once a frame: cycles the flashing text (menu_text_cycle), stirs the random generator, and moves the highlight up or down a row (stick up/down, a ten-frame repeat delay in $10) through the $79 entries, wrapping round, with each row's y from $2BFB. Returns on fire with the chosen row in $1EE8."
  },
  {
   "address": 32931,
   "type": "line",
   "text": "The token shop after a match, for side $1EF5. Clears the bitmap screen (screen_off_clear), puts the side's number in the heading ($2816 = $81 + side) and draws text group 6, the side's team picture (team_panel_draw; recoloured for side 1 by panel_recolour), clears boxes 9 and 3, draws the token bar (token_bar_draw), clears the bought flags (shop_clear_bought) and draws the price list (shop_list_draw). Uses sprite block $28 with the cursor on item 0 and the shop's interrupt chain (slot 3). Then once a frame reads the side's stick: up and down move the cursor to the next item that is not crossed out, wrapping between 0 and 10; fire on item 0 leaves the shop; fire on any other marks it bought, takes its price ($2C23) from the side's tokens ($1EB1), runs its effect through the table at $BB83/$BBA1 (Y = this side, X = the other), and redraws the token bar and the list."
  },
  {
   "address": 33173,
   "type": "line",
   "text": "Scores a knockout leg from $1EAD and $1EAE: two points ($1EC2) for a win, one for a draw, and one more leg played ($1EC3). Three points or more win the round: the round number $1EC4 moves on and, after round 10, the tournament is won (knockout_won_screen) and it returns $FF; otherwise 1. With fewer points, three legs played, or two legs with no points, the team is out (knockout_lost_screen) and it returns $FF. Otherwise 0, play the next leg."
  },
  {
   "address": 33252,
   "type": "line",
   "text": "Records a two player match in the league table (league_record, teams 0 and 1) and moves the week counter $1ED8 on, back to 1 after 10, at which point the round counter $1EC4 moves on; when it reaches the length chosen ($1EB0) the final table is shown (twoplayer_final) and it returns 1, otherwise 0."
  },
  {
   "address": 33300,
   "type": "line",
   "text": "The end of a two player league: shows the table screen (prematch_screen_setup), text group 12 and box 8, both team cards, and the winner's picture: the team with more points ($1C8F/$1C9A of teams 0 and 1; side 1's picture is recoloured), then waits for fire."
  },
  {
   "address": 33370,
   "type": "line",
   "text": "The end of a one player league: the side's picture, box 8 cleared, text group 10, waits for fire and shows the final table (league_table_screen)."
  },
  {
   "address": 33401,
   "type": "line",
   "text": "Knockout won: the side's picture, box 6 cleared, text group 8, then waits for fire."
  },
  {
   "address": 33429,
   "type": "line",
   "text": "Knocked out: the side's picture, box 5 cleared, text group 7, then waits for fire."
  },
  {
   "address": 33457,
   "type": "line",
   "text": "The KNOCKOUT ROUND screen before each leg: the screen set up (prematch_screen_setup), tune 1, the round number as a digit ($80 + $1EC4) in the text at $2828, text group 11, the opponent ($1ED7 = round + 1) drawn by prematch_draw. Returns at once when that says to play; otherwise redraws the cards and waits again (prematch_wait) until fire or F3."
  },
  {
   "address": 33502,
   "type": "line",
   "text": "The two player screen before each match: the screen set up, tune 1, the week number ($1ED8, two digits) written into the text at $2834, text group 12, both teams' pictures and cards, then prematch_wait until fire."
  },
  {
   "address": 33570,
   "type": "line",
   "text": "The league screen before each week's match: the screen set up, tune 1, the week number in the text at $2840, text group 13, this week's opponent ($1ED7 = week) drawn by prematch_draw, then prematch_wait."
  },
  {
   "address": 33638,
   "type": "line",
   "text": "Draws both teams on a prematch screen: side 0's picture and card (left_team_draw), the frame at panel 2 (panel_frame), the opponent's face ($1CD1 of team $1ED7, panel_face_draw) and card (opponent_card_draw), and falls into prematch_messages."
  },
  {
   "address": 33659,
   "type": "line",
   "text": "The line under the teams: box $2468 (0 on a genuine copy, see irq_slot_play_top), \"extra time\" (box 1) after a drawn match with a bribe, else in a knockout the leg (the text at $2A48 = \"1\"-\"3\", box 2) and the score so far (box 3 + points after a first leg; boxes 6 or 7 after a second), then shows the screen (screen_on) and falls into prematch_wait."
  },
  {
   "address": 33738,
   "type": "line",
   "text": "Waits up to 128 frames ($10) for fire on port 2 (returns 0) or F3 ($55, back to the menu through main_menu_resume). When the time runs out it flips $1EEE, which the card routines read to swap between the team's card and its attributes, and returns 1 so the caller redraws."
  },
  {
   "address": 33776,
   "type": "line",
   "text": "Side 0's team picture (team_panel_draw with X = 0, team $1ED1), its frame (panel_frame, X = 1) and the face area (face_box_draw), then its card (left_card_draw)."
  },
  {
   "address": 33796,
   "type": "line",
   "text": "Side 0's card under its picture: the team's name, captain and attributes. In a game other than a knockout, while $1EEE is set, the team's name and league line instead (team_line_draw). Sets $1EF5 = 0."
  },
  {
   "address": 33830,
   "type": "line",
   "text": "Writes the card text for team Y (team_text_set) and the attribute numbers (attributes_text_set), then falls into card_rows_draw."
  },
  {
   "address": 33836,
   "type": "line",
   "text": "Draws seven rows of twelve characters from the text at ($12) into the screen at the address from $23B4/$23B7 (X = 0 or 2: left or right card), each character through the font table $2BA0; the screen pointer moves 40 cells a row, the text 12."
  },
  {
   "address": 33878,
   "type": "line",
   "text": "Side 1's picture (team $1ED2) on the right, recoloured (panel_recolour), then falls into right_card_draw."
  },
  {
   "address": 33891,
   "type": "line",
   "text": "Side 1's card ($1EF5 = 1): team card, or the league line while $1EEE is set."
  },
  {
   "address": 33918,
   "type": "line",
   "text": "The computer opponent's card on the right (team $1ED7): the league line in a league while $1EEE is set, otherwise its card with $1EF5 = 1."
  },
  {
   "address": 33954,
   "type": "line",
   "text": "A team's league line on a card: the text at $2B6C filled with the team's name (from $303C via the index at $3020, spaces dropped) and its row of figures from the league table (league_row_text), then drawn by card_rows_draw."
  },
  {
   "address": 34073,
   "type": "line",
   "text": "Plays out the rest of a league week. After the human's match, each of the week's four other fixtures (from $2F9E, eight bytes a week, team numbers from 1) is decided at random: about one in twelve (a random byte $75-$89) is a draw, 0-5 goals each; otherwise a team rating difference ($1CA5) sets the odds, and the winner scores 2-9 (random_win_score). Each result goes into the table (league_record). In week 10 the human's team rests: the next week is played the same way at once, with the table shown between (league_table_screen)."
  },
  {
   "address": 34262,
   "type": "line",
   "text": "The league table: tune 2 or 3 (won or lost), sorts the positions (league_rank), draws the frame of the table screen (table_frame_draw) and the eleven rows, then flashes the human's row by redrawing it blank and full every 36 frames until fire."
  },
  {
   "address": 34388,
   "type": "line",
   "text": "Copies the 40 characters of the row text at $DA69 into the screen at ($14)."
  },
  {
   "address": 34399,
   "type": "line",
   "text": "The table screen: colour RAM all 9, screen $7400 characters $47 onward for the heading, ten rows of the template at $DAB9, the header rows from $DB31/$DB09/$DAE1, and colour rows from $2FF8 into colour RAM from $D878."
  },
  {
   "address": 34515,
   "type": "line",
   "text": "The one interrupt handler, for the raster interrupt only. Saves the registers and $01, banks the chips in ($01 = $0D) and, for a raster interrupt, runs the next slot of the interrupt chain (irq_slot_run). Then a check of the copy protection, written with undocumented opcodes the disassembler shows as data: LAX $DD0F / ANC #$01 reads CIA 2's control register B and keeps its start bit; when timer B is not running it sets the clock target $76 to $FF, so a match on a copy never reaches full time. Restores $01 and the registers."
  },
  {
   "address": 34563,
   "type": "line",
   "text": "RTI. The NMI and reset vectors point here, so RESTORE does nothing."
  },
  {
   "address": 34564,
   "type": "line",
   "text": "Runs slot $08 of the interrupt chain: moves $08 to the slot's successor ($2C5E), sets the next raster line ($2C52) and acknowledges, re-enables interrupts, and unless the slot's flag ($2C8E) is negative writes its $D011 (ORed with $09, the screen-on bit), $D016, $D018 and sprite enable (ANDed with $0A). Then jumps to the slot's routine through $2C3A/$2C46."
  },
  {
   "address": 34629,
   "type": "line",
   "text": "Slot 0, line $14, the top of the play screen. Sprites off; a check of the copy protection (the operands are changed by irq_slot_shop_row to random mirrors of CIA 2's timer registers): adds timer A's low byte EOR timer B's low byte to $2DD0, which the stick reading and the frame wait use, so the two timers must count in step; and adds one to $2468 when two reads of timer A's low byte agree, that is when timer A has stopped. Then sprites on, the multiplexer's slot table and sprite pointers 1-7 of both screens cleared, and the play colours (slot 5)."
  },
  {
   "address": 34637,
   "type": "line",
   "text": "The low byte of the EOR $DD00 operand at $874C: set to a random $x4 by irq_slot_shop_row, so the instruction reads CIA 2's timer A low byte through one of the register mirrors."
  },
  {
   "address": 34640,
   "type": "line",
   "text": "The low byte of the EOR $DD02 operand at $874F: set to a random $x6, timer B's low byte through a mirror."
  },
  {
   "address": 34650,
   "type": "line",
   "text": "The low byte of the LDA $DD00 operand at $8759: set to a random $x4, timer A's low byte."
  },
  {
   "address": 34653,
   "type": "line",
   "text": "The low byte of the CMP $DD00 operand at $875C: set to a random $x4, timer A's low byte again, read four cycles after the LDA."
  },
  {
   "address": 34689,
   "type": "line",
   "text": "Slot 2, the score panel under the pitch (line $DB, set by the multiplexer when it is done): sprites off and moved out of the way, $D010 from $2CBF, waits for the next raster line and writes $D011 = 7 to split the screen, panel colours (slot 4), the frame's work (frame_work), and when a sprite update is pending ($4F) the camera and sprite positions (sprites_place), the sort (sprites_sort) and the ball shadow (player_colours)."
  },
  {
   "address": 34762,
   "type": "line",
   "text": "Slot 3, line $FC on menu screens: loads the sprite registers from block $1EEC (sprite_block_load)."
  },
  {
   "address": 34768,
   "type": "line",
   "text": "Slot 6: an RTS, a slot with nothing to do."
  },
  {
   "address": 34769,
   "type": "line",
   "text": "Slot 8, line $A0, on the screens prematch_screen_setup draws (the team choice, the prematch screens and the league table): sprites hi-res and expanded both ways; with a team highlighted ($1EE8 positive) places four sprites from $2F45/$2F59 by the entry in $2F33 and their pointers from $2F36, black; with $1EE8 negative, sprites off."
  },
  {
   "address": 34845,
   "type": "line",
   "text": "Slot 9, line $B2: a row of eight expanded black sprites (pointer $0A) at y $B2 from x positions $2F51. Then sets the four protection operands at $874D-$875D to random mirrors of CIA 2's timer low bytes ($DDx4, $DDx6)."
  },
  {
   "address": 34926,
   "type": "line",
   "text": "Port 2 into $0C (bits: 0 up, 1 down, 2 left, 3 right, 4 fire) ORed with $2DD0; port 1 into $0D, EORed with $2468. Both are 0 on a genuine copy."
  },
  {
   "address": 34961,
   "type": "line",
   "text": "Reads three keys into $55-$57 (non-zero while held): F3 (quit, $55), RUN/STOP (pause, $56), F5 ($57), by the rows at $2CA6 and masks at $2CA9. Then a check of the copy protection in undocumented opcodes (LAX $DD4F / ANC #$01, CIA 2's control register B through a mirror): when timer B is stopped it EORs the interrupt slot number $08 with $AA, sending the chain to a slot that does not exist."
  },
  {
   "address": 35007,
   "type": "line",
   "text": "Screen and sprites on: $09 = $10 (the $D011 bit ORed in by irq_slot_run) and $0A = $FF (the sprite mask), then waits a frame."
  },
  {
   "address": 35018,
   "type": "line",
   "text": "Screen and sprites off ($09 = $0A = 0) and the blank chain (slot 5) after the next frame."
  },
  {
   "address": 35029,
   "type": "line",
   "text": "Waits a frame, then makes Y the next slot of the interrupt chain ($08)."
  },
  {
   "address": 35035,
   "type": "line",
   "text": "Once a frame, from the interrupt: music and fades (music_frame), sticks and keys, the frame-wait flag $0B from $2DD0 (0, releasing wait_frame), the frame counter $0F, the slow counter $11 (down one every 256 frames) and the delay counter $10 (down one a frame)."
  },
  {
   "address": 35066,
   "type": "line",
   "text": "Background colours of set Y with the chips banked in (colours_load)."
  },
  {
   "address": 35076,
   "type": "line",
   "text": "$D021, $D022 and $D023 from $2251, $2257 and $225D at Y."
  },
  {
   "address": 35095,
   "type": "line",
   "text": "Loads every sprite register from the 42-byte block at $2D72+Y: eight x/y pairs, $D010, enable, y expand, priority, multicolour, x expand, colours 0 and 1, then colours 1-7 ($2D81) and pointers 0-7 ($2D89, screen $5C00)."
  },
  {
   "address": 35176,
   "type": "line",
   "text": "Slot 1, the sprite multiplexer, re-armed at line $AA and after: hands the next objects in screen order (the list at $1E, from $1C) to hardware sprites 1-7 whose last object has been drawn ($2CB7 = 0), one object at least a pass; when the list is used up goes on to the panel (slot 2 at line $DB). Otherwise sets the next interrupt 16 lines above the next object and frees each hardware sprite whose object ends above that line."
  },
  {
   "address": 35280,
   "type": "line",
   "text": "Hardware sprite X takes object Y: colour ($2CF1), pointer ($2D01, on both screens' pointer rows $77F8 and $6FF8), its y kept in $2CB7, x and y ($2CC1, $2CE1), and its bits in $D010 ($2CD1) and the multicolour register ($2D11), kept in $2CBF and $2CC0."
  },
  {
   "address": 35368,
   "type": "line",
   "text": "Works out the camera (camera_follow), the sprite y offset $4D/$4E (camera less $36), puts the ball (object 15) in hardware sprite 0, then counts in $50 the objects 0-13 whose screen y lands between $20 and $DE, setting the y of the rest to 0; $1C starts the multiplexer at the first visible."
  },
  {
   "address": 35444,
   "type": "line",
   "text": "The camera's top line $2E/$2F: the followed object's y less $54, kept between 0 and $1A8. It follows the ball, or while a player holds it ($1EE1, no countdown running) the controlled player of the holder's side ($60 or $61). Nothing while $4B is set."
  },
  {
   "address": 35507,
   "type": "line",
   "text": "Object Y's sprite x ($1E09 + $18, with $FF in $2CD1 past 255) and y less the offset ($30/$31)."
  },
  {
   "address": 35549,
   "type": "line",
   "text": "Sorts the object list at $1E-$2D by sprite y ($2CE1), a bubble sort repeated until a pass makes no swap ($1EED)."
  },
  {
   "address": 35595,
   "type": "line",
   "text": "Player X's sprite pointer: from the frame list for his current action ($1DA5/$1DAF), the entry for his facing ($1D0F) plus the animation step ($1D19), into $2D01."
  },
  {
   "address": 35621,
   "type": "line",
   "text": "Starts tune A (tune_play) and sets $72 and $73 to $FF: the volume steps down by one every 64 frames after a delay of 255 (music_frame)."
  },
  {
   "address": 35631,
   "type": "line",
   "text": "Starts tune A: volume $0942 = 15, $0954 from $0943, and the music driver's start at $0810 with the chips banked in; no fade."
  },
  {
   "address": 35660,
   "type": "line",
   "text": "Volume 0, no fade, and the driver's stop routine ($12E5)."
  },
  {
   "address": 35679,
   "type": "line",
   "text": "Plays a frame of music ($0947), and counts the fade: after $73 frames, every 64 frames adds $72 to the volume $0942 until it reaches 0."
  },
  {
   "address": 35712,
   "type": "line",
   "text": "Sound effect A. A positive number starts that effect ($0E7A) and sets the volume to 15; $FE starts the launcher's sound ($1155) at full volume; any other negative number stops it ($1190). Keeps X and Y. The test of $53 at its start would skip the effect while a tune plays, but nothing sets $53."
  },
  {
   "address": 35768,
   "type": "line",
   "text": "Bounce domes: for each of the four domes of this pitch ($1ED0 picks four entries of $2E73, $2E9B and $2EC3), whether the ball's centre lies in the dome's 32-pixel square. On a hit: sound 5, $1EE7 = 6, both ball speeds ($1EDD, $1EDE) one step faster, and the ball turned by the part of the square it is in: the top or bottom edge reverses the vertical speed (ball_bounce_y), the left or right edge the horizontal (ball_bounce_x), and a corner swaps the two speeds, negating the new vertical one at the top-left and bottom-right corners."
  },
  {
   "address": 35952,
   "type": "line",
   "text": "The two stamina meters in the panel: for each side, the stamina of its controlled player ($1CE7, at most 32 shown) as four cells at the address from $224B/$224D: full cells (8), one partial cell 9-12 by quarter, and empties (9)."
  },
  {
   "address": 36033,
   "type": "line",
   "text": "For player X: whether any of the five players listed by $2F19/$2F23 within $32 of him lies in the direction he faces ($1D0F). Returns 1 if so, 0 if not."
  },
  {
   "address": 36068,
   "type": "line",
   "text": "The direction (0 up, 1 up-right, 2 right ... 7 up-left) from object Y to object X, from their x and y differences, with diagonals when the smaller difference is at least half the larger."
  },
  {
   "address": 36180,
   "type": "line",
   "text": "x of object X less x of object Y, in $45/$47."
  },
  {
   "address": 36198,
   "type": "line",
   "text": "Negates $45/$47."
  },
  {
   "address": 36212,
   "type": "line",
   "text": "Compares half the x difference with the y difference; carry set when it is larger."
  },
  {
   "address": 36232,
   "type": "line",
   "text": "Halves the y difference and compares it with the x difference; carry set when it is larger."
  },
  {
   "address": 36246,
   "type": "line",
   "text": "The smallest of entries 1-4 of the list at ($2F19/$2F23 for X)."
  },
  {
   "address": 36276,
   "type": "line",
   "text": "The 16-pixel column of object X ($1E09/$1E19 / 16) looked up in $BBEF."
  },
  {
   "address": 36295,
   "type": "line",
   "text": "Swaps the roles ($1D23) of players X and Y."
  },
  {
   "address": 36310,
   "type": "line",
   "text": "Runs after pair_distances has measured the players ($4C set). Goes through the 45 pairs ($F243 and $F270 name the two; pairs 0-34 have a side 0 player first, 35-44 are side 1's players with each other) by the distance at $1E49 plus the pair's cell, read through $F290; a negative distance is a touch. A touching pair of opponents goes to tackle_resolve, once for each side 0 player a frame ($49, set again where $B973 marks the start of the next player's pairs); a touching pair of team-mates is pushed apart: a controlled player ($60, $61) back to his last position (player_pos_undo), any other knocked aside (player_bump). Because $F290 is 13 bytes before the real cell list, pairs 4-12 and 18-21 are judged by the distance of one of pairs 0-3 (player 0 with players 1-4): side 0's keeper with each of side 1's players, player 1 with 2-5 and player 2 with 4-7."
  },
  {
   "address": 36458,
   "type": "line",
   "text": "Puts object X back at the position saved before his last move ($1DB9, $1DC3, $1DCD, $1DD7)."
  },
  {
   "address": 36483,
   "type": "line",
   "text": "Pair zpa_18: unless already being pushed ($1D5F), a moving player ($1D55) is pushed for 5 frames ($1D5F) in the direction from $2E33 by his facing and the direction to the other; when it is side 1's controlled player and side 0 holds the ball, a new target (ai_side1_target)."
  },
  {
   "address": 36597,
   "type": "line",
   "text": "Two opponents touch (pair zpa_18; the first player is side 0's, the second side 1's). A player sliding (action 4) brings the other down when a random byte is at least the other side's tackle figure ($1EB9 or $1EBA) and that side does not have the P power-up ($6B): the victim goes down (action 5 with sound 6), loses stamina by the slider's power (stamina_drain) and takes his facing, and if he held the ball the slider takes it; the slider then gets up (action 2). A player who is down (flag $10) does not tackle. Otherwise the two facings, through the table at $B996, decide: 0 no tackle (both pushed apart), 1 the first player wins, $FF the second wins, 2 the one running (action 2) wins, or nobody when neither runs. A human-controlled player wins only while his fire is pressed ($1EC0 for side 0, $1EC1 for side 1 in a two player game). The loser goes down as above, the winner takes action 6 with flag $08, and takes the ball if the loser held it."
  },
  {
   "address": 37002,
   "type": "line",
   "text": "Player Y loses stamina ($1CE7) by player X's power ($1CF1), not below 0, and turns to face the way X faces ($1D0F)."
  },
  {
   "address": 37023,
   "type": "line",
   "text": "The same the other way round: player X loses stamina by player Y's power and takes Y's facing."
  },
  {
   "address": 37044,
   "type": "line",
   "text": "The ball's horizontal speed $1EDD for a throw by player X: from $BA61 at the throw strength $1EE0 times 8 plus his facing (with $2DD0 ORed in, 0 on a genuine copy)."
  },
  {
   "address": 37064,
   "type": "line",
   "text": "Builds the match screen: screen off, the play character set from $DF55 to $7800 and the panel screen from $EC0D to $7000 (block_copy 1 and 2), the sprite registers for play (play_sprites_init), the play sprites moved from $F300 to $5C00 (play_sprites_in), the camera held ($4B) on the ball's start (ball_to_launcher, camera_follow), every player on his start (players_reset_all), sprite positions and sort, both scores and $2D10 cleared, colour RAM 8, dome positions (domes_place), the pitch map (pitch_map_build), the panel (panel_draw), the first screen (scroll_update), play colours, a sprite update flagged, the play interrupt chain (slot $2DD0, 0 on a genuine copy) and the screen on."
  },
  {
   "address": 37155,
   "type": "line",
   "text": "Sprite registers for play, chips banked in: all eight on and multicolour, none expanded or behind the background, multicolours 0 (black) and 1 (white)."
  },
  {
   "address": 37191,
   "type": "line",
   "text": "After a match, copies twelve pages $5C00-$67FF (the play sprites) back up to $F300-$FEFF, where they wait for the next match while the menus use $5C00."
  },
  {
   "address": 37226,
   "type": "line",
   "text": "Before a match, copies twelve pages from $F300-$FEFF down to $5C00-$67FF, sprites 112-159 of video bank 1."
  },
  {
   "address": 37245,
   "type": "line",
   "text": "Builds the 40-column pitch map at $F300: the floor pattern, rows of 30 from $DB81 and $DB9F in turn, 62 rows from $F445; then the thirteen blocks 12 down to 0 (block_put): the four domes, the centre, the walls and both ends."
  },
  {
   "address": 37301,
   "type": "line",
   "text": "Copies block Y of the table at $2179: from the address at $2179/$218E to the address at $21A3/$21B8, $21CD bytes wide and $21E2 + 1 rows, the destination 40 bytes a row. Draws pieces of the pitch map and of the menu screen."
  },
  {
   "address": 37353,
   "type": "line",
   "text": "The score panel's rows (panel_rows) and the stamina meters."
  },
  {
   "address": 37360,
   "type": "line",
   "text": "Both scores into the panel: $1EAD and $1EAE as decimal digits, the last two put in the panel's screen row at $7378 + the offset from $22F4."
  },
  {
   "address": 37401,
   "type": "line",
   "text": "The panel's middle row from $21FB (characters, at $7370) and $2223 (colours, at $DB70), and the rows above and below it filled with character 3 in colour 8. Chips banked in for the colour RAM."
  },
  {
   "address": 37441,
   "type": "line",
   "text": "The four domes of this match's pitch layout ($1ED0 times 4 picks the entries in $2E73, $2E9B and $2EC3): each dome's map address (row from $20E5/$212F, plus column) goes into blocks 9-12 of the block table ($21AC/$21C1), and its cell position, less 2, into $2DD1 (row) and $2DD5 (column) for the tile placing."
  },
  {
   "address": 37516,
   "type": "line",
   "text": "Starts the scroll: screen buffer $44 = 0 and last row $4A = 0, then falls into scroll_update."
  },
  {
   "address": 37522,
   "type": "line",
   "text": "Once a frame: the pitch row at the camera's top (scroll_row). When it is the same row as last time, the spare time measures the players (pair_distances); when it has changed, the map is copied into the hidden screen (the routine named by $2296/$2298 for buffer $44) and the buffers swap (screen_flip). Then the fine scroll (scroll_fine)."
  },
  {
   "address": 37559,
   "type": "line",
   "text": "The camera's top line $2E/$2F divided by 8: the first map row on screen, in Y."
  },
  {
   "address": 37572,
   "type": "line",
   "text": "The camera's line within its row (0-7) sets the $D011 value of the first interrupt slot from the table at $2C32."
  },
  {
   "address": 37584,
   "type": "line",
   "text": "Swaps the screen buffer $44 and sets the play slot's $D018 ($2C82) from $229A: screen $6C00 or $7400, characters at $7800."
  },
  {
   "address": 37598,
   "type": "line",
   "text": "Copies 22 rows of the pitch map, from row Y on, into the screen at $7400. Writes the eleven row-pair source addresses ($20E5/$212F) into the operands of its own loop first, then copies 80 bytes (two rows) for each."
  },
  {
   "address": 37733,
   "type": "line",
   "text": "Self-modified operand: low byte of the map address of the first row pair copied to $7400."
  },
  {
   "address": 37734,
   "type": "line",
   "text": "Self-modified operand: high byte of the map address of the first row pair copied to $7400."
  },
  {
   "address": 37739,
   "type": "line",
   "text": "Self-modified: low byte of the second row pair's map address (screen $7450)."
  },
  {
   "address": 37740,
   "type": "line",
   "text": "Self-modified: high byte of the second row pair's map address (screen $7450)."
  },
  {
   "address": 37745,
   "type": "line",
   "text": "Self-modified: low byte of row pair 3's map address (screen $74A0)."
  },
  {
   "address": 37746,
   "type": "line",
   "text": "Self-modified: high byte of row pair 3's map address (screen $74A0)."
  },
  {
   "address": 37751,
   "type": "line",
   "text": "Self-modified: low byte of row pair 4's map address (screen $74F0)."
  },
  {
   "address": 37752,
   "type": "line",
   "text": "Self-modified: high byte of row pair 4's map address (screen $74F0)."
  },
  {
   "address": 37757,
   "type": "line",
   "text": "Self-modified: low byte of row pair 5's map address (screen $7540)."
  },
  {
   "address": 37758,
   "type": "line",
   "text": "Self-modified: high byte of row pair 5's map address (screen $7540)."
  },
  {
   "address": 37763,
   "type": "line",
   "text": "Self-modified: low byte of row pair 6's map address (screen $7590)."
  },
  {
   "address": 37764,
   "type": "line",
   "text": "Self-modified: high byte of row pair 6's map address (screen $7590)."
  },
  {
   "address": 37769,
   "type": "line",
   "text": "Self-modified: low byte of row pair 7's map address (screen $75E0)."
  },
  {
   "address": 37770,
   "type": "line",
   "text": "Self-modified: high byte of row pair 7's map address (screen $75E0)."
  },
  {
   "address": 37775,
   "type": "line",
   "text": "Self-modified: low byte of row pair 8's map address (screen $7630)."
  },
  {
   "address": 37776,
   "type": "line",
   "text": "Self-modified: high byte of row pair 8's map address (screen $7630)."
  },
  {
   "address": 37781,
   "type": "line",
   "text": "Self-modified: low byte of row pair 9's map address (screen $7680)."
  },
  {
   "address": 37782,
   "type": "line",
   "text": "Self-modified: high byte of row pair 9's map address (screen $7680)."
  },
  {
   "address": 37787,
   "type": "line",
   "text": "Self-modified: low byte of row pair 10's map address (screen $76D0)."
  },
  {
   "address": 37788,
   "type": "line",
   "text": "Self-modified: high byte of row pair 10's map address (screen $76D0)."
  },
  {
   "address": 37793,
   "type": "line",
   "text": "Self-modified: low byte of row pair 11's map address (screen $7720)."
  },
  {
   "address": 37794,
   "type": "line",
   "text": "Self-modified: high byte of row pair 11's map address (screen $7720)."
  },
  {
   "address": 37802,
   "type": "line",
   "text": "The same copy into the other screen, at $6C00: 22 map rows from row Y, eleven pairs of 80 bytes, through operands it writes into its own loop."
  },
  {
   "address": 37937,
   "type": "line",
   "text": "Self-modified operand: low byte of the map address of the first row pair copied to $6C00."
  },
  {
   "address": 37938,
   "type": "line",
   "text": "Self-modified operand: high byte of the map address of the first row pair copied to $6C00."
  },
  {
   "address": 37943,
   "type": "line",
   "text": "Self-modified: low byte of the second row pair's map address (screen $6C50)."
  },
  {
   "address": 37944,
   "type": "line",
   "text": "Self-modified: high byte of the second row pair's map address (screen $6C50)."
  },
  {
   "address": 37949,
   "type": "line",
   "text": "Self-modified: low byte of row pair 3's map address (screen $6CA0)."
  },
  {
   "address": 37950,
   "type": "line",
   "text": "Self-modified: high byte of row pair 3's map address (screen $6CA0)."
  },
  {
   "address": 37955,
   "type": "line",
   "text": "Self-modified: low byte of row pair 4's map address (screen $6CF0)."
  },
  {
   "address": 37956,
   "type": "line",
   "text": "Self-modified: high byte of row pair 4's map address (screen $6CF0)."
  },
  {
   "address": 37961,
   "type": "line",
   "text": "Self-modified: low byte of row pair 5's map address (screen $6D40)."
  },
  {
   "address": 37962,
   "type": "line",
   "text": "Self-modified: high byte of row pair 5's map address (screen $6D40)."
  },
  {
   "address": 37967,
   "type": "line",
   "text": "Self-modified: low byte of row pair 6's map address (screen $6D90)."
  },
  {
   "address": 37968,
   "type": "line",
   "text": "Self-modified: high byte of row pair 6's map address (screen $6D90)."
  },
  {
   "address": 37973,
   "type": "line",
   "text": "Self-modified: low byte of row pair 7's map address (screen $6DE0)."
  },
  {
   "address": 37974,
   "type": "line",
   "text": "Self-modified: high byte of row pair 7's map address (screen $6DE0)."
  },
  {
   "address": 37979,
   "type": "line",
   "text": "Self-modified: low byte of row pair 8's map address (screen $6E30)."
  },
  {
   "address": 37980,
   "type": "line",
   "text": "Self-modified: high byte of row pair 8's map address (screen $6E30)."
  },
  {
   "address": 37985,
   "type": "line",
   "text": "Self-modified: low byte of row pair 9's map address (screen $6E80)."
  },
  {
   "address": 37986,
   "type": "line",
   "text": "Self-modified: high byte of row pair 9's map address (screen $6E80)."
  },
  {
   "address": 37991,
   "type": "line",
   "text": "Self-modified: low byte of row pair 10's map address (screen $6ED0)."
  },
  {
   "address": 37992,
   "type": "line",
   "text": "Self-modified: high byte of row pair 10's map address (screen $6ED0)."
  },
  {
   "address": 37997,
   "type": "line",
   "text": "Self-modified: low byte of row pair 11's map address (screen $6F20)."
  },
  {
   "address": 37998,
   "type": "line",
   "text": "Self-modified: high byte of row pair 11's map address (screen $6F20)."
  },
  {
   "address": 38006,
   "type": "line",
   "text": "A random number from Y to X inclusive: the generator's byte (random_next) reduced by repeated subtraction of the range's size, plus Y."
  },
  {
   "address": 38036,
   "type": "line",
   "text": "A random number 0-15 shifted into the high nybble ($00, $10 ... $F0)."
  },
  {
   "address": 38046,
   "type": "line",
   "text": "The random generator: shifts the 16-bit seed $32/$33 left and feeds back bit 0 from the EOR of two of its bits; returns the new low byte."
  },
  {
   "address": 38066,
   "type": "line",
   "text": "Banks the chips in: $01 = $0D."
  },
  {
   "address": 38071,
   "type": "line",
   "text": "All RAM again: $01 = $30."
  },
  {
   "address": 38076,
   "type": "line",
   "text": "JMP ($06): calls the routine whose address is in $06/$07."
  },
  {
   "address": 38079,
   "type": "line",
   "text": "Adds A to the pointer $12/$13."
  },
  {
   "address": 38091,
   "type": "line",
   "text": "Adds A to the pointer $14/$15."
  },
  {
   "address": 38103,
   "type": "line",
   "text": "The 16-bit number at $2DC9/$2DCA as five decimal digits in $2DCB-$2DCF, each as a character code ($17 + the digit), found by subtracting the powers of ten at $229C/$22A1."
  },
  {
   "address": 38161,
   "type": "line",
   "text": "The last A digits of the number at $2DC9 (number_digits) into the text row at $DA69, ending at column Y."
  },
  {
   "address": 38183,
   "type": "line",
   "text": "The screen address of team X's row in the league table: $7428 plus 80 bytes for each place above it ($1C37)."
  },
  {
   "address": 38203,
   "type": "line",
   "text": "Adds 5 league points for each of Y goals to team X (points_add)."
  },
  {
   "address": 38216,
   "type": "line",
   "text": "Adds A to team X's league points, $1C8F (low) and $1C9A (high)."
  },
  {
   "address": 38232,
   "type": "line",
   "text": "Adds A to team X's goals scored, $1C00/$1C0B."
  },
  {
   "address": 38248,
   "type": "line",
   "text": "Adds A to team X's goals conceded, $1C16/$1C21."
  },
  {
   "address": 38264,
   "type": "line",
   "text": "Copies 2 KB (eight pages) from the address at $2273/$2277 to the address at $227B/$227F, entry Y: 0 the menu character set ($DE25 to $7800), 1 the play character set ($DF55 to $7800), 2 the panel ($EC0D to $7000), 3 $EC0D to $7800."
  },
  {
   "address": 38303,
   "type": "line",
   "text": "block_copy entry 2: the panel's screen from $EC0D to $7000."
  },
  {
   "address": 38309,
   "type": "line",
   "text": "Fills colour RAM $D800-$DBFF with A, chips banked in."
  },
  {
   "address": 38335,
   "type": "line",
   "text": "Clears text box X of the bitmap screen: its frame drawn first (box_frame_fill, box_frame), then $2363 rows of $2354 bytes zeroed from the address at $2336/$2345, 320 bytes a row."
  },
  {
   "address": 38388,
   "type": "line",
   "text": "Draws text group Y: $2469 strings from the list at $2483/$249D, four bytes each: the bitmap address and the string's address. A string is packed in nybbles: a nybble below 8 is a character by itself, 8 or more takes the next nybble too (8-15 then 0-15: 128 more characters); the result, through $BA36, is a character number, 0 the end. Each character is drawn from the font at $DCDD, eight bytes each (glyph_draw). Entry text_draw_string ($961E) draws one string already set up."
  },
  {
   "address": 38477,
   "type": "line",
   "text": "The next character of a packed string, through the table at $BA36 into X; Z set at the end."
  },
  {
   "address": 38505,
   "type": "line",
   "text": "Takes the next nybble of the string at $16/$17 into $19, the high nybble first ($54 says which half is next)."
  },
  {
   "address": 38562,
   "type": "line",
   "text": "Copies an eight-byte glyph from ($12) into the bitmap at ($14), a byte a line, stepping to the next character row ($138 more) after each eight lines of a cell boundary, then moves ($14) on eight bytes."
  },
  {
   "address": 38620,
   "type": "line",
   "text": "Draws text block Y of the table at $24BA: rows of 12 characters from the address at $24CC/$24D5 into the screen at the address at $24BA/$24C3, $24DE rows, each through the font table $2BA0 (40 cells a row on screen, 12 in the text)."
  },
  {
   "address": 38673,
   "type": "line",
   "text": "Draws a team picture at panel X (destinations from $238A/$2393): the frame, twelve rows of 96 bitmap bytes from $C360, then the picture of team Y (panel_picture)."
  },
  {
   "address": 38714,
   "type": "line",
   "text": "Team Y's picture in panel X: its screen colours (from $2372/$237E entry Y+4, $BF where the mask is clear) and colour RAM (entry Y+8, 1 where clear), through panel_colours, then the bitmap cells (entry Y) where its mask (from $239C/$23A8) has a bit: twelve rows of twelve cells."
  },
  {
   "address": 38814,
   "type": "line",
   "text": "Writes a 12 by 12 block of colour bytes at panel X: where the next mask bit (mask_bit_next) is set, the next byte of the source; where clear, the fill value $49. Chips banked in."
  },
  {
   "address": 38877,
   "type": "line",
   "text": "Fills twelve rows of 96 bytes at panel X with the pattern at $DC7D, sixteen bytes repeated and alternated row by row ($19)."
  },
  {
   "address": 38943,
   "type": "line",
   "text": "A team's face in the small box at $6868: the colours ($5D0D screen, fill $BF; colour RAM $D90D, fill 1) from entries Y+10 and Y+20 of $23BA, then the face's cells from entries 1, the value at $2432 + Y, and Y."
  },
  {
   "address": 39012,
   "type": "line",
   "text": "An 8 by 8 block of bitmap cells from the face table entry Y, where the mask bit is set."
  },
  {
   "address": 39063,
   "type": "line",
   "text": "An 8 by 8 block of colour bytes, mask-bit set from the source, clear the fill $49. Chips banked in."
  },
  {
   "address": 39123,
   "type": "line",
   "text": "The next bit of the mask at ($42) (bit $2D71, 7 down to 0), Z clear when it is set."
  },
  {
   "address": 39152,
   "type": "line",
   "text": "Pointers for panel X and picture Y: destination ($14) from $238A/$2393, source ($12) from $2372/$237E, mask ($42) from $239C/$23A8."
  },
  {
   "address": 39183,
   "type": "line",
   "text": "Pointers for face entry Y: destination $6868, source from $23BA/$23D8, mask from $23F6/$2414."
  },
  {
   "address": 39212,
   "type": "line",
   "text": "Puts the y of the seven highlight sprites (every other byte from $2D73, sprite block 0) at A, and sets the slow timer $11 = $24."
  },
  {
   "address": 39226,
   "type": "line",
   "text": "Puts the y of the shop cursor's sprites (every other byte of $2D9B-$2DA5, sprite block $28) at the row for item $1EE8 ($2C05)."
  },
  {
   "address": 39242,
   "type": "line",
   "text": "Records the result $1EAD (team $1ED9) against $1EAE (team $1EDA): a match played ($1C2C) and the goals for and against each, then a win ($1CB0), loss ($1CBB) or draw ($1CC6) for each; 100 points for a win, 20 each for a draw, and 5 for every goal scored."
  },
  {
   "address": 39384,
   "type": "line",
   "text": "A random winning score: $1EAD 2-9 and $1EAE 0 to one less."
  },
  {
   "address": 39407,
   "type": "line",
   "text": "Whether either side's controlled player ($60, then $61) stands on the tile (tile_check)."
  },
  {
   "address": 39418,
   "type": "line",
   "text": "Player X of side Y on the tile? With no tile delay running ($67), his cell (x less $1C and y less $16, each divided by 16) must equal the tile's ($69, $6A). Then the tile goes (tile_remove), a delay of 50 before the next ($67). The human side gets sound 3 and the tile's effect through the table at $BBBF/$BBCA by its type $68; side 1 in a one player game, the computer, only adds a token to its count $1EB2."
  },
  {
   "address": 39539,
   "type": "line",
   "text": "Tile effect 0, a token: one more for side $1EF5 ($1EB1), at most 255."
  },
  {
   "address": 39553,
   "type": "line",
   "text": "Tile effect F: freeze the opponents, $6C = 1 or $FF by side ($BB71); then the countdown (tile_countdown)."
  },
  {
   "address": 39563,
   "type": "line",
   "text": "Tile effect R: slow the opponents, $6D."
  },
  {
   "address": 39573,
   "type": "line",
   "text": "Tile effect P: you cannot be tackled, $6B."
  },
  {
   "address": 39583,
   "type": "line",
   "text": "Tile effect W: the ball tackles whoever it hits, $70."
  },
  {
   "address": 39593,
   "type": "line",
   "text": "Tile effect J: reverse the opponent's stick, $71."
  },
  {
   "address": 39603,
   "type": "line",
   "text": "Starts the ten-stage countdown in the panel for side $1EF5: the countdown sprite's x, its high bit and colour from $2DC2, $2DC4 and $2DC6, its pace $1ECE/$1ECF from $1EC9 (and $1ECD from $1EC7), the bribe-timer figures, and $1ECC = 10 stages."
  },
  {
   "address": 39645,
   "type": "line",
   "text": "Tile effect S: ten more stamina for each of the side's five players ($1CE7), up to the team's figure ($1EB7 or $1EB8)."
  },
  {
   "address": 39684,
   "type": "line",
   "text": "Tile effect D: two less stamina for each of the opponents' five players, not below 0."
  },
  {
   "address": 39713,
   "type": "line",
   "text": "Tile effect G: the side's controlled player gets the ball (ball_take), unless his side has it already, and the throw counters $1EE3-$1EE5 are cleared."
  },
  {
   "address": 39755,
   "type": "line",
   "text": "The power-up countdown: while stages remain ($1ECC), counts $1ECE down and at 0 plays sound $12, reloads it from $1ECF and takes a stage off. Shows the stage as the countdown sprite's frame ($2CAC into $2D0F)."
  },
  {
   "address": 39790,
   "type": "line",
   "text": "One frame of the players. In a one player game the computer's controlled player (side 1) gets a new aim: every $1EC5 frames, by where he is, toward the ball or the player he passes to (ai_pass_target, $8D96, $A8E6). Each side's controlled player becomes its outfield player (1-4 or 6-9) nearest the ball (ball_distances, nearest_player), swapping roles with the old one (roles_swap). Then side 0's controlled player from port 2 (side0_control), side 1's (side1_control), the others by their roles (players_ai) and the tackles (tackles_check)."
  },
  {
   "address": 40000,
   "type": "line",
   "text": "Side 0's controlled player from the stick on port 2 ($0C, reversed by power-up J), moved (side0_move); $1EC0 records whether fire did something, and if so sets his flag $08 and action 4 with sound $14."
  },
  {
   "address": 40041,
   "type": "line",
   "text": "Side 1's controlled player: in a two player game from port 1 ($0D) like side 0; in a one player game the computer steers him toward its target, throws, passes and slides by its timers ($1D37, $1EBD, $1EBE, $1EC6) and the ball's position."
  },
  {
   "address": 40363,
   "type": "line",
   "text": "The players with no human control: for each of the ten, unless flag 4, jumps to the routine for his role ($1D23) through $2E1F/$2E29; each ends at ai_move ($9DC4), which walks him toward his target ($39/$3D, $3A/$3E) or pushes him while he is being knocked ($1D5F)."
  },
  {
   "address": 40477,
   "type": "line",
   "text": "Moves a side 0 player by the stick in $41 (player_move) with side 0's fire counter $64."
  },
  {
   "address": 40487,
   "type": "line",
   "text": "Moves a side 1 player by $41 with side 1's fire counter $65."
  },
  {
   "address": 40497,
   "type": "line",
   "text": "A plain step for a side 0 player (player_step), then the fire counter $5C, which player_step does not change, copied into $64."
  },
  {
   "address": 40507,
   "type": "line",
   "text": "A plain step for a side 1 player, keeping $65."
  },
  {
   "address": 40517,
   "type": "line",
   "text": "The fire button of player X, then his step. Fire pressed with the counter at 0: a player holding the ball throws it at once (ball_throw) at the throw strength less one, less two when his stamina is below 6 (a strength of 16 or more as it is); one without it jumps (action 1) when the ball is in the air within $19, and otherwise marks that he wants the ball ($5E), which side0_control turns into a slide. Fire held after a throw counts the side's counter up each pass, and at 5 the ball goes high ($1EE3 = 1, $1EE4 = 4, the counter $FF). Fire released: the counter back to 0 and his flag $08 cleared. Then the step (player_step), unless frozen by power-up F ($6C) or knocked down."
  },
  {
   "address": 40694,
   "type": "line",
   "text": "Moves player X one step by $41 (player_dir_step) and keeps him on the pitch: x between $20 and $108, y between $18 and $228, else he stays and the stick bits for that axis are dropped. Saves his last position ($1DB9-$1DD7) before taking the new one."
  },
  {
   "address": 40856,
   "type": "line",
   "text": "Player X's facing from the stick ($2C10), unless flag $40 keeps it, his animation frame, and his next position in $5A/$5B (x) and $58/$59 (y): his speed ($1D4B, two less under power-up R for his side, one less below 12 stamina) times 8 plus the facing indexes the steps in $BA61 (x) and $BAB1 (y). Then his animation timer (anim_step)."
  },
  {
   "address": 41043,
   "type": "line",
   "text": "Player X throws: the ball's speeds from $BA61 (x) and $BAB1 (y) at strength A times 8 plus his facing, the ball at his position, nobody holding it ($1EE1 = 0), the flight counters $1EEF and $7B at $1A and $1EDF at $0E, the thrower's side marker ($BA2C) in $1EE2, action 3 and sound 1."
  },
  {
   "address": 41121,
   "type": "line",
   "text": "Player X to action 2 (running), unless he is in it already."
  },
  {
   "address": 41134,
   "type": "line",
   "text": "Player X to action Y (action_set) with sound $14."
  },
  {
   "address": 41143,
   "type": "line",
   "text": "Player X to action Y (action_set_now) with sound 6: used to put a tackled player down."
  },
  {
   "address": 41152,
   "type": "line",
   "text": "Player X to action Y, unless he is down (flag $10)."
  },
  {
   "address": 41159,
   "type": "line",
   "text": "Player X to action Y: the action's frame list ($BBD5/$BBE2 into $1DA5/$1DAF), its frame count ($BB30), the action that follows it ($BB57, plus 1), the frame delay ($BB4A), his speed ($BB3D) and flags ($BB64, keeping flags 4 and 8); flag $40 is dropped again when no stick is held. Starts the animation at its first frame and sets the sprite pointer."
  },
  {
   "address": 41238,
   "type": "line",
   "text": "Role 0, side 0's goalkeeper, at the bottom goal. Nothing while the camera's top line is above $E8 (he is off screen) or while he is down. While side 0 holds the ball he walks back to his spot ($9A, $220), facing up when he is there, with his timer $1D37 at 1 between new aims. Otherwise, with the camera at line $190 or lower he follows the stick on port 2: fire dives left or right with the stick that way (action 7, or 10 for side 1), and jumps (action 1) with neither held; without fire, up is ignored, down moves him only while he is above line $21A, and left and right only inside the goal mouth (x $64-$C8), where he takes action 8 while he moves; with the camera higher, he walks to his spot."
  },
  {
   "address": 41565,
   "type": "line",
   "text": "Role 1, a side 0 player placed by the controlled player ($60): when that player is below line $D0, at the table position from $C000/$C090, by the controlled player's zone (zone_index) and the team's formation bits ($1EB3); higher up the pitch, at x $60, y $40, unless his own y is between $40 and $B0, where he stays."
  },
  {
   "address": 41655,
   "type": "line",
   "text": "Role 2, a side 0 player placed by the controlled player: when that player is at line $180 or below, at the position from $C2A0/$C2D0 by his zone; otherwise at ($E0, $1B2), unless already below line $180."
  },
  {
   "address": 41737,
   "type": "line",
   "text": "Role 3, a side 0 player placed by the controlled player ($60): while that player is above line $D0, to ($60, $150), unless he is at line $129 or lower already; while it is at line $180 or lower, to ($60, $E2) when he is above line $128, otherwise he stays; in between, at the position from $C140/$C1F0 by zone and the formation bits ($1EB3)."
  },
  {
   "address": 41873,
   "type": "line",
   "text": "Role 5, side 1's goalkeeper at the top goal. Nothing while the camera's top line is at $128 or lower (he is off screen) or while he is down. While side 1 holds the ball he walks back to his spot ($9A, $20), facing down when he is there; the delay he sets is stored at $1D37 without the index, in player 0's slot. In a two player game he otherwise follows the stick on port 1 as side 0's keeper does. In a one player game the computer moves him across the goal mouth (x $64-$C8) after the ball at his pace ($1D37, from $1EBD), and makes him jump or dive when a ball comes up at him close by ($1EE3, $1D41)."
  },
  {
   "address": 42536,
   "type": "line",
   "text": "Role 6, a side 1 player placed by its controlled player ($61): while that player is at line $181 or lower, at the table position from $C000/$C090 by zone and side 1's formation bits ($1EB4), mirrored down the pitch; otherwise to ($60, $210)."
  },
  {
   "address": 42627,
   "type": "line",
   "text": "Role 7: when side 1's controlled player is above line $D1, at the position from $C2A0/$C2D0, mirrored; otherwise at ($60, $9E) unless already above line $D0."
  },
  {
   "address": 42725,
   "type": "line",
   "text": "Role 8, side 1's mirror of role 3: below line $181, at ($E0, $100) unless above $128; above $D1, at ($E0, $16E) unless below $129; between, the position from $C140/$C1F0 by zone and side 1's formation bits, mirrored."
  },
  {
   "address": 42877,
   "type": "line",
   "text": "Power-up J for side 0 ($71 = 1): side 1's stick in $41 is reversed through $BB73 (up for down, left for right)."
  },
  {
   "address": 42894,
   "type": "line",
   "text": "Power-up J for side 1 ($71 = $FF): side 0's stick in $41 reversed through $BB73."
  },
  {
   "address": 42901,
   "type": "line",
   "text": "The keeper's target x from $58/$59 (where the ball will cross), at least $64, the goal mouth's left edge; his delay $1D37 = $1EBD / 2 + 1."
  },
  {
   "address": 42939,
   "type": "line",
   "text": "The same toward the right: the target x at most $C8."
  },
  {
   "address": 42977,
   "type": "line",
   "text": "Carry clear when player X is left of $64, the goal mouth's left post."
  },
  {
   "address": 42989,
   "type": "line",
   "text": "Carry set when player X is at or right of $C8, the right post."
  },
  {
   "address": 43001,
   "type": "line",
   "text": "Player X's x into $37/$3B and y into $38/$3C."
  },
  {
   "address": 43022,
   "type": "line",
   "text": "Player X's target position ($1DE1, $1DEB, $1DF5, $1DFF) into $39/$3D and $3A/$3E."
  },
  {
   "address": 43043,
   "type": "line",
   "text": "The ball's position as the target, in $39/$3D and $3A/$3E."
  },
  {
   "address": 43064,
   "type": "line",
   "text": "Saves the target in $39-$3E as player X's ($1DE1-$1DFF)."
  },
  {
   "address": 43085,
   "type": "line",
   "text": "A position table's index for player Y: his x in 32-pixel columns, less 1, in the low three bits, and $3A (a y difference) divided by 32 in the bits above."
  },
  {
   "address": 43112,
   "type": "line",
   "text": "Multiplies the table x in $39 by 16 into $39/$3D."
  },
  {
   "address": 43129,
   "type": "line",
   "text": "Multiplies the table y in $3A by 16 into $3A/$3E."
  },
  {
   "address": 43146,
   "type": "line",
   "text": "Compares player X's y with A (carry set when at or below it)."
  },
  {
   "address": 43160,
   "type": "line",
   "text": "A new target for side 1's controlled player in a one player game: from $C300 (x) and $C330 (y), times 16, by side 1's formation ($1EB4 times 16), the frame counter $62 and, with $1EBA negative, eight more."
  },
  {
   "address": 43238,
   "type": "line",
   "text": "The side 1 player in role 6, or in role 8 when role 6 has nobody in his way (marker_facing), into Y and $40; returns 1 for role 8."
  },
  {
   "address": 43260,
   "type": "line",
   "text": "The side 1 player (9 down to 6) whose role ($1D23) is A, in Y."
  },
  {
   "address": 43273,
   "type": "line",
   "text": "Where the ball will be: its position plus eight times each speed, in $39/$3D and $3A/$3E."
  },
  {
   "address": 43340,
   "type": "line",
   "text": "Picks a cell for the next tile at random: column $69 from 2 to 12 and row $6A from 2 to 30, again if it lands on one of the four domes ($2DD5, $2DD1) or in the middle (columns 6-8, rows 14-16), where the ball launcher is."
  },
  {
   "address": 43412,
   "type": "line",
   "text": "Picks the next tile's type $68 from the table at $BB21: a random number 0-19 (0-20 in a two player game, game type 0) less ten, anything below 0 taken as 0, so eleven numbers in twenty (or twenty-one) give place 0, the token; place 10, the reverse tile J, needs the 21st. Plays sound $0B for a token, $0C for a power-up, and copies the tile's two sixteen-colour fades from $D7A0 and $D850 (sixteen bytes a type) to $DC3D/$DC4D and $DC5D/$DC6D."
  },
  {
   "address": 43488,
   "type": "line",
   "text": "Side 1's controlled player chooses a way to the bottom goal: bits of $1EF4 for straight down (his x between $70 and $D0), and for each diagonal whose line from him reaches the goal line ($22A) between x $70 and $D0. With none clear, a random 1-7."
  },
  {
   "address": 43614,
   "type": "line",
   "text": "Sets up a prematch or table screen: the bitmap cleared (screen_off_clear), the menu character set copied to $7800 (block_copy 0), screen rows $5E80/$5EE8 cleared with colour 9, a box of colour 7 at $DAA9, the title (title_draw) and the frame (screen_frame), colours of set 3, the shop's interrupt chain (slot 8), no sprite highlighted ($1EE8 = $FF) and the card showing ($1EEE = 0)."
  },
  {
   "address": 43703,
   "type": "line",
   "text": "Draws the screen's title from the character codes at $2F65 (0 ends) into the character set at $7930 onward, eight bytes each from the font at $E715."
  },
  {
   "address": 43764,
   "type": "line",
   "text": "Writes the frame characters ($26 onward) down both sides and along the bottom of the rows at $5E80."
  },
  {
   "address": 43816,
   "type": "line",
   "text": "Screen off (screen_off), then the bitmap screen cleared and redrawn (menu_screen_init)."
  },
  {
   "address": 43823,
   "type": "line",
   "text": "The index of shop item $1EE8 in the effect tables: one player games use 0-9; in a two player game side 0 uses 10-19 and side 1 20-29."
  },
  {
   "address": 43845,
   "type": "line",
   "text": "Once every 256 calls ($1EEB), the next of the four flashing text groups (1-4, $1EEA) on the menu."
  },
  {
   "address": 43867,
   "type": "line",
   "text": "Ranks the eleven teams by points ($1C8F/$1C9A) into $1C37, 1 at the top, keeping the old ranks in $1C42."
  },
  {
   "address": 43948,
   "type": "line",
   "text": "Row zpa_18 of the league table on screen: its address (table_row_addr), then the row's text (league_row_text)."
  },
  {
   "address": 43953,
   "type": "line",
   "text": "The text of team zpa_18's row at $DA69: the name (from $303C through $3020, spaces dropped, $22 added to each character), points (five digits at column $26), goals for and against, matches played, won, lost and drawn, and an arrow at $DA89: up ($2A), down ($2B) or level ($29) against the old rank."
  },
  {
   "address": 44155,
   "type": "line",
   "text": "The card text of team Y (or, below 11, of the team at $1CD1 + Y): from the record at $308A by $302E, the lines at $2B43, $2B37 and $2B29, and the team's name, six characters with spaces dropped, at $2B1E."
  },
  {
   "address": 44262,
   "type": "line",
   "text": "Side $1EF5's figures into the card text: stamina $1EB7 (three digits at $2B51), power $1EB5 (one digit at $2B5D) and 255 less the tackle figure $1EB9 (three digits at $2B69)."
  },
  {
   "address": 44338,
   "type": "line",
   "text": "Clears the eleven bought flags at $1EF7."
  },
  {
   "address": 44349,
   "type": "line",
   "text": "Draws the eleven lines of the price list ($2452/$245D text, $243C/$2447 bitmap address). Items 1-10 already bought, dearer than the side's tokens or refused by their check ($22A6/$22C4) are marked bought and drawn blank ($27FE). When all ten are gone, box 4 is cleared and text group $0E shown."
  },
  {
   "address": 44502,
   "type": "line",
   "text": "The side's tokens as three rows of eight icons at $7550, lit ($2C2E) for each token held, dark ($2C2F) after."
  },
  {
   "address": 44607,
   "type": "line",
   "text": "Item 1, bribe the official: extra time in a drawn match ($1EDC = 2)."
  },
  {
   "address": 44613,
   "type": "line",
   "text": "Item 2: three more stamina for the side ($1EB7)."
  },
  {
   "address": 44623,
   "type": "line",
   "text": "Item 7: one more power for the side ($1EB5)."
  },
  {
   "address": 44633,
   "type": "line",
   "text": "Item 5: the side's tackle figure ($1EB9) down by 10."
  },
  {
   "address": 44643,
   "type": "line",
   "text": "Item 6 (one player): the computer's stamina down by 5 before the next match ($1ED3, applied by attributes_handicap)."
  },
  {
   "address": 44649,
   "type": "line",
   "text": "Item 10 (one player): the computer's power down by 1 before the next match ($1ED4)."
  },
  {
   "address": 44655,
   "type": "line",
   "text": "Item 8 (one player): the computer's tackle figure up by 26 before the next match ($1ED5)."
  },
  {
   "address": 44661,
   "type": "line",
   "text": "Item 4 (one player): the computer's keeper reacts more slowly, $1EBD up by 3 before the next match ($1ED6)."
  },
  {
   "address": 44667,
   "type": "line",
   "text": "Item 9: the side starts the next match a goal up ($1EF0)."
  },
  {
   "address": 44673,
   "type": "line",
   "text": "Item 3: power-up countdowns last longer for the side: $1EC7 up 10 and $1EC9 up 1."
  },
  {
   "address": 44692,
   "type": "line",
   "text": "Item 6 in a two player game: the other side's stamina ($1EB7 + X) down by 3 at once."
  },
  {
   "address": 44702,
   "type": "line",
   "text": "Item 10 in a two player game: the other side's power down by 1."
  },
  {
   "address": 44706,
   "type": "line",
   "text": "Item 8 in a two player game: the other side's tackle figure up by 10."
  },
  {
   "address": 44715,
   "type": "line",
   "text": "Item 4 in a two player game: an RTS, bribing the trainer does nothing there."
  },
  {
   "address": 44716,
   "type": "line",
   "text": "Whether item 1 is refused: non-zero once extra time has been bought ($1EDC)."
  },
  {
   "address": 44720,
   "type": "line",
   "text": "Item 2 is refused when the side's stamina is $3A or more."
  },
  {
   "address": 44729,
   "type": "line",
   "text": "Item 7 is refused when the side's power is 3 or more."
  },
  {
   "address": 44738,
   "type": "line",
   "text": "Item 5 is refused when the tackle figure is below $0B."
  },
  {
   "address": 44747,
   "type": "line",
   "text": "Item 3 is refused when $1EC7 is $BF or more."
  },
  {
   "address": 44756,
   "type": "line",
   "text": "Item 6 (two player) is refused when the other side's stamina is below $21."
  },
  {
   "address": 44765,
   "type": "line",
   "text": "Item 10 (two player) is refused when the other side's power is below 2."
  },
  {
   "address": 44774,
   "type": "line",
   "text": "Item 8 (two player) is refused when the other side's tackle figure is $C9 or more."
  },
  {
   "address": 44783,
   "type": "line",
   "text": "Returns 0: the item can be bought."
  },
  {
   "address": 44786,
   "type": "line",
   "text": "Returns 1: the item cannot be bought."
  },
  {
   "address": 44789,
   "type": "line",
   "text": "Before a one player match: the computer's stamina ($1EB8), power ($1EB6), tackle figure ($1EBA) and keeper's delay ($1EBD) changed by what was bought ($1ED3-$1ED6), then those cleared (handicap_clear)."
  },
  {
   "address": 44829,
   "type": "line",
   "text": "Clears the four bought handicaps $1ED3-$1ED6."
  },
  {
   "address": 44844,
   "type": "line",
   "text": "The bitmap screen's background: draws the frame blocks (menu_frame_draw), then turns the 25 rows of 40 character codes at $5C00 into bitmap cells at $6000 from the font at $E715, fills the colour screen $5C00-$5FFF with $6E (blue on light blue), colour RAM with 1, the inner area with $BF (menu_inner_fill), and the borders of the box at $5C86 and the four marks at $5E08-$5E57 with $98 and colour RAM 7."
  },
  {
   "address": 45003,
   "type": "line",
   "text": "Fills twenty rows of 38 colour cells from $5CA1 with $BF."
  },
  {
   "address": 45031,
   "type": "line",
   "text": "Draws blocks $0E-$11 of the block table (the menu's frame) and block $12 twelve times across and six rows down, from $5CCA in steps of 3 across and $54 down, the tiled background."
  },
  {
   "address": 45112,
   "type": "line",
   "text": "Measures the 45 pairs of players (from 44 down to 0, $F243 and $F270 naming the two): the larger of the x and y distances (pair_dx, pair_dy), less $12, so a negative result is a touch. Stores it twice in the 10 by 10 table at $1E49: at the pair's cell through $F290 and at its mirror through $F2CA. Sets $4C so that tackles_check runs. The cell list for $F290 really starts at $F29D (each entry there is 10 times the first player plus the second); $F290 is 13 bytes early, so pairs 0-12 and 18-21 write into the cells of player 0's row, the later over the earlier, and pairs 13 on write the cells of pairs 13 earlier."
  },
  {
   "address": 45167,
   "type": "line",
   "text": "The x distance between objects X and Y ($1E09/$1E19), made positive into $45/$47; $7F when it is $80 or more."
  },
  {
   "address": 45213,
   "type": "line",
   "text": "The y distance between objects X and Y ($1E29/$1E39), made positive into $46/$48; $7F when it is $80 or more."
  },
  {
   "address": 45259,
   "type": "line",
   "text": "Estimates the distance between two points without a square root. abs_dx and abs_dy leave the two sides of the right angle in $47 and $48; with L the longer and S the shorter, the result in $45 is L + S/2 - S/8 when L + S/2 is less than 2S, otherwise L + S/4."
  },
  {
   "address": 45340,
   "type": "line",
   "text": "$47 less $45, made positive, into $47."
  },
  {
   "address": 45357,
   "type": "line",
   "text": "$48 less $46, made positive, into $48."
  },
  {
   "address": 45374,
   "type": "line",
   "text": "panel_recolour for all three team panels, 2 down to 0: in a two player game, side 1's team choice shows the pictures in red."
  },
  {
   "address": 45383,
   "type": "line",
   "text": "Waits for a frame, then turns every green cell (colour 5) of panel X's twelve by twelve cells in colour RAM (from $2390/$2399) red (colour 2). Chips banked in while it works."
  },
  {
   "address": 45433,
   "type": "line",
   "text": "Sets frame_flag ($0B) to 1 and waits until the raster interrupt's frame work clears it: one frame."
  },
  {
   "address": 45442,
   "type": "line",
   "text": "Waits, a frame at a time, until fire on port 2 is pressed ($10 in $0C)."
  },
  {
   "address": 45451,
   "type": "line",
   "text": "Waits, a frame at a time, until fire on port 2 is let go."
  },
  {
   "address": 45461,
   "type": "line",
   "text": "Box X's colours: colour RAM from $2318 and the bitmap's colour screen from $2327 (box_fill), each over the box's cells."
  },
  {
   "address": 45482,
   "type": "line",
   "text": "Fills box X's area with A: from its first cell ($22FA/$2309) plus the base for Y ($22F6/$22F8: 0 colour RAM, 1 the colour screen at $5C00), its width in cells ($2354 / 8) for each of its rows ($2363), 40 cells a row. Chips banked in."
  },
  {
   "address": 45541,
   "type": "line",
   "text": "Draws a one-pixel frame round box X in the bitmap (from its address at $2336/$2345 and its size): a line across the top (box_hline), the right side (box_vline with mask $C0, the left two pixels of the cells beyond the box), the left side (mask 3, the right two pixels of the cells before it) and a line across the bottom."
  },
  {
   "address": 45628,
   "type": "line",
   "text": "A one-pixel line in the bitmap at ($14), $18 cells long: the cell before it ORed with 3 (its right two pixels), each cell of the line $FF, and the cell after it ORed with $C0 (its left two pixels)."
  },
  {
   "address": 45665,
   "type": "line",
   "text": "A two-pixel-wide upright line: the eight bytes of each of $18 cells ORed with the mask in $19, a cell row ($140 bytes) apart."
  },
  {
   "address": 45691,
   "type": "line",
   "text": "The SELECT GAME screen's picture: twelve rows of 96 bitmap bytes from $0200 to $6840 onward, then its colours, blocks 19 (the colour screen, from $0680) and 20 (colour RAM, from $0699), with the chips banked in."
  },
  {
   "address": 45753,
   "type": "line",
   "text": "Moves the launcher a step up or down: $1EF2 goes up or down by the step $1EF3 until 0 or 16, when the step is cleared. The launcher's two character columns are redrawn from the frames at $DBFD (16 bytes from $1EF2 + 15 down, into $7DE8) and $DC1D (from 31 less $1EF2 down, into $7DF8): the launcher's characters slide up out of the floor or back down."
  },
  {
   "address": 45815,
   "type": "line",
   "text": "The panel's two ball-holder lights in the row at $7370, side 0's at column 7 and side 1's at $1D ($224F): the light of the side holding the ball ($1EE1, negative for side 1) flashes with bit 3 of the frame counter $62, the other stays lit, and both are lit while nobody holds it. A light is character 1 with character 2 three columns on, or blank."
  },
  {
   "address": 45865,
   "type": "line",
   "text": "Copies the block the load put at $6000-$64B1 to $0200-$06B1, the SELECT GAME picture and its colours, out of the way of the bitmap screen: five pages at a time with Y from 0 down to 1, the last page only for Y below $B3, so $64B2 goes to $06B2 too, one byte past the block, which nothing uses."
  },
  {
   "address": 45905,
   "type": "line",
   "text": "Block 0, the top end of the pitch: 30 by 8 character codes ($B351-$B440), the goal and its surround, put into the map at $F305 by pitch_map_build."
  },
  {
   "address": 46145,
   "type": "line",
   "text": "Block 1, the bottom end of the pitch, 30 by 4 codes ($B441-$B4B8), at $FDF5."
  },
  {
   "address": 46265,
   "type": "line",
   "text": "Block 3, the left wall's top part, 5 by 25 codes ($B4B9-$B535), at $F300."
  },
  {
   "address": 46390,
   "type": "line",
   "text": "Block 5, the left wall's middle part with the warp tunnel, 5 by 25 codes, at $F6E8."
  },
  {
   "address": 46515,
   "type": "line",
   "text": "Block 7, the left wall's lower part, 5 by 24 codes, at $FAD0."
  },
  {
   "address": 46635,
   "type": "line",
   "text": "Block 4, the right wall's top part, 5 by 25 codes ($B62B-$B6A7), at $F323."
  },
  {
   "address": 46760,
   "type": "line",
   "text": "Block 6, the right wall's middle part with its warp tunnel, 5 by 25 codes, at $F70B."
  },
  {
   "address": 46885,
   "type": "line",
   "text": "Block 8, the right wall's lower part, 5 by 24 codes ($B725-$B79C), at $FAF3."
  },
  {
   "address": 47005,
   "type": "line",
   "text": "The team choice animation's frames 0-2 for the first team (Verna), 55 bytes each: five columns of eleven bitmap bytes, drawn into its picture by team_choose."
  },
  {
   "address": 47170,
   "type": "line",
   "text": "Frames 3-6, the second team's (Lacata), 30 bytes each: five columns of six bytes."
  },
  {
   "address": 47290,
   "type": "line",
   "text": "Frames 7-9, the third team's (Draco), 55 bytes each ($B8BA-$B95E)."
  },
  {
   "address": 47455,
   "type": "line",
   "text": "The ten animation frames' addresses, low bytes."
  },
  {
   "address": 47465,
   "type": "line",
   "text": "The frames' addresses, high bytes."
  },
  {
   "address": 47475,
   "type": "line",
   "text": "One byte for each of the first 35 pairs: 1 where a new side 0 player's pairs begin (pairs 0, 9, 17, 24 and 30). tackles_check sets $49 again there, so each of side 0's players can be in one tackle a frame."
  },
  {
   "address": 47510,
   "type": "line",
   "text": "Who wins a tackle by the two players' facings, 64 entries, the side 0 player's facing times 8 plus the side 1 player's: 0 nobody (they are pushed apart), 1 the side 0 player, $FF the side 1 player, 2 the one who is running."
  },
  {
   "address": 47574,
   "type": "line",
   "text": "The three human teams' stamina: 45, 35, 35 (Verna, Lacata, Draco)."
  },
  {
   "address": 47577,
   "type": "line",
   "text": "Their power: 1, 2, 1 (shown as 100, 200, 100)."
  },
  {
   "address": 47580,
   "type": "line",
   "text": "Their tackle figures: 61, 61, 31, which their cards show as skill 194, 194, 224 (255 less the figure)."
  },
  {
   "address": 47583,
   "type": "line",
   "text": "The eleven computer team templates' third figure, loaded into $1C63 and never read: 0, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5. Template 0 is empty; the templates get harder from 1 to 10."
  },
  {
   "address": 47594,
   "type": "line",
   "text": "The templates' delay between the computer's new aims: 20 for template 1 down to 1 for template 10."
  },
  {
   "address": 47605,
   "type": "line",
   "text": "The templates' keeper delay: 30 for template 1 down to 1."
  },
  {
   "address": 47616,
   "type": "line",
   "text": "The templates' delay between the computer's throws: 32 for template 1 down to 5."
  },
  {
   "address": 47627,
   "type": "line",
   "text": "The templates' stamina: 26 for template 1, up by 2 each, 44 for template 10."
  },
  {
   "address": 47638,
   "type": "line",
   "text": "The templates' power: 1 for templates 1-5, 2 for 6-10."
  },
  {
   "address": 47649,
   "type": "line",
   "text": "The templates' tackle figures: 207 for template 1, 23 less each, down to 1 for template 10."
  },
  {
   "address": 47660,
   "type": "line",
   "text": "Each player's marker for ball_holder ($1EE1): 1-5 for side 0's players, -1 to -5 for side 1's."
  },
  {
   "address": 47670,
   "type": "line",
   "text": "The packed text's characters: the end and the seven commonest, space, A, E, O, R, S and T, each one nybble; then two-nybble codes for the digits, ( ) * - !, and the other letters."
  },
  {
   "address": 47713,
   "type": "line",
   "text": "The x step for each speed and facing, ten speeds of eight facings: speed n moves n + 1 pixels a pass, 0 up and down, positive to the right."
  },
  {
   "address": 47793,
   "type": "line",
   "text": "The y step for each speed and facing, as speed_step_x: negative up the pitch."
  },
  {
   "address": 47873,
   "type": "line",
   "text": "Where a held ball sits from its holder, by his facing: x offsets, low bytes."
  },
  {
   "address": 47881,
   "type": "line",
   "text": "The x offsets' high bytes (0 or $FF)."
  },
  {
   "address": 47889,
   "type": "line",
   "text": "The y offsets, low bytes."
  },
  {
   "address": 47897,
   "type": "line",
   "text": "The y offsets' high bytes."
  },
  {
   "address": 47905,
   "type": "line",
   "text": "The tile types tile_choose draws from, eleven places: 0 the token, then F, R, P, S, D, G, three of type 8 (W) and, only in a two player game, type 10 (J). Types 7 (E) and 9 (M) are not in the list, so those tiles never appear."
  },
  {
   "address": 47916,
   "type": "line",
   "text": "The two raster lines at which launcher_sequence changes sprite multicolour 0 while the launcher spins: $9E and $6E."
  },
  {
   "address": 47918,
   "type": "line",
   "text": "The colours it sets at those lines: black and dark grey."
  },
  {
   "address": 47920,
   "type": "line",
   "text": "The thirteen actions, five tables of thirteen: the number of frames in each. 0 run, 1 jump, 2 stand, 3 throw, 4 slide, 5 knocked down, 6 tackle won, 7 a keeper's dive, 8 side 0's keeper's punch, 9 his stand, 10 side 1's keeper's dive, 11 side 1's keeper's punch, 12 his stand."
  },
  {
   "address": 47933,
   "type": "line",
   "text": "Each action's speed, for the step tables (3 running, 5 sliding, 7 diving)."
  },
  {
   "address": 47946,
   "type": "line",
   "text": "Each action's passes between frames."
  },
  {
   "address": 47959,
   "type": "line",
   "text": "The action that follows each when its frames are done, plus one: 3 (to stand) after a jump, throw, slide, fall, won tackle or dive; 0 keeps the action going."
  },
  {
   "address": 47972,
   "type": "line",
   "text": "Each action's player flags ($1CFB): $40 holds the facing, $80 stops him taking the ball, $10 and $20 change how fire and the stick act on him."
  },
  {
   "address": 47985,
   "type": "line",
   "text": "The value a timed power-up takes for each side: 1 for side 0, $FF for side 1."
  },
  {
   "address": 47987,
   "type": "line",
   "text": "Each stick setting with up and down swapped and left and right swapped, for power-up J."
  },
  {
   "address": 48003,
   "type": "line",
   "text": "The shop items' effects, three lists of ten, low bytes: one player, and the two sides of a two player game."
  },
  {
   "address": 48033,
   "type": "line",
   "text": "The effects' high bytes, all $AE."
  },
  {
   "address": 48063,
   "type": "line",
   "text": "What each tile type does, low bytes: 0 a token ($9A73), F freeze ($9A81), R slow ($9A8B), P protect ($9A95), S stamina up ($9ADD), D stamina down ($9B04), G get the ball ($9B21), E, W and M all the ball that tackles ($9A9F), J reverse ($9AA9)."
  },
  {
   "address": 48074,
   "type": "line",
   "text": "The tile effects' high bytes."
  },
  {
   "address": 48085,
   "type": "line",
   "text": "Each action's frame list, low bytes: eight offsets, one for each facing, then the sprite pointers they point into (at $BC03-$BD4C)."
  },
  {
   "address": 48098,
   "type": "line",
   "text": "The frame lists' high bytes."
  },
  {
   "address": 48111,
   "type": "line",
   "text": "The pitch's three zones by 16-pixel column: 0 for columns 0-6, 1 for 7-12, 2 for 13-19 (zone_x)."
  },
  {
   "address": 48131,
   "type": "line",
   "text": "The thirteen actions' frame lists ($BC03-$BD4C): for each, eight bytes giving where each facing's frames start within the list, then the sprite pointers. Running, for one, is $62 $63 $64 $63 $62 $61 $60 $61 facing up."
  },
  {
   "address": 48461,
   "type": "line",
   "text": "Three zeros after the frame lists, before game_save at $BD50."
  },
  {
   "address": 48464,
   "type": "line",
   "text": "SAVE GAME: with the save slot in A, the KERNAL banked in (kernal_enter) and the name set (save_name_set), saves $1C00-$1FFF, the game's state, through the KERNAL's own save at $F5ED. The carry the KERNAL returns, set for an error, is kept across kernal_leave for the caller."
  },
  {
   "address": 48495,
   "type": "line",
   "text": "A zero after game_save, filling to the next routine's address ($BD70)."
  },
  {
   "address": 48496,
   "type": "line",
   "text": "The LOAD entries: with the slot in A, the KERNAL banked in (kernal_enter) and the name set (load_name_set), loads the file back to the address it was saved from ($1C00, secondary address 1) through the KERNAL's own load at $F4A5. The carry is kept across kernal_leave."
  },
  {
   "address": 48525,
   "type": "line",
   "text": "$FF bytes after game_load, filling to the next routine's address ($BDA0)."
  },
  {
   "address": 48544,
   "type": "line",
   "text": "The file name for a load: one character, the slot's digit ($BFFA + the slot $BFF9) at $BFFF."
  },
  {
   "address": 48567,
   "type": "line",
   "text": "Fill after load_name_set, a zero and $FF bytes up to save_name_set at $BDC0."
  },
  {
   "address": 48576,
   "type": "line",
   "text": "The file name for a save: three characters at $BFFD, \"@:\" and the slot's digit, so the save replaces a file of that name."
  },
  {
   "address": 48599,
   "type": "line",
   "text": "Zeros after save_name_set, filling to kernal_enter at $BE00."
  },
  {
   "address": 48640,
   "type": "line",
   "text": "Makes the machine fit for the KERNAL's disk routines: interrupts off, the slot (A) kept in $BFF9, $01 = $36 (KERNAL and chips in). Keeps the bytes the KERNAL will use: zero page $90-$C4 at $BF80, $02-$0D at $BFC0, $02A1, the STOP vector $0328/$0329, $D015 and $D01A at $BFD8-$BFDC; under the game these are its own variables and the SELECT GAME picture. Then sprites, raster interrupts and the sound off, the KERNAL's messages off ($9D = 0), the STOP vector pointed at $EB42 (an LDA #$7F, STA $DC00, RTS in the KERNAL, so STOP never reads as pressed), device 8, secondary address 1, and CIA 2's timers stopped. Interrupts on again."
  },
  {
   "address": 48761,
   "type": "line",
   "text": "Fill after kernal_enter, zeros and $FF bytes up to kernal_leave at $BEA0."
  },
  {
   "address": 48800,
   "type": "line",
   "text": "Undoes kernal_enter: puts back $02A1, the STOP vector, zero page $90-$C4 and $02-$0D, the volume ($0F) and the raster interrupt ($F1); quietens both CIAs' interrupts, points the video chip back at bank 1 ($DD00 = $86), restarts CIA 2's timers A and B with period $231F, four cycles apart, as the start-up does, and goes back to all RAM ($01 = $30)."
  },
  {
   "address": 48949,
   "type": "line",
   "text": "Bytes loaded with the file, $FF and then 0, the pattern of RAM at power-on; no routine was found to read them."
  },
  {
   "address": 49024,
   "type": "line",
   "text": "Zero page $90-$C4, the KERNAL's own variables, kept here by kernal_enter while the disk routines run and put back by kernal_leave (53 bytes, $BF80-$BFB4)."
  },
  {
   "address": 49088,
   "type": "line",
   "text": "Zero page $02-$0D kept here in the same way (12 bytes)."
  },
  {
   "address": 49112,
   "type": "line",
   "text": "$02A1 kept here (a byte of the menu picture)."
  },
  {
   "address": 49113,
   "type": "line",
   "text": "The STOP vector's low byte kept here."
  },
  {
   "address": 49114,
   "type": "line",
   "text": "The STOP vector's high byte kept here."
  },
  {
   "address": 49115,
   "type": "line",
   "text": "The sprite enable $D015 kept here."
  },
  {
   "address": 49116,
   "type": "line",
   "text": "The video chip's interrupt enable $D01A kept here. The bytes after it, to $BFF8, are left from the load; no routine was found to use them."
  },
  {
   "address": 49145,
   "type": "line",
   "text": "The slot of the save or load under way, from A at kernal_enter: 0 a two player game, 1 a league, 2 a knockout (save_slot at $2293)."
  },
  {
   "address": 49146,
   "type": "line",
   "text": "The slots' file names: \"0\", \"1\" and \"2\"."
  },
  {
   "address": 49149,
   "type": "line",
   "text": "\"@:\", which the save's file name starts with, so that it replaces any file of the same name."
  },
  {
   "address": 49151,
   "type": "line",
   "text": "The file name's digit, set by load_name_set and save_name_set; a load uses this byte alone as the name."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "Table positions for roles 1 and 6 (ai_side0_role1, ai_side1_role6), x in sixteens ($C000-$C08F): the index is the formation's two bits times 64 plus the zone of the side's controlled player (zone_index)."
  },
  {
   "address": 49296,
   "type": "line",
   "text": "The y positions to go with them ($C090-$C13F), in sixteens; side 1 subtracts them, mirroring the pitch."
  },
  {
   "address": 49472,
   "type": "line",
   "text": "Table positions for roles 3 and 8, x ($C140-$C1EF), indexed in the same way."
  },
  {
   "address": 49648,
   "type": "line",
   "text": "Their y positions ($C1F0-$C29F)."
  },
  {
   "address": 49824,
   "type": "line",
   "text": "Positions for roles 2 and 7, x, by zone alone ($C2A0-$C2CF)."
  },
  {
   "address": 49872,
   "type": "line",
   "text": "Their y positions ($C2D0-$C2FF)."
  },
  {
   "address": 49920,
   "type": "line",
   "text": "Side 1's controlled player's targets in a one player game (ai_side1_target), x ($C300-$C32F): by side 1's formation times 16, the frame counter and the tackle figure's sign."
  },
  {
   "address": 49968,
   "type": "line",
   "text": "The targets' y ($C330-$C35F)."
  },
  {
   "address": 50016,
   "type": "line",
   "text": "The team picture all three panels start from: a helmeted head with dark glasses, twelve by twelve bitmap cells ($C360-$C7DF). It is the first team's picture, Verna's, as it stands; the others are drawn over it."
  },
  {
   "address": 51040,
   "type": "line",
   "text": "The last 128 bytes of the first team picture ($C760-$C7DF), the bottom of the helmet and the chin."
  },
  {
   "address": 51168,
   "type": "line",
   "text": "Lacata's picture: the 69 cells where it differs from the first, a green barred visor, eight bytes each, in the order of its mask ($D71A)."
  },
  {
   "address": 51720,
   "type": "line",
   "text": "Draco's picture: the 40 cells that differ, a mesh visor."
  },
  {
   "address": 52040,
   "type": "line",
   "text": "The V of the prematch screens' middle panel (left_team_draw, picture 3): 55 cells drawn over the panel's background pattern ($CB48-$CCFF)."
  },
  {
   "address": 52480,
   "type": "line",
   "text": "The opponents' faces, 8 by 8 cells, drawn at $6868 as three layers (panel_face_draw): this base layer, the whole face of Auriga's captain, a helmet and dark glasses, 64 cells ($CD00-$CEFF)."
  },
  {
   "address": 52992,
   "type": "line",
   "text": "Antlia's captain's face over the base: the 20 cells that differ."
  },
  {
   "address": 53152,
   "type": "line",
   "text": "Tucana's captain's face: 35 cells."
  },
  {
   "address": 53248,
   "type": "line",
   "text": "The rest of Tucana's captain's face layer, to $D0B7."
  },
  {
   "address": 53432,
   "type": "line",
   "text": "Mira's captain's face, Xenon's: 30 cells, a barred visor."
  },
  {
   "address": 53672,
   "type": "line",
   "text": "Volans' captain's face: 25 cells, also the middle layer of Castor's."
  },
  {
   "address": 53872,
   "type": "line",
   "text": "Castor's captain's face: 12 cells over Volans'."
  },
  {
   "address": 53968,
   "type": "line",
   "text": "Pavo's captain's face: 40 cells, also the middle layer of Dorado's."
  },
  {
   "address": 54288,
   "type": "line",
   "text": "Persus' captain's face: 38 cells."
  },
  {
   "address": 54592,
   "type": "line",
   "text": "Vela's captain's face: 41 cells."
  },
  {
   "address": 54920,
   "type": "line",
   "text": "Dorado's captain's face: 16 cells over Pavo's ($D688-$D707)."
  },
  {
   "address": 55048,
   "type": "line",
   "text": "The four team pictures' cell masks, 18 bytes each (a bit for each of 144 cells, a set bit leaving the cell as it is): Verna's all set, then Lacata's, Draco's and the V's ($D708-$D74F)."
  },
  {
   "address": 55120,
   "type": "line",
   "text": "The ten face layers' cell masks, eight bytes each ($D750-$D79F), a set bit leaving the cell as it is, in the same order as the layers above."
  },
  {
   "address": 55200,
   "type": "line",
   "text": "The pitch tiles' left halves, sixteen rows of multicolour pixels for each of the eleven types, 0 the token and then F, R, P, S, D, G, E, W, M and J ($D7A0-$D84F). tile_choose copies the type's rows twice over to $DC3D, and tile_step shows sixteen of them at a time, a row further each step, so the letter rolls."
  },
  {
   "address": 55296,
   "type": "line",
   "text": "Inside the tiles' left halves (type 6, G). On the chips' side of the address, colour RAM's first page, which colour_fill fills."
  },
  {
   "address": 55376,
   "type": "line",
   "text": "The tiles' right halves, as the left ($D850-$D8FF)."
  },
  {
   "address": 55430,
   "type": "line",
   "text": "Inside the tiles' right halves (type 3, P). On the chips' side, the colour RAM cell where menu_screen_init starts the menu box's border colour."
  },
  {
   "address": 55552,
   "type": "line",
   "text": "Block 14, the top of the menu screens' frame, 40 by 5 character codes ($D900-$D9C7). On the chips' side, colour RAM's second page, which colour_fill fills."
  },
  {
   "address": 55752,
   "type": "line",
   "text": "Block 15, the bottom of the menu screens, 40 by 2 codes ($D9C8-$DA17)."
  },
  {
   "address": 55808,
   "type": "line",
   "text": "Inside block 15, the bottom of the menu screens; colour RAM's third page on the chips' side."
  },
  {
   "address": 55816,
   "type": "line",
   "text": "Inside the menu's bottom; on the chips' side, a colour RAM cell menu_screen_init colours 7, one of the four marks."
  },
  {
   "address": 55832,
   "type": "line",
   "text": "Block 16, the menu screens' left edge, 2 by 18 codes."
  },
  {
   "address": 55855,
   "type": "line",
   "text": "Inside the left edge; on the chips' side, the second mark's colour."
  },
  {
   "address": 55856,
   "type": "line",
   "text": "Inside the left edge; on the chips' side, the third mark's colour."
  },
  {
   "address": 55868,
   "type": "line",
   "text": "Block 17, the right edge, 2 by 18 codes."
  },
  {
   "address": 55895,
   "type": "line",
   "text": "Inside the right edge; on the chips' side, the fourth mark's colour."
  },
  {
   "address": 55904,
   "type": "line",
   "text": "Block 18, a 3 by 3 pattern of codes that menu_frame_draw repeats across the menu's background."
  },
  {
   "address": 55913,
   "type": "line",
   "text": "A league table row as character codes, 40 bytes: league_row_text writes it, number_text puts numbers in it, table_row_copy copies it to the screen."
  },
  {
   "address": 55914,
   "type": "line",
   "text": "The row's name, from column 1."
  },
  {
   "address": 55936,
   "type": "line",
   "text": "Inside the row text. On the chips' side, a colour RAM row prematch_screen_setup colours 9."
  },
  {
   "address": 55945,
   "type": "line",
   "text": "The row's arrow column: up, down or level against the team's old place."
  },
  {
   "address": 55953,
   "type": "line",
   "text": "A league row with no text, only the column lines, which league_table_screen draws over the human's row to flash it."
  },
  {
   "address": 55993,
   "type": "line",
   "text": "The column lines of an empty table row, drawn ten times by table_frame_draw."
  },
  {
   "address": 56033,
   "type": "line",
   "text": "The table's bottom row, drawn at $77C0."
  },
  {
   "address": 56040,
   "type": "line",
   "text": "Inside the table's bottom row; on the chips' side, a colour RAM row prematch_screen_setup colours 9."
  },
  {
   "address": 56064,
   "type": "line",
   "text": "Inside the table's bottom row; colour RAM's last page on the chips' side."
  },
  {
   "address": 56073,
   "type": "line",
   "text": "The table's second heading row, characters $4C on, drawn at $7428."
  },
  {
   "address": 56113,
   "type": "line",
   "text": "The table's first and third heading rows, drawn at $7400 and $7450."
  },
  {
   "address": 56136,
   "type": "line",
   "text": "Inside the first heading row; on the chips' side, the colour RAM row above the score panel's middle row (panel_rows)."
  },
  {
   "address": 56153,
   "type": "line",
   "text": "The same 40 colours as table_row_colours at $2FF8; table_frame_draw reads that copy, and no routine was found to read this one."
  },
  {
   "address": 56176,
   "type": "line",
   "text": "Inside the colour copy; on the chips' side, colour RAM's row for the score panel's middle row (panel_rows)."
  },
  {
   "address": 56193,
   "type": "line",
   "text": "The pitch floor's pattern, two rows of 30 codes that pitch_map_build lays alternately ($DB81 and $DB9F)."
  },
  {
   "address": 56216,
   "type": "line",
   "text": "Inside the first floor row; on the chips' side, the colour RAM row below the panel's middle row (panel_rows)."
  },
  {
   "address": 56223,
   "type": "line",
   "text": "The floor's second row of 30 codes."
  },
  {
   "address": 56253,
   "type": "line",
   "text": "Block 2, the ball launcher at the centre of the pitch, 6 by 6 codes."
  },
  {
   "address": 56289,
   "type": "line",
   "text": "Blocks 9-12, a bounce dome, 4 by 4 codes."
  },
  {
   "address": 56305,
   "type": "line",
   "text": "A 2 by 2 piece of floor, put back where a tile was."
  },
  {
   "address": 56309,
   "type": "line",
   "text": "The other 2 by 2 floor piece; tile_floor_put picks one of the two by the tile's place ($21F7)."
  },
  {
   "address": 56313,
   "type": "line",
   "text": "Block 13, a tile: the codes $F8 and $FA over $F9 and $FB, whose glyphs tile_step rewrites."
  },
  {
   "address": 56317,
   "type": "line",
   "text": "The launcher's first character column as it rises, 32 bytes: launcher_step copies sixteen of them into its glyphs at $7DE8."
  },
  {
   "address": 56349,
   "type": "line",
   "text": "The launcher's second column as it rises, 32 bytes, into $7DF8."
  },
  {
   "address": 56381,
   "type": "line",
   "text": "The tile's left half, sixteen rows twice over (32 bytes), filled by tile_choose; tile_step reads sixteen from its step."
  },
  {
   "address": 56397,
   "type": "line",
   "text": "The second copy of the left rows."
  },
  {
   "address": 56413,
   "type": "line",
   "text": "The tile's right half, sixteen rows twice over."
  },
  {
   "address": 56429,
   "type": "line",
   "text": "The second copy of the right rows."
  },
  {
   "address": 56445,
   "type": "line",
   "text": "The panels' background, two lines of sixteen bitmap bytes used on alternate rows by panel_frame ($DC7D-$DC9C)."
  },
  {
   "address": 56477,
   "type": "line",
   "text": "The token bar's lit token, two by two cells, 32 bytes."
  },
  {
   "address": 56509,
   "type": "line",
   "text": "The dark token, 32 bytes of $AA."
  },
  {
   "address": 56541,
   "type": "line",
   "text": "The font text_draw uses, 41 glyphs of eight bytes ($DCDD-$DE24): a blank, the digits, the letters and . ! ( )."
  },
  {
   "address": 56869,
   "type": "line",
   "text": "The character set of the prematch screens' cards (block_copy 0 to $7800): its own 38 glyphs, blank, the digits, the letters and a full stop ($DE25-$DF54). The 2 KB copy takes the pitch set's first glyphs after them, and title_draw writes the title's glyphs from character 38 on."
  },
  {
   "address": 57173,
   "type": "line",
   "text": "The pitch's multicolour character set (block_copy 1 to $7800), the glyphs of everything on the pitch: 248 of them here ($DF55-$E714), the copy's last eight coming from the menu font after it; the tile and launcher glyphs are rewritten in play. These are glyphs 0-127."
  },
  {
   "address": 57344,
   "type": "line",
   "text": "The pitch set's glyphs 21-127 continued, to $E354."
  },
  {
   "address": 58197,
   "type": "line",
   "text": "The pitch set's glyphs 128-247 ($E355-$E714)."
  },
  {
   "address": 59157,
   "type": "line",
   "text": "The menu screens' frame characters, 159 glyphs ($E715-$EC0C), hires: menu_screen_init draws the screen codes at $5C00 into the bitmap with them, and title_draw takes the title bar's glyphs, $8E-$9E, from here."
  },
  {
   "address": 60181,
   "type": "line",
   "text": "The menu font from glyph $80: frame pieces and the title bar's letters."
  },
  {
   "address": 60429,
   "type": "line",
   "text": "The score panel, 2 KB copied to $7000 (block_copy 2), where the panel slot shows it as both screen and character set: the first 840 bytes ($EC0D-$EF54) are its glyphs, digits, letters and the pieces of its bars."
  },
  {
   "address": 61269,
   "type": "line",
   "text": "48 more bytes of the copy, shaped like glyphs 105-110; in play the panel's own screen rows from $7348 lie over them."
  },
  {
   "address": 61317,
   "type": "line",
   "text": "The colour masks of the four pictures' colour screens, 18 bytes each ($EF85-$EFCC): a set bit takes the next byte from the picture's colours, a clear one the fill $BF."
  },
  {
   "address": 61389,
   "type": "line",
   "text": "The ten faces' colour screen masks, eight bytes each ($EFCD-$F01C)."
  },
  {
   "address": 61469,
   "type": "line",
   "text": "The four pictures' colour RAM masks, 18 bytes each ($F01D-$F064), a clear bit giving colour 1."
  },
  {
   "address": 61541,
   "type": "line",
   "text": "The ten faces' colour RAM masks, eight bytes each ($F065-$F0B4)."
  },
  {
   "address": 61621,
   "type": "line",
   "text": "The pictures' colours, the bytes their masks take in turn: Verna's colour screen and colour RAM, then Lacata's, Draco's and the V's ($F0B5-$F199)."
  },
  {
   "address": 61850,
   "type": "line",
   "text": "The faces' colour bytes, which their masks take in turn: one face's colour screen bytes, then at $F1B1 the colour RAM bytes all ten faces share, 21 of light red, then the other nine faces' colour screen bytes ($F1C6-$F242)."
  },
  {
   "address": 62019,
   "type": "line",
   "text": "The 45 pairs of players, the first of each pair: 0 nine times, 1 eight times, and so on to 8."
  },
  {
   "address": 62064,
   "type": "line",
   "text": "The second player of each pair: 1-9, 2-9, and so on to 9."
  },
  {
   "address": 62096,
   "type": "line",
   "text": "Where pair_distances and tackles_check look for each pair's cell in the table at $1E49: 13 bytes before the real list at $F29D, so they read the last 13 of pair_second and then the cells of pairs 13 earlier."
  },
  {
   "address": 62109,
   "type": "line",
   "text": "Each pair's cell in the 10 by 10 table at $1E49, 10 times the first player plus the second (1, 2 ... 89). The code reads it from $F290, 13 early."
  },
  {
   "address": 62154,
   "type": "line",
   "text": "Each pair's mirror cell, 10 times the second player plus the first; pair_distances writes there as well, and these are right."
  },
  {
   "address": 62199,
   "type": "line",
   "text": "Nine zeros at the end of the file's data, before the pitch map's area."
  }
 ]
}