{
 "schema": 1,
 "platform": "c64",
 "game": "north-and-south",
 "part": "battle",
 "build": "PAL cassette, four sides, Cyberload fast loader; the original release as the Ultimate Tape Archive V4.0 has it (entry 7562)",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    16384,
    24384,
    "runtime: the battlefield's bitmap, unpacked by $90A5 at the start (8,001 bytes, one more than the bitmap); the soldiers and the craters are drawn into it"
   ],
   [
    24576,
    25576,
    "runtime: the battlefield's screen, unpacked by $90A5 (1,001 bytes)"
   ],
   [
    25592,
    25599,
    "runtime: the sprite pointers, written by the multiplexer ($8A58, $8AD2) and $A364"
   ],
   [
    52311,
    52470,
    "runtime: the stores of the two range gauges' strips, 80 bytes each, written by $8E85"
   ],
   [
    0,
    3071,
    "The loader and the script"
   ],
   [
    3072,
    12287,
    "The strategic map"
   ],
   [
    53247,
    57343,
    "The loader and the script"
   ],
   [
    57344,
    65529,
    "The strategic map"
   ],
   [
    65530,
    65535,
    "The loader and the script"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   1024,
   2048,
   4096,
   16384,
   32768,
   40960,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    3071,
    "The loader and the script"
   ],
   [
    3072,
    12287,
    "The strategic map"
   ],
   [
    53247,
    57343,
    "The loader and the script"
   ],
   [
    57344,
    65529,
    "The strategic map"
   ],
   [
    65530,
    65535,
    "The loader and the script"
   ]
  ]
 },
 "blocks": [
  {
   "start": 12288,
   "end": 16383,
   "type": "Byte"
  },
  {
   "start": 16384,
   "end": 24384,
   "type": "Undefined"
  },
  {
   "start": 24385,
   "end": 24575,
   "type": "Byte"
  },
  {
   "start": 24576,
   "end": 25576,
   "type": "Undefined"
  },
  {
   "start": 25577,
   "end": 25591,
   "type": "Byte"
  },
  {
   "start": 25592,
   "end": 25599,
   "type": "Undefined"
  },
  {
   "start": 25600,
   "end": 32767,
   "type": "Byte"
  },
  {
   "start": 32768,
   "end": 33086,
   "type": "Code"
  },
  {
   "start": 33087,
   "end": 34726,
   "type": "Byte"
  },
  {
   "start": 34727,
   "end": 35133,
   "type": "Code"
  },
  {
   "start": 35134,
   "end": 35135,
   "type": "Byte"
  },
  {
   "start": 35136,
   "end": 35191,
   "type": "Code"
  },
  {
   "start": 35192,
   "end": 35284,
   "type": "Byte"
  },
  {
   "start": 35285,
   "end": 35656,
   "type": "Code"
  },
  {
   "start": 35657,
   "end": 36027,
   "type": "Byte"
  },
  {
   "start": 36028,
   "end": 36070,
   "type": "Code"
  },
  {
   "start": 36071,
   "end": 36102,
   "type": "Byte"
  },
  {
   "start": 36103,
   "end": 37022,
   "type": "Code"
  },
  {
   "start": 37023,
   "end": 37028,
   "type": "Byte"
  },
  {
   "start": 37029,
   "end": 37272,
   "type": "Code"
  },
  {
   "start": 37273,
   "end": 37296,
   "type": "Byte"
  },
  {
   "start": 37297,
   "end": 43272,
   "type": "Code"
  },
  {
   "start": 43273,
   "end": 52310,
   "type": "Byte"
  },
  {
   "start": 52311,
   "end": 52470,
   "type": "Undefined"
  },
  {
   "start": 52471,
   "end": 52735,
   "type": "Byte"
  },
  {
   "start": 52736,
   "end": 53205,
   "type": "Code"
  },
  {
   "start": 53206,
   "end": 53246,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 12288,
   "name": "canyon_bitmap_pk",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 12299,
   "name": "canyon_bitmap_pk_300b",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 12300,
   "name": "canyon_bitmap_pk_300c",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 12305,
   "name": "canyon_bitmap_pk_3011",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13007,
   "name": "canyon_bitmap_pk_32cf",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13082,
   "name": "canyon_bitmap_pk_331a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13099,
   "name": "canyon_bitmap_pk_332b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13312,
   "name": "canyon_bitmap_pk_3400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13320,
   "name": "canyon_bitmap_pk_3408",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13322,
   "name": "canyon_bitmap_pk_340a",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 13324,
   "name": "canyon_bitmap_pk_340c",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13331,
   "name": "canyon_bitmap_pk_3413",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13467,
   "name": "canyon_bitmap_pk_349b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13548,
   "name": "canyon_bitmap_pk_34ec",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13639,
   "name": "canyon_bitmap_pk_3547",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13666,
   "name": "canyon_bitmap_pk_3562",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13763,
   "name": "canyon_bitmap_pk_35c3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14197,
   "name": "canyon_bitmap_pk_3775",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14336,
   "name": "canyon_bitmap_pk_3800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14385,
   "name": "canyon_bitmap_pk_3831",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14429,
   "name": "canyon_bitmap_pk_385d",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14771,
   "name": "canyon_bitmap_pk_39b3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14862,
   "name": "canyon_bitmap_pk_3a0e",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15117,
   "name": "canyon_bitmap_pk_3b0d",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15255,
   "name": "canyon_bitmap_pk_3b97",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15267,
   "name": "canyon_screen_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15456,
   "name": "canyon_screen_pk_3c60",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15462,
   "name": "canyon_screen_pk_3c66",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 15627,
   "name": "canyon_colour_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16203,
   "name": "canyon_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16291,
   "name": "canyon_after_3fa3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16311,
   "name": "canyon_after_3fb7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 24385,
   "name": "bitmap_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25577,
   "name": "screen_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25592,
   "name": "f_63F8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25593,
   "name": "f_63F9",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 25600,
   "name": "shapes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25856,
   "name": "shapes_6500",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25984,
   "name": "shapes_6580",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26624,
   "name": "shapes_6800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27648,
   "name": "shapes_6c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28672,
   "name": "shapes_7000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29696,
   "name": "shapes_7400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30592,
   "name": "bullet_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30656,
   "name": "ball_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30720,
   "name": "blank_image",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30784,
   "name": "shapes_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31808,
   "name": "shapes_after_7c40",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "battle_main",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32791,
   "name": "b_8017",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32860,
   "name": "battle_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32934,
   "name": "b_80A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32960,
   "name": "b_80C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32973,
   "name": "b_80CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32993,
   "name": "b_80E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33004,
   "name": "b_80EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33014,
   "name": "j_80F6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 33017,
   "name": "battle_exit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33040,
   "name": "devlink_check",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33060,
   "name": "b_8124",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33087,
   "name": "pic_width",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33088,
   "name": "pic_height",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33089,
   "name": "pic_row_bytes",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33090,
   "name": "pic_widths",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33117,
   "name": "pic_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33144,
   "name": "pic_bitmaps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33145,
   "name": "f_8179",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33198,
   "name": "pic_screens",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33199,
   "name": "f_81AF",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33252,
   "name": "pic_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33253,
   "name": "f_81E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33306,
   "name": "place_bitmaps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33307,
   "name": "f_821B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33326,
   "name": "place10_bitmap",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33327,
   "name": "a_822F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33332,
   "name": "place_screens",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33333,
   "name": "f_8235",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33352,
   "name": "place10_screen",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33353,
   "name": "a_8249",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33358,
   "name": "gauge_bitmaps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33359,
   "name": "f_824F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33362,
   "name": "gauge_screens",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33363,
   "name": "f_8253",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33366,
   "name": "gauge_stores",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33367,
   "name": "f_8257",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33370,
   "name": "gauge_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33371,
   "name": "gauge_cells",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33372,
   "name": "gauge_shift",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33376,
   "name": "cannon_range",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33378,
   "name": "bridge_hits",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33379,
   "name": "gauge_pattern",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33388,
   "name": "sprite_spare",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33389,
   "name": "field_type",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33390,
   "name": "field_bitmaps",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33391,
   "name": "f_826F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33396,
   "name": "field_screens",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33397,
   "name": "f_8275",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33402,
   "name": "field_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33403,
   "name": "f_827B",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33408,
   "name": "scenery_placed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33416,
   "name": "scenery_choices",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33428,
   "name": "scenery_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33429,
   "name": "unit_choice",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33430,
   "name": "a_8296",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33431,
   "name": "shape_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33509,
   "name": "shape_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33587,
   "name": "obj_picture",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33599,
   "name": "f_833F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33605,
   "name": "f_8345",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33627,
   "name": "obj_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33633,
   "name": "f_8361",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33639,
   "name": "f_8367",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33645,
   "name": "f_836D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33646,
   "name": "a_836E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33667,
   "name": "obj_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33679,
   "name": "f_838F",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33685,
   "name": "f_8395",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33707,
   "name": "obj_redraw",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33719,
   "name": "f_83B7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33725,
   "name": "f_83BD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33747,
   "name": "obj_mask",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33768,
   "name": "f_83E8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33789,
   "name": "f_83FD",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33810,
   "name": "f_8412",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 33831,
   "name": "mask_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33894,
   "name": "store_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33934,
   "name": "store_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33974,
   "name": "drawn_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34014,
   "name": "drawn_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34054,
   "name": "drawn_line",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34060,
   "name": "f_850C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34066,
   "name": "f_8512",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34069,
   "name": "f_8515",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34072,
   "name": "f_8518",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34094,
   "name": "obj_keep",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34106,
   "name": "f_853A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34135,
   "name": "draw_pic_no",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34136,
   "name": "row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34161,
   "name": "row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34186,
   "name": "col_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34226,
   "name": "col_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34266,
   "name": "draw_line_now",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34267,
   "name": "draw_shift",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34268,
   "name": "restore_line",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34269,
   "name": "side",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34270,
   "name": "inf_start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34282,
   "name": "inf_start_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34294,
   "name": "cav_start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34300,
   "name": "cav_start_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34306,
   "name": "can_start_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34308,
   "name": "can_start_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34311,
   "name": "unit_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34312,
   "name": "cannon_shots",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34314,
   "name": "can_leaving",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34316,
   "name": "cav_fallback",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34318,
   "name": "inf_fallback",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34320,
   "name": "cannon_reserve",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34322,
   "name": "inf_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34323,
   "name": "a_8613",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34324,
   "name": "cav_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34325,
   "name": "a_8615",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34326,
   "name": "can_state",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34327,
   "name": "a_8617",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34328,
   "name": "obj_fall",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34334,
   "name": "f_861E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34340,
   "name": "f_8624",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34346,
   "name": "f_862A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34348,
   "name": "obj_side",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34360,
   "name": "f_8638",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34368,
   "name": "inf_stand_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34370,
   "name": "inf_walk_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34372,
   "name": "inf_fall_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34374,
   "name": "inf_formation",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34376,
   "name": "inf_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34378,
   "name": "inf_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34380,
   "name": "inf_arriving",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34381,
   "name": "a_864D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34382,
   "name": "inf_reforming",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34384,
   "name": "inf_reform_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34388,
   "name": "inf_aim_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34400,
   "name": "inf_fire_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34412,
   "name": "cav_stand_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34414,
   "name": "cav_walk_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34416,
   "name": "cav_charge_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34418,
   "name": "cav_fall_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34420,
   "name": "cav_formation",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34422,
   "name": "cav_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34424,
   "name": "cav_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34426,
   "name": "cav_turning",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34428,
   "name": "cav_turn_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34430,
   "name": "cav_arrived",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34432,
   "name": "cav_arriving",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34434,
   "name": "can_stand_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34436,
   "name": "can_side_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34438,
   "name": "can_end_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34440,
   "name": "can_shot_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34442,
   "name": "can_hit_pic",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34444,
   "name": "can_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34446,
   "name": "can_fired",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34448,
   "name": "can_spare",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34450,
   "name": "can_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34452,
   "name": "can_fire_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34454,
   "name": "can_arriving",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34455,
   "name": "a_8697",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34456,
   "name": "lane_base",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34457,
   "name": "lane_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34458,
   "name": "lanes_taken",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34466,
   "name": "lane_heights",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34474,
   "name": "choose_wait",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34476,
   "name": "inf_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34478,
   "name": "cav_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34482,
   "name": "range_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34484,
   "name": "can_move_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34486,
   "name": "can_anim_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34488,
   "name": "end_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34489,
   "name": "end_steps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34490,
   "name": "cover_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34491,
   "name": "cover_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34492,
   "name": "reform_dx0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34504,
   "name": "reform_dy0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34516,
   "name": "reform_dx1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34528,
   "name": "reform_dy1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34540,
   "name": "turn_dx0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34546,
   "name": "turn_dy0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34552,
   "name": "turn_dx1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34558,
   "name": "turn_dy1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34564,
   "name": "forward_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34566,
   "name": "inf_at_top",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34568,
   "name": "inf_at_bottom",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34570,
   "name": "inf_at_left",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34572,
   "name": "inf_at_right",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34574,
   "name": "cav_at_top",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34576,
   "name": "cav_at_bottom",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34578,
   "name": "can_at_top",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34580,
   "name": "can_at_bottom",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34582,
   "name": "shot_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34588,
   "name": "f_871C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34590,
   "name": "shot_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34596,
   "name": "f_8724",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34598,
   "name": "shot_kind",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34606,
   "name": "shot_live",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34612,
   "name": "f_8734",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34614,
   "name": "shot_life",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34620,
   "name": "f_873C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34622,
   "name": "shot_speed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34630,
   "name": "muzzle_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34632,
   "name": "shot_landed",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34640,
   "name": "sprite_hi_bit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34641,
   "name": "pairs_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34642,
   "name": "river_hazard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34648,
   "name": "river_bridge",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34649,
   "name": "a_8759",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34650,
   "name": "a_875A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34667,
   "name": "hazard_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34668,
   "name": "canyon_hazard",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34677,
   "name": "canyon_bridge",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34678,
   "name": "a_8776",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34693,
   "name": "fallback_key",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34695,
   "name": "fallback_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34697,
   "name": "enter_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34701,
   "name": "near_from",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34702,
   "name": "near_dist",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34703,
   "name": "near_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34704,
   "name": "cannon_done",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34706,
   "name": "ai_can_delay",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34708,
   "name": "muzzle_cannon",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34710,
   "name": "ai_cav_plan",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34712,
   "name": "cav_spare",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34714,
   "name": "bridge_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34717,
   "name": "ai_rider_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34718,
   "name": "ai_own_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34719,
   "name": "ai_own_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34720,
   "name": "side_frames",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34721,
   "name": "a_87A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34722,
   "name": "hit_sound",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34723,
   "name": "charge_sound",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34724,
   "name": "cannon_hit",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34725,
   "name": "cannon_hit_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34726,
   "name": "battle_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 34727,
   "name": "battle_timers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34729,
   "name": "b_87A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34737,
   "name": "b_87B1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34741,
   "name": "battle_machine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34848,
   "name": "b_8820",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34892,
   "name": "battle_rti",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34893,
   "name": "stick_port2",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34906,
   "name": "stick_port1",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34924,
   "name": "stick_decode",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34932,
   "name": "b_8874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34936,
   "name": "b_8878",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34940,
   "name": "b_887C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34944,
   "name": "b_8880",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34956,
   "name": "battle_keys",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35004,
   "name": "j_88BC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35018,
   "name": "b_88CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35021,
   "name": "b_88CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35067,
   "name": "b_88FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35070,
   "name": "b_88FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35073,
   "name": "b_8901",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35076,
   "name": "b_8904",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35079,
   "name": "battle_pause",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 35099,
   "name": "b_891B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35104,
   "name": "b_8920",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35131,
   "name": "b_893B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35134,
   "name": "paused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35135,
   "name": "pause_wait",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35136,
   "name": "key_scan",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35138,
   "name": "b_8942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35175,
   "name": "b_8967",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35183,
   "name": "b_896F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35189,
   "name": "b_8975",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35193,
   "name": "bkey_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35201,
   "name": "key_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35209,
   "name": "key_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35217,
   "name": "key_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35281,
   "name": "battle_key",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35282,
   "name": "stick_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35283,
   "name": "stick_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35284,
   "name": "stick_fire",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35285,
   "name": "battle_irq",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35346,
   "name": "b_8A12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35354,
   "name": "b_8A1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35362,
   "name": "b_8A22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35371,
   "name": "bmux_first",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35389,
   "name": "b_8A3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35410,
   "name": "b_8A52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35441,
   "name": "a_8A71",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35463,
   "name": "b_8A87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35473,
   "name": "j_8A91",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35482,
   "name": "bmux_next",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35506,
   "name": "a_8AB2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35507,
   "name": "b_8AB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35532,
   "name": "b_8ACC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35563,
   "name": "a_8AEB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35594,
   "name": "b_8B0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35600,
   "name": "j_8B10",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35601,
   "name": "a_8B11",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35605,
   "name": "a_8B15",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35607,
   "name": "a_8B17",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35609,
   "name": "a_8B19",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35611,
   "name": "b_8B1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35634,
   "name": "bmux_last",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 35657,
   "name": "mux_sprite",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35692,
   "name": "mux_and",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35693,
   "name": "f_8B6D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35700,
   "name": "mux_or",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35701,
   "name": "f_8B75",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35708,
   "name": "live_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35740,
   "name": "live_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35772,
   "name": "live_xhi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35804,
   "name": "live_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35836,
   "name": "live_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35868,
   "name": "slist_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35900,
   "name": "slist_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35932,
   "name": "slist_xhi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35964,
   "name": "slist_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35996,
   "name": "slist_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36028,
   "name": "sprite_sort",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36030,
   "name": "b_8CBE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36065,
   "name": "b_8CE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36070,
   "name": "f_8CE6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 36071,
   "name": "sort_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36103,
   "name": "bat_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36205,
   "name": "b_8D6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36206,
   "name": "a_8D6E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36207,
   "name": "a_8D6F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36209,
   "name": "a_8D71",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36210,
   "name": "a_8D72",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36261,
   "name": "b_8DA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36265,
   "name": "b_8DA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36266,
   "name": "a_8DAA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36267,
   "name": "a_8DAB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36269,
   "name": "a_8DAD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36270,
   "name": "a_8DAE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36272,
   "name": "a_8DB0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36273,
   "name": "a_8DB1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36275,
   "name": "a_8DB3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36276,
   "name": "a_8DB4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36346,
   "name": "sprite_copy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36348,
   "name": "b_8DFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36382,
   "name": "unpack",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 36396,
   "name": "b_8E2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36412,
   "name": "b_8E3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36427,
   "name": "b_8E4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36433,
   "name": "b_8E51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36439,
   "name": "b_8E57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36450,
   "name": "b_8E62",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36455,
   "name": "b_8E67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36484,
   "name": "r_8E84",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36485,
   "name": "gauge_save",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36490,
   "name": "b_8E8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36525,
   "name": "b_8EAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36537,
   "name": "gauge_places",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36580,
   "name": "gauge_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36587,
   "name": "b_8EEB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36594,
   "name": "b_8EF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36606,
   "name": "gauge_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36638,
   "name": "b_8F1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36640,
   "name": "b_8F20",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36658,
   "name": "b_8F32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36666,
   "name": "b_8F3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36672,
   "name": "b_8F40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36674,
   "name": "j_8F42",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36689,
   "name": "b_8F51",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36711,
   "name": "b_8F67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36724,
   "name": "b_8F74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36726,
   "name": "b_8F76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36744,
   "name": "b_8F88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36752,
   "name": "b_8F90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36758,
   "name": "b_8F96",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36760,
   "name": "j_8F98",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36775,
   "name": "b_8FA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36797,
   "name": "gauge_restore_side",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36802,
   "name": "gauge_restore",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36824,
   "name": "b_8FD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36876,
   "name": "b_900C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36888,
   "name": "battle_irq_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36906,
   "name": "b_902A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36958,
   "name": "sprite_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36960,
   "name": "b_9060",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36979,
   "name": "bat_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37023,
   "name": "rnd_sum",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37024,
   "name": "rnd_seed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 37025,
   "name": "a_90A1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37026,
   "name": "a_90A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37027,
   "name": "a_90A3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37028,
   "name": "a_90A4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37029,
   "name": "field_unpack",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37048,
   "name": "b_90B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37056,
   "name": "b_90C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37061,
   "name": "j_90C5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37163,
   "name": "b_912B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37167,
   "name": "b_912F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37183,
   "name": "field_scenery",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37197,
   "name": "b_914D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37233,
   "name": "a_9171",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37234,
   "name": "b_9172",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37237,
   "name": "r_9175",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37238,
   "name": "unit_icons",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37255,
   "name": "b_9187",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37272,
   "name": "r_9198",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37273,
   "name": "icon_bytes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37297,
   "name": "draw_objects",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37302,
   "name": "b_91B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37303,
   "name": "a_91B7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37336,
   "name": "b_91D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37355,
   "name": "b_91EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37364,
   "name": "j_91F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37367,
   "name": "b_91F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37373,
   "name": "place_object",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37434,
   "name": "b_923A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37447,
   "name": "save_under",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37486,
   "name": "b_926E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37489,
   "name": "b_9271",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37497,
   "name": "a_9279",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37498,
   "name": "a_927A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37520,
   "name": "b_9290",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37522,
   "name": "a_9292",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37529,
   "name": "a_9299",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37561,
   "name": "a_92B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37567,
   "name": "restore_under",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37619,
   "name": "b_92F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37620,
   "name": "a_92F4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37621,
   "name": "a_92F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37647,
   "name": "b_930F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37649,
   "name": "a_9311",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37656,
   "name": "a_9318",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37691,
   "name": "a_933B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37697,
   "name": "build_mask",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37719,
   "name": "b_9357",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37727,
   "name": "b_935F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37732,
   "name": "a_9364",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37733,
   "name": "a_9365",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37758,
   "name": "b_937E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37793,
   "name": "b_93A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37794,
   "name": "a_93A2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37796,
   "name": "draw_mask",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37816,
   "name": "b_93B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37819,
   "name": "b_93BB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37847,
   "name": "b_93D7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37849,
   "name": "a_93D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37856,
   "name": "a_93E0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37888,
   "name": "pick_lane",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37896,
   "name": "b_9408",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37923,
   "name": "bring_infantry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37940,
   "name": "b_9434",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37948,
   "name": "b_943C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37952,
   "name": "b_9440",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38008,
   "name": "r_9478",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38009,
   "name": "bring_cavalry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38026,
   "name": "b_948A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38034,
   "name": "b_9492",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38038,
   "name": "b_9496",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38097,
   "name": "r_94D1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38098,
   "name": "bring_cannon_first",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38107,
   "name": "bring_cannon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38168,
   "name": "r_9518",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38169,
   "name": "infantry_pictures",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38182,
   "name": "b_9526",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38186,
   "name": "b_952A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38208,
   "name": "b_9540",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38214,
   "name": "b_9546",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38224,
   "name": "j_9550",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38235,
   "name": "b_955B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38238,
   "name": "j_955E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38246,
   "name": "j_9566",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38249,
   "name": "b_9569",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38259,
   "name": "b_9573",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38287,
   "name": "b_958F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38304,
   "name": "cavalry_pictures",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38345,
   "name": "b_95C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38349,
   "name": "b_95CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38383,
   "name": "b_95EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38399,
   "name": "r_95FF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38400,
   "name": "b_9600",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38406,
   "name": "b_9606",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38421,
   "name": "b_9615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38436,
   "name": "b_9624",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38443,
   "name": "j_962B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38455,
   "name": "j_9637",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38466,
   "name": "b_9642",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38476,
   "name": "b_964C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38497,
   "name": "b_9661",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38510,
   "name": "cannon_pictures",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38542,
   "name": "b_968E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38548,
   "name": "b_9694",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38565,
   "name": "b_96A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38575,
   "name": "j_96AF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38587,
   "name": "j_96BB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38598,
   "name": "b_96C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38601,
   "name": "r_96C9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38602,
   "name": "b_96CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38630,
   "name": "b_96E6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38647,
   "name": "choose_unit",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38659,
   "name": "r_9703",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38660,
   "name": "b_9704",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38667,
   "name": "b_970B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38696,
   "name": "b_9728",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38708,
   "name": "b_9734",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38728,
   "name": "unit_skip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38733,
   "name": "b_974D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38752,
   "name": "b_9760",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38764,
   "name": "b_976C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38772,
   "name": "r_9774",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38773,
   "name": "b_9775",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38779,
   "name": "b_977B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38785,
   "name": "unit_check",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38801,
   "name": "a_9791",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38812,
   "name": "r_979C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38813,
   "name": "person_input",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38834,
   "name": "b_97B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38837,
   "name": "b_97B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38840,
   "name": "r_97B8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38841,
   "name": "b_97B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38887,
   "name": "b_97E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38893,
   "name": "b_97ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38899,
   "name": "b_97F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38905,
   "name": "b_97F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38911,
   "name": "b_97FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38917,
   "name": "battle_orders",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38942,
   "name": "b_981E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38945,
   "name": "j_9821",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38948,
   "name": "b_9824",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38951,
   "name": "b_9827",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38986,
   "name": "r_984A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38987,
   "name": "b_984B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38993,
   "name": "b_9851",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38996,
   "name": "b_9854",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39005,
   "name": "b_985D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39010,
   "name": "r_9862",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39011,
   "name": "b_9863",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39030,
   "name": "b_9876",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39045,
   "name": "b_9885",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39057,
   "name": "b_9891",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39072,
   "name": "b_98A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39094,
   "name": "b_98B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39109,
   "name": "cavalry_orders",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39142,
   "name": "r_98E6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39143,
   "name": "b_98E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39146,
   "name": "b_98EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39171,
   "name": "r_9903",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39172,
   "name": "b_9904",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39182,
   "name": "b_990E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39206,
   "name": "b_9926",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39209,
   "name": "b_9929",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39217,
   "name": "b_9931",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39234,
   "name": "b_9942",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39237,
   "name": "b_9945",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39245,
   "name": "b_994D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39272,
   "name": "b_9968",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39287,
   "name": "r_9977",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39288,
   "name": "cannon_orders",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39323,
   "name": "b_999B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39348,
   "name": "j_99B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39365,
   "name": "b_99C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39384,
   "name": "j_99D8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39387,
   "name": "r_99DB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39388,
   "name": "b_99DC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39411,
   "name": "b_99F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39416,
   "name": "b_99F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39428,
   "name": "b_9A04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39445,
   "name": "b_9A15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39460,
   "name": "computer_orders",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39476,
   "name": "computer_fallback",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39523,
   "name": "a_9A63",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39543,
   "name": "r_9A77",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39544,
   "name": "computer_infantry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39564,
   "name": "b_9A8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39623,
   "name": "r_9AC7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39624,
   "name": "b_9AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39627,
   "name": "b_9ACB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39631,
   "name": "j_9ACF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39665,
   "name": "b_9AF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39688,
   "name": "b_9B08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39704,
   "name": "b_9B18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39710,
   "name": "b_9B1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39719,
   "name": "infantry_stand",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39725,
   "name": "own_soldier",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39727,
   "name": "b_9B2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39740,
   "name": "b_9B3C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39743,
   "name": "r_9B3F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39744,
   "name": "computer_cavalry",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39783,
   "name": "r_9B67",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39784,
   "name": "b_9B68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39787,
   "name": "b_9B6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39806,
   "name": "b_9B7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39829,
   "name": "b_9B95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39844,
   "name": "b_9BA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39863,
   "name": "b_9BB7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39867,
   "name": "r_9BBB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39868,
   "name": "b_9BBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39892,
   "name": "j_9BD4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39912,
   "name": "b_9BE8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39920,
   "name": "b_9BF0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39923,
   "name": "b_9BF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39940,
   "name": "b_9C04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39954,
   "name": "j_9C12",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40000,
   "name": "b_9C40",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40025,
   "name": "cavalry_stop",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 40031,
   "name": "own_rider",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40033,
   "name": "b_9C61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40046,
   "name": "b_9C6E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40049,
   "name": "r_9C71",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40050,
   "name": "computer_cannon",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40080,
   "name": "r_9C90",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40081,
   "name": "b_9C91",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40098,
   "name": "b_9CA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40128,
   "name": "b_9CC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40133,
   "name": "b_9CC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40139,
   "name": "b_9CCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40170,
   "name": "b_9CEA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40174,
   "name": "j_9CEE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40212,
   "name": "level_chance",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40222,
   "name": "b_9D1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40229,
   "name": "b_9D25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40232,
   "name": "b_9D28",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40239,
   "name": "r_9D2F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40240,
   "name": "nearest_by_y",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40253,
   "name": "b_9D3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40297,
   "name": "j_9D69",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40311,
   "name": "b_9D77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40318,
   "name": "b_9D7E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40328,
   "name": "nearest_by_x",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40341,
   "name": "b_9D95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40385,
   "name": "j_9DC1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40399,
   "name": "b_9DCF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40406,
   "name": "b_9DD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40416,
   "name": "cannon_anim",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40420,
   "name": "cannon_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40460,
   "name": "r_9E0C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40461,
   "name": "infantry_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40499,
   "name": "b_9E33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40502,
   "name": "r_9E36",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40503,
   "name": "cannon_move_tick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40514,
   "name": "r_9E42",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40515,
   "name": "cannon_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40553,
   "name": "b_9E69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40575,
   "name": "j_9E7F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40587,
   "name": "b_9E8B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40599,
   "name": "b_9E97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40617,
   "name": "b_9EA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40623,
   "name": "b_9EAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40638,
   "name": "j_9EBE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40644,
   "name": "r_9EC4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40645,
   "name": "infantry_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40664,
   "name": "b_9ED8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40674,
   "name": "b_9EE2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40678,
   "name": "b_9EE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40722,
   "name": "r_9F12",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40723,
   "name": "b_9F13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40726,
   "name": "b_9F16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40747,
   "name": "b_9F2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40773,
   "name": "b_9F45",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40796,
   "name": "b_9F5C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40809,
   "name": "infantry_reform",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 40819,
   "name": "b_9F73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40823,
   "name": "b_9F77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40861,
   "name": "b_9F9D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40881,
   "name": "b_9FB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40913,
   "name": "r_9FD1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 40914,
   "name": "cavalry_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40933,
   "name": "b_9FE5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40943,
   "name": "b_9FEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40947,
   "name": "j_9FF3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 40968,
   "name": "b_A008",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40982,
   "name": "b_A016",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41014,
   "name": "j_A036",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41023,
   "name": "j_A03F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41026,
   "name": "b_A042",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41029,
   "name": "b_A045",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41048,
   "name": "b_A058",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41057,
   "name": "j_A061",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41063,
   "name": "b_A067",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41089,
   "name": "b_A081",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41112,
   "name": "j_A098",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41121,
   "name": "b_A0A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41129,
   "name": "r_A0A9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41130,
   "name": "cavalry_turn",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41140,
   "name": "b_A0B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41144,
   "name": "b_A0B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41182,
   "name": "b_A0DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41202,
   "name": "b_A0F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41234,
   "name": "r_A112",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41235,
   "name": "hazards",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41255,
   "name": "r_A127",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41256,
   "name": "b_A128",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41264,
   "name": "j_A130",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41266,
   "name": "b_A132",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41280,
   "name": "b_A140",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41345,
   "name": "b_A181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41350,
   "name": "b_A186",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41352,
   "name": "j_A188",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41355,
   "name": "b_A18B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41359,
   "name": "bullet_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41365,
   "name": "b_A195",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41387,
   "name": "b_A1AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41392,
   "name": "j_A1B0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41455,
   "name": "b_A1EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41458,
   "name": "r_A1F2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41459,
   "name": "cannon_left_field",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41501,
   "name": "r_A21D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41502,
   "name": "b_A21E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41522,
   "name": "cannon_arrived",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41553,
   "name": "r_A251",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41554,
   "name": "b_A252",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41570,
   "name": "infantry_arrived",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41581,
   "name": "b_A26D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41590,
   "name": "b_A276",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41615,
   "name": "r_A28F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41616,
   "name": "b_A290",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41618,
   "name": "b_A292",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41627,
   "name": "b_A29B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41643,
   "name": "infantry_gone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41654,
   "name": "b_A2B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41665,
   "name": "r_A2C1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41666,
   "name": "j_A2C2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41681,
   "name": "r_A2D1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41682,
   "name": "b_A2D2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41684,
   "name": "b_A2D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41695,
   "name": "r_A2DF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41696,
   "name": "cavalry_gone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41707,
   "name": "b_A2EB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41718,
   "name": "r_A2F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41719,
   "name": "j_A2F7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41736,
   "name": "r_A308",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41737,
   "name": "b_A309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41739,
   "name": "b_A30B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41750,
   "name": "r_A316",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41751,
   "name": "cover_sprite",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41797,
   "name": "b_A345",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41805,
   "name": "j_A34D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41837,
   "name": "cover_off",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41846,
   "name": "infantry_reform_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41860,
   "name": "infantry_fire",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41882,
   "name": "b_A39A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41883,
   "name": "b_A39B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41897,
   "name": "j_A3A9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41912,
   "name": "b_A3B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41922,
   "name": "b_A3C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41931,
   "name": "bullet_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41945,
   "name": "a_A3D9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41964,
   "name": "infantry_go",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41981,
   "name": "cavalry_turn_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41999,
   "name": "b_A40F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42007,
   "name": "b_A417",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42016,
   "name": "b_A420",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42025,
   "name": "b_A429",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42026,
   "name": "a_A42A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42043,
   "name": "b_A43B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42045,
   "name": "r_A43D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42046,
   "name": "cavalry_charge",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42063,
   "name": "r_A44F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42064,
   "name": "cavalry_rear",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42070,
   "name": "cavalry_go",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42082,
   "name": "cavalry_left_edge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42101,
   "name": "b_A475",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42132,
   "name": "r_A494",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42133,
   "name": "cavalry_right_edge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42152,
   "name": "b_A4A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42187,
   "name": "r_A4CB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42188,
   "name": "horse_gone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42219,
   "name": "r_A4EB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42220,
   "name": "cannon_aim",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42249,
   "name": "a_A509",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42256,
   "name": "cannon_go",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42273,
   "name": "shots_to_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42275,
   "name": "b_A523",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42339,
   "name": "b_A563",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42343,
   "name": "cannon_fire",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42402,
   "name": "r_A5A2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42403,
   "name": "shots_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42405,
   "name": "b_A5A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42432,
   "name": "b_A5C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42447,
   "name": "b_A5CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42451,
   "name": "balls_land",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42453,
   "name": "b_A5D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42468,
   "name": "b_A5E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42531,
   "name": "b_A623",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42534,
   "name": "b_A626",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42540,
   "name": "cannon_hit_gauge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42580,
   "name": "r_A654",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42581,
   "name": "charge_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42583,
   "name": "b_A657",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42654,
   "name": "b_A69E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42661,
   "name": "ball_crater",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42704,
   "name": "b_A6D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42738,
   "name": "b_A6F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42741,
   "name": "b_A6F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42757,
   "name": "b_A705",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42768,
   "name": "b_A710",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42796,
   "name": "b_A72C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42879,
   "name": "b_A77F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42894,
   "name": "b_A78E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 42898,
   "name": "a_A792",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42900,
   "name": "bridge_break",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42920,
   "name": "fall_back",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 42945,
   "name": "fall_back_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 42997,
   "name": "r_A7F5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 42998,
   "name": "bring_reserves",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43020,
   "name": "b_A80C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43023,
   "name": "b_A80F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43043,
   "name": "b_A823",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43060,
   "name": "b_A834",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43063,
   "name": "b_A837",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43083,
   "name": "b_A84B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43112,
   "name": "r_A868",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43113,
   "name": "battle_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43124,
   "name": "r_A874",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43125,
   "name": "b_A875",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43145,
   "name": "b_A889",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43153,
   "name": "fallback_done",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43188,
   "name": "r_A8B4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43189,
   "name": "wiped_out",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43207,
   "name": "b_A8C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43234,
   "name": "r_A8E2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 43235,
   "name": "lanes_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43239,
   "name": "b_A8E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43246,
   "name": "bat_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 43265,
   "name": "b_A901",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 43266,
   "name": "a_A902",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43268,
   "name": "a_A904",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43273,
   "name": "bsound_busy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 43274,
   "name": "open_bitmap_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43715,
   "name": "open_screen_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43886,
   "name": "river_bitmap_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43948,
   "name": "river_bitmap_pk_abac",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44588,
   "name": "river_bitmap_pk_ae2c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44678,
   "name": "river_bitmap_pk_ae86",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44910,
   "name": "river_bitmap_pk_af6e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45934,
   "name": "river_bitmap_pk_b36e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 46958,
   "name": "river_bitmap_pk_b76e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47549,
   "name": "river_screen_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48032,
   "name": "river_screen_pk_bba0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48071,
   "name": "river_colour_pk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48122,
   "name": "river_colour_pk_bbfa",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48212,
   "name": "river_colour_pk_bc54",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48521,
   "name": "pic_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48581,
   "name": "pic_canyon_bridge",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48912,
   "name": "pic_canyon_bridge_bf10",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48913,
   "name": "pic_canyon_bridge_bf11",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48916,
   "name": "pic_canyon_bridge_bf14",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48917,
   "name": "pic_canyon_bridge_bf15",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48920,
   "name": "pic_canyon_bridge_bf18",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48921,
   "name": "pic_canyon_bridge_bf19",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "pic_canyon_bridge_c000",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49154,
   "name": "pic_canyon_bridge_c002",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49181,
   "name": "pic_canyon_bridge_c01d",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49208,
   "name": "pic_canyon_bridge_c038",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49235,
   "name": "pic_canyon_bridge_c053",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49236,
   "name": "pic_canyon_bridge_c054",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49237,
   "name": "pic_canyon_bridge_c055",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49238,
   "name": "pic_canyon_bridge_c056",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49343,
   "name": "pic_canyon_bridge_c0bf",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49376,
   "name": "pic_canyon_bridge_c0e0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49410,
   "name": "pic_canyon_bridge_c102",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49499,
   "name": "pic_canyon_bridge_c15b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49514,
   "name": "pic_canyon_bridge_c16a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49529,
   "name": "pic_canyon_bridge_c179",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49544,
   "name": "pic_canyon_bridge_c188",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49545,
   "name": "pic_canyon_bridge_c189",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49605,
   "name": "pic_canyon_bridge_c1c5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49689,
   "name": "pic_canyon_bridge_c219",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49723,
   "name": "pic_canyon_bridge_c23b",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49750,
   "name": "pic_canyon_bridge_c256",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49777,
   "name": "pic_canyon_bridge_c271",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49804,
   "name": "pic_canyon_bridge_c28c",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49831,
   "name": "pic_canyon_bridge_c2a7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49832,
   "name": "pic_canyon_bridge_c2a8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49883,
   "name": "pic_canyon_bridge_c2db",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49884,
   "name": "pic_canyon_bridge_c2dc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49931,
   "name": "pic_river_bridge",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49935,
   "name": "pic_river_bridge_c30f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49936,
   "name": "pic_river_bridge_c310",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49975,
   "name": "pic_river_bridge_c337",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49976,
   "name": "pic_river_bridge_c338",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50015,
   "name": "pic_river_bridge_c35f",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50016,
   "name": "pic_river_bridge_c360",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50055,
   "name": "pic_river_bridge_c387",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50056,
   "name": "pic_river_bridge_c388",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50057,
   "name": "pic_river_bridge_c389",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50058,
   "name": "pic_river_bridge_c38a",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50080,
   "name": "pic_river_bridge_c3a0",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50102,
   "name": "pic_river_bridge_c3b6",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50103,
   "name": "pic_river_bridge_c3b7",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50118,
   "name": "pic_river_bridge_c3c6",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50119,
   "name": "pic_river_bridge_c3c7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50120,
   "name": "pic_river_bridge_c3c8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50121,
   "name": "pic_river_bridge_c3c9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 50136,
   "name": "pic_river_bridge_c3d8",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50137,
   "name": "pic_river_bridge_c3d9",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50138,
   "name": "pic_river_bridge_c3da",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 50955,
   "name": "pic_river_bridge_c70b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51431,
   "name": "pic_flashes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51511,
   "name": "pic_trees_brown",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51751,
   "name": "pic_trees_green",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 51991,
   "name": "pic_craters",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52071,
   "name": "pic_ground",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52191,
   "name": "pic_icons",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52471,
   "name": "gauge_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52486,
   "name": "devlink_before",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 52736,
   "name": "devlink",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 52766,
   "name": "j_CE1E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 52813,
   "name": "b_CE4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52840,
   "name": "b_CE68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52866,
   "name": "b_CE82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52867,
   "name": "a_CE83",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52871,
   "name": "a_CE87",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52877,
   "name": "b_CE8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52890,
   "name": "a_CE9A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52904,
   "name": "b_CEA8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52930,
   "name": "b_CEC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52953,
   "name": "b_CED9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52954,
   "name": "a_CEDA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52958,
   "name": "a_CEDE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52964,
   "name": "b_CEE4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 52974,
   "name": "a_CEEE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 52991,
   "name": "b_CEFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53016,
   "name": "b_CF18",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53026,
   "name": "b_CF22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53029,
   "name": "b_CF25",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53053,
   "name": "b_CF3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53077,
   "name": "b_CF55",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53099,
   "name": "j_CF6B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 53122,
   "name": "a_CF82",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53123,
   "name": "a_CF83",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53124,
   "name": "a_CF84",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53128,
   "name": "devlink_get",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 53132,
   "name": "a_CF8C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53167,
   "name": "devlink_put",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 53195,
   "name": "b_CFCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 53206,
   "name": "devlink_regs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 53207,
   "name": "a_CFD7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53208,
   "name": "a_CFD8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53209,
   "name": "a_CFD9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53210,
   "name": "a_CFDA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53211,
   "name": "a_CFDB",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53212,
   "name": "a_CFDC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53213,
   "name": "a_CFDD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 53214,
   "name": "devlink_after",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 12288,
   "type": "line",
   "text": "the canyon field's bitmap, packed for $8E1E (field 1, $826E): it unpacks to the 8,000 bytes at $4000, brown ground split top to bottom by a dark canyon with a wooden bridge across it; the stream ends at $3B9E and the four bytes after it are not read."
  },
  {
   "address": 12299,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $300B-$300B of the block at $3000."
  },
  {
   "address": 12300,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $300C-$3010 of the block at $3000."
  },
  {
   "address": 12305,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3011-$32CE of the block at $3000."
  },
  {
   "address": 13007,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $32CF-$3319 of the block at $3000."
  },
  {
   "address": 13082,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $331A-$332A of the block at $3000."
  },
  {
   "address": 13099,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $332B-$33FF of the block at $3000."
  },
  {
   "address": 13312,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3400-$3407 of the block at $3000."
  },
  {
   "address": 13320,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3408-$3409 of the block at $3000."
  },
  {
   "address": 13322,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $340A-$340B of the block at $3000."
  },
  {
   "address": 13324,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $340C-$3412 of the block at $3000."
  },
  {
   "address": 13331,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3413-$349A of the block at $3000."
  },
  {
   "address": 13467,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $349B-$34EB of the block at $3000."
  },
  {
   "address": 13548,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $34EC-$3546 of the block at $3000."
  },
  {
   "address": 13639,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3547-$3561 of the block at $3000."
  },
  {
   "address": 13666,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3562-$35C2 of the block at $3000."
  },
  {
   "address": 13763,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $35C3-$3774 of the block at $3000."
  },
  {
   "address": 14197,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3775-$37FF of the block at $3000."
  },
  {
   "address": 14336,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3800-$3830 of the block at $3000."
  },
  {
   "address": 14385,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3831-$385C of the block at $3000."
  },
  {
   "address": 14429,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $385D-$39B2 of the block at $3000."
  },
  {
   "address": 14771,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $39B3-$3A0D of the block at $3000."
  },
  {
   "address": 14862,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3A0E-$3B0C of the block at $3000."
  },
  {
   "address": 15117,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3B0D-$3B96 of the block at $3000."
  },
  {
   "address": 15255,
   "type": "line",
   "text": "canyon_bitmap_pk, continued: bytes $3B97-$3BA2 of the block at $3000."
  },
  {
   "address": 15267,
   "type": "line",
   "text": "the canyon field's screen bytes, packed, unpacked to $6000; four bytes after the stream's end ($3D06) are not read."
  },
  {
   "address": 15456,
   "type": "line",
   "text": "canyon_screen_pk, continued: bytes $3C60-$3C65 of the block at $3BA3."
  },
  {
   "address": 15462,
   "type": "line",
   "text": "canyon_screen_pk, continued: bytes $3C66-$3D0A of the block at $3BA3."
  },
  {
   "address": 15627,
   "type": "line",
   "text": "the canyon field's colours, packed, unpacked to $D800."
  },
  {
   "address": 16203,
   "type": "line",
   "text": "181 bytes after the packed colours that nothing reads: the power-on pattern of a C64's memory ($00 $00 $FF $FF), saved with the file."
  },
  {
   "address": 16291,
   "type": "line",
   "text": "canyon_after, continued: bytes $3FA3-$3FB6 of the block at $3F4B."
  },
  {
   "address": 16311,
   "type": "line",
   "text": "canyon_after, continued: bytes $3FB7-$3FFF of the block at $3F4B."
  },
  {
   "address": 24385,
   "type": "line",
   "text": "191 bytes after the battlefield's bitmap that nothing reads, the power-on pattern saved with the file."
  },
  {
   "address": 25577,
   "type": "line",
   "text": "15 bytes between the battlefield's screen and the sprite pointers that the video chip does not show; nothing reads them."
  },
  {
   "address": 25600,
   "type": "line",
   "text": "the 78 object pictures, 64 bytes each in the sprite layout (24 x 21, pixel pairs %11 for the figure), which $9341 makes into masks and sprite 0 shows as pointers $90-$DD: the Union's soldier ($00-$09: walking, standing, falling, lying, aiming and firing standing and kneeling), horse and rider ($0A-$1B: standing, walking, charging, falling, the riderless horse, three never used), cannon ($1C-$26: standing, the shot, hit, moving end-on and sideways, one never used), then the Confederacy's the same, facing left ($27-$4D)."
  },
  {
   "address": 25856,
   "type": "line",
   "text": "shapes, continued: bytes $6500-$657F of the block at $6400."
  },
  {
   "address": 25984,
   "type": "line",
   "text": "shapes, continued: bytes $6580-$67FF of the block at $6400."
  },
  {
   "address": 26624,
   "type": "line",
   "text": "shapes, continued: bytes $6800-$6BFF of the block at $6400."
  },
  {
   "address": 27648,
   "type": "line",
   "text": "shapes, continued: bytes $6C00-$6FFF of the block at $6400."
  },
  {
   "address": 28672,
   "type": "line",
   "text": "shapes, continued: bytes $7000-$73FF of the block at $6400."
  },
  {
   "address": 29696,
   "type": "line",
   "text": "shapes, continued: bytes $7400-$777F of the block at $6400."
  },
  {
   "address": 30592,
   "type": "line",
   "text": "the bullet's sprite image, a dot (pointer $DE)."
  },
  {
   "address": 30656,
   "type": "line",
   "text": "the cannonball's sprite image (pointer $DF)."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "an empty sprite image (pointer $E0), for the sprite slots not in use."
  },
  {
   "address": 30784,
   "type": "line",
   "text": "1,984 bytes after the images that nothing reads, the power-on pattern saved with the file."
  },
  {
   "address": 31808,
   "type": "line",
   "text": "shapes_after, continued: bytes $7C40-$7FFF of the block at $7840."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "the battle, called from the map's $0CAB with the two sides' units in $038A-$038F: sets the machine up ($87B5) and the map's sound player ($F128), seeds the random numbers from the raster line ($D012, $D011) and runs them a random number of times, clears the sprite list ($905E, $8DFA, $8CBC), unpacks one of the three battlefields ($90A5) and scatters its scenery ($913F), turns the screen on (multicolour bitmap, $3B), starts the raster interrupts ($9018), draws the players' unit icons ($9176), then for each side brings on its infantry ($9423), cavalry ($9479) and cannon ($94D2) and saves the strip under its range gauge ($8E85); clears the lanes ($A8E3)."
  },
  {
   "address": 32860,
   "type": "line",
   "text": "the battle's main loop, one side a pass ($85DD flipped each time): the unit chosen ($9781), the keys ($888C, kept in $89D1), the stick or keys of a person ($979D), the choice of unit ($96F7), falling back ($A7A8), the orders ($9805), the cannon's animation ($9DE0), the cannon's moves ($9E37), the infantry's moves and pictures ($9E0D), the cannon's pictures ($966E), the cavalry's ($95A0), the ravine and river ($A113), the cannonballs landing ($A5D3), new units for the gaps ($A7F6), the end of the battle ($A869) and a cannon hit ($A62C); then sound 13 for a hit ($87A2) and sound 3 or 17 for the cavalry's charge ($87A3)."
  },
  {
   "address": 32934,
   "type": "line",
   "text": "the charge's sound: while it plays ($87A3), sound 17 once both sides' cavalry are gone ($038C + $038D) or neither is moving ($8614 + $8615); otherwise sound 3 starts when some cavalry is moving and one of the six riders has a picture ($833F)."
  },
  {
   "address": 33017,
   "type": "line",
   "text": "the end of the battle, from $A88E: the raster interrupt off and acknowledged, the screen blanked ($D011 bit 4 clear), and the two pla drop $A869's return so that the rts goes back to the map."
  },
  {
   "address": 33040,
   "type": "line",
   "text": "code nothing in the battle calls: it makes port B of CIA 2 an input, compares bit 2 of $DD00 with bit 3 and, when they differ, turns the interrupts off and jumps to $CE00. With $CE00 it looks like the developers' link to another computer over the user port, left in memory when the file was saved."
  },
  {
   "address": 33087,
   "type": "line",
   "text": "the width in cells of the picture $8D07 draws."
  },
  {
   "address": 33088,
   "type": "line",
   "text": "its height in cells."
  },
  {
   "address": 33089,
   "type": "line",
   "text": "its width x 8, the bitmap bytes of one row of cells."
  },
  {
   "address": 33090,
   "type": "line",
   "text": "the 27 pictures' widths in cells (pictures 17 to 20 are empty entries)."
  },
  {
   "address": 33117,
   "type": "line",
   "text": "the 27 pictures' heights in cells."
  },
  {
   "address": 33144,
   "type": "line",
   "text": "the 27 pictures' bitmap addresses, low byte then high: picture 0 the house at $BD89, 1 to 4 the trees ($C937-$CA9F), 5 and 6 two flashes, 7 to 9 the canyon's bridge with its three stages of damage, 10 to 12 the river's, 13 and 14 the craters, 15 and 16 two patches of broken ground, 21 to 26 the unit icons; 17 to 20 are zero."
  },
  {
   "address": 33145,
   "type": "line",
   "text": "pic_bitmaps, continued: the high byte of picture 0's, and the pairs after it."
  },
  {
   "address": 33198,
   "type": "line",
   "text": "the 27 pictures' screen bytes' addresses, low then high; the Confederacy's icons (24-26) have theirs at $9199-$91A8, inside the code."
  },
  {
   "address": 33199,
   "type": "line",
   "text": "pic_screens, continued: the high byte of picture 0's and the pairs after it."
  },
  {
   "address": 33252,
   "type": "line",
   "text": "the 27 pictures' colour bytes' addresses, low then high."
  },
  {
   "address": 33253,
   "type": "line",
   "text": "pic_colours, continued: the high byte of picture 0's and the pairs after it."
  },
  {
   "address": 33280,
   "type": "line",
   "text": "pic_colours, continued: pictures 14 to 26's."
  },
  {
   "address": 33306,
   "type": "line",
   "text": "the 13 places a picture is drawn at, bitmap addresses low then high: 0 to 3 the scenery at the top (row 1 or 2), 4 to 7 at the bottom (rows 19 to 21), 8 and 9 the unit icons (row 1, columns 3 and 35), 10 the crater (set when a ball lands), 11 the canyon's bridge (row 9, column 16), 12 the river's (row 7, column 15)."
  },
  {
   "address": 33307,
   "type": "line",
   "text": "place_bitmaps, continued: the high byte of place 0's and the pairs after it."
  },
  {
   "address": 33326,
   "type": "line",
   "text": "place 10's bitmap address, low byte, which $A710 sets to the cell a ball landed in."
  },
  {
   "address": 33327,
   "type": "line",
   "text": "place10_bitmap, continued: its high byte, then places 11 and 12's."
  },
  {
   "address": 33332,
   "type": "line",
   "text": "the 13 places' screen addresses, low then high; the colour RAM is $7800 above."
  },
  {
   "address": 33333,
   "type": "line",
   "text": "place_screens, continued: the high byte of place 0's and the pairs after it."
  },
  {
   "address": 33352,
   "type": "line",
   "text": "place 10's screen address, low byte, set with $822E."
  },
  {
   "address": 33353,
   "type": "line",
   "text": "place10_screen, continued: its high byte, then places 11 and 12's."
  },
  {
   "address": 33358,
   "type": "line",
   "text": "the two range gauges' bitmap addresses, low then high: the Union's at $4180, the Confederacy's at $4200 (row 1, columns 8 and 24)."
  },
  {
   "address": 33359,
   "type": "line",
   "text": "gauge_bitmaps, continued: the Union's high byte and the Confederacy's address."
  },
  {
   "address": 33362,
   "type": "line",
   "text": "the gauges' screen addresses, $6030 and $6040."
  },
  {
   "address": 33363,
   "type": "line",
   "text": "gauge_screens, continued: the Union's high byte and the Confederacy's address."
  },
  {
   "address": 33366,
   "type": "line",
   "text": "where each gauge's strip is kept while it shows: $CC57 and $CCA7, 80 bytes each."
  },
  {
   "address": 33367,
   "type": "line",
   "text": "gauge_stores, continued: the Union's high byte and the Confederacy's address."
  },
  {
   "address": 33370,
   "type": "line",
   "text": "the range still to draw as $8EFE goes along the gauge, four to a cell."
  },
  {
   "address": 33371,
   "type": "line",
   "text": "the cells of the gauge still to draw, from 8."
  },
  {
   "address": 33372,
   "type": "line",
   "text": "for a cell partly filled with 1, 2 or 3 pixel pairs, how many pairs to shift the pattern by (3, 2, 1)."
  },
  {
   "address": 33376,
   "type": "line",
   "text": "each side's cannon's range, 0 to 31: the ball's life is (range + 2) x 2 frames."
  },
  {
   "address": 33378,
   "type": "line",
   "text": "the balls that have hit the bridge, up to 3, when it breaks."
  },
  {
   "address": 33379,
   "type": "line",
   "text": "the gauge's cell, eight lines of a lozenge ($00 $55 $AA $FF $FF $AA $55 $00), and a byte after it that nothing reads."
  },
  {
   "address": 33388,
   "type": "line",
   "text": "cleared by $905E; nothing reads it."
  },
  {
   "address": 33389,
   "type": "line",
   "text": "the battlefield: 0 the open field, 1 the canyon, 2 the river."
  },
  {
   "address": 33390,
   "type": "line",
   "text": "each field's packed bitmap, low then high: $A90A, $3000, $AB6E."
  },
  {
   "address": 33391,
   "type": "line",
   "text": "field_bitmaps, continued: the open field's high byte and the other two."
  },
  {
   "address": 33396,
   "type": "line",
   "text": "each field's packed screen: $AAC3, $3BA3, $B9BD."
  },
  {
   "address": 33397,
   "type": "line",
   "text": "field_screens, continued."
  },
  {
   "address": 33402,
   "type": "line",
   "text": "each field's packed colours: none for the open field, $3D0B, $BBC7."
  },
  {
   "address": 33403,
   "type": "line",
   "text": "field_colours, continued."
  },
  {
   "address": 33408,
   "type": "line",
   "text": "the picture placed at each of the eight scenery places, $FF none."
  },
  {
   "address": 33416,
   "type": "line",
   "text": "the four choices of scenery for each field: the house, two trees (pictures 1, 2 on the canyon, never used; 3, 4 elsewhere) or nothing ($FF)."
  },
  {
   "address": 33428,
   "type": "line",
   "text": "the field's offset into $8288 (field x 4)."
  },
  {
   "address": 33429,
   "type": "line",
   "text": "the unit each side has chosen: 0 the infantry, 1 the cavalry, 2 the cannon; the Union's here."
  },
  {
   "address": 33430,
   "type": "line",
   "text": "unit_choice, continued: the Confederacy's."
  },
  {
   "address": 33431,
   "type": "line",
   "text": "the 78 object pictures' addresses, high bytes: $6400 + 64 x picture."
  },
  {
   "address": 33509,
   "type": "line",
   "text": "the object pictures' addresses, low bytes."
  },
  {
   "address": 33536,
   "type": "line",
   "text": "shape_lo, continued: pictures 27 to 77."
  },
  {
   "address": 33587,
   "type": "line",
   "text": "the picture of each of 40 object slots, $FF none: slots 0-5 the Union's soldiers, 6-11 the Confederacy's, 12-14 the Union's riders, 15-17 the Confederacy's, 18 and 19 the cannons; 20 to 39 are never used."
  },
  {
   "address": 33599,
   "type": "line",
   "text": "obj_picture, continued: slot 12, the riders' and the cannons' pictures."
  },
  {
   "address": 33605,
   "type": "line",
   "text": "obj_picture, continued: slot 18, the cannons' (and the unused slots)."
  },
  {
   "address": 33627,
   "type": "line",
   "text": "each slot's x, in pixel pairs: 0 to $93 on the field, more is out of sight."
  },
  {
   "address": 33633,
   "type": "line",
   "text": "obj_x, continued: slot 6, the Confederacy's soldiers."
  },
  {
   "address": 33639,
   "type": "line",
   "text": "obj_x, continued: slot 12, the riders."
  },
  {
   "address": 33645,
   "type": "line",
   "text": "obj_x, continued: slot 18, the Union's cannon."
  },
  {
   "address": 33646,
   "type": "line",
   "text": "obj_x, continued: slot 19, the Confederacy's cannon, and the unused slots."
  },
  {
   "address": 33667,
   "type": "line",
   "text": "each slot's y in lines from the field's top."
  },
  {
   "address": 33679,
   "type": "line",
   "text": "obj_y, continued: slot 12, the riders."
  },
  {
   "address": 33685,
   "type": "line",
   "text": "obj_y, continued: slot 18, the cannons."
  },
  {
   "address": 33707,
   "type": "line",
   "text": "each slot's redraw flag, set when its picture changes and cleared by $91B1."
  },
  {
   "address": 33719,
   "type": "line",
   "text": "obj_redraw, continued: slot 12, the riders."
  },
  {
   "address": 33725,
   "type": "line",
   "text": "obj_redraw, continued: slot 18, the cannons."
  },
  {
   "address": 33747,
   "type": "line",
   "text": "the mask of the picture being drawn, four columns of 21 lines, $FF where the background shows."
  },
  {
   "address": 33768,
   "type": "line",
   "text": "obj_mask, continued: its second column."
  },
  {
   "address": 33789,
   "type": "line",
   "text": "obj_mask, continued: its third column."
  },
  {
   "address": 33810,
   "type": "line",
   "text": "obj_mask, continued: its fourth column, which takes the pixels shifted out of the third."
  },
  {
   "address": 33831,
   "type": "line",
   "text": "for each of a picture's 63 bytes (three to a line), its place in the mask (column x 21 + line)."
  },
  {
   "address": 33894,
   "type": "line",
   "text": "each slot's background store, high bytes ($D0-$DC)."
  },
  {
   "address": 33934,
   "type": "line",
   "text": "the background stores' low bytes: the stores are 84 bytes apart from $D000."
  },
  {
   "address": 33974,
   "type": "line",
   "text": "each slot's bitmap address when last drawn, low bytes."
  },
  {
   "address": 34014,
   "type": "line",
   "text": "the high bytes of the slots' bitmap addresses."
  },
  {
   "address": 34054,
   "type": "line",
   "text": "the line in its cell each slot was drawn at, $FF when it is not drawn."
  },
  {
   "address": 34060,
   "type": "line",
   "text": "drawn_line, continued: slot 6, the Confederacy's soldiers."
  },
  {
   "address": 34066,
   "type": "line",
   "text": "drawn_line, continued: slot 12, the Union's riders."
  },
  {
   "address": 34069,
   "type": "line",
   "text": "drawn_line, continued: slot 15, the Confederacy's riders."
  },
  {
   "address": 34072,
   "type": "line",
   "text": "drawn_line, continued: slot 18, the cannons."
  },
  {
   "address": 34094,
   "type": "line",
   "text": "$FF for a slot that stays, 0 for one to empty when it is next drawn; and a byte after the 40 that nothing reads."
  },
  {
   "address": 34106,
   "type": "line",
   "text": "obj_keep, continued: slot 12, the riders."
  },
  {
   "address": 34135,
   "type": "line",
   "text": "the picture being drawn."
  },
  {
   "address": 34136,
   "type": "line",
   "text": "the bitmap's 25 cell rows, high bytes less $40."
  },
  {
   "address": 34161,
   "type": "line",
   "text": "the cell rows' offsets into the bitmap, low bytes (row x 320)."
  },
  {
   "address": 34186,
   "type": "line",
   "text": "the 40 columns' offsets into a row (column x 8), high bytes."
  },
  {
   "address": 34226,
   "type": "line",
   "text": "the columns' offsets into a row, low bytes."
  },
  {
   "address": 34266,
   "type": "line",
   "text": "the line in its cell of the slot being drawn."
  },
  {
   "address": 34267,
   "type": "line",
   "text": "the pixel pairs the mask is shifted by."
  },
  {
   "address": 34268,
   "type": "line",
   "text": "the line in its cell of the background being put back."
  },
  {
   "address": 34269,
   "type": "line",
   "text": "the side this pass of the loop is for: 0 the Union, 1 the Confederacy."
  },
  {
   "address": 34270,
   "type": "line",
   "text": "the twelve soldiers' x as they come on, out of sight: the Union's two columns $F6, $FC, the Confederacy's $A0, $9A."
  },
  {
   "address": 34282,
   "type": "line",
   "text": "their y from the lane's: three rows 12 lines apart."
  },
  {
   "address": 34294,
   "type": "line",
   "text": "the six riders' x as they come on: the Union's $D4, the Confederacy's $C2."
  },
  {
   "address": 34300,
   "type": "line",
   "text": "their y from the lane's: 16 lines apart."
  },
  {
   "address": 34306,
   "type": "line",
   "text": "the two cannons' x as they come on."
  },
  {
   "address": 34308,
   "type": "line",
   "text": "their y from the lane's, and a byte nothing reads."
  },
  {
   "address": 34311,
   "type": "line",
   "text": "the soldiers, riders or cannons still to go in the loops over a unit."
  },
  {
   "address": 34312,
   "type": "line",
   "text": "each side's cannon's shots left, nine for each cannon."
  },
  {
   "address": 34314,
   "type": "line",
   "text": "1 while a side's cannon, out of shots, leaves the field."
  },
  {
   "address": 34316,
   "type": "line",
   "text": "1 while a side's cavalry falls back."
  },
  {
   "address": 34318,
   "type": "line",
   "text": "1 while a side's infantry falls back."
  },
  {
   "address": 34320,
   "type": "line",
   "text": "each side's cannons not yet on the field."
  },
  {
   "address": 34322,
   "type": "line",
   "text": "each side's infantry: 0 standing, 1 marching, 2 firing; the Union's here."
  },
  {
   "address": 34323,
   "type": "line",
   "text": "inf_state, continued: the Confederacy's."
  },
  {
   "address": 34324,
   "type": "line",
   "text": "each side's cavalry: 0 standing, 1 walking, 2 charging, 3 rearing; the Union's."
  },
  {
   "address": 34325,
   "type": "line",
   "text": "cav_state, continued: the Confederacy's."
  },
  {
   "address": 34326,
   "type": "line",
   "text": "each side's cannon: 0 standing, 1 moving, 2 aiming; the Union's."
  },
  {
   "address": 34327,
   "type": "line",
   "text": "can_state, continued: the Confederacy's."
  },
  {
   "address": 34328,
   "type": "line",
   "text": "each of the 20 slots' falling counter: 0 standing, 1 hit, counting on as it falls ($FF before the slot is used)."
  },
  {
   "address": 34334,
   "type": "line",
   "text": "obj_fall, continued: slot 6, the Confederacy's soldiers."
  },
  {
   "address": 34340,
   "type": "line",
   "text": "obj_fall, continued: slot 12, the riders: 8 and 9 the riderless horse running, $0B a horse fallen in."
  },
  {
   "address": 34346,
   "type": "line",
   "text": "obj_fall, continued: slot 18, the cannons."
  },
  {
   "address": 34348,
   "type": "line",
   "text": "the side of each of the 20 slots."
  },
  {
   "address": 34360,
   "type": "line",
   "text": "obj_side, continued: slot 12, the riders' and the cannons'."
  },
  {
   "address": 34368,
   "type": "line",
   "text": "each side's standing soldier (pictures 3 and $2A)."
  },
  {
   "address": 34370,
   "type": "line",
   "text": "the first of each side's two walking pictures."
  },
  {
   "address": 34372,
   "type": "line",
   "text": "the first of each side's two falling pictures."
  },
  {
   "address": 34374,
   "type": "line",
   "text": "each side's infantry formation: 0 three rows of two, 1 two rows of three."
  },
  {
   "address": 34376,
   "type": "line",
   "text": "each side's infantry direction: 0 up, 1 right, 2 down, 3 left."
  },
  {
   "address": 34378,
   "type": "line",
   "text": "each side's infantry frame, 0 or 1."
  },
  {
   "address": 34380,
   "type": "line",
   "text": "1 while the Union's infantry marches on, or after it has fallen back: it takes no orders."
  },
  {
   "address": 34381,
   "type": "line",
   "text": "inf_arriving, continued: the Confederacy's."
  },
  {
   "address": 34382,
   "type": "line",
   "text": "1 while a side's infantry reforms."
  },
  {
   "address": 34384,
   "type": "line",
   "text": "the steps of a side's reform, to 6; and two bytes nothing uses."
  },
  {
   "address": 34388,
   "type": "line",
   "text": "each soldier's aiming picture: the Union's standing and kneeling in turn, the Confederacy's the same."
  },
  {
   "address": 34400,
   "type": "line",
   "text": "each soldier's firing picture, with the flash."
  },
  {
   "address": 34412,
   "type": "line",
   "text": "each side's standing horse and rider."
  },
  {
   "address": 34414,
   "type": "line",
   "text": "the first of each side's two pictures of horse and rider walking."
  },
  {
   "address": 34416,
   "type": "line",
   "text": "the first of each side's four charging pictures."
  },
  {
   "address": 34418,
   "type": "line",
   "text": "the first of each side's eight pictures of a rider falling and his horse running; the first two are also the rearing horse."
  },
  {
   "address": 34420,
   "type": "line",
   "text": "each side's cavalry: 0 in line, 1 in file."
  },
  {
   "address": 34422,
   "type": "line",
   "text": "each side's cavalry frame count."
  },
  {
   "address": 34424,
   "type": "line",
   "text": "each side's cavalry direction: 0 up, 1 right, 2 down, 3 left."
  },
  {
   "address": 34426,
   "type": "line",
   "text": "1 while a side's cavalry changes formation."
  },
  {
   "address": 34428,
   "type": "line",
   "text": "the steps of the change, to 8."
  },
  {
   "address": 34430,
   "type": "line",
   "text": "set when a side's arriving cavalry has reached its place on the field."
  },
  {
   "address": 34432,
   "type": "line",
   "text": "1 while a side's cavalry rides on, or after it has fallen back."
  },
  {
   "address": 34434,
   "type": "line",
   "text": "each side's standing cannon."
  },
  {
   "address": 34436,
   "type": "line",
   "text": "the first of each side's two cannon pictures moving sideways."
  },
  {
   "address": 34438,
   "type": "line",
   "text": "the first of the two moving up or down."
  },
  {
   "address": 34440,
   "type": "line",
   "text": "the first of the two of the shot."
  },
  {
   "address": 34442,
   "type": "line",
   "text": "the first of the three of a cannon hit."
  },
  {
   "address": 34444,
   "type": "line",
   "text": "each side's cannon frame, 0 or 1."
  },
  {
   "address": 34446,
   "type": "line",
   "text": "1 once a side's aiming cannon has fired."
  },
  {
   "address": 34448,
   "type": "line",
   "text": "cleared when a cannon aims; nothing reads it."
  },
  {
   "address": 34450,
   "type": "line",
   "text": "each side's cannon direction: 0 up, 1 right, 2 down, 3 left."
  },
  {
   "address": 34452,
   "type": "line",
   "text": "passes left after fire is let go before the cannon fires."
  },
  {
   "address": 34454,
   "type": "line",
   "text": "1 while the Union's cannon rolls on."
  },
  {
   "address": 34455,
   "type": "line",
   "text": "can_arriving, continued: the Confederacy's."
  },
  {
   "address": 34456,
   "type": "line",
   "text": "the side's first lane (side x 4)."
  },
  {
   "address": 34457,
   "type": "line",
   "text": "the height of the lane picked."
  },
  {
   "address": 34458,
   "type": "line",
   "text": "the eight lanes, 1 once taken."
  },
  {
   "address": 34466,
   "type": "line",
   "text": "the lanes' heights: the Union's four, then the Confederacy's."
  },
  {
   "address": 34474,
   "type": "line",
   "text": "each side's frames before its choose key counts again (the first of the fifteen timers $87A7 counts down)."
  },
  {
   "address": 34476,
   "type": "line",
   "text": "each side's frames to the infantry's next step."
  },
  {
   "address": 34478,
   "type": "line",
   "text": "each side's frames to the cavalry's next step; then two timers nothing sets."
  },
  {
   "address": 34482,
   "type": "line",
   "text": "each side's frames to the range's next rise."
  },
  {
   "address": 34484,
   "type": "line",
   "text": "each side's frames to the cannon's next step."
  },
  {
   "address": 34486,
   "type": "line",
   "text": "each side's frames to the cannon's next frame."
  },
  {
   "address": 34488,
   "type": "line",
   "text": "frames to the next step of the end."
  },
  {
   "address": 34489,
   "type": "line",
   "text": "the steps left at the end, from 3."
  },
  {
   "address": 34490,
   "type": "line",
   "text": "sprite 0's x, low byte."
  },
  {
   "address": 34491,
   "type": "line",
   "text": "its high bit."
  },
  {
   "address": 34492,
   "type": "line",
   "text": "each soldier's x step reforming out of formation 0."
  },
  {
   "address": 34504,
   "type": "line",
   "text": "each soldier's y step reforming out of formation 0."
  },
  {
   "address": 34516,
   "type": "line",
   "text": "each soldier's x step out of formation 1."
  },
  {
   "address": 34528,
   "type": "line",
   "text": "each soldier's y step out of formation 1."
  },
  {
   "address": 34540,
   "type": "line",
   "text": "each rider's x step out of line."
  },
  {
   "address": 34546,
   "type": "line",
   "text": "each rider's y step out of line."
  },
  {
   "address": 34552,
   "type": "line",
   "text": "each rider's x step out of file."
  },
  {
   "address": 34558,
   "type": "line",
   "text": "each rider's y step out of file."
  },
  {
   "address": 34564,
   "type": "line",
   "text": "each side's way toward the enemy: 1 right for the Union, 3 left for the Confederacy."
  },
  {
   "address": 34566,
   "type": "line",
   "text": "1 once a side's infantry has reached the top edge."
  },
  {
   "address": 34568,
   "type": "line",
   "text": "the bottom edge."
  },
  {
   "address": 34570,
   "type": "line",
   "text": "the left edge."
  },
  {
   "address": 34572,
   "type": "line",
   "text": "the right edge."
  },
  {
   "address": 34574,
   "type": "line",
   "text": "1 once a side's cavalry has reached the top."
  },
  {
   "address": 34576,
   "type": "line",
   "text": "the bottom."
  },
  {
   "address": 34578,
   "type": "line",
   "text": "1 once a side's cannon has reached the top."
  },
  {
   "address": 34580,
   "type": "line",
   "text": "1 once a side's cannon has reached the bottom."
  },
  {
   "address": 34582,
   "type": "line",
   "text": "the eight shots' x: 0-2 the Union's bullets, 3-5 the Confederacy's, 6 and 7 the two cannonballs."
  },
  {
   "address": 34588,
   "type": "line",
   "text": "shot_x, continued: the cannonballs'."
  },
  {
   "address": 34590,
   "type": "line",
   "text": "the shots' y."
  },
  {
   "address": 34596,
   "type": "line",
   "text": "shot_y, continued: the cannonballs'."
  },
  {
   "address": 34598,
   "type": "line",
   "text": "0 a bullet, 1 a ball: the image's pointer less $DE."
  },
  {
   "address": 34606,
   "type": "line",
   "text": "0 while a shot flies, $FF spent."
  },
  {
   "address": 34612,
   "type": "line",
   "text": "shot_live, continued: the cannonballs'."
  },
  {
   "address": 34614,
   "type": "line",
   "text": "the frames a shot has left."
  },
  {
   "address": 34620,
   "type": "line",
   "text": "shot_life, continued: the cannonballs'."
  },
  {
   "address": 34622,
   "type": "line",
   "text": "the shots' steps across a frame: 3 and -3 for the bullets, 2 and -2 for the balls."
  },
  {
   "address": 34630,
   "type": "line",
   "text": "where a bullet starts across from the soldier: 8 and -8."
  },
  {
   "address": 34632,
   "type": "line",
   "text": "set when a shot's life runs out; $A5D3 reads the balls'."
  },
  {
   "address": 34640,
   "type": "line",
   "text": "the high bit of x for a shot's sprite, being worked out."
  },
  {
   "address": 34641,
   "type": "line",
   "text": "the pairs of soldiers still to fire."
  },
  {
   "address": 34642,
   "type": "line",
   "text": "the river's column at each cell row 0-24, $FF where the stone bridge crosses (rows 6 to 8)."
  },
  {
   "address": 34648,
   "type": "line",
   "text": "river_hazard, continued: the bridge's rows, which $A794 sets to the river's column 17 when it breaks."
  },
  {
   "address": 34649,
   "type": "line",
   "text": "river_hazard, continued: the bridge's second row."
  },
  {
   "address": 34650,
   "type": "line",
   "text": "river_hazard, continued: the third row and the rows below it."
  },
  {
   "address": 34667,
   "type": "line",
   "text": "the column of the hazard in an object's row, being tested."
  },
  {
   "address": 34668,
   "type": "line",
   "text": "the canyon's column at each cell row, 16, $FF at the wooden bridge (rows 9 and 10) and the bottom rows."
  },
  {
   "address": 34677,
   "type": "line",
   "text": "canyon_hazard, continued: the bridge's first row, set to 16 when it breaks."
  },
  {
   "address": 34678,
   "type": "line",
   "text": "canyon_hazard, continued: the bridge's second row and the rows below."
  },
  {
   "address": 34693,
   "type": "line",
   "text": "each side's fall-back key code from $888C: 6 E, 7 the up-arrow."
  },
  {
   "address": 34695,
   "type": "line",
   "text": "each side's way off the field: 3 left for the Union, 1 right for the Confederacy."
  },
  {
   "address": 34697,
   "type": "line",
   "text": "each side's way on: 1 right for the Union, 3 left for the Confederacy; and two bytes nothing reads."
  },
  {
   "address": 34701,
   "type": "line",
   "text": "the place $9D30 and $9D88 measure from."
  },
  {
   "address": 34702,
   "type": "line",
   "text": "the distance to the nearest enemy."
  },
  {
   "address": 34703,
   "type": "line",
   "text": "its slot, $FF none."
  },
  {
   "address": 34704,
   "type": "line",
   "text": "$FF once a side has no cannon to come."
  },
  {
   "address": 34706,
   "type": "line",
   "text": "the computer cannon's passes to wait after it fires."
  },
  {
   "address": 34708,
   "type": "line",
   "text": "where the ball starts across from the cannon: 4 and -2."
  },
  {
   "address": 34710,
   "type": "line",
   "text": "the computer cavalry's plan step, 0 to 6."
  },
  {
   "address": 34712,
   "type": "line",
   "text": "cleared when infantry comes on; nothing reads it."
  },
  {
   "address": 34714,
   "type": "line",
   "text": "the bridge's height for the computer's cavalry, by field: 0, $50, $37."
  },
  {
   "address": 34717,
   "type": "line",
   "text": "the computer rider's y."
  },
  {
   "address": 34718,
   "type": "line",
   "text": "the computer soldier's y, or its rider's y + 4."
  },
  {
   "address": 34719,
   "type": "line",
   "text": "the computer soldier's x."
  },
  {
   "address": 34720,
   "type": "line",
   "text": "each side's frame count, counted up by the interrupt; the range rises one for every four."
  },
  {
   "address": 34721,
   "type": "line",
   "text": "side_frames, continued: the Confederacy's."
  },
  {
   "address": 34722,
   "type": "line",
   "text": "set when a bullet hits; the loop plays sound 13 and clears it."
  },
  {
   "address": 34723,
   "type": "line",
   "text": "1 while the charge's sound plays."
  },
  {
   "address": 34724,
   "type": "line",
   "text": "set when a cannon is hit."
  },
  {
   "address": 34725,
   "type": "line",
   "text": "the slot of the cannon hit (18 or 19)."
  },
  {
   "address": 34726,
   "type": "line",
   "text": "1 once a side is out."
  },
  {
   "address": 34727,
   "type": "line",
   "text": "once a frame from the interrupt ($8A03): counts each of the fifteen timers at $86AA-$86B8 down to 0."
  },
  {
   "address": 34741,
   "type": "line",
   "text": "the battle's machine: RAM with I/O ($35), the CIA interrupts and timers off, $0392-$0395 cleared (nobody fell back or lost yet), video bank 1 ($DD00 = 2), black border and background, sprites off, bitmap at $4000 and screen at $6000 ($D018 = $80), the screen blanked ($2F), 40 columns of multicolour ($D016 = $18), the raster interrupt off, the 32 sprite slots in order with their places at 0, sprite multicolours $0A and 0, and NMI and reset pointing at the rti at $884C."
  },
  {
   "address": 34892,
   "type": "line",
   "text": "the rti that NMI and reset point at in the battle ($87B5), so RESTORE does nothing."
  },
  {
   "address": 34893,
   "type": "line",
   "text": "reads the joystick in port 2 ($DC00, port A made an input), then decodes it at $886C."
  },
  {
   "address": 34906,
   "type": "line",
   "text": "reads the joystick in port 1 ($DC01, with port A an output driving no keyboard row), then decodes it at $886C."
  },
  {
   "address": 34924,
   "type": "line",
   "text": "the stick's bits into $89D2 (x: $FF left, 1 right, 0), $89D3 (y: $FF up, 1 down, 0) and $89D4 (fire: 0 pressed, 1 not)."
  },
  {
   "address": 34956,
   "type": "line",
   "text": "the keys of the side this pass, as a code in A (and $89D1): for the Union RUN/STOP (4: choose the next unit) and E (6: fall back), for the Confederacy F5 (5) and the up-arrow (7); H, for either, pauses ($8907); $FF for none. Each row's choice is checked by reading $DC00 back, so a joystick in port 2 holding a line low cannot fake a key."
  },
  {
   "address": 35079,
   "type": "line",
   "text": "H: unless the last pause ended less than 50 frames ago ($893F), sound 17, the pause flag on ($893E, which stops the moving and the timers in the interrupt), 50 frames' wait ($893F), then a wait for H again, 50 more frames before H counts again, the flag off and the charge sound's flag cleared ($87A3)."
  },
  {
   "address": 35134,
   "type": "line",
   "text": "1 while H has paused the battle."
  },
  {
   "address": 35135,
   "type": "line",
   "text": "frames before H counts again."
  },
  {
   "address": 35136,
   "type": "line",
   "text": "the keyboard for the one person playing on the keys ($97B9): each row in turn ($8979) and, for a column that reads low, the key's PETSCII code from that row's table ($8981, $8989); $FF when no key is down."
  },
  {
   "address": 35192,
   "type": "line",
   "text": "a byte between the code and the key tables that nothing reads."
  },
  {
   "address": 35193,
   "type": "line",
   "text": "the keyboard rows $8940 drives, row 7 first; also the column patterns it compares."
  },
  {
   "address": 35201,
   "type": "line",
   "text": "each row's key codes' address, low bytes."
  },
  {
   "address": 35209,
   "type": "line",
   "text": "each row's key codes' address, high bytes ($89)."
  },
  {
   "address": 35217,
   "type": "line",
   "text": "the PETSCII code of each key, eight to a row from row 7 (RUN/STOP, Q, C=, space, 2, CTRL, back-arrow, 1) to row 0 (cursor down, F5, F3, F1, F7, cursor right, RETURN, DEL), each row's columns from 7 down."
  },
  {
   "address": 35281,
   "type": "line",
   "text": "the key code $888C found this pass."
  },
  {
   "address": 35282,
   "type": "line",
   "text": "the side's stick across: $FF left, 1 right."
  },
  {
   "address": 35283,
   "type": "line",
   "text": "up and down: $FF up, 1 down."
  },
  {
   "address": 35284,
   "type": "line",
   "text": "0 while fire is pressed."
  },
  {
   "address": 35285,
   "type": "line",
   "text": "the raster interrupt at line $E0, below the field (and line $F9 the first time, $9018): sets the next one for line 0 ($8A2B), copies the sprite list into the live tables ($8DFA) and sorts it ($8CBC), lets interrupts in again, and unless the game is paused ($893E) moves the shots into the sprite list ($A521), counts the timers down ($87A7), steps the random numbers ($9073), moves the shots ($A5A3) and counts the two frame counters ($87A0, $87A1); plays the sound unless it is being started ($A909, $F12E); counts the pause timer down ($893F)."
  },
  {
   "address": 35371,
   "type": "line",
   "text": "the raster interrupt at line 0: the first seven sprites of the sorted list ($8CE7) on hardware sprites 1 to 7 (place, high bit of x, pointer, colour), then the next interrupt 21 lines below the first one's top ($8A9A), or the bottom one ($8B32) when that is past line $D6."
  },
  {
   "address": 35441,
   "type": "line",
   "text": "the slot bmux_first is on, put back in Y: the operand of the ldy at $8A70, written at $8A40."
  },
  {
   "address": 35482,
   "type": "line",
   "text": "the raster interrupts down the screen: each takes the sorted list on from the slot it has reached ($8AB2), puts the next sprite on the hardware sprite its slot uses ($8B49) once that sprite's last image is done (21 lines below its top), and asks for the next interrupt at the line the next one is free; after the 32nd slot, or past line $D6, the next interrupt is the bottom one ($89D5 at line $E0)."
  },
  {
   "address": 35506,
   "type": "line",
   "text": "the slot of the sorted list bmux_next starts from: the operand of the ldy at $8AB1, written at $8B0D, $8B2C, $8B43."
  },
  {
   "address": 35563,
   "type": "line",
   "text": "the slot bmux_next is on, put back in Y: the operand of the ldy at $8AEA, written at $8AB6."
  },
  {
   "address": 35601,
   "type": "line",
   "text": "the $01 kept by bmux_next: the operand of the lda at $8B10, written at $8A9F."
  },
  {
   "address": 35605,
   "type": "line",
   "text": "A kept by bmux_next: the operand of the lda at $8B14, written at $8A9A."
  },
  {
   "address": 35607,
   "type": "line",
   "text": "X kept by bmux_next: the operand of the ldx at $8B16, written at $8AAB."
  },
  {
   "address": 35609,
   "type": "line",
   "text": "Y kept by bmux_next: the operand of the ldy at $8B18, written at $8AAE."
  },
  {
   "address": 35634,
   "type": "line",
   "text": "the next interrupt the bottom one: $89D5 at line $E0, and the next frame's list from slot 7."
  },
  {
   "address": 35657,
   "type": "line",
   "text": "the hardware sprite each slot of the sorted list goes on, 1 to 7 in turn."
  },
  {
   "address": 35692,
   "type": "line",
   "text": "the masks that clear each sprite's bit (0 to 7) of $D010."
  },
  {
   "address": 35693,
   "type": "line",
   "text": "mux_and, continued: from sprite 1, as bmux_first reads it."
  },
  {
   "address": 35700,
   "type": "line",
   "text": "the bits that set each sprite's bit of $D010."
  },
  {
   "address": 35701,
   "type": "line",
   "text": "mux_or, continued: from sprite 1."
  },
  {
   "address": 35708,
   "type": "line",
   "text": "the 32 slots' y, as the interrupts read them."
  },
  {
   "address": 35740,
   "type": "line",
   "text": "the 32 slots' x, low bytes, as the interrupts read them."
  },
  {
   "address": 35772,
   "type": "line",
   "text": "the slots' x, high bit."
  },
  {
   "address": 35804,
   "type": "line",
   "text": "the slots' image pointers."
  },
  {
   "address": 35836,
   "type": "line",
   "text": "the slots' colours."
  },
  {
   "address": 35868,
   "type": "line",
   "text": "the sprite list the game writes: y, copied into live_y each frame ($8DFA)."
  },
  {
   "address": 35900,
   "type": "line",
   "text": "x, low bytes."
  },
  {
   "address": 35932,
   "type": "line",
   "text": "x, high bit."
  },
  {
   "address": 35964,
   "type": "line",
   "text": "image pointers."
  },
  {
   "address": 35996,
   "type": "line",
   "text": "colours."
  },
  {
   "address": 36028,
   "type": "line",
   "text": "sorts the 32 slots' order ($8CE7) by the live y ($8B7C), top first, with an insertion sort that steps back after each swap."
  },
  {
   "address": 36070,
   "type": "line",
   "text": "the rts, which the sort also reads as the byte before $8CE7."
  },
  {
   "address": 36071,
   "type": "line",
   "text": "the 32 slots in order of y, top first."
  },
  {
   "address": 36103,
   "type": "line",
   "text": "picture X at place A: X picks the size ($8142 widths, $815D heights in cells) and the sources ($8178 bitmap, $81AE screen, $81E4 colour), A the place ($821A bitmap, $8234 screen, colour RAM $7800 above the screen); the bitmap copied a row of cells at a time, then the screen and colour bytes."
  },
  {
   "address": 36206,
   "type": "line",
   "text": "the low byte of bat_picture's bitmap source: the low byte of the address of the lda at $8D6D, written at $8D1A, $8D7F."
  },
  {
   "address": 36207,
   "type": "line",
   "text": "the high byte of bat_picture's bitmap source: the high byte of the address of the lda at $8D6D, written at $8D20, $8D87."
  },
  {
   "address": 36209,
   "type": "line",
   "text": "the low byte of bat_picture's bitmap store: the low byte of the address of the sta at $8D70, written at $8D41, $8D90."
  },
  {
   "address": 36210,
   "type": "line",
   "text": "the high byte of bat_picture's bitmap store: the high byte of the address of the sta at $8D70, written at $8D47, $8D98."
  },
  {
   "address": 36266,
   "type": "line",
   "text": "the low byte of bat_picture's screen source: the low byte of the address of the lda at $8DA9, written at $8D26, $8DBF."
  },
  {
   "address": 36267,
   "type": "line",
   "text": "the high byte of bat_picture's screen source: the high byte of the address of the lda at $8DA9, written at $8D2C, $8DC7."
  },
  {
   "address": 36269,
   "type": "line",
   "text": "the low byte of bat_picture's screen store: the low byte of the address of the sta at $8DAC, written at $8D4D, $8DE2."
  },
  {
   "address": 36270,
   "type": "line",
   "text": "the high byte of bat_picture's screen store: the high byte of the address of the sta at $8DAC, written at $8D56, $8DED."
  },
  {
   "address": 36272,
   "type": "line",
   "text": "the low byte of bat_picture's colour source: the low byte of the address of the lda at $8DAF, written at $8D32, $8DD1."
  },
  {
   "address": 36273,
   "type": "line",
   "text": "the high byte of bat_picture's colour source: the high byte of the address of the lda at $8DAF, written at $8D38, $8DD9."
  },
  {
   "address": 36275,
   "type": "line",
   "text": "the low byte of bat_picture's colour store: the low byte of the address of the sta at $8DB2, written at $8D50, $8DE5."
  },
  {
   "address": 36276,
   "type": "line",
   "text": "the high byte of bat_picture's colour store: the high byte of the address of the sta at $8DB2, written at $8D5C, $8DF3."
  },
  {
   "address": 36346,
   "type": "line",
   "text": "the 32 slots of the sprite list ($8C1C-$8CBB) into the live tables the interrupts read ($8B7C-$8C1B), at the bottom of the screen."
  },
  {
   "address": 36382,
   "type": "line",
   "text": "unpacks from ($10) to ($12) until the count in $14/$15 goes below zero, so one byte more than the count: each control byte gives eight flags, top bit first; a 1 copies the next byte, a 0 takes the next byte as a count and writes the last byte copied that many times."
  },
  {
   "address": 36485,
   "type": "line",
   "text": "saves the strip of eight cells the side's range gauge is drawn on ($8EB9): 64 bytes of bitmap, 8 of screen and 8 of colour, into the store at $CC57 (the Union) or $CCA7 (the Confederacy)."
  },
  {
   "address": 36537,
   "type": "line",
   "text": "the side's gauge pointers: $40 the strip's bitmap ($824E: $4180 for the Union, $4200 for the Confederacy, row 1), $42 its store ($8256), $48 and $44 its screen and colour bytes ($8252, colour $7800 above)."
  },
  {
   "address": 36580,
   "type": "line",
   "text": "the side's gauge empty: its bitmap cleared, its screen bytes $BC and colours white, when a cannon starts to aim ($A505)."
  },
  {
   "address": 36606,
   "type": "line",
   "text": "the side's gauge for its range ($8260, 0 to 31): eight cells of the lozenge pattern ($8263), four pixel pairs to a cell, filled from the left for the Union and from the right for the Confederacy, the cell at the end shifted by $825C."
  },
  {
   "address": 36797,
   "type": "line",
   "text": "the side's gauge put back ($8FC2 with X its side times two), once the cannon has fired."
  },
  {
   "address": 36802,
   "type": "line",
   "text": "the strip X/2's bitmap, screen and colour bytes back from their store ($8E85); also from $A651 when a person's aiming cannon is hit."
  },
  {
   "address": 36888,
   "type": "line",
   "text": "the raster interrupt on, at $89D5 for line $F9, after the frame's bottom; all eight sprites on, sprite 0 multicolour, none stretched."
  },
  {
   "address": 36958,
   "type": "line",
   "text": "the 32 slots of the sprite list put out of sight (y $E8, pointer $E0, a blank image), and $826C cleared."
  },
  {
   "address": 36979,
   "type": "line",
   "text": "the next random number in A: the sum of $90A0, $90A3, $90A4 and 1, with the five bytes at $90A0-$90A4 shifted along."
  },
  {
   "address": 37023,
   "type": "line",
   "text": "the random sum being made."
  },
  {
   "address": 37024,
   "type": "line",
   "text": "the five bytes the random numbers come from, newest first; they start as the text \"random\" with $909F."
  },
  {
   "address": 37025,
   "type": "line",
   "text": "rnd_seed, continued: the second byte, moved on to $90A2 by each step."
  },
  {
   "address": 37026,
   "type": "line",
   "text": "rnd_seed, continued: the third byte, moved on to $90A3."
  },
  {
   "address": 37027,
   "type": "line",
   "text": "rnd_seed, continued: the fourth byte, added in and moved on to $90A4; seeded from the raster line ($D012) by $8007."
  },
  {
   "address": 37028,
   "type": "line",
   "text": "rnd_seed, continued: the fifth and last byte, added in; seeded from $D011 by $800D."
  },
  {
   "address": 37029,
   "type": "line",
   "text": "picks the battlefield with a random number ($826D): below $55 the canyon with its wooden bridge (1), below $AA the river with its stone bridge (2), otherwise the open field (0); unpacks its bitmap to $4000 ($826E) and its screen to $6000 ($8274), and its colours to $D800 ($827A), or for the open field colour RAM all green (5)."
  },
  {
   "address": 37183,
   "type": "line",
   "text": "on the open field and the river, not the canyon: each of places 0 to 7 (four at the top, four at the bottom) gets, with a random number below $7F, a random one of the field's four ($8288): the house (picture 0), one of the two trees (3, 4) or nothing; the picture kept in $8280."
  },
  {
   "address": 37233,
   "type": "line",
   "text": "the scenery place field_scenery is on: the operand of the ldx at $9170, written at $9166."
  },
  {
   "address": 37238,
   "type": "line",
   "text": "the unit each person has chosen, as an icon: the Union's (pictures 21-23) at place 8, top left, the Confederacy's (24-26) at place 9, top right; nothing for a side the computer plays."
  },
  {
   "address": 37273,
   "type": "line",
   "text": "the screen and colour bytes of the Confederacy's three icons (pictures 24 to 26), inside the code: grey where the Union's are blue."
  },
  {
   "address": 37297,
   "type": "line",
   "text": "redraws every object slot whose redraw flag is set ($83AB), from slot 39 down: builds the picture's mask ($9341); if the slot was drawn, covers it with sprite 0 ($A317) and puts back the background it saved ($92BF); a slot marked to go ($852E = 0) is emptied; otherwise works out its new place ($91FD), saves the background there ($9247) and draws the mask ($93A4); then sprite 0 off ($A36D)."
  },
  {
   "address": 37303,
   "type": "line",
   "text": "the slot draw_objects is on, from 39 down: the operand of the ldy at $91B6, written at $91B3, $91F7."
  },
  {
   "address": 37373,
   "type": "line",
   "text": "slot Y's bitmap address ($20/$21, kept in $84B6/$84DE): cell row y / 8 ($8571, $8558) and column x / 4 ($85B2, $858A) into the bitmap at $4000, the line in the cell (y and 7) in $85DA and $8506; x from $94 up is off the field, so the slot is marked undrawn ($8506 = $FF), sprite 0 goes off and the two pla skip the drawing."
  },
  {
   "address": 37447,
   "type": "line",
   "text": "saves the bitmap bytes under slot Y's picture (bitmap AND the picture's pixels) into its store under the I/O chip ($8466/$848E: $D000 + 84 x slot, written with $01 = $34): four columns of 21 lines, stepping into the next cell row after a cell's eighth line."
  },
  {
   "address": 37497,
   "type": "line",
   "text": "the low byte of the store save_under writes: the low byte of the address of the sta at $9278, written at $924D."
  },
  {
   "address": 37498,
   "type": "line",
   "text": "the high byte of the store save_under writes: the high byte of the address of the sta at $9278, written at $9253."
  },
  {
   "address": 37522,
   "type": "line",
   "text": "the end of save_under's column, 21 more for each column: the operand of the cpx at $9291, written at $9265, $92A8."
  },
  {
   "address": 37529,
   "type": "line",
   "text": "the column save_under is on, as an offset of 8 a column: the operand of the adc at $9298, written at $9260, $92B1."
  },
  {
   "address": 37561,
   "type": "line",
   "text": "Y kept by save_under: the operand of the ldy at $92B8, written at $9247."
  },
  {
   "address": 37567,
   "type": "line",
   "text": "ORs slot Y's saved bytes back into the bitmap at its old place ($84B6/$84DE, line $8506), the picture's pixels gone again."
  },
  {
   "address": 37620,
   "type": "line",
   "text": "the low byte of the store restore_under reads: the low byte of the address of the lda at $92F3, written at $92C5."
  },
  {
   "address": 37621,
   "type": "line",
   "text": "the high byte of the store restore_under reads: the high byte of the address of the lda at $92F3, written at $92CB."
  },
  {
   "address": 37649,
   "type": "line",
   "text": "the end of restore_under's column: the operand of the cpx at $9310, written at $92E5, $932A."
  },
  {
   "address": 37656,
   "type": "line",
   "text": "the column restore_under is on, as an offset of 8 a column: the operand of the adc at $9317, written at $92EA, $9333."
  },
  {
   "address": 37691,
   "type": "line",
   "text": "Y kept by restore_under: the operand of the ldy at $933A, written at $92BF."
  },
  {
   "address": 37697,
   "type": "line",
   "text": "the mask for picture $8557 in the 84 bytes at $83D3 (four columns of 21 lines, all $FF to start): each of the picture's 63 bytes ($6400 + 64 x picture, from $8297 and $82E5), inverted, at its place ($8427), then all shifted right by x and 3 pixel pairs with 1s coming in, so the picture sits at the slot's exact place."
  },
  {
   "address": 37732,
   "type": "line",
   "text": "the low byte of the picture build_mask reads: the low byte of the address of the lda at $9363, written at $934A."
  },
  {
   "address": 37733,
   "type": "line",
   "text": "the high byte of the picture build_mask reads: the high byte of the address of the lda at $9363, written at $9350."
  },
  {
   "address": 37794,
   "type": "line",
   "text": "Y kept by build_mask: the operand of the ldy at $93A1, written at $9341."
  },
  {
   "address": 37796,
   "type": "line",
   "text": "ANDs the mask into the bitmap at the slot's new place: the picture's pixel pairs, all %11, become %00, the black background, so every soldier, horse and cannon on the field is a black figure."
  },
  {
   "address": 37849,
   "type": "line",
   "text": "the end of draw_mask's column: the operand of the cpx at $93D8, written at $93AE, $93EF."
  },
  {
   "address": 37856,
   "type": "line",
   "text": "the column draw_mask is on, as an offset of 8 a column: the operand of the adc at $93DF, written at $93B3, $93F8."
  },
  {
   "address": 37888,
   "type": "line",
   "text": "a random one of the side's four lanes ($869A + 4 x side) not taken yet, marked taken, its height in $8699 ($86A2: $23, $37, $55, $73 for the Union, $28, $4B, $69, $82 for the Confederacy); a new unit's soldiers are placed from it."
  },
  {
   "address": 37923,
   "type": "line",
   "text": "a lane ($9400) and, if the side has infantry ($038A), up to six soldiers at their places in it ($85DE x, $85EA + lane y), past the side's own edge: the Union's left, the Confederacy's right; their death counters cleared, the line marching on ($8612 = 1, $864C = 1) the way of the enemy ($8789), in formation 0, not reforming."
  },
  {
   "address": 38009,
   "type": "line",
   "text": "a lane and up to three riders ($038C) at their places ($85F6, $85FC + lane), past the side's edge, walking on ($8614 = 1, $8680 = 1) toward the enemy, in line (formation 0), not turning, the computer's plan at 0 ($8796)."
  },
  {
   "address": 38098,
   "type": "line",
   "text": "the side's cannons ($038E) into its reserve ($8610), then the first one ($94DB)."
  },
  {
   "address": 38107,
   "type": "line",
   "text": "if a cannon is left in reserve ($8610): one fewer there, and the cannon at its place ($8602, $8604 + lane) past the side's edge with nine shots ($8608), moving on ($8616 = 1, $8696 = 1) toward the enemy ($8692)."
  },
  {
   "address": 38169,
   "type": "line",
   "text": "every 10 frames ($9E33): each of the side's six soldiers: a falling one ($8618) shows its two falling pictures ($8644 + 0, + 1), then is marked to go ($852E = 0) and the side's infantry count ($038A) drops by one; the others take the picture of the line's state: walking ($8642 + frame $864A) while it marches or falls back, standing ($8640) when it stands, aiming ($8654) then firing ($8660) when it fires; a changed picture sets the slot's redraw flag; then the slots are redrawn ($91B1)."
  },
  {
   "address": 38304,
   "type": "line",
   "text": "every 6 frames ($86AE): the frame count ($8676) on, the riders moved ($9FD2), the end of falling back checked ($A2E0); then each of the side's three riders: a hit one ($8624, 2 to 9, then 8 and 9 again) shows the fall and the riderless horse ($8672 + counter - 2); falling back, the walk of the other side's riders, which face the other way ($866E of the other side); otherwise by the cavalry's state: standing ($866C), walking ($866E + frame), charging ($8670 + frame 0 to 3, then 2 and 3 again, with its hits, $A655), rearing ($8672 + frame); then the slots are redrawn."
  },
  {
   "address": 38510,
   "type": "line",
   "text": "each pass, for the side's cannon (unless gone, $8790): hit ($862A), three pictures ($868A + counter - 2) and then the slot emptied ($8345 = $FF) and the side's cannon count ($038E) one fewer; moving or leaving, the sideways pictures ($8684 + frame $868C) or, going up or down, the end-on ones ($8686); standing ($8682); aiming, standing until it fires and then the shot ($8688 + frame); then the slots are redrawn."
  },
  {
   "address": 38647,
   "type": "line",
   "text": "a person's choose key (RUN/STOP for the Union, F5 for the Confederacy, $89D1), with the stick still and fire not pressed and 12 frames since the last ($86AA): the infantry on the field stops ($8612 = 0), the next unit chosen ($8295: infantry, cavalry, cannon, round), sound 5, units the side has none of passed over ($9748), and the icon drawn ($9176)."
  },
  {
   "address": 38728,
   "type": "line",
   "text": "moves the side's choice ($8295) on past a unit it has none of: infantry with $038A at 0, cavalry with $038C at 0, a cannon that is hit or not there ($862A) with no cannon in reserve. The reserve is read as $8610 for both sides, the Union's, so the Confederacy keeps a missing cannon chosen while the Union has one in reserve; its orders then do nothing ($9982)."
  },
  {
   "address": 38785,
   "type": "line",
   "text": "the side's choice checked again ($9748); when it moved, because the unit was lost, 12 frames' delay and the icon redrawn."
  },
  {
   "address": 38801,
   "type": "line",
   "text": "the unit chosen before unit_check looked again: the operand of the cmp at $9790, written at $9787."
  },
  {
   "address": 38813,
   "type": "line",
   "text": "the stick or keys of a person into $89D2-$89D4: nothing when the computer plays both sides; with two people, the Union on the joystick in port 2 and the Confederacy in port 1; with one, the joystick in port 2, or with the keyboard chosen on the menu ($0388): Z left, X right, P up, L down, space fire ($8940)."
  },
  {
   "address": 38917,
   "type": "line",
   "text": "the side's orders this pass: a side that fell back ($0392) stops its cannon; the computer's side ($0382) plans its own ($9A24); a person's chosen unit takes the stick: the cavalry ($98C5), the cannon ($9978), or the infantry here: nothing while it marches on, falls back, fires or reforms; fire: reform into formation 0 first ($A376), then fire ($A384); the stick still: stand; left or right: march that way, toward the enemy at once, away only in formation 1 (reforming first), not past an edge it has reached ($8706-$870C); up or down: march that way."
  },
  {
   "address": 39109,
   "type": "line",
   "text": "a person's cavalry: nothing while it rides on, falls back or turns ($8680, $860C, $867A); fire: from file (formation 1) turn back into line ($A3FD), otherwise charge forward ($A43E); the stick still: once moving it walks on toward the enemy ($8704); sound 2 when it starts; forward: charge; backward: from line into file ($A3FD), or in file, or alone, rear ($A450); up or down: walk that way unless at the edge ($870E, $8710)."
  },
  {
   "address": 39288,
   "type": "line",
   "text": "a person's cannon: nothing while it rolls on, has no shots, is hit or leaves; aiming: until it fires, fire held raises the range ($8260) by one every four frames ($87A0) up to 31, drawn on the gauge ($8EFE), and three passes after fire is let go ($8694) it fires ($868E, $A567) and the gauge goes back ($8FBD); not aiming: fire starts the aim ($A4EC); up or down moves it unless at the edge ($8712, $8714); the stick still stops it, facing the enemy."
  },
  {
   "address": 39460,
   "type": "line",
   "text": "the computer's side: its cannon ($9C72), cavalry ($9B40), infantry ($9A78), and whether to fall back ($9A34)."
  },
  {
   "address": 39476,
   "type": "line",
   "text": "falls back ($A7C1) with about one chance in 500 a pass (a random number of 0, then one from $7F up) when it has a territory to go to ($0390), its units have all arrived, it is down to three soldiers and riders or fewer and the enemy has at least as many (the cmp at $9A62)."
  },
  {
   "address": 39523,
   "type": "line",
   "text": "the computer's own soldiers and riders, which the enemy's must reach for it to fall back: the operand of the cmp at $9A62, written at $9A52."
  },
  {
   "address": 39544,
   "type": "line",
   "text": "the computer's line, once on the field and not falling back: stands while any of its three bullets flies; otherwise takes its first standing soldier ($9B2D) and the nearest enemy across ($9D88); with none, or the enemy behind, stands; more than 3 lines above or below, marches up or down (or forward at an edge); level with it, stands and, within 30 pixel pairs and with its level's chance ($9D14), fires; farther, marches forward."
  },
  {
   "address": 39719,
   "type": "line",
   "text": "the side's infantry stands ($8612 = 0)."
  },
  {
   "address": 39725,
   "type": "line",
   "text": "X the side's first standing soldier, from slot 11 down ($862C sides, $8618 counters), $FF when there is none."
  },
  {
   "address": 39744,
   "type": "line",
   "text": "the computer's cavalry, by its plan ($8796): 0, with its level's chance ($9D14) and sound 2: on the open field straight to plan 5; at a bridge into file ($A3FD), plan 1; 1 and 4: wait for the turn to end; 2: up or down to the bridge's height ($879A: $50 on the canyon, $37 on the river), and there charge across, plan 3; 3: once across (x $5A or more for the Union, below $37 for the Confederacy) back into line, plan 4; 5: up or down toward the nearest enemy ($9D30) and, within four lines of it, charge, plan 6; 6: the charge rides on."
  },
  {
   "address": 40014,
   "type": "line",
   "text": "code nothing reaches, after the jmp at $9C4B: the cavalry walking forward ($8614 = 1, direction $8789), where plan 6 charges instead."
  },
  {
   "address": 40025,
   "type": "line",
   "text": "the side's cavalry stands ($8614 = 0)."
  },
  {
   "address": 40031,
   "type": "line",
   "text": "X the side's first standing rider, from 5 down ($8638 sides, $8624 counters), $FF when there is none."
  },
  {
   "address": 40050,
   "type": "line",
   "text": "the computer's cannon, when on the field, standing or moving, its ball not flying and its delay over ($8792): takes the nearest enemy up or down ($9D30); 8 lines or more away it moves toward it; nearer it stops and, with a random number below $14 and its level's chance ($9D14), aims at it: the range is the distance across / 4 - 1 (giving up past 31), the delay 10, and it fires ($A567)."
  },
  {
   "address": 40212,
   "type": "line",
   "text": "the computer's chance by the level chosen for its side ($0380): 0 goes on only with a random number below 12 (12 in 256), 1 below 25, 2 always; when it fails, the two pla end the caller's pass."
  },
  {
   "address": 40240,
   "type": "line",
   "text": "the enemy object nearest up or down to height A: of the 20 slots, the other side's with a picture, not falling and between x 5 and $90; its slot in X and $878F ($FF none), the distance in $878E, its y in A."
  },
  {
   "address": 40328,
   "type": "line",
   "text": "the enemy object nearest across to x A, as $9D30; its x in A."
  },
  {
   "address": 40416,
   "type": "line",
   "text": "the side's cannon frame ($9DE4)."
  },
  {
   "address": 40420,
   "type": "line",
   "text": "every 10 frames ($86B6): the cannon's frame flips ($868C); when it is back at 0 after the shot, the cannon stands again."
  },
  {
   "address": 40461,
   "type": "line",
   "text": "every 10 frames ($86AC): the infantry moves ($9EC5), its frame flips ($864A) and a firing line whose frame is back at 0 stands again; then its pictures ($9519)."
  },
  {
   "address": 40503,
   "type": "line",
   "text": "the side's cannon moves ($9E43) unless the side fell back."
  },
  {
   "address": 40515,
   "type": "line",
   "text": "every 10 frames ($86B4), a cannon not hit: leaving, two pixel pairs a step toward its own edge; moving, by its direction ($8692): up 4 lines (stopping above $10, $8712), right 2, down 4 (up to $AA, $8714), left 2; then whether it has left ($A1F3) or arrived ($A232)."
  },
  {
   "address": 40645,
   "type": "line",
   "text": "a line that marches or falls back, or reforms ($9F69): each standing soldier by the line's direction ($8648): up 3 lines (stopping below $0A, $8706), right 2 pixel pairs (flagging $870C from $8C), down 3 (to $AA, $8708), left 2 (flagging $870A below $10); the flags stop the next order that way, not this walk; then whether the line has gone ($A2AB) or arrived ($A262)."
  },
  {
   "address": 40809,
   "type": "line",
   "text": "one of six steps: each standing soldier moves by its offsets ($86BC/$86C8 out of formation 0, $86D4/$86E0 out of 1); after the sixth the formation flips ($8646) and the reform ends ($864E). Formation 0 is three rows of two, 12 lines apart; formation 1 two rows of three."
  },
  {
   "address": 40914,
   "type": "line",
   "text": "arrival first ($867E): the cavalry stands and has arrived; then each rider: a riderless horse (counter 8 or more) runs on, 3 pixel pairs a step, the Union's right and the Confederacy's left; a standing rider, when the cavalry walks, charges or falls back: by its direction ($8678) up 3 lines (above $10, $870E), right, down 3 (to $AA, $8710) or left, 2 pixel pairs a step walking and 3 charging, with the edges checked ($A462, $A495); then a turn's step ($A0AA)."
  },
  {
   "address": 41130,
   "type": "line",
   "text": "one of eight steps: each standing rider moves by its offsets ($86EC/$86F2 from line, $86F8/$86FE from file); after the eighth the formation flips ($8674) and the turn ends ($867A). In line the three ride one above another, 16 lines apart; in file they ride in a row at the top one's height, 8 pixel pairs apart, which fits on a bridge."
  },
  {
   "address": 41235,
   "type": "line",
   "text": "on the canyon and the river: each of the 20 objects standing, or a riderless horse, whose cell row ($8383 / 8) has a hazard column (the canyon's table at $876C, the river's at $8752; $FF where the bridge is) with its x / 4 from that column to 3 more falls in: a standing one falls (counter 1); a horse is gone (counter $0B, marked to go), its side's cavalry count one fewer and, at 0, its cavalry stands."
  },
  {
   "address": 41359,
   "type": "line",
   "text": "bullet X (0-2 the Union's, 3-5 the Confederacy's) against the enemy's objects: one with a picture and standing, with the bullet from 8 pixel pairs before its x to its x and 4 lines either side of its y, falls (counter 1); the bullet is spent, the hit sound's flag set ($87A2), a cannon hit noted ($87A4, $87A5)."
  },
  {
   "address": 41459,
   "type": "line",
   "text": "a leaving cannon ($860A) past the edge (x from $A0 to $EF): its slot emptied; with its side not fallen back and a cannon in reserve, the next one comes on ($A8E3, $94DB); otherwise the cannon is done ($8790 = $FF) and its flags cleared."
  },
  {
   "address": 41522,
   "type": "line",
   "text": "an arriving cannon ($8696): the Union's once x is from $0C to $9F, the Confederacy's once below $8B: it stops and has arrived."
  },
  {
   "address": 41570,
   "type": "line",
   "text": "an arriving line ($864C): the Union's once its first standing soldier (from 5 down) is from x $20 to $9F, the Confederacy's once below $78: it stands and has arrived; the Union's right edge flag cleared."
  },
  {
   "address": 41643,
   "type": "line",
   "text": "a line falling back once none of its soldiers is drawn ($8506, $850C): no longer falling back, standing, and counted as off the field ($864C = 1), so it takes no more orders."
  },
  {
   "address": 41696,
   "type": "line",
   "text": "the same for the riders ($8512, $8515): no longer falling back, standing, off the field ($8680 = 1); the two pla end $95A0's pass."
  },
  {
   "address": 41751,
   "type": "line",
   "text": "hardware sprite 0, black, with slot Y's picture (pointer $90 + picture) at the slot's new place (x x 2 + 24, y + 50), over the object while its bitmap is redrawn; from x $94 sprite 0 goes off instead ($A36D)."
  },
  {
   "address": 41837,
   "type": "line",
   "text": "sprite 0 off."
  },
  {
   "address": 41846,
   "type": "line",
   "text": "the line starts to reform ($864E = 1, $8650 = 0), marching pictures ($8612 = 1)."
  },
  {
   "address": 41860,
   "type": "line",
   "text": "the line fires ($8612 = 2, frame 0): of each pair of soldiers (slots 0-1, 2-3, 4-5 of the side's six) the first standing one fires a bullet ($A3CB); a pair with neither standing has its bullet spent; sound 6."
  },
  {
   "address": 41931,
   "type": "line",
   "text": "bullet Y from soldier X: x the soldier's + 8 (the Union) or - 8 ($8746), y the soldier's - 2, a life of 15 frames ($8736)."
  },
  {
   "address": 41945,
   "type": "line",
   "text": "X kept by bullet_start, the soldier: the operand of the ldx at $A3D8, written at $A3CE."
  },
  {
   "address": 41964,
   "type": "line",
   "text": "the line marches ($8612 = 1) in direction A ($8648), its frame kept at 0 or 1."
  },
  {
   "address": 41981,
   "type": "line",
   "text": "unless turning already: counts the side's riders drawn on the field ($8512 or $8515, into the operand at $A42A); none: the two pla end the caller's pass; one: returns, as one rider has no formation; two or three: the turn starts ($867A = 1, step 0) and the two pla end the caller's pass."
  },
  {
   "address": 42026,
   "type": "line",
   "text": "the side's riders drawn on the field, counted by cavalry_turn_start: the operand of the lda at $A429, written at $A404, $A414, $A41D, $A426."
  },
  {
   "address": 42046,
   "type": "line",
   "text": "the cavalry charges ($8614 = 2, frame 0), unless it is already."
  },
  {
   "address": 42064,
   "type": "line",
   "text": "the cavalry rears ($8614 = 3)."
  },
  {
   "address": 42070,
   "type": "line",
   "text": "the cavalry's direction A ($8678), frame kept at 0 or 1."
  },
  {
   "address": 42082,
   "type": "line",
   "text": "after rider X moved left (its x in A): an arriving rider from $86 to $8A means the cavalry has arrived ($867E); past the left edge (from $F5) the rider is moved $3C on, out of sight beyond the right edge, a riderless horse is lost ($A4CC), and the cavalry rides on again ($8680), its plan at 0, turning back into line if in file."
  },
  {
   "address": 42133,
   "type": "line",
   "text": "after rider X moved right: an arriving rider from $0F to $13 means the cavalry has arrived; past the right edge ($96 to $9F) the rider is moved $3C on, out of sight beyond the left edge, a riderless horse is lost, and the cavalry rides on again as at $A462. A charge that crosses the field comes back in from its own side."
  },
  {
   "address": 42188,
   "type": "line",
   "text": "rider X a riderless horse (counter 8 or more) not yet marked: marked to go ($853A = 0), the side's cavalry count one fewer, and the two pla end the edge check at once, so it does not come back."
  },
  {
   "address": 42220,
   "type": "line",
   "text": "the cannon aims ($8616 = 2): range 0 ($8260), the frame count cleared ($87A0), not fired, the gauge empty ($8EE4), the range timer at 4 ($86B2)."
  },
  {
   "address": 42249,
   "type": "line",
   "text": "Y kept by cannon_aim: the operand of the ldy at $A508, written at $A502."
  },
  {
   "address": 42256,
   "type": "line",
   "text": "the cannon moves ($8616 = 1) in direction A ($8692), its frame kept at 0 or 1."
  },
  {
   "address": 42273,
   "type": "line",
   "text": "the eight shots into sprite slots 0-7 of the list: x x 2 + 24 with its high bit, y + 50, pointer $DE + kind ($8726: $DE the bullet, $DF the cannonball), black; a spent shot ($872E negative) gets the blank image ($E0) at y $EE, out of sight."
  },
  {
   "address": 42343,
   "type": "line",
   "text": "sound 4; the side's ball (shot 6 + side) from the cannon's mouth (x + 4 or - 2, $8794) at its y, its life (range + 2) x 2 frames ($873C); one shot fewer ($8608), and after the ninth the cannon leaves the field ($860A), its direction 1 or 3 for the sideways pictures."
  },
  {
   "address": 42403,
   "type": "line",
   "text": "each frame, from the interrupt: each live shot: a bullet's hits ($A18F), then x by its speed ($873E: bullets 3 a frame, balls 2, toward the enemy); past $B4 it is spent; its life counts down, and at 0 it is spent and marked landed ($8748; only the balls' marks are read, $A5D3)."
  },
  {
   "address": 42451,
   "type": "line",
   "text": "each ball marked landed: the crater or the bridge's damage ($A6A5); then every object with a picture and standing, of either side, within 9 pixel pairs across and 8 lines up or down of where it landed, falls (counter 1); a cannon hit noted."
  },
  {
   "address": 42540,
   "type": "line",
   "text": "a cannon hit ($87A4, slot $87A5) of a person's side while it aimed: its gauge strip goes back ($8FC2)."
  },
  {
   "address": 42581,
   "type": "line",
   "text": "charging rider X against the enemy's objects: one with a picture and standing within 4 pixel pairs across and 4 lines up or down of the rider falls; a cannon hit noted."
  },
  {
   "address": 42661,
   "type": "line",
   "text": "sound 15; on the canyon and the river, a ball that lands in the hazard (its row's column and the 5 after it) leaves no mark; one on a bridge row between columns 16 and 22 hits the bridge ($8262): the first two hits draw its damage (pictures 7 and 8 on the canyon at place 11, 10 and 11 on the river at place 12), the third breaks it (9 or 12, and $A794), later ones nothing; anywhere else, and anywhere on the open field, a crater (picture 14, or 13 on the canyon) at place 10, set to the cell below where it landed ($822E, $8248)."
  },
  {
   "address": 42898,
   "type": "line",
   "text": "X kept by ball_crater: the operand of the ldx at $A791, written at $A781."
  },
  {
   "address": 42900,
   "type": "line",
   "text": "the bridge rows of both hazard tables ($8758-$875A, $8775-$8776) become the hazard (columns 17 and 16), so nothing crosses the broken bridge."
  },
  {
   "address": 42920,
   "type": "line",
   "text": "a person's side ($0382) with a territory to fall back to ($0390) presses its fall-back key ($8785: E for the Union, the up-arrow for the Confederacy): $A7C1."
  },
  {
   "address": 42945,
   "type": "line",
   "text": "unless either side has fallen back already, and while both still have infantry or cavalry: the side's infantry and cavalry fall back ($860E, $860C), $0392 marks it for the map, and both turn to their own edge ($8787: the Union left, the Confederacy right)."
  },
  {
   "address": 42998,
   "type": "line",
   "text": "unless the side fell back: when none of its six soldiers is left on the field and it still has infantry ($038A), the next six march on ($A8E3, $9423); the same for its three riders ($9479); and when its cannon was hit and gone and cannons remain ($038E), the next one ($94DB)."
  },
  {
   "address": 43113,
   "type": "line",
   "text": "whether a side is beaten ($A8B5) or has fallen back ($A891); once the battle is over ($87A6), every 100 frames ($86B8) the music fades ($F134 = 9, unless fading already) and after the third ($86B9, about four seconds) the battle ends ($80F9)."
  },
  {
   "address": 43153,
   "type": "line",
   "text": "a side that fell back ($0392), once its infantry and cavalry have left: its cannons are lost ($038E, $8610 = 0), it is out ($0394 = $FF) and the battle is over ($87A6)."
  },
  {
   "address": 43189,
   "type": "line",
   "text": "a side with no infantry or cavalry left and no cannon to fight with (none, or the last out of shots with none in reserve): it is out ($0394 = $FF, $0392 cleared, cannons 0) and the battle is over."
  },
  {
   "address": 43235,
   "type": "line",
   "text": "the eight lanes free again ($869A), before a new unit picks one."
  },
  {
   "address": 43246,
   "type": "line",
   "text": "sound A on the map's player ($F12B), only while the battle goes on ($86B9 still 3), with $A909 counted up so the interrupt does not play sound meanwhile; X and Y kept in the two ld operands."
  },
  {
   "address": 43266,
   "type": "line",
   "text": "Y kept by bat_sound: the operand of the ldy at $A901, written at $A8F1."
  },
  {
   "address": 43268,
   "type": "line",
   "text": "X kept by bat_sound: the operand of the ldx at $A903, written at $A8F4."
  },
  {
   "address": 43273,
   "type": "line",
   "text": "counted up while $A8EE starts a sound, so the interrupt does not play it meanwhile."
  },
  {
   "address": 43274,
   "type": "line",
   "text": "the open field's bitmap, packed (field 0): grass with a few patches of earth, short because it is mostly one colour; two bytes after the stream's end ($AAC0) are not read."
  },
  {
   "address": 43715,
   "type": "line",
   "text": "the open field's screen bytes, packed. The unpacker writes one byte more than it is asked for, so its last step reads on into $AB6E-$AB6F, the river's first bytes."
  },
  {
   "address": 43886,
   "type": "line",
   "text": "the river field's bitmap, packed (field 2): green grass, a winding blue river from top to bottom, a road across it on a stone bridge, and paths of earth; two bytes after the stream's end ($B9BA) are not read."
  },
  {
   "address": 43948,
   "type": "line",
   "text": "river_bitmap_pk, continued: bytes $ABAC-$AE2B of the block at $AB6E."
  },
  {
   "address": 44588,
   "type": "line",
   "text": "river_bitmap_pk, continued: bytes $AE2C-$AE85 of the block at $AB6E."
  },
  {
   "address": 44678,
   "type": "line",
   "text": "river_bitmap_pk, continued: bytes $AE86-$AF6D of the block at $AB6E."
  },
  {
   "address": 44910,
   "type": "line",
   "text": "river_bitmap_pk, continued: bytes $AF6E-$B36D of the block at $AB6E."
  },
  {
   "address": 45934,
   "type": "line",
   "text": "river_bitmap_pk, continued: bytes $B36E-$B76D of the block at $AB6E."
  },
  {
   "address": 46958,
   "type": "line",
   "text": "river_bitmap_pk, continued: bytes $B76E-$B9BC of the block at $AB6E."
  },
  {
   "address": 47549,
   "type": "line",
   "text": "the river field's screen bytes, packed; six bytes after the stream's end ($BBC0) are not read."
  },
  {
   "address": 48032,
   "type": "line",
   "text": "river_screen_pk, continued: bytes $BBA0-$BBC6 of the block at $B9BD."
  },
  {
   "address": 48071,
   "type": "line",
   "text": "the river field's colours, packed; two bytes after its end ($BD86) are not read."
  },
  {
   "address": 48122,
   "type": "line",
   "text": "river_colour_pk, continued: bytes $BBFA-$BC53 of the block at $BBC7."
  },
  {
   "address": 48212,
   "type": "line",
   "text": "river_colour_pk, continued: bytes $BC54-$BD88 of the block at $BBC7."
  },
  {
   "address": 48521,
   "type": "line",
   "text": "picture 0, 3 cells by 2: a house with a red roof (48 bytes of bitmap, 6 of screen, 6 of colour), scenery on the open field and the river."
  },
  {
   "address": 48581,
   "type": "line",
   "text": "pictures 7 to 9, each 9 cells by 5 (360 bytes of bitmap, 45 of screen, 45 of colour, from $BDC5, $BF87 and $C149): the canyon's wooden bridge after one hit, after two, and broken."
  },
  {
   "address": 48912,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $BF10-$BF10 of the block at $BDC5."
  },
  {
   "address": 48913,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $BF11-$BF13 of the block at $BDC5."
  },
  {
   "address": 48916,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $BF14-$BF14 of the block at $BDC5."
  },
  {
   "address": 48917,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $BF15-$BF17 of the block at $BDC5."
  },
  {
   "address": 48920,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $BF18-$BF18 of the block at $BDC5."
  },
  {
   "address": 48921,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $BF19-$C001 of the block at $BDC5."
  },
  {
   "address": 49152,
   "type": "line",
   "text": "pic_canyon_bridge, continued: from $C000, the memory-map edge, inside picture 8 (the bridge after two hits), whose bitmap runs $BF87-$C0EE."
  },
  {
   "address": 49154,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C002-$C01C of the block at $BDC5."
  },
  {
   "address": 49181,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C01D-$C037 of the block at $BDC5."
  },
  {
   "address": 49208,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C038-$C052 of the block at $BDC5."
  },
  {
   "address": 49235,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C053-$C053 of the block at $BDC5."
  },
  {
   "address": 49236,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C054-$C054 of the block at $BDC5."
  },
  {
   "address": 49237,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C055-$C055 of the block at $BDC5."
  },
  {
   "address": 49238,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C056-$C0BE of the block at $BDC5."
  },
  {
   "address": 49343,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C0BF-$C0DF of the block at $BDC5."
  },
  {
   "address": 49376,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C0E0-$C101 of the block at $BDC5."
  },
  {
   "address": 49410,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C102-$C15A of the block at $BDC5."
  },
  {
   "address": 49499,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C15B-$C169 of the block at $BDC5."
  },
  {
   "address": 49514,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C16A-$C178 of the block at $BDC5."
  },
  {
   "address": 49529,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C179-$C187 of the block at $BDC5."
  },
  {
   "address": 49544,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C188-$C188 of the block at $BDC5."
  },
  {
   "address": 49545,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C189-$C1C4 of the block at $BDC5."
  },
  {
   "address": 49605,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C1C5-$C218 of the block at $BDC5."
  },
  {
   "address": 49689,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C219-$C23A of the block at $BDC5."
  },
  {
   "address": 49723,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C23B-$C255 of the block at $BDC5."
  },
  {
   "address": 49750,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C256-$C270 of the block at $BDC5."
  },
  {
   "address": 49777,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C271-$C28B of the block at $BDC5."
  },
  {
   "address": 49804,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C28C-$C2A6 of the block at $BDC5."
  },
  {
   "address": 49831,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C2A7-$C2A7 of the block at $BDC5."
  },
  {
   "address": 49832,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C2A8-$C2DA of the block at $BDC5."
  },
  {
   "address": 49883,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C2DB-$C2DB of the block at $BDC5."
  },
  {
   "address": 49884,
   "type": "line",
   "text": "pic_canyon_bridge, continued: bytes $C2DC-$C30A of the block at $BDC5."
  },
  {
   "address": 49931,
   "type": "line",
   "text": "pictures 10 to 12, each 10 cells by 5 (from $C30B, $C4FF and $C6F3): the river's stone bridge after one hit, after two, and broken."
  },
  {
   "address": 49935,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C30F-$C30F of the block at $C30B."
  },
  {
   "address": 49936,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C310-$C336 of the block at $C30B."
  },
  {
   "address": 49975,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C337-$C337 of the block at $C30B."
  },
  {
   "address": 49976,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C338-$C35E of the block at $C30B."
  },
  {
   "address": 50015,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C35F-$C35F of the block at $C30B."
  },
  {
   "address": 50016,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C360-$C386 of the block at $C30B."
  },
  {
   "address": 50055,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C387-$C387 of the block at $C30B."
  },
  {
   "address": 50056,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C388-$C388 of the block at $C30B."
  },
  {
   "address": 50057,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C389-$C389 of the block at $C30B."
  },
  {
   "address": 50058,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C38A-$C39F of the block at $C30B."
  },
  {
   "address": 50080,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3A0-$C3B5 of the block at $C30B."
  },
  {
   "address": 50102,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3B6-$C3B6 of the block at $C30B."
  },
  {
   "address": 50103,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3B7-$C3C5 of the block at $C30B."
  },
  {
   "address": 50118,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3C6-$C3C6 of the block at $C30B."
  },
  {
   "address": 50119,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3C7-$C3C7 of the block at $C30B."
  },
  {
   "address": 50120,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3C8-$C3C8 of the block at $C30B."
  },
  {
   "address": 50121,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3C9-$C3D7 of the block at $C30B."
  },
  {
   "address": 50136,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3D8-$C3D8 of the block at $C30B."
  },
  {
   "address": 50137,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3D9-$C3D9 of the block at $C30B."
  },
  {
   "address": 50138,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C3DA-$C70A of the block at $C30B."
  },
  {
   "address": 50955,
   "type": "line",
   "text": "pic_river_bridge, continued: bytes $C70B-$C8E6 of the block at $C30B."
  },
  {
   "address": 51431,
   "type": "line",
   "text": "pictures 5 and 6, 2 cells by 2: a white flash on brown and on green; nothing draws them."
  },
  {
   "address": 51511,
   "type": "line",
   "text": "pictures 1 and 2, 3 cells by 4: a leafy tree and a fir on brown ground, the canyon's scenery, which $913F never places."
  },
  {
   "address": 51751,
   "type": "line",
   "text": "pictures 3 and 4, 3 cells by 4: the same trees on grass, scenery on the open field and the river."
  },
  {
   "address": 51991,
   "type": "line",
   "text": "pictures 13 and 14, 2 cells by 2: a crater on brown (the canyon) and on grass, where a ball lands."
  },
  {
   "address": 52071,
   "type": "line",
   "text": "pictures 15 and 16, 3 cells by 2: broken brown ground; nothing draws them."
  },
  {
   "address": 52191,
   "type": "line",
   "text": "the unit icons' bitmaps, 2 cells by 2, with the Union's screen and colour bytes: the horse ($CBDF, pictures 22 and 25), the cannon ($CC07, 23 and 26), the soldier ($CC2F, 21 and 24); the Confederacy's screen and colour bytes are at $9199."
  },
  {
   "address": 52471,
   "type": "line",
   "text": "15 bytes after the gauges' stores that nothing reads, left in memory when the file was saved."
  },
  {
   "address": 52486,
   "type": "line",
   "text": "250 bytes before devlink that nothing reads, the power-on pattern saved with the file."
  },
  {
   "address": 52736,
   "type": "line",
   "text": "code nothing in the battle calls, left in memory when the file was saved: it keeps the registers ($CFD6-$CFDD) and, with the border and background grey, takes commands one byte at a time over the user port ($DD01, with handshakes on bit 2 and bit 3 of $DD00): $B4 bytes into memory, $B6 bytes out, $B5 a jsr to an address it is sent and $BA any three-byte instruction, each run with the kept registers, $B7 the $01 to use, $B8 and $B9 the registers out and in. It reads as a monitor the developers drove from another computer."
  },
  {
   "address": 52867,
   "type": "line",
   "text": "the low byte of the count devlink writes: the operand of the lda at $CE82, written at $CE7F, $CE8D, $CF4A."
  },
  {
   "address": 52871,
   "type": "line",
   "text": "the high byte of the count devlink writes: the operand of the lda at $CE86, written at $CE79, $CE8A, $CF4F."
  },
  {
   "address": 52890,
   "type": "line",
   "text": "the high byte of the address devlink writes to: the high byte of the address of the sta at $CE98, written at $CE6F, $CEA2, $CF45."
  },
  {
   "address": 52954,
   "type": "line",
   "text": "the low byte of the count devlink sends: the operand of the lda at $CED9, written at $CEBF, $CEE4, $CF32."
  },
  {
   "address": 52958,
   "type": "line",
   "text": "the high byte of the count devlink sends: the operand of the lda at $CEDD, written at $CEB9, $CEE1, $CF37."
  },
  {
   "address": 52974,
   "type": "line",
   "text": "the high byte of the address devlink sends from: the high byte of the address of the lda at $CEEC, written at $CEAF, $CEF9, $CF2D."
  },
  {
   "address": 53122,
   "type": "line",
   "text": "the opcode of the instruction devlink runs, which the code itself rewrites: $20, a jsr, for command $B5 ($CE62), or the byte it is sent for $BA ($CF5C)."
  },
  {
   "address": 53123,
   "type": "line",
   "text": "the low byte of the address in the instruction devlink runs: the low byte of the address of the jsr at $CF82, written at $CE5D, $CF62."
  },
  {
   "address": 53124,
   "type": "line",
   "text": "the high byte of the address in the instruction devlink runs: the high byte of the address of the jsr at $CF82, written at $CE57, $CF68."
  },
  {
   "address": 53128,
   "type": "line",
   "text": "the next byte from the user port ($DD01), after the other side's handshake on $DD00 bit 2, with the border flashing."
  },
  {
   "address": 53132,
   "type": "line",
   "text": "the handshake bits devlink drives on $DD00: the operand of the eor at $CF8B, written at $CE05, $CED6, $CF12, $CFA7, $CFC5."
  },
  {
   "address": 53167,
   "type": "line",
   "text": "A out on the user port, with the handshake."
  },
  {
   "address": 53206,
   "type": "line",
   "text": "the registers devlink keeps: P, A, X, Y, the stack pointer, the return address, $01."
  },
  {
   "address": 53207,
   "type": "line",
   "text": "devlink_regs, continued: A."
  },
  {
   "address": 53208,
   "type": "line",
   "text": "devlink_regs, continued: X."
  },
  {
   "address": 53209,
   "type": "line",
   "text": "devlink_regs, continued: Y."
  },
  {
   "address": 53210,
   "type": "line",
   "text": "devlink_regs, continued: the stack pointer."
  },
  {
   "address": 53211,
   "type": "line",
   "text": "devlink_regs, continued: the high byte of the address on the stack."
  },
  {
   "address": 53212,
   "type": "line",
   "text": "devlink_regs, continued: its low byte."
  },
  {
   "address": 53213,
   "type": "line",
   "text": "devlink_regs, continued: the $01 to use while reading and writing memory ($B7 sets it)."
  },
  {
   "address": 53214,
   "type": "line",
   "text": "the 33 bytes after devlink's registers, the power-on pattern; nothing reads them."
  }
 ]
}