{
 "schema": 1,
 "platform": "c64",
 "game": "north-and-south",
 "part": "train",
 "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"
   ],
   [
    8192,
    8719,
    "runtime: the scroll buffer, 44 characters by 12 rows, which $8742 draws the tiles into and $8882 copies to the screen"
   ],
   [
    18432,
    19455,
    "runtime: the train's screen and its sprite pointers, written by $8694, $8882, the band and track drawing, $9646, $966D and the interrupts"
   ],
   [
    0,
    3071,
    "The loader and the script"
   ],
   [
    3072,
    8191,
    "The strategic map"
   ],
   [
    40960,
    50431,
    "The strategic map"
   ],
   [
    50432,
    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,
    8191,
    "The strategic map"
   ],
   [
    40960,
    50431,
    "The strategic map"
   ],
   [
    50432,
    57343,
    "The loader and the script"
   ],
   [
    57344,
    65529,
    "The strategic map"
   ],
   [
    65530,
    65535,
    "The loader and the script"
   ]
  ]
 },
 "blocks": [
  {
   "start": 8192,
   "end": 8719,
   "type": "Undefined"
  },
  {
   "start": 8720,
   "end": 18431,
   "type": "Byte"
  },
  {
   "start": 18432,
   "end": 19455,
   "type": "Undefined"
  },
  {
   "start": 19456,
   "end": 32767,
   "type": "Byte"
  },
  {
   "start": 32768,
   "end": 32972,
   "type": "Code"
  },
  {
   "start": 32973,
   "end": 33079,
   "type": "Byte"
  },
  {
   "start": 33080,
   "end": 33455,
   "type": "Code"
  },
  {
   "start": 33456,
   "end": 33548,
   "type": "Byte"
  },
  {
   "start": 33549,
   "end": 34175,
   "type": "Code"
  },
  {
   "start": 34176,
   "end": 34351,
   "type": "Byte"
  },
  {
   "start": 34352,
   "end": 34394,
   "type": "Code"
  },
  {
   "start": 34395,
   "end": 34410,
   "type": "Byte"
  },
  {
   "start": 34411,
   "end": 35043,
   "type": "Code"
  },
  {
   "start": 35044,
   "end": 35105,
   "type": "Byte"
  },
  {
   "start": 35106,
   "end": 35994,
   "type": "Code"
  },
  {
   "start": 35995,
   "end": 36000,
   "type": "Byte"
  },
  {
   "start": 36001,
   "end": 36200,
   "type": "Code"
  },
  {
   "start": 36201,
   "end": 36258,
   "type": "Byte"
  },
  {
   "start": 36259,
   "end": 36429,
   "type": "Code"
  },
  {
   "start": 36430,
   "end": 36450,
   "type": "Byte"
  },
  {
   "start": 36451,
   "end": 37275,
   "type": "Code"
  },
  {
   "start": 37276,
   "end": 37295,
   "type": "Byte"
  },
  {
   "start": 37296,
   "end": 39067,
   "type": "Code"
  },
  {
   "start": 39068,
   "end": 39087,
   "type": "Byte"
  },
  {
   "start": 39088,
   "end": 39344,
   "type": "Code"
  },
  {
   "start": 39345,
   "end": 39345,
   "type": "Byte"
  },
  {
   "start": 39346,
   "end": 39719,
   "type": "Code"
  },
  {
   "start": 39720,
   "end": 39739,
   "type": "Byte"
  },
  {
   "start": 39740,
   "end": 39976,
   "type": "Code"
  },
  {
   "start": 39977,
   "end": 40959,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 8192,
   "name": "f_2000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8236,
   "name": "f_202C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8280,
   "name": "f_2058",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8324,
   "name": "f_2084",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8368,
   "name": "f_20B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8412,
   "name": "f_20DC",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8456,
   "name": "f_2108",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8500,
   "name": "f_2134",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8544,
   "name": "f_2160",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8588,
   "name": "f_218C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8632,
   "name": "f_21B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8676,
   "name": "f_21E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 8720,
   "name": "train_tiles",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 8746,
   "name": "train_tiles_222a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 8826,
   "name": "train_tiles_227a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9049,
   "name": "train_tiles_2359",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9180,
   "name": "train_tiles_23dc",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9191,
   "name": "train_tiles_23e7",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9295,
   "name": "train_tiles_244f",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9343,
   "name": "train_tiles_247f",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 9378,
   "name": "train_tiles_24a2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9548,
   "name": "train_tiles_254c",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9681,
   "name": "train_tiles_25d1",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9744,
   "name": "train_map",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 9848,
   "name": "train_map_2678",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9966,
   "name": "train_map_26ee",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 9990,
   "name": "train_map_2706",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10112,
   "name": "train_map_2780",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10451,
   "name": "train_map_28d3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 10768,
   "name": "train_map_2a10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 10982,
   "name": "train_map_2ae6",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11014,
   "name": "train_map_2b06",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 11184,
   "name": "wheel_frames",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11472,
   "name": "track_strips",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11512,
   "name": "track_strips_2cf8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11552,
   "name": "near_strip",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11672,
   "name": "far_strip",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11792,
   "name": "train_row_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 11813,
   "name": "tlist_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11815,
   "name": "tframe_busy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 11816,
   "name": "train_leftover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 12840,
   "name": "train_leftover_3228",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 13082,
   "name": "train_leftover_331a",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13324,
   "name": "train_leftover_340c",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13467,
   "name": "train_leftover_349b",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13763,
   "name": "train_leftover_35c3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 13864,
   "name": "train_leftover_3628",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 14197,
   "name": "train_leftover_3775",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14385,
   "name": "train_leftover_3831",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14429,
   "name": "train_leftover_385d",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14771,
   "name": "train_leftover_39b3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14862,
   "name": "train_leftover_3a0e",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 14888,
   "name": "train_leftover_3a28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 15117,
   "name": "train_leftover_3b0d",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15255,
   "name": "train_leftover_3b97",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 15912,
   "name": "train_leftover_3e28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16291,
   "name": "train_leftover_3fa3",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16311,
   "name": "train_leftover_3fb7",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "train_chars",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17408,
   "name": "train_chars_4400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 17488,
   "name": "train_chars_4450",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 18432,
   "name": "f_4800",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18433,
   "name": "f_4801",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18472,
   "name": "f_4828",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18473,
   "name": "f_4829",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18592,
   "name": "f_48A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18672,
   "name": "f_48F0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18688,
   "name": "f_4900",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18712,
   "name": "f_4918",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18752,
   "name": "f_4940",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18792,
   "name": "f_4968",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18832,
   "name": "f_4990",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18872,
   "name": "f_49B8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18912,
   "name": "f_49E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18944,
   "name": "f_4A00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18952,
   "name": "f_4A08",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18992,
   "name": "f_4A30",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19032,
   "name": "f_4A58",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19072,
   "name": "f_4A80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19112,
   "name": "f_4AA8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19152,
   "name": "f_4AD0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19192,
   "name": "f_4AF8",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19200,
   "name": "f_4B00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19232,
   "name": "f_4B20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19448,
   "name": "a_4BF8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19449,
   "name": "a_4BF9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19456,
   "name": "train_unused_gfx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 20320,
   "name": "train_unused_gfx_4f60",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 20480,
   "name": "tfighter_union",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 21504,
   "name": "tfighter_union_5400",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 22528,
   "name": "tfighter_union_5800",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 23552,
   "name": "tfighter_union_5c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 24320,
   "name": "tfighter_confed",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25068,
   "name": "tfighter_confed_61ec",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25344,
   "name": "tfighter_confed_6300",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 25592,
   "name": "tfighter_confed_63f8",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25593,
   "name": "tfighter_confed_63f9",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 26368,
   "name": "tfighter_confed_6700",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27392,
   "name": "tfighter_confed_6b00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28160,
   "name": "tunused_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28992,
   "name": "driver_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29120,
   "name": "tdog_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29952,
   "name": "tbar_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30400,
   "name": "tknife_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30528,
   "name": "rod_images",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30656,
   "name": "tblank_sprite",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 30720,
   "name": "train_after",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31744,
   "name": "train_after_7c00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32768,
   "name": "train_main",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32828,
   "name": "train_loop",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 32848,
   "name": "b_8050",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32855,
   "name": "b_8057",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32862,
   "name": "b_805E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32879,
   "name": "b_806F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32932,
   "name": "train_won",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 32942,
   "name": "j_80AE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32973,
   "name": "wheel_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32974,
   "name": "rods_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32975,
   "name": "driver_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32976,
   "name": "tclock_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32977,
   "name": "tfighter_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32978,
   "name": "tguard_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32979,
   "name": "tknife_timer",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32983,
   "name": "tguard_start_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32984,
   "name": "tcpu_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32985,
   "name": "tend_timer",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32986,
   "name": "wheel_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32987,
   "name": "wheel_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32990,
   "name": "wheel_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32993,
   "name": "track_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32994,
   "name": "far_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32995,
   "name": "near_offset",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32996,
   "name": "far_fine",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32997,
   "name": "near_fine",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32998,
   "name": "rods_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 32999,
   "name": "loco_shown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33000,
   "name": "rods_dx",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33004,
   "name": "rods_dy",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33008,
   "name": "driver_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33009,
   "name": "driver_shown",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33010,
   "name": "tfloor_chars",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33015,
   "name": "left_behind_flag",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33016,
   "name": "rear_columns",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33017,
   "name": "uniform_colours",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33019,
   "name": "scroll_speed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33020,
   "name": "loco_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33021,
   "name": "loco_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33022,
   "name": "boot_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33023,
   "name": "clock_frame",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33024,
   "name": "boot_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33025,
   "name": "boot_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33026,
   "name": "clock_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33027,
   "name": "clock_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33028,
   "name": "time_over",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33029,
   "name": "tiles_drawn",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33030,
   "name": "to_ladder",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33031,
   "name": "ladder_char",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33033,
   "name": "ladder_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33035,
   "name": "at_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33036,
   "name": "start_lo",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33037,
   "name": "start_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33038,
   "name": "progress_step",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33039,
   "name": "progress_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33040,
   "name": "a_8110",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33041,
   "name": "train_done",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33042,
   "name": "knives_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33043,
   "name": "guard_knives",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33044,
   "name": "knife_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33045,
   "name": "a_8115",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33046,
   "name": "knife_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33048,
   "name": "knife_x_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33050,
   "name": "knife_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33052,
   "name": "knife_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33054,
   "name": "attacker_on",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33055,
   "name": "guard_on",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33056,
   "name": "fort_dog_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33062,
   "name": "scroll_steps",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33063,
   "name": "fort_barrel_spare",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33069,
   "name": "scroll_moved",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33070,
   "name": "guard_checks_off",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33071,
   "name": "attacker_bounced",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33072,
   "name": "guard_bounced",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33073,
   "name": "jump_floor",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33074,
   "name": "guards_left",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33075,
   "name": "fort_dog_chance",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33078,
   "name": "end_count",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33079,
   "name": "train_paused",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33080,
   "name": "train_machine",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33169,
   "name": "b_8191",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33208,
   "name": "train_rti",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33209,
   "name": "train_keys_one",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33270,
   "name": "b_81F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33278,
   "name": "b_81FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33286,
   "name": "b_8206",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33294,
   "name": "b_820E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33299,
   "name": "b_8213",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33301,
   "name": "r_8215",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 33302,
   "name": "attacker_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33307,
   "name": "b_821B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33331,
   "name": "defender_stick",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33336,
   "name": "b_8238",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33368,
   "name": "train_stick_decode",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 33376,
   "name": "b_8260",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33380,
   "name": "b_8264",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33384,
   "name": "b_8268",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33388,
   "name": "b_826C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33400,
   "name": "train_key_scan",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 33412,
   "name": "b_8284",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33439,
   "name": "b_829F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33447,
   "name": "b_82A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33453,
   "name": "b_82AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33456,
   "name": "fstick_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33457,
   "name": "fstick_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33458,
   "name": "fstick_fire",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33460,
   "name": "fkey_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33468,
   "name": "fkey_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33476,
   "name": "fkey_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 33484,
   "name": "fkey_codes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33548,
   "name": "train_key",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 33549,
   "name": "train_irq_bottom",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33601,
   "name": "b_8341",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33607,
   "name": "train_irq_bar",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33706,
   "name": "train_irq_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33772,
   "name": "b_83EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33783,
   "name": "b_83F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33785,
   "name": "b_83F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33806,
   "name": "b_840E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33837,
   "name": "a_842D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33861,
   "name": "train_irq_sky",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33909,
   "name": "train_irq_far",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33947,
   "name": "train_irq_train",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33990,
   "name": "b_84C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 33998,
   "name": "b_84CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34008,
   "name": "j_84D8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34014,
   "name": "train_mux",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34029,
   "name": "a_84ED",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34030,
   "name": "b_84EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34055,
   "name": "b_8507",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34086,
   "name": "a_8526",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34117,
   "name": "b_8545",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34123,
   "name": "j_854B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 34124,
   "name": "a_854C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34126,
   "name": "a_854E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34128,
   "name": "a_8550",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34130,
   "name": "b_8552",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34153,
   "name": "train_mux_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34176,
   "name": "fmux_and",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34184,
   "name": "fmux_or",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34192,
   "name": "flive_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34208,
   "name": "flive_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34224,
   "name": "flive_xhi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34240,
   "name": "flive_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34256,
   "name": "flive_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34272,
   "name": "flist_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34273,
   "name": "f_85E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34288,
   "name": "flist_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34289,
   "name": "f_85F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34304,
   "name": "flist_xhi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34305,
   "name": "f_8601",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34320,
   "name": "flist_ptr",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34321,
   "name": "f_8611",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34336,
   "name": "flist_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34337,
   "name": "f_8621",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34352,
   "name": "train_sort",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34354,
   "name": "b_8632",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34389,
   "name": "b_8655",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34394,
   "name": "f_865A",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 34395,
   "name": "fsort_order",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 34411,
   "name": "train_sprite_copy",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34418,
   "name": "b_8672",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34451,
   "name": "r_8693",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34452,
   "name": "train_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34455,
   "name": "b_8697",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34483,
   "name": "train_right_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34498,
   "name": "r_86C2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34499,
   "name": "b_86C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34542,
   "name": "b_86EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34546,
   "name": "b_86F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34626,
   "name": "train_tile_column",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34659,
   "name": "b_8763",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34662,
   "name": "a_8766",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34663,
   "name": "a_8767",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34684,
   "name": "b_877C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34688,
   "name": "a_8780",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34689,
   "name": "a_8781",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34691,
   "name": "a_8783",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34692,
   "name": "a_8784",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34710,
   "name": "b_8796",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34732,
   "name": "train_left_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34749,
   "name": "r_87BD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 34750,
   "name": "b_87BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34799,
   "name": "b_87EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34886,
   "name": "b_8846",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34892,
   "name": "train_rear",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 34904,
   "name": "b_8858",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34908,
   "name": "b_885C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34909,
   "name": "a_885D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34910,
   "name": "a_885E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34941,
   "name": "b_887D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 34946,
   "name": "train_view_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 34954,
   "name": "b_888A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35031,
   "name": "train_all_columns",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35033,
   "name": "b_88D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35044,
   "name": "fine_scroll",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35045,
   "name": "view_col",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35046,
   "name": "tile_cells",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35050,
   "name": "row_offsets",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 35051,
   "name": "f_88EB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 35106,
   "name": "train_colours",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35118,
   "name": "b_892E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35123,
   "name": "b_8933",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35124,
   "name": "a_8934",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35125,
   "name": "a_8935",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35157,
   "name": "train_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35184,
   "name": "b_8970",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35194,
   "name": "b_897A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35210,
   "name": "j_898A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35213,
   "name": "r_898D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35214,
   "name": "train_timers",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35216,
   "name": "b_8990",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35227,
   "name": "b_899B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35231,
   "name": "train_wheels",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35253,
   "name": "b_89B5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35271,
   "name": "b_89C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35272,
   "name": "a_89C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35273,
   "name": "a_89C9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35280,
   "name": "r_89D0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35281,
   "name": "train_rods_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35318,
   "name": "r_89F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35319,
   "name": "b_89F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35325,
   "name": "train_driver_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35347,
   "name": "r_8A13",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35348,
   "name": "train_rods",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35415,
   "name": "r_8A57",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35416,
   "name": "b_8A58",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35418,
   "name": "b_8A5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35501,
   "name": "r_8AAD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35502,
   "name": "train_driver",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35549,
   "name": "r_8ADD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35550,
   "name": "train_clock",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35611,
   "name": "r_8B1B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35612,
   "name": "b_8B1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35634,
   "name": "b_8B32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35638,
   "name": "boot_run",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35660,
   "name": "b_8B4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35663,
   "name": "r_8B4F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35664,
   "name": "train_setup",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35717,
   "name": "b_8B85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35742,
   "name": "b_8B9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35767,
   "name": "train_progress",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35796,
   "name": "j_8BD4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 35820,
   "name": "b_8BEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35827,
   "name": "b_8BF3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35856,
   "name": "r_8C10",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 35857,
   "name": "b_8C11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35868,
   "name": "train_irq_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35886,
   "name": "b_8C2E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35930,
   "name": "sprite_list_clear",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35937,
   "name": "b_8C61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 35951,
   "name": "train_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 35995,
   "name": "frnd_sum",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35996,
   "name": "frnd_seed",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 35997,
   "name": "a_8C9D",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35998,
   "name": "a_8C9E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35999,
   "name": "a_8C9F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36000,
   "name": "a_8CA0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36001,
   "name": "track_step",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36013,
   "name": "b_8CAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36016,
   "name": "track_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36021,
   "name": "b_8CB5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36040,
   "name": "b_8CC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36046,
   "name": "bands_scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36060,
   "name": "b_8CDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36077,
   "name": "b_8CED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36083,
   "name": "j_8CF3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36095,
   "name": "b_8CFF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36112,
   "name": "b_8D10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36119,
   "name": "far_band_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36124,
   "name": "b_8D1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36137,
   "name": "b_8D29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36143,
   "name": "near_band_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36148,
   "name": "b_8D34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36161,
   "name": "b_8D41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36167,
   "name": "driver_stop",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36173,
   "name": "left_behind",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36200,
   "name": "r_8D68",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36201,
   "name": "fighter_frame",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36202,
   "name": "a_8D6A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36203,
   "name": "fighter_state",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36204,
   "name": "a_8D6C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36205,
   "name": "fighter_top",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36206,
   "name": "a_8D6E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36207,
   "name": "fighter_bottom",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36208,
   "name": "a_8D70",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36209,
   "name": "fighter_y",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36210,
   "name": "a_8D72",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36211,
   "name": "fighter_colour",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36212,
   "name": "a_8D74",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36213,
   "name": "fighter_x",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36214,
   "name": "a_8D76",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36215,
   "name": "fighter_x_hi",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36216,
   "name": "a_8D78",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36217,
   "name": "fighter_dy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36218,
   "name": "a_8D7A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36219,
   "name": "fighter_dx2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36220,
   "name": "a_8D7C",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36221,
   "name": "fighter_dy2",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36222,
   "name": "a_8D7E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36223,
   "name": "fighter_moving",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36224,
   "name": "a_8D80",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36225,
   "name": "fighter_facing",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36226,
   "name": "a_8D82",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36227,
   "name": "fighter_floor",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36228,
   "name": "a_8D84",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36229,
   "name": "climb_dir",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36231,
   "name": "jump_arc",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36256,
   "name": "arc_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36257,
   "name": "a_8DA1",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36258,
   "name": "on_ground",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36259,
   "name": "fighters_to_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36397,
   "name": "r_8E2D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36398,
   "name": "fighter_pictures",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36405,
   "name": "b_8E35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36424,
   "name": "a_8E48",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36425,
   "name": "a_8E49",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36426,
   "name": "b_8E4A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36430,
   "name": "pose_fighter",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 36431,
   "name": "pose_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36441,
   "name": "pose_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 36451,
   "name": "pose_stand",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36461,
   "name": "b_8E6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36487,
   "name": "pose_uniform",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 36498,
   "name": "b_8E92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36503,
   "name": "b_8E97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36506,
   "name": "r_8E9A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36507,
   "name": "pose_walk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36531,
   "name": "b_8EB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36534,
   "name": "b_8EB6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36545,
   "name": "b_8EC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36571,
   "name": "pose_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36606,
   "name": "b_8EFE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36620,
   "name": "b_8F0C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36630,
   "name": "b_8F16",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36669,
   "name": "r_8F3D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 36670,
   "name": "b_8F3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36686,
   "name": "b_8F4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36749,
   "name": "b_8F8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36769,
   "name": "pose_strike",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36802,
   "name": "b_8FC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36805,
   "name": "b_8FC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36817,
   "name": "b_8FD1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36843,
   "name": "pose_climb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36870,
   "name": "b_9006",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36879,
   "name": "j_900F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 36892,
   "name": "b_901C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36922,
   "name": "pose_drop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36962,
   "name": "b_9062",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 36981,
   "name": "j_9075",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37000,
   "name": "r_9088",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37001,
   "name": "pose_beaten",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37034,
   "name": "b_90AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37046,
   "name": "j_90B6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37078,
   "name": "b_90D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37081,
   "name": "r_90D9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37082,
   "name": "pose_down",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37112,
   "name": "b_90F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37121,
   "name": "j_9101",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37132,
   "name": "pose_knocked",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37172,
   "name": "b_9134",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37191,
   "name": "j_9147",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37228,
   "name": "b_916C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37246,
   "name": "r_917E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37247,
   "name": "attacker_orders",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37258,
   "name": "b_918A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37274,
   "name": "a_919A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37275,
   "name": "a_919B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37276,
   "name": "attacker_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37286,
   "name": "attacker_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 37296,
   "name": "attacker_stand",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37334,
   "name": "b_91D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37351,
   "name": "j_91E7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37365,
   "name": "b_91F5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37381,
   "name": "r_9205",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37382,
   "name": "attacker_up_down",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 37411,
   "name": "b_9223",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37414,
   "name": "b_9226",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37419,
   "name": "r_922B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37420,
   "name": "j_922C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37443,
   "name": "attacker_duck",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37474,
   "name": "attacker_walk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37496,
   "name": "b_9278",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37509,
   "name": "b_9285",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37518,
   "name": "j_928E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 37521,
   "name": "attacker_climb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37549,
   "name": "r_92AD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37550,
   "name": "b_92AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37570,
   "name": "b_92C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37578,
   "name": "b_92CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37584,
   "name": "attacker_drop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37623,
   "name": "attacker_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37667,
   "name": "r_9323",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37668,
   "name": "attacker_get_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37686,
   "name": "r_9336",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37687,
   "name": "train_nothing",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37688,
   "name": "train_end_count",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37723,
   "name": "r_935B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37724,
   "name": "b_935C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37737,
   "name": "attacker_strike",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37809,
   "name": "r_93B1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 37810,
   "name": "attacker_floor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37828,
   "name": "a_93C4",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37848,
   "name": "guard_floor",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37866,
   "name": "a_93EA",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37910,
   "name": "b_9416",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37914,
   "name": "b_941A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37916,
   "name": "b_941C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37939,
   "name": "ladder_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 37941,
   "name": "b_9435",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37951,
   "name": "b_943F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 37980,
   "name": "climb_up",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38006,
   "name": "r_9476",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38007,
   "name": "climb_down",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38025,
   "name": "r_9489",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38026,
   "name": "attacker_ground",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38040,
   "name": "j_9498",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38046,
   "name": "a_949E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38053,
   "name": "b_94A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38066,
   "name": "r_94B2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38067,
   "name": "b_94B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38073,
   "name": "attacker_lands",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38087,
   "name": "j_94C7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38093,
   "name": "a_94CD",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38100,
   "name": "b_94D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38143,
   "name": "b_94FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38145,
   "name": "r_9501",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38146,
   "name": "guard_ground",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38165,
   "name": "j_9515",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38171,
   "name": "a_951B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38178,
   "name": "b_9522",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38191,
   "name": "r_952F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38192,
   "name": "guard_ledge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38211,
   "name": "j_9543",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38217,
   "name": "a_9549",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38224,
   "name": "b_9550",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38242,
   "name": "r_9562",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38243,
   "name": "attacker_ledge",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38252,
   "name": "j_956C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38258,
   "name": "a_9572",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38265,
   "name": "b_9579",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38283,
   "name": "r_958B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38284,
   "name": "guard_lands",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38298,
   "name": "j_959A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38304,
   "name": "a_95A0",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38311,
   "name": "b_95A7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38313,
   "name": "r_95A9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38314,
   "name": "fighter_strike",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38348,
   "name": "a_95CC",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38372,
   "name": "b_95E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38395,
   "name": "b_95FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38397,
   "name": "r_95FD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38398,
   "name": "fighter_throw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 38469,
   "name": "r_9645",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38470,
   "name": "knives_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38475,
   "name": "b_964B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38494,
   "name": "b_965E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38502,
   "name": "j_9666",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38509,
   "name": "guards_draw",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38513,
   "name": "b_9671",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38529,
   "name": "j_9681",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38565,
   "name": "r_96A5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38566,
   "name": "knives_to_sprites",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38568,
   "name": "b_96A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38591,
   "name": "b_96BF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38593,
   "name": "j_96C1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38617,
   "name": "b_96D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38621,
   "name": "guard_with_view",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38649,
   "name": "b_96F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38669,
   "name": "j_970D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38674,
   "name": "r_9712",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38675,
   "name": "b_9713",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38696,
   "name": "b_9728",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38716,
   "name": "b_973C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38747,
   "name": "guard_gone",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38761,
   "name": "b_9769",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38766,
   "name": "r_976E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38767,
   "name": "b_976F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38780,
   "name": "knives_fly",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38782,
   "name": "b_977E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38826,
   "name": "b_97AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38830,
   "name": "b_97AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38864,
   "name": "at_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38887,
   "name": "r_97E7",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38888,
   "name": "time_up",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38905,
   "name": "r_97F9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 38906,
   "name": "knife_hits",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 38910,
   "name": "j_97FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 38933,
   "name": "b_9815",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38975,
   "name": "a_983F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38983,
   "name": "b_9847",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 38995,
   "name": "j_9853",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39007,
   "name": "b_985F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39036,
   "name": "b_987C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39043,
   "name": "r_9883",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39044,
   "name": "defender_orders",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39065,
   "name": "a_9899",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39066,
   "name": "a_989A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39067,
   "name": "r_989B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39068,
   "name": "guard_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39078,
   "name": "guard_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39088,
   "name": "guard_walk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39091,
   "name": "guard_stand",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39137,
   "name": "b_98E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39174,
   "name": "b_9906",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39185,
   "name": "r_9911",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39186,
   "name": "b_9912",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39196,
   "name": "b_991C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39222,
   "name": "r_9936",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39223,
   "name": "guard_fight",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39287,
   "name": "a_9977",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39297,
   "name": "b_9981",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39307,
   "name": "b_998B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39311,
   "name": "b_998F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39344,
   "name": "r_99B0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39345,
   "name": "guard_delay",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39346,
   "name": "guard_drop",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39380,
   "name": "guard_get_up",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39398,
   "name": "r_99E6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39399,
   "name": "b_99E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39408,
   "name": "guard_nothing",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39409,
   "name": "guard_jump",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39453,
   "name": "r_9A1D",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39454,
   "name": "guard_strike",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39518,
   "name": "r_9A5E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39519,
   "name": "guard_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39549,
   "name": "b_9A7D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39566,
   "name": "r_9A8E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39567,
   "name": "guard_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39616,
   "name": "j_9AC0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39681,
   "name": "r_9B01",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39682,
   "name": "b_9B02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39702,
   "name": "computer_attacker",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 39718,
   "name": "a_9B26",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39719,
   "name": "a_9B27",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39720,
   "name": "cpu_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39730,
   "name": "cpu_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 39740,
   "name": "cpu_climb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39776,
   "name": "r_9B60",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39777,
   "name": "b_9B61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39793,
   "name": "cpu_stand",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39816,
   "name": "b_9B88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39822,
   "name": "b_9B8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39836,
   "name": "b_9B9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39839,
   "name": "cpu_walk",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39857,
   "name": "b_9BB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39862,
   "name": "j_9BB6",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 39933,
   "name": "r_9BFD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 39934,
   "name": "guards_colour",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39945,
   "name": "b_9C09",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 39957,
   "name": "train_sound",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 39970,
   "name": "a_9C22",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39972,
   "name": "a_9C24",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39977,
   "name": "tsound_busy",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 39978,
   "name": "old_fort_code",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 8720,
   "type": "line",
   "text": "the train's 256 tiles, four bytes each: the characters of the top left, top right, bottom left and bottom right of a tile of 2 x 2."
  },
  {
   "address": 8746,
   "type": "line",
   "text": "train_tiles, continued: bytes $222A-$2279 of the block at $2210."
  },
  {
   "address": 8826,
   "type": "line",
   "text": "train_tiles, continued: bytes $227A-$2358 of the block at $2210."
  },
  {
   "address": 9049,
   "type": "line",
   "text": "train_tiles, continued: bytes $2359-$23DB of the block at $2210."
  },
  {
   "address": 9180,
   "type": "line",
   "text": "train_tiles, continued: bytes $23DC-$23E6 of the block at $2210."
  },
  {
   "address": 9191,
   "type": "line",
   "text": "train_tiles, continued: bytes $23E7-$244E of the block at $2210."
  },
  {
   "address": 9295,
   "type": "line",
   "text": "train_tiles, continued: bytes $244F-$247E of the block at $2210."
  },
  {
   "address": 9343,
   "type": "line",
   "text": "train_tiles, continued: bytes $247F-$24A1 of the block at $2210."
  },
  {
   "address": 9378,
   "type": "line",
   "text": "train_tiles, continued: bytes $24A2-$254B of the block at $2210."
  },
  {
   "address": 9548,
   "type": "line",
   "text": "train_tiles, continued: bytes $254C-$25D0 of the block at $2210."
  },
  {
   "address": 9681,
   "type": "line",
   "text": "train_tiles, continued: bytes $25D1-$260F of the block at $2210."
  },
  {
   "address": 9744,
   "type": "line",
   "text": "the train's map: six rows of 240 tiles (a row every 240 bytes), a column drawn at the edge each time the view moves two characters ($8742): the carriages from the last to the locomotive at the right, with the ladders up their ends and the gaps between them."
  },
  {
   "address": 9848,
   "type": "line",
   "text": "train_map, continued: bytes $2678-$26ED of the block at $2610."
  },
  {
   "address": 9966,
   "type": "line",
   "text": "train_map, continued: bytes $26EE-$2705 of the block at $2610."
  },
  {
   "address": 9990,
   "type": "line",
   "text": "train_map, continued: bytes $2706-$277F of the block at $2610."
  },
  {
   "address": 10112,
   "type": "line",
   "text": "train_map, continued: bytes $2780-$28D2 of the block at $2610."
  },
  {
   "address": 10451,
   "type": "line",
   "text": "train_map, continued: bytes $28D3-$2A0F of the block at $2610."
  },
  {
   "address": 10768,
   "type": "line",
   "text": "train_map, continued: bytes $2A10-$2AE5 of the block at $2610."
  },
  {
   "address": 10982,
   "type": "line",
   "text": "train_map, continued: bytes $2AE6-$2B05 of the block at $2610."
  },
  {
   "address": 11014,
   "type": "line",
   "text": "train_map, continued: bytes $2B06-$2BAF of the block at $2610."
  },
  {
   "address": 11184,
   "type": "line",
   "text": "the wheels' three frames, 96 bytes each: twelve characters ($8A-$95) that $899F copies into the character set in turn."
  },
  {
   "address": 11472,
   "type": "line",
   "text": "the ground's two rows, 40 characters each, which $8CB0 draws from a moving offset: the track and the ground beside it."
  },
  {
   "address": 11512,
   "type": "line",
   "text": "track_strips, continued: bytes $2CF8-$2D1F of the block at $2CD0."
  },
  {
   "address": 11552,
   "type": "line",
   "text": "the near band of scenery, 120 characters for row 6, drawn from a moving offset ($8D2F)."
  },
  {
   "address": 11672,
   "type": "line",
   "text": "the far band of scenery, 120 characters for row 4 ($8D17)."
  },
  {
   "address": 11792,
   "type": "line",
   "text": "the colour RAM of each screen row 0 to 20, all multicolour: white for the top two, black for row 2, white for the sky and scenery, yellow for the carriages' middle, white and yellow below."
  },
  {
   "address": 11813,
   "type": "line",
   "text": "the slots of the sprite list filled this frame."
  },
  {
   "address": 11814,
   "type": "line",
   "text": "a byte nothing uses, between the sprite count and the busy flag."
  },
  {
   "address": 11815,
   "type": "line",
   "text": "1 while the interrupt does the frame's work."
  },
  {
   "address": 11816,
   "type": "line",
   "text": "4,568 bytes nothing in the train reads: the same bytes as the fort file's at these addresses (the rest of the fort's map, its row colours and the battle's packed canyon after them), left in memory when the file was saved."
  },
  {
   "address": 12840,
   "type": "line",
   "text": "train_leftover, continued: bytes $3228-$3319 of the block at $2E28."
  },
  {
   "address": 13082,
   "type": "line",
   "text": "train_leftover, continued: bytes $331A-$340B of the block at $2E28."
  },
  {
   "address": 13324,
   "type": "line",
   "text": "train_leftover, continued: bytes $340C-$349A of the block at $2E28."
  },
  {
   "address": 13467,
   "type": "line",
   "text": "train_leftover, continued: bytes $349B-$35C2 of the block at $2E28."
  },
  {
   "address": 13763,
   "type": "line",
   "text": "train_leftover, continued: bytes $35C3-$3627 of the block at $2E28."
  },
  {
   "address": 13864,
   "type": "line",
   "text": "train_leftover, continued: bytes $3628-$3774 of the block at $2E28."
  },
  {
   "address": 14197,
   "type": "line",
   "text": "train_leftover, continued: bytes $3775-$3830 of the block at $2E28."
  },
  {
   "address": 14385,
   "type": "line",
   "text": "train_leftover, continued: bytes $3831-$385C of the block at $2E28."
  },
  {
   "address": 14429,
   "type": "line",
   "text": "train_leftover, continued: bytes $385D-$39B2 of the block at $2E28."
  },
  {
   "address": 14771,
   "type": "line",
   "text": "train_leftover, continued: bytes $39B3-$3A0D of the block at $2E28."
  },
  {
   "address": 14862,
   "type": "line",
   "text": "train_leftover, continued: bytes $3A0E-$3A27 of the block at $2E28."
  },
  {
   "address": 14888,
   "type": "line",
   "text": "train_leftover, continued: bytes $3A28-$3B0C of the block at $2E28."
  },
  {
   "address": 15117,
   "type": "line",
   "text": "train_leftover, continued: bytes $3B0D-$3B96 of the block at $2E28."
  },
  {
   "address": 15255,
   "type": "line",
   "text": "train_leftover, continued: bytes $3B97-$3E27 of the block at $2E28."
  },
  {
   "address": 15912,
   "type": "line",
   "text": "train_leftover, continued: bytes $3E28-$3FA2 of the block at $2E28."
  },
  {
   "address": 16291,
   "type": "line",
   "text": "train_leftover, continued: bytes $3FA3-$3FB6 of the block at $2E28."
  },
  {
   "address": 16311,
   "type": "line",
   "text": "train_leftover, continued: bytes $3FB7-$3FFF of the block at $2E28."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "the train's 256 characters, multicolour: the carriages, ladders, wheels, track and scenery; the knife ($FE, $FF) and the guards' heads ($F6-$FD); characters $8A-$95 are the wheels, rewritten as they turn."
  },
  {
   "address": 17408,
   "type": "line",
   "text": "train_chars, continued: bytes $4400-$444F of the block at $4000."
  },
  {
   "address": 17488,
   "type": "line",
   "text": "train_chars, continued: bytes $4450-$47FF of the block at $4000."
  },
  {
   "address": 19456,
   "type": "line",
   "text": "1,024 bytes of graphics nothing in the train reads, the same as the fort file's."
  },
  {
   "address": 20320,
   "type": "line",
   "text": "train_unused_gfx, continued: bytes $4F60-$4FFF of the block at $4C00."
  },
  {
   "address": 20480,
   "type": "line",
   "text": "the Union's fighter, sprite pointers $40-$7B, the same images as the fort's: walking, standing, the stroke, crouching, down, climbing, knocked over, beaten."
  },
  {
   "address": 21504,
   "type": "line",
   "text": "tfighter_union, continued: bytes $5400-$57FF of the block at $5000."
  },
  {
   "address": 22528,
   "type": "line",
   "text": "tfighter_union, continued: bytes $5800-$5BFF of the block at $5000."
  },
  {
   "address": 23552,
   "type": "line",
   "text": "tfighter_union, continued: bytes $5C00-$5EFF of the block at $5000."
  },
  {
   "address": 24320,
   "type": "line",
   "text": "the Confederacy's fighter, pointers $7C-$B7."
  },
  {
   "address": 25068,
   "type": "line",
   "text": "tfighter_confed, continued: bytes $61EC-$62FF of the block at $5F00."
  },
  {
   "address": 25344,
   "type": "line",
   "text": "tfighter_confed, continued: bytes $6300-$63F7 of the block at $5F00."
  },
  {
   "address": 25592,
   "type": "line",
   "text": "tfighter_confed, continued: bytes $63F8-$63F8 of the block at $5F00."
  },
  {
   "address": 25593,
   "type": "line",
   "text": "tfighter_confed, continued: bytes $63F9-$66FF of the block at $5F00."
  },
  {
   "address": 26368,
   "type": "line",
   "text": "tfighter_confed, continued: bytes $6700-$6AFF of the block at $5F00."
  },
  {
   "address": 27392,
   "type": "line",
   "text": "tfighter_confed, continued: bytes $6B00-$6DFF of the block at $5F00."
  },
  {
   "address": 28160,
   "type": "line",
   "text": "images the train does not show (the fort's barrel, explosion and flag, $B8-$C4)."
  },
  {
   "address": 28992,
   "type": "line",
   "text": "the driver's two pictures ($C5, $C6), the man in the locomotive's cab."
  },
  {
   "address": 29120,
   "type": "line",
   "text": "the fort's dog's images ($C7-$D3), which the train does not show."
  },
  {
   "address": 29952,
   "type": "line",
   "text": "the clock's three frames ($D4-$D6) and the boot's four ($D7-$DA), for the bar at the bottom."
  },
  {
   "address": 30400,
   "type": "line",
   "text": "the knife flying right ($DB) and left ($DC)."
  },
  {
   "address": 30528,
   "type": "line",
   "text": "the locomotive's two rods ($DD, $DE)."
  },
  {
   "address": 30656,
   "type": "line",
   "text": "an empty sprite image (pointer $DF), for the slots not in use."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "2,048 bytes after the images that nothing reads, the power-on pattern as in the fort file."
  },
  {
   "address": 31744,
   "type": "line",
   "text": "train_after, continued: bytes $7C00-$7FFF of the block at $7800."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "the train, called from the map's $0C9D with the attacker in $0396: sets the machine up ($8138) and the map's sound player ($F128), clears the screen ($8694), sets the train's length and the number of guards by the defender's level ($8B50), colours the rows ($8922), draws the first 22 columns of tiles ($88D7) and shows them ($8882), colours the guards' row ($9BFE), draws the attacker's knives ($9646) and the guards' heads ($966D), seeds the random numbers from $A2 and the raster line, clears the sprite list ($8C5A, $866B, $8630) and starts the raster interrupts ($8C1C)."
  },
  {
   "address": 32828,
   "type": "line",
   "text": "the train's main loop, the fort's with the train's parts: the keys ($8278, kept in $830C), H to pause; the two fighters' floors ($93B2, $93D8), the attacker's orders ($917F) and the defender's ($9884), the fighters' pictures ($8E2E), the knives ($977C, $97FA), a guard coming on ($9A8F) or leaving ($975B), the wheels ($899F), the rods ($89D1), the driver ($89FD), being left behind ($8D4D), the clock ($8ADE) and the progress ($8BB7); until the attacker reaches the locomotive ($8111)."
  },
  {
   "address": 32838,
   "type": "line",
   "text": "H pauses, as in the fort: the pause flag on ($8137), sound 17, then the keys waited for: H let go, any key pressed, let go."
  },
  {
   "address": 32932,
   "type": "line",
   "text": "the attacker has reached the locomotive: sound 0, the end countdown at 8, then for good: the result ($0397 = 1), the attacker standing, the wheels and rods turning, the driver still ($8D47), the boot running ($8B36), until the countdown ends ($9338)."
  },
  {
   "address": 32973,
   "type": "line",
   "text": "frames to the wheels' next frame (the first of the 13 timers $898E counts down)."
  },
  {
   "address": 32974,
   "type": "line",
   "text": "frames to the rods' next place."
  },
  {
   "address": 32975,
   "type": "line",
   "text": "frames to the driver's next picture."
  },
  {
   "address": 32976,
   "type": "line",
   "text": "frames to the clock's next pixel, or its next ringing frame; also the boot's."
  },
  {
   "address": 32977,
   "type": "line",
   "text": "the attacker's frames to its pose's next step."
  },
  {
   "address": 32978,
   "type": "line",
   "text": "the guard's."
  },
  {
   "address": 32979,
   "type": "line",
   "text": "frames to each side's knife's next step, the guard's at $80D4; and two timers nothing sets."
  },
  {
   "address": 32983,
   "type": "line",
   "text": "frames to the computer's next chance of sending a guard."
  },
  {
   "address": 32984,
   "type": "line",
   "text": "the computer attacker's frames before its next blow."
  },
  {
   "address": 32985,
   "type": "line",
   "text": "frames to the end countdown's next step."
  },
  {
   "address": 32986,
   "type": "line",
   "text": "the wheels' frame, 0 to 2."
  },
  {
   "address": 32987,
   "type": "line",
   "text": "the wheels' three frames' addresses, low bytes ($2BB0, $2C10, $2C70)."
  },
  {
   "address": 32990,
   "type": "line",
   "text": "their high bytes."
  },
  {
   "address": 32993,
   "type": "line",
   "text": "the track's place in its strips, 0 to 39."
  },
  {
   "address": 32994,
   "type": "line",
   "text": "the far band's place in its strip, 0 to 119."
  },
  {
   "address": 32995,
   "type": "line",
   "text": "the near band's place in its strip, 0 to 119."
  },
  {
   "address": 32996,
   "type": "line",
   "text": "the far band's fine scroll, 4 pixels a frame."
  },
  {
   "address": 32997,
   "type": "line",
   "text": "the near band's fine scroll, 6 pixels a frame."
  },
  {
   "address": 32998,
   "type": "line",
   "text": "the rods' place in their turn, 0 to 3."
  },
  {
   "address": 32999,
   "type": "line",
   "text": "1 while the locomotive is near enough for the rods to show."
  },
  {
   "address": 33000,
   "type": "line",
   "text": "the rods' x offsets for the four places: $2A, $34, $2A, $20."
  },
  {
   "address": 33004,
   "type": "line",
   "text": "their y offsets: 0, 8, 16, 8, so they go round with the wheels."
  },
  {
   "address": 33008,
   "type": "line",
   "text": "the driver's picture, 0 or 1; 2 once he stops."
  },
  {
   "address": 33009,
   "type": "line",
   "text": "1 while the driver shows, with the rods."
  },
  {
   "address": 33010,
   "type": "line",
   "text": "the characters a fighter can stand on, on the train ($18 $07 $0A $56), ending in $FF; the jumps land on the same."
  },
  {
   "address": 33015,
   "type": "line",
   "text": "1 once the attacker has been left behind by the train."
  },
  {
   "address": 33016,
   "type": "line",
   "text": "the columns the train has gone by behind its last carriage."
  },
  {
   "address": 33017,
   "type": "line",
   "text": "each side's uniform: light blue for the Union, grey for the Confederacy."
  },
  {
   "address": 33019,
   "type": "line",
   "text": "the scroll's step in pixels, 3; 0 once the end is reached."
  },
  {
   "address": 33020,
   "type": "line",
   "text": "the locomotive's rods' offset across the view, being worked out."
  },
  {
   "address": 33021,
   "type": "line",
   "text": "the high bit of the rods' x."
  },
  {
   "address": 33022,
   "type": "line",
   "text": "the boot's picture, 0 to 3 (pointer $D7 + frame)."
  },
  {
   "address": 33023,
   "type": "line",
   "text": "the clock's picture, 0 to 2 (pointer $D4 + frame)."
  },
  {
   "address": 33024,
   "type": "line",
   "text": "the boot's x, low byte: the attacker's progress along the bar."
  },
  {
   "address": 33025,
   "type": "line",
   "text": "the boot's x, high bit."
  },
  {
   "address": 33026,
   "type": "line",
   "text": "the clock's x, low byte, from $24: the time used."
  },
  {
   "address": 33027,
   "type": "line",
   "text": "the clock's x, high bit."
  },
  {
   "address": 33028,
   "type": "line",
   "text": "1 once the time is up."
  },
  {
   "address": 33029,
   "type": "line",
   "text": "set when a column of tiles is drawn, for the progress bar."
  },
  {
   "address": 33030,
   "type": "line",
   "text": "$FF or 1 while the attacker sidles to a ladder, 0 when there."
  },
  {
   "address": 33031,
   "type": "line",
   "text": "the ladder character it sidles to."
  },
  {
   "address": 33032,
   "type": "line",
   "text": "a byte between $8107 and $8109 that nothing uses."
  },
  {
   "address": 33033,
   "type": "line",
   "text": "the ladder's offset in the rows ($10)."
  },
  {
   "address": 33034,
   "type": "line",
   "text": "a byte nothing uses, after the ladder's column."
  },
  {
   "address": 33035,
   "type": "line",
   "text": "1 when the attacker has just climbed onto the roof, so up does not start a jump at once."
  },
  {
   "address": 33036,
   "type": "line",
   "text": "the map pointer the train started at, low byte: the attacker cannot go back past it."
  },
  {
   "address": 33037,
   "type": "line",
   "text": "the start's map pointer, high byte."
  },
  {
   "address": 33038,
   "type": "line",
   "text": "the tiles of train for each step of the boot along the bar: 5, 6 or 7 by level."
  },
  {
   "address": 33039,
   "type": "line",
   "text": "the tiles left, divided down to the boot's place."
  },
  {
   "address": 33040,
   "type": "line",
   "text": "progress_left, continued: its high byte."
  },
  {
   "address": 33041,
   "type": "line",
   "text": "1 once the attacker reaches the end."
  },
  {
   "address": 33042,
   "type": "line",
   "text": "the attacker's knives left, 4 to start."
  },
  {
   "address": 33043,
   "type": "line",
   "text": "the guards' knives, 10, which only a person's guard uses up."
  },
  {
   "address": 33044,
   "type": "line",
   "text": "1 while the attacker's knife flies."
  },
  {
   "address": 33045,
   "type": "line",
   "text": "knife_on, continued: the guard's."
  },
  {
   "address": 33046,
   "type": "line",
   "text": "the attacker's knife's x, low byte; the guard's at $8117."
  },
  {
   "address": 33048,
   "type": "line",
   "text": "the knives' x, high bytes."
  },
  {
   "address": 33050,
   "type": "line",
   "text": "the knives' y."
  },
  {
   "address": 33052,
   "type": "line",
   "text": "the knives' directions."
  },
  {
   "address": 33054,
   "type": "line",
   "text": "1, the attacker always on the field (read with Y for the guard's $811F)."
  },
  {
   "address": 33055,
   "type": "line",
   "text": "1 while a guard is on."
  },
  {
   "address": 33056,
   "type": "line",
   "text": "six bytes in the place of the fort's dog's ($8123-$8128 there) that nothing in the train uses."
  },
  {
   "address": 33062,
   "type": "line",
   "text": "the scroll steps this frame, for moving the guard with them."
  },
  {
   "address": 33063,
   "type": "line",
   "text": "six bytes in the place of the fort's barrel's that nothing in the train uses."
  },
  {
   "address": 33069,
   "type": "line",
   "text": "1 or $FF when the view has moved a tile right or left; nothing in the train reads it."
  },
  {
   "address": 33070,
   "type": "line",
   "text": "1 would stop the guard's floor checks; only the code nothing calls ($942D) sets it."
  },
  {
   "address": 33071,
   "type": "line",
   "text": "cleared by the computer's climb; nothing in the train sets it (the fort's walls did)."
  },
  {
   "address": 33072,
   "type": "line",
   "text": "cleared when a guard comes on and read when one gets up; nothing in the train sets it, so a guard getting up always stands."
  },
  {
   "address": 33073,
   "type": "line",
   "text": "the floor the attacker jumped from."
  },
  {
   "address": 33074,
   "type": "line",
   "text": "the guards still to come."
  },
  {
   "address": 33075,
   "type": "line",
   "text": "the fort's dog's three chances (15, 20, 30), which nothing in the train reads."
  },
  {
   "address": 33078,
   "type": "line",
   "text": "the end's steps of 100 frames: 5, or 8 when the attacker wins."
  },
  {
   "address": 33079,
   "type": "line",
   "text": "1 while H has paused the train."
  },
  {
   "address": 33080,
   "type": "line",
   "text": "the train's machine, as the fort's: RAM with I/O, the CIA interrupts off, video bank 1, black border and background, sprites off, screen at $4800 and characters at $4000, multicolour text with 38 columns, the raster interrupt off, the 16 sprite slots in order, and NMI and reset pointing at the rti at $81B8."
  },
  {
   "address": 33208,
   "type": "line",
   "text": "the rti that NMI and reset point at in the train."
  },
  {
   "address": 33209,
   "type": "line",
   "text": "the keys of the one person playing, when one side is the computer and the menu chose the keyboard ($0388): Z left, X right, P up, L down, space fire, into $82B0-$82B2; the two pla then end the stick reading that called it."
  },
  {
   "address": 33302,
   "type": "line",
   "text": "the attacker's stick: the Union's joystick in port 2; the Confederacy's in port 1, unless one person plays, who always uses port 2; with the keyboard chosen, the keys ($81B9)."
  },
  {
   "address": 33331,
   "type": "line",
   "text": "the defender's stick, by the same rule."
  },
  {
   "address": 33368,
   "type": "line",
   "text": "the stick's bits into $82B0 (x: $FF left, 1 right), $82B1 (y: $FF up, 1 down) and $82B2 (fire: 0 pressed, 1 not)."
  },
  {
   "address": 33400,
   "type": "line",
   "text": "the keyboard, row by row ($82B4), the PETSCII code of the key down from that row's table ($82BC, $82C4), $FF for none."
  },
  {
   "address": 33456,
   "type": "line",
   "text": "the stick across: $FF left, 1 right."
  },
  {
   "address": 33457,
   "type": "line",
   "text": "up and down: $FF up, 1 down."
  },
  {
   "address": 33458,
   "type": "line",
   "text": "0 while fire is pressed; and a byte after it nothing uses."
  },
  {
   "address": 33460,
   "type": "line",
   "text": "the keyboard rows the scan drives, row 7 first; also the column patterns."
  },
  {
   "address": 33468,
   "type": "line",
   "text": "each row's key codes' address, low bytes."
  },
  {
   "address": 33476,
   "type": "line",
   "text": "each row's key codes' address, high bytes."
  },
  {
   "address": 33484,
   "type": "line",
   "text": "the PETSCII code of each key, eight to a row, as the battle's $8991."
  },
  {
   "address": 33533,
   "type": "line",
   "text": "fkey_codes, continued: the last rows."
  },
  {
   "address": 33548,
   "type": "line",
   "text": "the key code found this pass, $FF none."
  },
  {
   "address": 33549,
   "type": "line",
   "text": "the raster interrupt at line $C0, below the train: the next one at line $D8 ($8347); background black and the fine scroll 0 for the ground and the bar; lets interrupts in again, copies the sprite list into the live tables ($866B) and sorts it ($8630), and unless paused moves the scenery and the view ($8955)."
  },
  {
   "address": 33607,
   "type": "line",
   "text": "the raster interrupt at line $D8: the bottom bar's two sprites, the boot ($D7 + $80FE) and the clock ($D4 + $80FF), white, at y $E0; the next interrupt at line 0 ($83AA)."
  },
  {
   "address": 33706,
   "type": "line",
   "text": "the raster interrupt at line 0, the frame's work, as the fort's: unless paused (and unless the last frame's is still running, $2E27): the sprite list rebuilt ($8C5A) with the guard ($9A5F) kept in its place as the view moves ($96DD), the fighters ($8DA3), the knives ($96A6), the rods ($8A14) and the driver ($8AAE); then the timers ($898E) and the sound; the first eight sprites of the sorted list on the hardware sprites; the next interrupt at line $44 ($8445)."
  },
  {
   "address": 33837,
   "type": "line",
   "text": "the slot train_irq_top is on, put back in Y: the operand of the ldy at $842C, written at $83FC."
  },
  {
   "address": 33861,
   "type": "line",
   "text": "the raster interrupt at line $44: the far band of scenery (drawn on row 4) with its own fine scroll ($80E4), multicolour 2 brown; the background light blue from here down; the next interrupt at line $5A ($8475)."
  },
  {
   "address": 33909,
   "type": "line",
   "text": "the raster interrupt at line $5A: the near band (drawn on row 6) with its fine scroll ($80E5); the next at line $6A ($849B)."
  },
  {
   "address": 33947,
   "type": "line",
   "text": "the raster interrupt at line $6A: the train's rows with the view's fine scroll ($88E4); then the multiplexer ($84DE) for the sprites below, or the bottom interrupt when sprite 0's image ends below line $B8."
  },
  {
   "address": 34014,
   "type": "line",
   "text": "the raster interrupts down the train: each puts the next slots of the sorted list (from 8 on, $84ED) on the hardware sprites they reuse once the sprite's last image is done, until the 16th slot or line $B8; then the bottom interrupt ($830D at line $C0)."
  },
  {
   "address": 34029,
   "type": "line",
   "text": "the sorted slot train_mux starts from: the operand of the ldy at $84EC, written at $8548, $8563, $857A."
  },
  {
   "address": 34086,
   "type": "line",
   "text": "the slot train_mux is on, put back in Y: the operand of the ldy at $8525, written at $84F1."
  },
  {
   "address": 34124,
   "type": "line",
   "text": "A kept by train_mux: the operand of the lda at $854B, written at $84DE."
  },
  {
   "address": 34126,
   "type": "line",
   "text": "X kept by train_mux: the operand of the ldx at $854D, written at $84E1."
  },
  {
   "address": 34128,
   "type": "line",
   "text": "Y kept by train_mux: the operand of the ldy at $854F, written at $84E4."
  },
  {
   "address": 34130,
   "type": "line",
   "text": "the 16th slot reached: the bottom interrupt next ($830D at line $C0), and the list from slot 8 again."
  },
  {
   "address": 34153,
   "type": "line",
   "text": "the next interrupt the bottom one ($830D at line $C0), and the list from slot 8 again."
  },
  {
   "address": 34176,
   "type": "line",
   "text": "the masks clearing each sprite's bit of $D010."
  },
  {
   "address": 34184,
   "type": "line",
   "text": "the bits setting it."
  },
  {
   "address": 34192,
   "type": "line",
   "text": "the 16 slots' y as the interrupts read them."
  },
  {
   "address": 34208,
   "type": "line",
   "text": "their x, low bytes."
  },
  {
   "address": 34224,
   "type": "line",
   "text": "their x's high bit."
  },
  {
   "address": 34240,
   "type": "line",
   "text": "their image pointers."
  },
  {
   "address": 34256,
   "type": "line",
   "text": "their colours."
  },
  {
   "address": 34272,
   "type": "line",
   "text": "the sprite list the game writes: y, copied into flive_y each frame ($866B)."
  },
  {
   "address": 34273,
   "type": "line",
   "text": "flist_y, continued: from slot 1."
  },
  {
   "address": 34288,
   "type": "line",
   "text": "x, low bytes."
  },
  {
   "address": 34289,
   "type": "line",
   "text": "flist_x, continued: from slot 1."
  },
  {
   "address": 34304,
   "type": "line",
   "text": "x, high bit."
  },
  {
   "address": 34305,
   "type": "line",
   "text": "flist_xhi, continued: from slot 1."
  },
  {
   "address": 34320,
   "type": "line",
   "text": "image pointers."
  },
  {
   "address": 34321,
   "type": "line",
   "text": "flist_ptr, continued: from slot 1."
  },
  {
   "address": 34336,
   "type": "line",
   "text": "colours."
  },
  {
   "address": 34337,
   "type": "line",
   "text": "flist_col, continued: from slot 1."
  },
  {
   "address": 34352,
   "type": "line",
   "text": "sorts the 16 slots' order ($865B) by the live y ($8590), top first."
  },
  {
   "address": 34394,
   "type": "line",
   "text": "the rts, which the sort also reads as the byte before $865B."
  },
  {
   "address": 34395,
   "type": "line",
   "text": "the 16 slots in order of y, top first."
  },
  {
   "address": 34411,
   "type": "line",
   "text": "unless the frame's work is running ($2E27): the 16 slots of the sprite list ($85E0-$862F) into the live tables ($8590-$85DF)."
  },
  {
   "address": 34452,
   "type": "line",
   "text": "the screen at $4800 and colour RAM cleared to 0."
  },
  {
   "address": 34483,
   "type": "line",
   "text": "the view moves one step right (the attacker walks toward the locomotive): the fine position ($88E4) down by the speed ($80FB); past 0 the view moves a character across the buffer ($88E5, $8882), and after two the buffer moves left two characters, the map pointer ($04/$05) one tile on, and the new column of tiles is drawn at the right ($8742 with A = 21); $8126 counts the steps for the guard."
  },
  {
   "address": 34626,
   "type": "line",
   "text": "the column of tiles A of the view: six tiles down from the map ($04/$05 + A, a row every 240 bytes), each two characters by two ($2210 + 4 x tile, placed by $88E6) into the buffer at $2000 (44 characters by 12 rows); $8105 set for the progress bar."
  },
  {
   "address": 34662,
   "type": "line",
   "text": "the low byte of the map address train_tile_column reads: the low byte of the address of the lda at $8765, written at $8753, $879C."
  },
  {
   "address": 34663,
   "type": "line",
   "text": "the high byte of the map address train_tile_column reads: the high byte of the address of the lda at $8765, written at $875A, $87A4."
  },
  {
   "address": 34688,
   "type": "line",
   "text": "the low byte of the tile's four bytes train_tile_column copies: the low byte of the address of the lda at $877F, written at $8770."
  },
  {
   "address": 34689,
   "type": "line",
   "text": "the high byte of the tile's four bytes train_tile_column copies: the high byte of the address of the lda at $877F, written at $8777."
  },
  {
   "address": 34691,
   "type": "line",
   "text": "the low byte of the buffer address train_tile_column writes: the low byte of the address of the sta at $8782, written at $8747, $878E."
  },
  {
   "address": 34692,
   "type": "line",
   "text": "the high byte of the buffer address train_tile_column writes: the high byte of the address of the sta at $8782, written at $874C, $8793."
  },
  {
   "address": 34732,
   "type": "line",
   "text": "the same to the left: the fine position up, the view and the buffer moved the other way, the map pointer one tile back and the new column drawn at the left; behind the train's last carriage (map pointer before $2610) the column is cleared instead ($884C)."
  },
  {
   "address": 34892,
   "type": "line",
   "text": "behind the train: the left two columns of the buffer's rows 6 to 9, the carriages' height, cleared, and $80F8 counts the columns the train has gone by."
  },
  {
   "address": 34909,
   "type": "line",
   "text": "the low byte of the buffer address train_rear clears: the low byte of the address of the sta at $885C, written at $884E, $8868."
  },
  {
   "address": 34910,
   "type": "line",
   "text": "the high byte of the buffer address train_rear clears: the high byte of the address of the sta at $885C, written at $8853, $8870."
  },
  {
   "address": 34946,
   "type": "line",
   "text": "the 40 columns of the view from the buffer (from column $88E5) onto screen rows 7 to 18."
  },
  {
   "address": 35031,
   "type": "line",
   "text": "the 22 columns of tiles of the first view ($8742, 21 down to 0)."
  },
  {
   "address": 35044,
   "type": "line",
   "text": "the scroll's fine position, 0 to 7, for $D016."
  },
  {
   "address": 35045,
   "type": "line",
   "text": "the buffer column the view starts at, 1 or 2."
  },
  {
   "address": 35046,
   "type": "line",
   "text": "where a tile's four characters go in the buffer: 0, 1, 44, 45."
  },
  {
   "address": 35050,
   "type": "line",
   "text": "the 25 screen rows' offsets, row x 40, as words."
  },
  {
   "address": 35051,
   "type": "line",
   "text": "row_offsets, continued: from row 0's high byte."
  },
  {
   "address": 35106,
   "type": "line",
   "text": "colour RAM, a colour for each row 0 to 20 ($2E10); multicolour 1 light red ($D022 = 10)."
  },
  {
   "address": 35124,
   "type": "line",
   "text": "the low byte of the colour RAM row train_colours fills: the low byte of the address of the sta at $8933, written at $8926, $893F."
  },
  {
   "address": 35125,
   "type": "line",
   "text": "the high byte of the colour RAM row train_colours fills: the high byte of the address of the sta at $8933, written at $892B, $8947."
  },
  {
   "address": 35157,
   "type": "line",
   "text": "each frame from the bottom interrupt: with the attacker on the train, the two bands of scenery scroll past ($8CCE), the track runs under the wheels ($8CA1), the speed is 3 until he has won, and the view follows his walk ($86B3, $87AC); with the attacker on the ground beside the track ($8DA2), the scenery stands still and the view moves left 4 pixels a frame, so the train pulls away from him, until he is beaten ($80F7)."
  },
  {
   "address": 35214,
   "type": "line",
   "text": "once a frame: counts each of the 13 timers at $80CD-$80D9 down to 0."
  },
  {
   "address": 35231,
   "type": "line",
   "text": "every 2 frames the next of the wheels' three frames: 96 bytes of characters copied from $2BB0, $2C10 or $2C70 ($80DB, $80DE) over characters $8A to $95 ($4450)."
  },
  {
   "address": 35272,
   "type": "line",
   "text": "the low byte of the wheels' frame train_wheels copies: the low byte of the address of the lda at $89C7, written at $89BC."
  },
  {
   "address": 35273,
   "type": "line",
   "text": "the high byte of the wheels' frame train_wheels copies: the high byte of the address of the lda at $89C7, written at $89C2."
  },
  {
   "address": 35281,
   "type": "line",
   "text": "every 3 frames the next of the locomotive's rods' four places ($80E6); the rods show ($80E7) once the view starts at tile column 208 ($26E0) or later."
  },
  {
   "address": 35325,
   "type": "line",
   "text": "every 5 frames the driver's two pictures in turn ($80F0), unless he has stopped (2)."
  },
  {
   "address": 35348,
   "type": "line",
   "text": "the locomotive's two rods in the sprite list ($DD and $DE, white, 24 pixels apart) over tile column 228 ($26F4) while that is in view, going round with the wheels ($80E8, $80EC); the driver shows too ($80F1)."
  },
  {
   "address": 35502,
   "type": "line",
   "text": "the driver in the sprite list ($C5 + frame, green) in the locomotive's cab, $1D pixels on from the rods, at y $7F."
  },
  {
   "address": 35550,
   "type": "line",
   "text": "the time, as the fort's: every 8 frames the clock sprite moves one pixel right ($8102/$8103) from x $24; at x $132, after 2,160 frames (about 43 seconds), the time is up ($8104), the attacker has lost ($0397 = 0), sound 26; then the clock rings ($80FF) every 5 frames."
  },
  {
   "address": 35638,
   "type": "line",
   "text": "the boot sprite's four pictures in turn every 5 frames ($80FE), while the attacker has won."
  },
  {
   "address": 35664,
   "type": "line",
   "text": "the uniforms' colours ($80F9) for the attacker and the defender; the train's length and guards by the defender's level ($0380 of the other side): level 0 starts the map pointer at $2660 (column 80) with 8 guards and a progress step of 5, level 1 at $264C (column 60) with 10 and 6, level 2 at $2638 (column 40) with 12 and 7; the start kept ($810C)."
  },
  {
   "address": 35767,
   "type": "line",
   "text": "after new tiles ($8105): the boot sprite at x $12C less eight times the tiles left to the locomotive ($26EB less the map pointer) over the progress step; past it the view stops ($80FB = 0) and the attacker has won ($8111)."
  },
  {
   "address": 35868,
   "type": "line",
   "text": "the raster interrupt on, at $830D for line $F9; all sprites on and multicolour, none stretched."
  },
  {
   "address": 35930,
   "type": "line",
   "text": "the sprite list empty: its count ($2E25) 0 and all 16 slots out of sight (y $E8, pointer $DF, a blank image)."
  },
  {
   "address": 35951,
   "type": "line",
   "text": "the next random number in A, from the five bytes at $8C9C-$8CA0, as the fort's."
  },
  {
   "address": 35995,
   "type": "line",
   "text": "the random sum being made."
  },
  {
   "address": 35996,
   "type": "line",
   "text": "the five bytes the random numbers come from; they start as the text \"random\", as in the battle."
  },
  {
   "address": 35997,
   "type": "line",
   "text": "frnd_seed, continued: the second byte."
  },
  {
   "address": 35998,
   "type": "line",
   "text": "frnd_seed, continued: the third byte."
  },
  {
   "address": 35999,
   "type": "line",
   "text": "frnd_seed, continued: the fourth byte, seeded from the raster line ($D012)."
  },
  {
   "address": 36000,
   "type": "line",
   "text": "frnd_seed, continued: the fifth, seeded from $D011."
  },
  {
   "address": 36001,
   "type": "line",
   "text": "the track one character on ($80E1, 0 to 39), then drawn ($8CB0)."
  },
  {
   "address": 36016,
   "type": "line",
   "text": "the ground's two rows (screen rows 19 and 20) from the two 40-character strips at $2CD0 and $2CF8, from the offset $80E1 round."
  },
  {
   "address": 36046,
   "type": "line",
   "text": "the far band's fine scroll ($80E4) 4 pixels on and, past a character, its strip one character on ($80E2, of 120) and redrawn ($8D17); the near band's 6 pixels on ($80E5) and, past a character, its strip on ($80E3) and redrawn ($8D2F): the near band passes faster than the far one."
  },
  {
   "address": 36119,
   "type": "line",
   "text": "screen row 4 from the 120-character strip at $2D98, from the offset $80E2 round."
  },
  {
   "address": 36143,
   "type": "line",
   "text": "screen row 6 from the 120-character strip at $2D20, from the offset $80E3 round."
  },
  {
   "address": 36167,
   "type": "line",
   "text": "the driver stops ($80F0 = 2) once the attacker has won."
  },
  {
   "address": 36173,
   "type": "line",
   "text": "with the attacker standing or walking and the train gone 30 columns or more past him ($80F8): he is beaten ($80F7, state 7, standing still)."
  },
  {
   "address": 36201,
   "type": "line",
   "text": "each fighter's frame or step in its pose: the attacker's here, the guard's at $8D6A."
  },
  {
   "address": 36202,
   "type": "line",
   "text": "fighter_frame, continued: the guard's."
  },
  {
   "address": 36203,
   "type": "line",
   "text": "each fighter's state: 0 standing, 1 walking, 2 jumping or ducking, 3 striking, 4 throwing, 5 climbing, 6 dropping, 7 beaten, 8 down, 9 knocked over."
  },
  {
   "address": 36204,
   "type": "line",
   "text": "fighter_state, continued: the guard's."
  },
  {
   "address": 36205,
   "type": "line",
   "text": "each fighter's upper sprite's pointer."
  },
  {
   "address": 36206,
   "type": "line",
   "text": "fighter_top, continued: the guard's."
  },
  {
   "address": 36207,
   "type": "line",
   "text": "each fighter's lower sprite's pointer."
  },
  {
   "address": 36208,
   "type": "line",
   "text": "fighter_bottom, continued: the guard's."
  },
  {
   "address": 36209,
   "type": "line",
   "text": "each fighter's y."
  },
  {
   "address": 36210,
   "type": "line",
   "text": "fighter_y, continued: the guard's."
  },
  {
   "address": 36211,
   "type": "line",
   "text": "each fighter's uniform colour."
  },
  {
   "address": 36212,
   "type": "line",
   "text": "fighter_colour, continued: the guard's."
  },
  {
   "address": 36213,
   "type": "line",
   "text": "each fighter's x: the attacker's stays $64."
  },
  {
   "address": 36214,
   "type": "line",
   "text": "fighter_x, continued: the guard's."
  },
  {
   "address": 36215,
   "type": "line",
   "text": "the high bytes."
  },
  {
   "address": 36216,
   "type": "line",
   "text": "fighter_x_hi, continued: the guard's."
  },
  {
   "address": 36217,
   "type": "line",
   "text": "the upper sprite's y offset in this pose."
  },
  {
   "address": 36218,
   "type": "line",
   "text": "fighter_dy, continued: the guard's."
  },
  {
   "address": 36219,
   "type": "line",
   "text": "the lower sprite's x offset."
  },
  {
   "address": 36220,
   "type": "line",
   "text": "fighter_dx2, continued: the guard's."
  },
  {
   "address": 36221,
   "type": "line",
   "text": "the lower sprite's y offset, 21 when the two stand one above the other."
  },
  {
   "address": 36222,
   "type": "line",
   "text": "fighter_dy2, continued: the guard's."
  },
  {
   "address": 36223,
   "type": "line",
   "text": "each fighter's movement: 1 right, $FF left, 0 still; the attacker's moves the scroll."
  },
  {
   "address": 36224,
   "type": "line",
   "text": "fighter_moving, continued: the guard's."
  },
  {
   "address": 36225,
   "type": "line",
   "text": "each fighter's facing: 1 right, $FF left."
  },
  {
   "address": 36226,
   "type": "line",
   "text": "fighter_facing, continued: the guard's."
  },
  {
   "address": 36227,
   "type": "line",
   "text": "each fighter's floor, 21 less its row: 0 the ground beside the track, 11 the carriages' roofs."
  },
  {
   "address": 36228,
   "type": "line",
   "text": "fighter_floor, continued: the guard's."
  },
  {
   "address": 36229,
   "type": "line",
   "text": "the attacker's climb: 1 up, $FF down, 0 holding; the guard's byte after it is written and not read."
  },
  {
   "address": 36231,
   "type": "line",
   "text": "the jump's steps in y, from 4 up to 4 down, ending in $80."
  },
  {
   "address": 36256,
   "type": "line",
   "text": "each fighter's step along the arc."
  },
  {
   "address": 36257,
   "type": "line",
   "text": "arc_step, continued: the guard's."
  },
  {
   "address": 36258,
   "type": "line",
   "text": "set while the attacker is on the ground beside the track, where the train leaves him behind."
  },
  {
   "address": 36259,
   "type": "line",
   "text": "the two fighters into the sprite list, two sprites each one above the other (pointers $8D6D and $8D6F, offsets $8D79, $8D7B, $8D7D): the attacker at x $64, where the scroll keeps him, the defender at its own x ($8D76) when one is on ($811F)."
  },
  {
   "address": 36398,
   "type": "line",
   "text": "each fighter's pictures by its state ($8D6B), through the handlers at $8E4F/$8E59; the defender's only when one is on."
  },
  {
   "address": 36424,
   "type": "line",
   "text": "the low byte of the pose handler fighter_pictures calls: the low byte of the address of the jsr at $8E47, written at $8E3E."
  },
  {
   "address": 36425,
   "type": "line",
   "text": "the high byte of the pose handler fighter_pictures calls: the high byte of the address of the jsr at $8E47, written at $8E44."
  },
  {
   "address": 36430,
   "type": "line",
   "text": "the fighter whose pose is being set, 0 or 1."
  },
  {
   "address": 36431,
   "type": "line",
   "text": "the pose handlers for states 0 to 9, low bytes."
  },
  {
   "address": 36441,
   "type": "line",
   "text": "the pose handlers for states 0 to 9, high bytes."
  },
  {
   "address": 36451,
   "type": "line",
   "text": "state 0, standing: pictures $58 and $59, or $5A and $5B facing left ($8D81)."
  },
  {
   "address": 36487,
   "type": "line",
   "text": "A, a picture of the Union's set, moved to the Confederacy's (60 on, $3C) when the fighter ($8E4E) is the Confederacy's."
  },
  {
   "address": 36507,
   "type": "line",
   "text": "state 1, walking: six frames ($8D69) every 4 frames, pictures $40 + frame above $46 + frame, 12 on facing left."
  },
  {
   "address": 36571,
   "type": "line",
   "text": "state 2, a jump in steps ($8D69): crouch (picture $64) for 5 frames, then in the air (picture $42) moving by the arc ($8D87, a step each frame) until its end ($80, sound 13), then crouch again for 5 frames and stand. Ducking is the same state from the second crouch."
  },
  {
   "address": 36769,
   "type": "line",
   "text": "states 3 and 4, a sabre stroke or a throw: two frames ($8D69) of 9 frames each, pictures $5C, $5E (4 on facing left), then stand, the timer at 5."
  },
  {
   "address": 36843,
   "type": "line",
   "text": "state 5, the attacker climbing: every 6 frames 8 lines up or down ($8D85) and the next of two pictures ($6C, $6E)."
  },
  {
   "address": 36922,
   "type": "line",
   "text": "state 6, dropping off: picture $70 with the lower sprite beside the upper one, 4 lines down each frame."
  },
  {
   "address": 37001,
   "type": "line",
   "text": "state 7, the attacker beaten: three pictures in turn every 6 frames ($74-$76), the two sprites side by side."
  },
  {
   "address": 37082,
   "type": "line",
   "text": "state 8, lying: picture $68, the two sprites side by side."
  },
  {
   "address": 37132,
   "type": "line",
   "text": "state 9, knocked over: picture $70, thrown back along the jump's arc ($8D87) and then lying (state 8) for 50 frames."
  },
  {
   "address": 37247,
   "type": "line",
   "text": "the attacker's orders by its state: a person's through $919C/$91A6, the computer's through $9B28 ($9B16)."
  },
  {
   "address": 37274,
   "type": "line",
   "text": "the low byte of the person's attacker's handler attacker_orders jumps to: the low byte of the address of the jmp at $9199, written at $9190."
  },
  {
   "address": 37275,
   "type": "line",
   "text": "the high byte of the person's attacker's handler attacker_orders jumps to: the high byte of the address of the jmp at $9199, written at $9196."
  },
  {
   "address": 37276,
   "type": "line",
   "text": "a person's attacker's handlers for states 0 to 9, low bytes."
  },
  {
   "address": 37286,
   "type": "line",
   "text": "a person's attacker's handlers, high bytes."
  },
  {
   "address": 37296,
   "type": "line",
   "text": "a person's attacker standing, once its timer is out, and on the train: fire: a stroke at a guard in reach ($95AA), otherwise a knife if any are left and none is flying ($95FE); left or right: walk (state 1), not back past the start ($97D0); then up and down ($9206). On the ground only up and down count."
  },
  {
   "address": 37382,
   "type": "line",
   "text": "whether he drops ($948A) or the time is up ($97E8); up: a ladder ($9433) or a jump (state 2, from this floor, $8131), unless he has just climbed onto the roof ($810B); down: duck ($9243)."
  },
  {
   "address": 37443,
   "type": "line",
   "text": "the attacker crouches (state 2 at its second crouch, 25 frames) and stands his y on a character line."
  },
  {
   "address": 37474,
   "type": "line",
   "text": "a person's attacker walking: the stick still that way walks on, not back past the start ($97D0); otherwise he stands; then up and down. There are no walls on the train."
  },
  {
   "address": 37521,
   "type": "line",
   "text": "a person's attacker on a ladder: first to its column ($8106) as in the fort; then up climbs ($945C), down climbs down ($9477), the stick still holds."
  },
  {
   "address": 37584,
   "type": "line",
   "text": "dropping: whether there is still nothing below ($948A); on a floor, the landing crouch (20 frames), sound 13."
  },
  {
   "address": 37623,
   "type": "line",
   "text": "in the air: in the arc's middle steps (10 to 21) a floor under the feet ($94B9) lands him: he stands, on a character line, sound 13."
  },
  {
   "address": 37668,
   "type": "line",
   "text": "lying: once his timer is out he stands, and the computer's guard waits two passes before it strikes ($99B1)."
  },
  {
   "address": 37687,
   "type": "line",
   "text": "the rts for the states that take no orders."
  },
  {
   "address": 37688,
   "type": "line",
   "text": "every 100 frames the end countdown ($8136) goes down; at 3 the music fades ($F134); at 0 the train ends: the raster interrupt off, the screen blanked, and the two pla go back to the map."
  },
  {
   "address": 37737,
   "type": "line",
   "text": "the stroke at its timer's second-last frame: against a guard standing (state below 6) within 30 pixels on the same floor, a random number below $14 knocks it down: sound 6, the guard's state 9."
  },
  {
   "address": 37810,
   "type": "line",
   "text": "the attacker's floor ($8D83: 21 less his y / 8) and the screen address of his rows ($10/$11)."
  },
  {
   "address": 37828,
   "type": "line",
   "text": "the attacker's row, y / 8, subtracted to give its floor: the operand of the sbc at $93C3, written at $93B8."
  },
  {
   "address": 37848,
   "type": "line",
   "text": "the same for the guard ($8D84, $20/$21), the column from its x, kept from 3 to 37."
  },
  {
   "address": 37866,
   "type": "line",
   "text": "the guard's row, y / 8, subtracted to give its floor: the operand of the sbc at $93E9, written at $93DE."
  },
  {
   "address": 37933,
   "type": "line",
   "text": "code nothing calls: it would set $812E, which stops the guard's floor checks."
  },
  {
   "address": 37939,
   "type": "line",
   "text": "a ladder (character $12) in the first two cells of the row at the attacker's head ($10): the climb starts (state 5, $8D85 = 1), off the ground ($8DA2 = 0); the two pla end the caller's pass."
  },
  {
   "address": 37980,
   "type": "line",
   "text": "a step up the ladder; at floor 11, the carriage's roof, the attacker stands there ($810B stops up starting a jump at once)."
  },
  {
   "address": 38007,
   "type": "line",
   "text": "a step down; at floor 0 the attacker stands on the ground beside the track ($8DA2), where the train leaves him behind ($8955)."
  },
  {
   "address": 38026,
   "type": "line",
   "text": "above the ground, a floor character under the attacker's feet ($80F2) keeps him up; with none he drops (state 6) and the two pla end the caller's pass. On the ground $8DA2 is set."
  },
  {
   "address": 38046,
   "type": "line",
   "text": "the character under the attacker's feet, compared with each floor character: the operand of the cmp at $949D, written at $9493."
  },
  {
   "address": 38073,
   "type": "line",
   "text": "in the air: a floor character under the feet ($80F2) lets the jump land; a ladder ($12) there catches him (state 5, on the ladder); otherwise the two pla keep him flying."
  },
  {
   "address": 38093,
   "type": "line",
   "text": "the character under the attacker's feet, compared with each floor character and with the ladder: the operand of the cmp at $94CC, written at $94C2."
  },
  {
   "address": 38146,
   "type": "line",
   "text": "the same for the guard ($8D84, $20): it drops (state 6) with nothing under it."
  },
  {
   "address": 38171,
   "type": "line",
   "text": "the character under the guard's feet, compared with each floor character: the operand of the cmp at $951A, written at $9510."
  },
  {
   "address": 38192,
   "type": "line",
   "text": "the guard walking: no floor character just ahead of its feet ($20 + $9D) makes it jump (state 2), over the gap between two carriages."
  },
  {
   "address": 38217,
   "type": "line",
   "text": "the character ahead of the guard's feet, compared with each floor character: the operand of the cmp at $9548, written at $953E."
  },
  {
   "address": 38243,
   "type": "line",
   "text": "the computer's attacker: no floor character ahead of his feet ($10 + $7D) makes him jump (state 2, straight up)."
  },
  {
   "address": 38258,
   "type": "line",
   "text": "the character ahead of the attacker's feet, compared with each floor character: the operand of the cmp at $9571, written at $9567."
  },
  {
   "address": 38284,
   "type": "line",
   "text": "the guard in the air lands on a floor character."
  },
  {
   "address": 38304,
   "type": "line",
   "text": "the character under the guard's feet, compared with each floor character: the operand of the cmp at $959F, written at $9595."
  },
  {
   "address": 38314,
   "type": "line",
   "text": "fighter Y on fire, with a guard on and the two on the same floor: with the guard up to 30 pixels to the right of the attacker, a random number below 5 makes the fighter step in (state 1); otherwise sound 30 and the stroke (state 3, timer 5), and the two pla end the caller's pass; with the guard to the left, the two pla end the pass and nothing happens."
  },
  {
   "address": 38348,
   "type": "line",
   "text": "the guard's distance from the attacker, for the cmp after it: the operand of the lda at $95CB, written at $95BE."
  },
  {
   "address": 38398,
   "type": "line",
   "text": "fighter Y throws a knife: sound 20, state 4, one knife fewer ($8112), and the knife flies from its x, 16 lines below its top, the way it faces; the attacker's knives redrawn ($9646)."
  },
  {
   "address": 38470,
   "type": "line",
   "text": "the attacker's knives left ($8112) at the top left, a knife (characters $FE, $FF) in each of columns 1 to 4."
  },
  {
   "address": 38509,
   "type": "line",
   "text": "the guards left ($8132) at the top right, a head of the defender's uniform (characters $F6 + side x 4) every two columns from 37 down."
  },
  {
   "address": 38566,
   "type": "line",
   "text": "the flying knives into the sprite list: pointer $DB going right, $DC left, white."
  },
  {
   "address": 38621,
   "type": "line",
   "text": "the guard kept in its place on the train as the view moves ($8126 steps), against the attacker's walk; a guard on the ground falls behind 8 pixels a frame; with the attacker on the ground, a guard on the train goes away with it."
  },
  {
   "address": 38747,
   "type": "line",
   "text": "the guard off the screen to the left, or past x $15A on the right, is gone."
  },
  {
   "address": 38780,
   "type": "line",
   "text": "every 2 frames each flying knife goes 8 pixels its way; off the screen it is gone."
  },
  {
   "address": 38864,
   "type": "line",
   "text": "the attacker cannot go back past the start ($810C/$810D): he stands, and the two pla end the caller's pass."
  },
  {
   "address": 38888,
   "type": "line",
   "text": "once the time is up the attacker takes state 7 and his orders end."
  },
  {
   "address": 38906,
   "type": "line",
   "text": "each flying knife against the other side's fighter, standing, walking, striking, throwing or in a jump before its last crouch, so a duck lets a knife pass: from the fighter's top to 40 lines below it and about 16 to 24 pixels across, it knocks the fighter over (state 9, backwards), sound 28, and is gone."
  },
  {
   "address": 38975,
   "type": "line",
   "text": "the knife's distance from the fighter, low byte, for the cmp after it: the operand of the lda at $983E, written at $9831."
  },
  {
   "address": 39044,
   "type": "line",
   "text": "the defender's orders by its state, through $989C/$98A6, while a guard is on."
  },
  {
   "address": 39065,
   "type": "line",
   "text": "the low byte of the guard's handler defender_orders jumps to: the low byte of the address of the jmp at $9898, written at $988F."
  },
  {
   "address": 39066,
   "type": "line",
   "text": "the high byte of the guard's handler defender_orders jumps to: the high byte of the address of the jmp at $9898, written at $9895."
  },
  {
   "address": 39068,
   "type": "line",
   "text": "the guard's handlers for its states, low bytes."
  },
  {
   "address": 39078,
   "type": "line",
   "text": "the guard's handlers, high bytes."
  },
  {
   "address": 39088,
   "type": "line",
   "text": "state 1: a gap ahead ($9530) first; then as standing."
  },
  {
   "address": 39091,
   "type": "line",
   "text": "states 0 and 1, once its timer is out: whether it drops ($9502); at x $7F or more it walks left toward the attacker, fighting if it can ($9937); left of x $64 it walks on left; in between: if the attacker jumps from the guard's own floor ($8131) the guard knocks him over (sound 6, state 9); it stands and fights when the attacker is on its floor, or climbing, dropping or down; otherwise it walks on left."
  },
  {
   "address": 39223,
   "type": "line",
   "text": "a computer guard, the attacker not down and on its floor, the guard to his right, with a random number below $50: with a random number below $64, no knife of its own flying and the attacker 40 pixels or more away it throws ($95FE), and its knife count ($8113) is not checked, so it never runs out; otherwise, after its delay ($99B1), it strikes ($95AA). A person's guard: fire strikes, or throws while it has knives ($8113)."
  },
  {
   "address": 39287,
   "type": "line",
   "text": "the guard's distance from the attacker, for the cmp after it: the operand of the lda at $9976, written at $995F."
  },
  {
   "address": 39345,
   "type": "line",
   "text": "passes the guard waits before it strikes."
  },
  {
   "address": 39346,
   "type": "line",
   "text": "state 6, dropping: whether there is still nothing below ($9502); then the landing crouch (20 frames)."
  },
  {
   "address": 39380,
   "type": "line",
   "text": "state 8, lying: once its timer is out it stands, or walks on right ($8130)."
  },
  {
   "address": 39408,
   "type": "line",
   "text": "the rts for the guard's states that take no orders."
  },
  {
   "address": 39409,
   "type": "line",
   "text": "state 2: in the arc's middle steps it lands on a floor character ($958C), sound 13."
  },
  {
   "address": 39454,
   "type": "line",
   "text": "state 3, at its timer's second-last frame: against the attacker standing within 30 pixels, a random number below $1E knocks him over (sound 6, state 9)."
  },
  {
   "address": 39519,
   "type": "line",
   "text": "each frame the walking guard goes 3 pixels its way ($8D80)."
  },
  {
   "address": 39567,
   "type": "line",
   "text": "with no guard on, the attacker not beaten, the map pointer before $26D6 and the train not gone ($80F8): a guard comes on from the right (x $150) onto the carriages' roofs (y $52), walking left, while guards are left ($8132, one fewer, the heads redrawn): for a person's defender when it pushes up or down; for the computer's every 50 frames with a random number below $C8."
  },
  {
   "address": 39702,
   "type": "line",
   "text": "the computer's attacker, by its state through $9B28/$9B32."
  },
  {
   "address": 39718,
   "type": "line",
   "text": "the low byte of the computer attacker's handler computer_attacker jumps to: the low byte of the address of the jmp at $9B25, written at $9B1C."
  },
  {
   "address": 39719,
   "type": "line",
   "text": "the high byte of the computer attacker's handler computer_attacker jumps to: the high byte of the address of the jmp at $9B25, written at $9B22."
  },
  {
   "address": 39720,
   "type": "line",
   "text": "the computer attacker's handlers, low bytes."
  },
  {
   "address": 39730,
   "type": "line",
   "text": "the computer attacker's handlers, high bytes."
  },
  {
   "address": 39740,
   "type": "line",
   "text": "climbing: to the ladder's column, then up ($945C), with a random delay before its next blow."
  },
  {
   "address": 39793,
   "type": "line",
   "text": "standing, once its timer is out: on the ground, with a random number below $19, back up a ladder ($9433) or a jump; on the train, walk right; then as walking from $9BB6."
  },
  {
   "address": 39839,
   "type": "line",
   "text": "walking: whether he drops; above the ground and off floor 8, a gap ahead ($9563) makes him jump; then every few frames ($80D8, a random delay up to 15): a stroke at a guard in reach ($95AA), or a knife at one ahead on his floor when he has knives and none is flying."
  },
  {
   "address": 39934,
   "type": "line",
   "text": "colour RAM for the top two rows' columns 8 to 39 in the defender's uniform, for the guards' heads."
  },
  {
   "address": 39957,
   "type": "line",
   "text": "sound A on the map's player ($F12B), with $9C29 counted up so the interrupt does not play sound meanwhile; X and Y kept."
  },
  {
   "address": 39970,
   "type": "line",
   "text": "X kept by train_sound: the operand of the ldx at $9C21, written at $9C18."
  },
  {
   "address": 39972,
   "type": "line",
   "text": "Y kept by train_sound: the operand of the ldy at $9C23, written at $9C1B."
  },
  {
   "address": 39977,
   "type": "line",
   "text": "counted up while $9C15 starts a sound, so the interrupt does not play it meanwhile."
  },
  {
   "address": 39978,
   "type": "line",
   "text": "982 bytes nothing calls: the fort's code at the same addresses, from inside its guard_drop ($9C2A) to its end, with the earlier battle code after it, left in memory when the file was saved."
  }
 ]
}