{
 "schema": 1,
 "platform": "apple2",
 "game": "karateka",
 "part": "title",
 "build": "Br\u00f8derbund's original 1984 disk, side A: Karateka.woz (SHA-1 426b1049...aa259d1f608) from archive.org's A Woz A Day collection, item wozaday_Karateka, run on the kit's enhanced IIe; the engine analysed at its hand-over to $0200 and each stage at its hand-over to $BFFA (orientation.md)",
 "source": "live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    49152,
    53247,
    "I/O and the cards' ROM"
   ],
   [
    53248,
    65535,
    "the ROM, or the language card's RAM"
   ],
   [
    0,
    4095,
    "The engine"
   ],
   [
    8192,
    40959,
    "The engine"
   ],
   [
    49152,
    65535,
    "The engine"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   768,
   1024,
   2048,
   3072,
   8192,
   16384,
   24576,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    0,
    4095,
    "The engine"
   ],
   [
    8192,
    40959,
    "The engine"
   ],
   [
    49152,
    65535,
    "The engine"
   ]
  ]
 },
 "blocks": [
  {
   "start": 4096,
   "end": 4186,
   "type": "Code"
  },
  {
   "start": 4187,
   "end": 4544,
   "type": "Byte"
  },
  {
   "start": 4545,
   "end": 4582,
   "type": "Code"
  },
  {
   "start": 4583,
   "end": 6399,
   "type": "Byte"
  },
  {
   "start": 6400,
   "end": 6707,
   "type": "Code"
  },
  {
   "start": 6708,
   "end": 6721,
   "type": "Byte"
  },
  {
   "start": 6722,
   "end": 7289,
   "type": "Code"
  },
  {
   "start": 7290,
   "end": 8191,
   "type": "Byte"
  },
  {
   "start": 40960,
   "end": 41101,
   "type": "Code"
  },
  {
   "start": 41102,
   "end": 41121,
   "type": "Byte"
  },
  {
   "start": 41122,
   "end": 41158,
   "type": "Code"
  },
  {
   "start": 41159,
   "end": 41733,
   "type": "Byte"
  },
  {
   "start": 41734,
   "end": 41796,
   "type": "Code"
  },
  {
   "start": 41797,
   "end": 41807,
   "type": "Byte"
  },
  {
   "start": 41808,
   "end": 41810,
   "type": "Code"
  },
  {
   "start": 41811,
   "end": 41858,
   "type": "Byte"
  },
  {
   "start": 41859,
   "end": 41881,
   "type": "Code"
  },
  {
   "start": 41882,
   "end": 44079,
   "type": "Byte"
  },
  {
   "start": 44080,
   "end": 44082,
   "type": "Code"
  },
  {
   "start": 44083,
   "end": 44094,
   "type": "Byte"
  },
  {
   "start": 44095,
   "end": 44160,
   "type": "Code"
  },
  {
   "start": 44161,
   "end": 44290,
   "type": "Byte"
  },
  {
   "start": 44291,
   "end": 44534,
   "type": "Code"
  },
  {
   "start": 44535,
   "end": 44606,
   "type": "Byte"
  },
  {
   "start": 44607,
   "end": 45181,
   "type": "Code"
  },
  {
   "start": 45182,
   "end": 45247,
   "type": "Byte"
  },
  {
   "start": 45248,
   "end": 45465,
   "type": "Code"
  },
  {
   "start": 45466,
   "end": 45485,
   "type": "Byte"
  },
  {
   "start": 45486,
   "end": 45628,
   "type": "Code"
  },
  {
   "start": 45629,
   "end": 45663,
   "type": "Byte"
  },
  {
   "start": 45664,
   "end": 46070,
   "type": "Code"
  },
  {
   "start": 46071,
   "end": 46079,
   "type": "Byte"
  },
  {
   "start": 46080,
   "end": 46927,
   "type": "Code"
  },
  {
   "start": 46928,
   "end": 46943,
   "type": "Byte"
  },
  {
   "start": 46944,
   "end": 47397,
   "type": "Code"
  },
  {
   "start": 47398,
   "end": 47455,
   "type": "Byte"
  },
  {
   "start": 47456,
   "end": 47466,
   "type": "Code"
  },
  {
   "start": 47467,
   "end": 49145,
   "type": "Byte"
  },
  {
   "start": 49146,
   "end": 49148,
   "type": "Code"
  },
  {
   "start": 49149,
   "end": 49151,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 4096,
   "name": "stage_tunes",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 4099,
   "name": "s_1003",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4102,
   "name": "s_1006",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4105,
   "name": "s_1009",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4108,
   "name": "s_100C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4111,
   "name": "s_100F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4114,
   "name": "s_1012",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4117,
   "name": "s_1015",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4120,
   "name": "j_1018",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4124,
   "name": "j_101C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4137,
   "name": "r_1029",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4138,
   "name": "j_102A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4145,
   "name": "j_1031",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4152,
   "name": "j_1038",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4159,
   "name": "j_103F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4166,
   "name": "j_1046",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4173,
   "name": "j_104D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4180,
   "name": "j_1054",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4187,
   "name": "tune_start",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4236,
   "name": "tune_climb",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4311,
   "name": "tune_death",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4363,
   "name": "tune_beaten",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4400,
   "name": "tune_scene_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4429,
   "name": "tune_four",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4445,
   "name": "tune_cell",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4467,
   "name": "tune_arm",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4608,
   "name": "room_piece_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4808,
   "name": "room_piece_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5310,
   "name": "room_piece_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5424,
   "name": "mariko_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5512,
   "name": "mariko_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5649,
   "name": "mariko_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5786,
   "name": "mariko_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5836,
   "name": "mariko_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5982,
   "name": "mariko_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6099,
   "name": "mariko_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6185,
   "name": "mariko_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6247,
   "name": "mariko_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6335,
   "name": "room_piece_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6352,
   "name": "room_piece_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 6400,
   "name": "clear_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6403,
   "name": "draw_shape",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6406,
   "name": "draw_shape_right",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6409,
   "name": "draw_mirrored",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6412,
   "name": "draw_mirrored_right",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6415,
   "name": "j_190F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6423,
   "name": "b_1917",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6425,
   "name": "b_1919",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6439,
   "name": "clip_shape",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6476,
   "name": "b_194C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6498,
   "name": "b_1962",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6501,
   "name": "b_1965",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6518,
   "name": "b_1976",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6522,
   "name": "b_197A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6527,
   "name": "b_197F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6532,
   "name": "j_1984",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6565,
   "name": "b_19A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6580,
   "name": "b_19B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6602,
   "name": "b_19CA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6608,
   "name": "b_19D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6617,
   "name": "b_19D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6630,
   "name": "a_19E6",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6631,
   "name": "a_19E7",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6648,
   "name": "b_19F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6661,
   "name": "b_1A05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6665,
   "name": "j_1A09",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6667,
   "name": "b_1A0B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6681,
   "name": "b_1A19",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6691,
   "name": "b_1A23",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6703,
   "name": "j_1A2F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6708,
   "name": "left_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6715,
   "name": "right_masks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 6722,
   "name": "j_1A42",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6731,
   "name": "j_1A4B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 6753,
   "name": "shape_header",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6787,
   "name": "r_1A83",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 6788,
   "name": "shift_dots",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6821,
   "name": "b_1AA5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6826,
   "name": "b_1AAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6841,
   "name": "b_1AB9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6856,
   "name": "b_1AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6870,
   "name": "b_1AD6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6881,
   "name": "b_1AE1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6891,
   "name": "restore_shape",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 6900,
   "name": "draw_reversed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 6917,
   "name": "b_1B05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6919,
   "name": "b_1B07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6960,
   "name": "b_1B30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6995,
   "name": "b_1B53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 6998,
   "name": "b_1B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7015,
   "name": "b_1B67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7019,
   "name": "b_1B6B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7024,
   "name": "b_1B70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7029,
   "name": "j_1B75",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7068,
   "name": "b_1B9C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7079,
   "name": "b_1BA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7115,
   "name": "b_1BCB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7130,
   "name": "j_1BDA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7154,
   "name": "a_1BF2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7155,
   "name": "a_1BF3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7169,
   "name": "b_1C01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7194,
   "name": "b_1C1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7204,
   "name": "j_1C24",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7206,
   "name": "b_1C26",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7220,
   "name": "b_1C34",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7230,
   "name": "b_1C3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 7248,
   "name": "j_1C50",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7259,
   "name": "j_1C5B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7268,
   "name": "j_1C64",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 7364,
   "name": "mariko_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7380,
   "name": "mariko_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7424,
   "name": "mariko_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7478,
   "name": "mariko_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7514,
   "name": "mariko_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7550,
   "name": "mariko_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7586,
   "name": "mariko_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7639,
   "name": "mariko_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7680,
   "name": "fall_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7758,
   "name": "fall_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7865,
   "name": "fall_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7891,
   "name": "fall_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 7945,
   "name": "copyright",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40960,
   "name": "demo_brain",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 40976,
   "name": "b_A010",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40979,
   "name": "b_A013",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 40999,
   "name": "b_A027",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41008,
   "name": "b_A030",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41012,
   "name": "b_A034",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41021,
   "name": "b_A03D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41033,
   "name": "b_A049",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41079,
   "name": "b_A077",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41084,
   "name": "b_A07C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41089,
   "name": "b_A081",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41095,
   "name": "f_A087",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41100,
   "name": "f_A08C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41102,
   "name": "demo_no_blow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41105,
   "name": "f_A091",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41107,
   "name": "demo_kick",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41110,
   "name": "f_A096",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 41112,
   "name": "demo_punch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41117,
   "name": "demo_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41122,
   "name": "demo_random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41135,
   "name": "demo_height",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41146,
   "name": "b_A0BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41154,
   "name": "b_A0C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41156,
   "name": "b_A0C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 41254,
   "name": "crown",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41326,
   "name": "company_name",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41472,
   "name": "old_gate_5_end",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41538,
   "name": "old_gate_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41588,
   "name": "old_gate_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41622,
   "name": "old_gate_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41636,
   "name": "old_gate_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41648,
   "name": "old_gate_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41656,
   "name": "old_gate_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41734,
   "name": "s_A306",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 41737,
   "name": "s_A309",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 41740,
   "name": "j_A30C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 41749,
   "name": "r_A315",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41750,
   "name": "keep_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41796,
   "name": "r_A344",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 41799,
   "name": "climb_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41808,
   "name": "climb_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 41811,
   "name": "climb_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41823,
   "name": "climb_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41835,
   "name": "climb_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 41859,
   "name": "climb_picture",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 41925,
   "name": "climb_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41961,
   "name": "climb_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41995,
   "name": "climb_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42021,
   "name": "climb_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42074,
   "name": "climb_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42148,
   "name": "climb_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42194,
   "name": "climb_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42226,
   "name": "climb_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42312,
   "name": "climb_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42354,
   "name": "climb_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42444,
   "name": "climb_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42460,
   "name": "climb_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42628,
   "name": "gate_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42634,
   "name": "gate_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42662,
   "name": "gate_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42688,
   "name": "gate_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42708,
   "name": "gate_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42735,
   "name": "gate_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42755,
   "name": "gate_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42759,
   "name": "gate_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42851,
   "name": "gate_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42961,
   "name": "gate_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43051,
   "name": "gate_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43095,
   "name": "gate_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43103,
   "name": "gate_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43109,
   "name": "gate_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43127,
   "name": "gate_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43131,
   "name": "gate_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43336,
   "name": "fuji_peak",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43382,
   "name": "fuji_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43448,
   "name": "fuji_slopes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43490,
   "name": "fuji_foot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43537,
   "name": "rail",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43555,
   "name": "post",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43569,
   "name": "post_patch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43645,
   "name": "edge_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43850,
   "name": "edge_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43900,
   "name": "edge_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43918,
   "name": "edge_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43924,
   "name": "edge_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44051,
   "name": "fall_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44055,
   "name": "fall_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44058,
   "name": "gate_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44059,
   "name": "fall_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44080,
   "name": "fall_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44095,
   "name": "fall_step",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44111,
   "name": "b_AC4F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44113,
   "name": "r_AC51",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44114,
   "name": "fall_picture",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44154,
   "name": "b_AC7A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44291,
   "name": "scenery_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44294,
   "name": "s_AD06",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44297,
   "name": "s_AD09",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44300,
   "name": "s_AD0C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44303,
   "name": "s_AD0F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44306,
   "name": "s_AD12",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44309,
   "name": "s_AD15",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44312,
   "name": "s_AD18",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44319,
   "name": "b_AD1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44335,
   "name": "r_AD2F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44336,
   "name": "j_AD30",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44374,
   "name": "j_AD56",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44391,
   "name": "b_AD67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44405,
   "name": "j_AD75",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44422,
   "name": "b_AD86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44430,
   "name": "j_AD8E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44449,
   "name": "b_ADA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44461,
   "name": "b_ADAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44475,
   "name": "b_ADBB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44478,
   "name": "j_ADBE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44496,
   "name": "r_ADD0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44497,
   "name": "s_ADD1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44535,
   "name": "gate_lo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44553,
   "name": "gate_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44571,
   "name": "gate_col",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44589,
   "name": "gate_row",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44607,
   "name": "gate_piece",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44639,
   "name": "b_AE5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44645,
   "name": "j_AE65",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44656,
   "name": "b_AE70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44665,
   "name": "r_AE79",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44666,
   "name": "gate_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44696,
   "name": "b_AE98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44706,
   "name": "b_AEA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44722,
   "name": "b_AEB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44753,
   "name": "b_AED1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44792,
   "name": "b_AEF8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44815,
   "name": "b_AF0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44820,
   "name": "b_AF14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44858,
   "name": "b_AF3A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44876,
   "name": "r_AF4C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44877,
   "name": "gate_front",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44895,
   "name": "b_AF5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44904,
   "name": "b_AF68",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44918,
   "name": "gate_erase",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44934,
   "name": "b_AF86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44989,
   "name": "j_AFBD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45044,
   "name": "r_AFF4",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45045,
   "name": "b_AFF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45052,
   "name": "b_AFFC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45077,
   "name": "draw_background",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45161,
   "name": "rail_setup",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45248,
   "name": "edge_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45251,
   "name": "s_B0C3",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45254,
   "name": "edge_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45292,
   "name": "r_B0EC",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45293,
   "name": "b_B0ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45327,
   "name": "b_B10F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45391,
   "name": "b_B14F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45417,
   "name": "b_B169",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45441,
   "name": "b_B181",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45466,
   "name": "edge_lo",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45471,
   "name": "edge_hi",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45476,
   "name": "edge_col",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45481,
   "name": "edge_row",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 45486,
   "name": "edge_piece",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45509,
   "name": "r_B1C5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45510,
   "name": "edge_erase",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 45530,
   "name": "b_B1DA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45543,
   "name": "b_B1E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45571,
   "name": "b_B203",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45582,
   "name": "b_B20E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45589,
   "name": "b_B215",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45664,
   "name": "scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45687,
   "name": "b_B277",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45696,
   "name": "b_B280",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45705,
   "name": "b_B289",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45715,
   "name": "b_B293",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45723,
   "name": "b_B29B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45734,
   "name": "b_B2A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45737,
   "name": "b_B2A9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45742,
   "name": "b_B2AE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45751,
   "name": "b_B2B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45760,
   "name": "b_B2C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45768,
   "name": "b_B2C8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45775,
   "name": "b_B2CF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45803,
   "name": "r_B2EB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45804,
   "name": "j_B2EC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45838,
   "name": "r_B30E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45839,
   "name": "j_B30F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45859,
   "name": "b_B323",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45877,
   "name": "b_B335",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45882,
   "name": "b_B33A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45898,
   "name": "b_B34A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45906,
   "name": "b_B352",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45930,
   "name": "b_B36A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45952,
   "name": "r_B380",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45953,
   "name": "j_B381",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45971,
   "name": "b_B393",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45976,
   "name": "b_B398",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45990,
   "name": "b_B3A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46014,
   "name": "b_B3BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46016,
   "name": "j_B3C0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46033,
   "name": "b_B3D1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46046,
   "name": "r_B3DE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46047,
   "name": "s_B3DF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46080,
   "name": "demo_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46283,
   "name": "b_B4CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46299,
   "name": "j_B4DB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46311,
   "name": "demo_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46324,
   "name": "b_B4F4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46345,
   "name": "b_B509",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46377,
   "name": "j_B529",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46383,
   "name": "j_B52F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46430,
   "name": "b_B55E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46441,
   "name": "b_B569",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46447,
   "name": "b_B56F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46465,
   "name": "b_B581",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46468,
   "name": "b_B584",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46533,
   "name": "b_B5C5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46544,
   "name": "b_B5D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46554,
   "name": "j_B5DA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46558,
   "name": "b_B5DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46604,
   "name": "b_B60C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46621,
   "name": "b_B61D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46635,
   "name": "b_B62B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46643,
   "name": "b_B633",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46646,
   "name": "b_B636",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46661,
   "name": "b_B645",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46676,
   "name": "b_B654",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46682,
   "name": "j_B65A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46692,
   "name": "b_B664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46700,
   "name": "b_B66C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46709,
   "name": "b_B675",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46723,
   "name": "b_B683",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46746,
   "name": "demo_hero",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46777,
   "name": "b_B6B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46784,
   "name": "b_B6C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46796,
   "name": "b_B6CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46818,
   "name": "b_B6E2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46821,
   "name": "j_B6E5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46835,
   "name": "b_B6F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46855,
   "name": "b_B707",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46858,
   "name": "s_B70A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46865,
   "name": "s_B711",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46878,
   "name": "s_B71E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46894,
   "name": "s_B72E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46911,
   "name": "s_B73F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46944,
   "name": "title_vectors",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46947,
   "name": "s_B763",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46950,
   "name": "j_B766",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46953,
   "name": "j_B769",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46969,
   "name": "title",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 47070,
   "name": "b_B7DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47082,
   "name": "s_B7EA",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47093,
   "name": "j_B7F5",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47112,
   "name": "b_B808",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47124,
   "name": "b_B814",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47136,
   "name": "b_B820",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47139,
   "name": "s_B823",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47141,
   "name": "b_B825",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47155,
   "name": "prologue",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47166,
   "name": "b_B83E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47170,
   "name": "b_B842",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47207,
   "name": "s_B867",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47223,
   "name": "b_B877",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47228,
   "name": "s_B87C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47253,
   "name": "j_B895",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47256,
   "name": "s_B898",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47298,
   "name": "s_B8C2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47310,
   "name": "s_B8CE",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47334,
   "name": "s_B8E6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47340,
   "name": "b_B8EC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47347,
   "name": "s_B8F3",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47370,
   "name": "s_B90A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47398,
   "name": "logo_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47409,
   "name": "logo_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47420,
   "name": "logo_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47431,
   "name": "logo_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47442,
   "name": "logo_dot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 47456,
   "name": "s_B960",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47467,
   "name": "title_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 47507,
   "name": "prologue_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48031,
   "name": "text_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48053,
   "name": "text_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48108,
   "name": "logo_a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48128,
   "name": "j_BC00",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48295,
   "name": "logo_k",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48477,
   "name": "logo_k_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48501,
   "name": "logo_t",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48708,
   "name": "logo_e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48932,
   "name": "logo_r",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49121,
   "name": "f_BFE1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49124,
   "name": "logo_join",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49126,
   "name": "f_BFE6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49128,
   "name": "demo_guard_brain",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49131,
   "name": "f_BFEB",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49138,
   "name": "f_BFF2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49146,
   "name": "title_entry",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 49149,
   "name": "stage_number",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49150,
   "name": "stage_check1",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 49151,
   "name": "stage_check2",
   "type": "AbsoluteAddress",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 4096,
   "type": "line",
   "text": "The stage's tunes, eight JMPs: $1000 the four notes as Mariko's cell door shuts ($7BA8), $1003 the hero's death, $1006 a guard beaten (asked for by $88 and played at the end of the frame), $1009 the tune after the climb onto the cliff, $100C Akuma raising his arm ($7B40), $100F the end of the scene in Mariko's cell ($7BCE), $1012 a game starting, which the engine plays after the castle picture ($0250), and $1015 Mariko turning in her cell ($7BBC). Each sets A and X to its tune and goes on to $101C."
  },
  {
   "address": 4099,
   "type": "line",
   "text": "JMP: the hero's death tune ($10D7), when the demo hero loses ($B529)."
  },
  {
   "address": 4102,
   "type": "line",
   "text": "JMP: the tune of a guard beaten ($110B)."
  },
  {
   "address": 4105,
   "type": "line",
   "text": "JMP: the tune after the climb ($108C)."
  },
  {
   "address": 4108,
   "type": "line",
   "text": "JMP: the tune of Akuma raising his arm ($1173)."
  },
  {
   "address": 4111,
   "type": "line",
   "text": "JMP: the tune at the end of the scene in Mariko's cell ($1130)."
  },
  {
   "address": 4114,
   "type": "line",
   "text": "JMP: the tune of a game starting ($105B)."
  },
  {
   "address": 4117,
   "type": "line",
   "text": "JMP: Mariko's tune in her cell ($115D)."
  },
  {
   "address": 4120,
   "type": "line",
   "text": "A and X point at the tune of a game starting, $105B."
  },
  {
   "address": 4124,
   "type": "line",
   "text": "Play the tune at A (low) and X (high) with the engine's player ($0D00), unless the music or the sound is off ($4F AND $86)."
  },
  {
   "address": 4138,
   "type": "line",
   "text": "The other tunes' entries, each setting A and X and going on to $101C: $102A Mariko's in her cell ($115D), $1031 after the climb ($108C), $1038 the death ($10D7), $103F a guard beaten ($110B), $1046 the end of the scene ($1130), $104D Akuma's arm ($1173), $1054 the four notes ($114D)."
  },
  {
   "address": 4187,
   "type": "line",
   "text": "The tune of a game starting ($1012): tempo 6, the second voice on the speaker ($C0), 15 notes of three bytes (a length and the pitch as a coarse and a fine count), $FF at the end."
  },
  {
   "address": 4236,
   "type": "line",
   "text": "The tune after the climb ($1009): tempo 5, 23 notes."
  },
  {
   "address": 4311,
   "type": "line",
   "text": "The hero's death ($1003): tempo 6, 16 notes."
  },
  {
   "address": 4363,
   "type": "line",
   "text": "A guard beaten ($1006): tempo 5, 11 notes."
  },
  {
   "address": 4400,
   "type": "line",
   "text": "The end of the scene in Mariko's cell ($100F): tempo 8, a $FD 2 command, then eight notes."
  },
  {
   "address": 4429,
   "type": "line",
   "text": "The four notes as Mariko's cell door shuts ($1000): tempo 7."
  },
  {
   "address": 4445,
   "type": "line",
   "text": "Mariko turning in her cell ($1015): tempo 4, six notes."
  },
  {
   "address": 4467,
   "type": "line",
   "text": "Akuma raising his arm ($100C): tempo 4, seven notes."
  },
  {
   "address": 4492,
   "type": "line",
   "text": "The last note and end of a tune that nothing points at, then two more tunes that nothing plays: $1190, Akuma's arm at tempo 5 without its first note, and $11A6, Akuma's arm at tempo 5."
  },
  {
   "address": 4543,
   "type": "line",
   "text": "A zero, and $19, the last byte of a JMP $1900 whose first bytes the tunes cover. From $11C1, the end of an earlier version of the engine's THE END, which nothing runs."
  },
  {
   "address": 4545,
   "type": "line",
   "text": "Draw the picture at $9A74 at column $0F, row $5A, in store mode."
  },
  {
   "address": 4568,
   "type": "line",
   "text": "Set the column and row for the picture and fill ($0A18): reached from nowhere."
  },
  {
   "address": 4583,
   "type": "line",
   "text": "25 bytes in the form of picture rows that nothing points at."
  },
  {
   "address": 4608,
   "type": "line",
   "text": "The engine's room scenery piece 6 ($7815): with pieces 6-9 the engine draws the wall of Mariko's cell ($7929), with piece 10 its doorway ($796A); the same bytes in every stage. 9 rows of 22 bytes."
  },
  {
   "address": 4808,
   "type": "line",
   "text": "The engine's room scenery piece 7 ($7815): with pieces 6-9 the engine draws the wall of Mariko's cell ($7929), with piece 10 its doorway ($796A); the same bytes in every stage. 50 rows of 10 bytes."
  },
  {
   "address": 5310,
   "type": "line",
   "text": "The engine's room scenery piece 8 ($7815): with pieces 6-9 the engine draws the wall of Mariko's cell ($7929), with piece 10 its doorway ($796A); the same bytes in every stage. 5 rows of 20 bytes."
  },
  {
   "address": 5412,
   "type": "line",
   "text": "12 bytes of $80 after room_piece_8, black dots that no table or instruction points at."
  },
  {
   "address": 5424,
   "type": "line",
   "text": "Mariko's part or pose 8 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). The same picture serves as mariko_9, mariko_26. 43 rows of 2 bytes."
  },
  {
   "address": 5512,
   "type": "line",
   "text": "Mariko's part or pose 10 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 43 rows of 3 bytes."
  },
  {
   "address": 5643,
   "type": "line",
   "text": "6 bytes after mariko_10 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 5649,
   "type": "line",
   "text": "Mariko's part or pose 11 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 43 rows of 3 bytes."
  },
  {
   "address": 5780,
   "type": "line",
   "text": "6 bytes after mariko_11 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 5786,
   "type": "line",
   "text": "Mariko's part or pose 12 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). The same picture serves as mariko_13, mariko_14. 16 rows of 3 bytes."
  },
  {
   "address": 5836,
   "type": "line",
   "text": "Mariko's part or pose 15 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 36 rows of 4 bytes."
  },
  {
   "address": 5982,
   "type": "line",
   "text": "Mariko's part or pose 16 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 23 rows of 5 bytes."
  },
  {
   "address": 6099,
   "type": "line",
   "text": "Mariko's part or pose 17 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 14 rows of 6 bytes."
  },
  {
   "address": 6185,
   "type": "line",
   "text": "Mariko's part or pose 18 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 10 rows of 6 bytes."
  },
  {
   "address": 6247,
   "type": "line",
   "text": "Mariko's part or pose 19 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 43 rows of 2 bytes."
  },
  {
   "address": 6335,
   "type": "line",
   "text": "The engine's room scenery piece 9 ($7815): with pieces 6-9 the engine draws the wall of Mariko's cell ($7929), with piece 10 its doorway ($796A); the same bytes in every stage. 5 rows of 3 bytes."
  },
  {
   "address": 6352,
   "type": "line",
   "text": "The engine's room scenery piece 10 ($7815): with pieces 6-9 the engine draws the wall of Mariko's cell ($7929), with piece 10 its doorway ($796A); the same bytes in every stage. 3 rows of 2 bytes."
  },
  {
   "address": 6360,
   "type": "line",
   "text": "40 bytes after room_piece_10 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 6400,
   "type": "line",
   "text": "Five entry points: $1900 clears the draw page, $1903 draws a shape, $1906 draws it with its right edge at the column, $1909 draws it mirrored, $190C mirrored with its right edge at the column."
  },
  {
   "address": 6403,
   "type": "line",
   "text": "JMP: draw the shape at ($03) on the draw page, at byte column $05, row $06, dot offset $10, in mode $0F ($1A42)."
  },
  {
   "address": 6406,
   "type": "line",
   "text": "JMP: the same with the shape's right edge at column $05 ($1A4B)."
  },
  {
   "address": 6409,
   "type": "line",
   "text": "JMP: draw the shape mirrored, facing the other way ($1C5B)."
  },
  {
   "address": 6412,
   "type": "line",
   "text": "JMP: mirrored, with its right edge at column $05 ($1C64)."
  },
  {
   "address": 6415,
   "type": "line",
   "text": "Clear the draw page: fill the 32 pages from $07 ($20 or $40) with $80, black."
  },
  {
   "address": 6439,
   "type": "line",
   "text": "Clip a shape to the screen's 40 byte columns: $15 keeps its width, $14 is the first column drawn, $16 the bytes cut off at the left, and $0E becomes the bytes drawn on each row. A negative column, the shape starting left of the screen, cuts it at the left edge, a shape that would run past column 39 is cut at the right, and one wholly off the screen is not drawn ($1A2F). Then the mode ($0F) is written into the instruction at $19E6: ORA ($00),Y for 0, AND ($00),Y for a negative mode, two NOPs for a positive one, so that the STA after it ORs, masks or stores."
  },
  {
   "address": 6506,
   "type": "line",
   "text": "The same LDA $0F twice."
  },
  {
   "address": 6532,
   "type": "line",
   "text": "Draw the rows: for each of the $0D rows, the row's address on the draw page from the row tables ($0800, $08C0 plus $07) and $14. When bytes were cut at the left, the last one cut is read only for the dots it carries into the first byte drawn. The first byte keeps the screen's dots to the left of the shape ($1A34), each byte is the shape's dots shifted by $10 ($1A84) with the dots carried from the byte before, and the dots carried out of the last byte go into the next screen byte ($19F8) unless it is past column 39."
  },
  {
   "address": 6630,
   "type": "line",
   "text": "The instruction the mode writes: ORA ($00),Y, AND ($00),Y, or two NOPs, before the STA ($00),Y that follows."
  },
  {
   "address": 6631,
   "type": "line",
   "text": "The second byte of the instruction at $19E6: $00 for ORA and AND ($00),Y, or a NOP in store mode."
  },
  {
   "address": 6648,
   "type": "line",
   "text": "The dots carried past the shape's last byte: ORed onto the screen in mode 0; in store mode the screen keeps its own dots to the right of them ($1A3B); in AND mode the mask's carried dots are set to the right ($1A3B) and ANDed."
  },
  {
   "address": 6703,
   "type": "line",
   "text": "Done: X and Y back from $18 and $17."
  },
  {
   "address": 6708,
   "type": "line",
   "text": "For a dot offset of 0-6, the screen's dots kept to the left of a shape's first dot, with bit 7 set: none, then one to six."
  },
  {
   "address": 6715,
   "type": "line",
   "text": "For a dot offset of 0-6, the screen's dots kept to the right of the dots carried out of a shape's last byte."
  },
  {
   "address": 6722,
   "type": "line",
   "text": "Draw a shape: read its header ($1A61), clip it and draw it ($1927), and put the pointer back ($1AEB)."
  },
  {
   "address": 6731,
   "type": "line",
   "text": "Draw a shape with its right edge at column $05: the column less the width, plus one, for the drawing, then $05 back."
  },
  {
   "address": 6753,
   "type": "line",
   "text": "Read a shape's header: keep its pointer in $1B/$1C, X in $18 and Y in $17, its height in rows in $0D and its width in bytes in $0E, and move ($03) on to the first row."
  },
  {
   "address": 6788,
   "type": "line",
   "text": "Shift the seven dots of the shape byte in A right by $10 dots (0-6): returns the dots that stay in this byte, moved along, and puts in $1A the dots pushed out into the next byte. A dot moves right on the screen as it moves up a bit, since bit 0 is the leftmost dot."
  },
  {
   "address": 6891,
   "type": "line",
   "text": "Put the shape pointer back from $1B/$1C."
  },
  {
   "address": 6900,
   "type": "line",
   "text": "Draw a shape mirrored. The dot offset becomes 7 less $10 (or, at 0, the column one less), so that the mirrored shape ends where the shape would have started. The shape is clipped as $1927 does, $1D saying which side was cut (1 the left, $FF the right), and each row is read from its last byte back to its first, every byte through the reversal table at $0980 (read as $0900 + X with bit 7 set) so that its dots come out in reverse order. The mode works as for $1903, through the instruction at $1BF2. $05 and $10 come back at the end ($1C50)."
  },
  {
   "address": 7154,
   "type": "line",
   "text": "The instruction the mode writes for the mirrored drawing, as at $19E6."
  },
  {
   "address": 7155,
   "type": "line",
   "text": "The second byte of the instruction at $1BF2, written as at $19E7."
  },
  {
   "address": 7248,
   "type": "line",
   "text": "Done: X and Y back, and the dot offset and the column restored."
  },
  {
   "address": 7259,
   "type": "line",
   "text": "Draw a shape mirrored: the header, the drawing ($1AF4), the pointer back."
  },
  {
   "address": 7268,
   "type": "line",
   "text": "Draw a shape mirrored with its right edge at column $05."
  },
  {
   "address": 7290,
   "type": "line",
   "text": "74 bytes ($1C7A-$1CC3) that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 7364,
   "type": "line",
   "text": "Mariko's part or pose 7 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 2 rows of 7 bytes."
  },
  {
   "address": 7380,
   "type": "line",
   "text": "Mariko's part or pose 6 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 21 rows of 2 bytes."
  },
  {
   "address": 7424,
   "type": "line",
   "text": "Mariko's part or pose 5 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 26 rows of 2 bytes."
  },
  {
   "address": 7478,
   "type": "line",
   "text": "Mariko's part or pose 1 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 17 rows of 2 bytes."
  },
  {
   "address": 7514,
   "type": "line",
   "text": "Mariko's part or pose 2 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 17 rows of 2 bytes."
  },
  {
   "address": 7550,
   "type": "line",
   "text": "Mariko's part or pose 3 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 17 rows of 2 bytes."
  },
  {
   "address": 7586,
   "type": "line",
   "text": "Mariko's part or pose 4 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 17 rows of 3 bytes."
  },
  {
   "address": 7639,
   "type": "line",
   "text": "Mariko's part or pose 0 for the engine's tables ($7E3F), which the scene in Akuma's chamber and Mariko's cell draws ($79A3). 17 rows of 2 bytes."
  },
  {
   "address": 7675,
   "type": "line",
   "text": "5 zeros after mariko_0."
  },
  {
   "address": 7680,
   "type": "line",
   "text": "The hero falling from the cliff, picture 0 of 0-3 ($AC52). 19 rows of 4 bytes."
  },
  {
   "address": 7758,
   "type": "line",
   "text": "The hero falling from the cliff, picture 1. 15 rows of 7 bytes."
  },
  {
   "address": 7865,
   "type": "line",
   "text": "The hero falling from the cliff, picture 2. 12 rows of 2 bytes."
  },
  {
   "address": 7891,
   "type": "line",
   "text": "The hero falling from the cliff, picture 3. 13 rows of 4 bytes."
  },
  {
   "address": 7945,
   "type": "line",
   "text": "\"Copyright 1984 Jordan Mechner\", drawn under the logo ($B8F3). 9 rows of 24 bytes."
  },
  {
   "address": 8163,
   "type": "line",
   "text": "29 bytes after title_picture that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The demo hero's brain, which plays the hero in the demo in place of the player ($B6E2) and ends in the command routine ($6540). With the guard lying dead (legs $13 at $70): forward ($29 = 1), standing up first ($9B) from the stance. Standing ($2F): forward until the guard ($72) is less than $4A columns ahead, then the stance. In the stance with no guard alive ($5E), or 12 columns or more from him ($33): nothing. Nearer, a random height ($A0AF); a random number at or above $DB does nothing; otherwise another, against four thresholds read as base + X with X the distance held to 7-11: at or above the first ($A08E-$A092) nothing, the second ($A093-$A097) a kick ($C5), the third ($A098-$A09C) a punch ($D7), the fourth ($A09D-$A0A1) a step forward, and below it a step back. The steps are the stick's movement ($29 = 1 or $FF, A the same, which the command routine takes as no command) and are taken only in the stance's pose (legs 6)."
  },
  {
   "address": 41095,
   "type": "line",
   "text": "Forward ($29 = 1) and the movement alone. The four threshold tables have their bases at $A087, $A08C, $A091 and $A096 and are read as base + X with X = 7-11, so the bytes read start after this code, at $A08E."
  },
  {
   "address": 41100,
   "type": "line",
   "text": "The base of the kick thresholds, inside the JMP's operand; read at $A093-$A097."
  },
  {
   "address": 41102,
   "type": "line",
   "text": "The thresholds for no blow, read as $A087 + X at the distance 7-11: $B0 $E0 $D0 $40 $50."
  },
  {
   "address": 41105,
   "type": "line",
   "text": "The base of the punch thresholds, read at $A098-$A09C."
  },
  {
   "address": 41107,
   "type": "line",
   "text": "The thresholds for a kick, read as $A08C + X: $A0 $60 $20 $30 $50."
  },
  {
   "address": 41110,
   "type": "line",
   "text": "The base of the step thresholds, read at $A09D-$A0A1."
  },
  {
   "address": 41112,
   "type": "line",
   "text": "The thresholds for a punch, read as $A091 + X: $00 $00 $20 $30 $50."
  },
  {
   "address": 41117,
   "type": "line",
   "text": "The thresholds for a step forward, read as $A096 + X: $00 $00 $10 $00 $00; below them, a step back."
  },
  {
   "address": 41122,
   "type": "line",
   "text": "The demo hero's random numbers: $59 = $59 times 5 plus $13, in A."
  },
  {
   "address": 41135,
   "type": "line",
   "text": "Choose the height of the next blow at random ($2A): 0, the middle, below $55; otherwise $FF, high. The test against $AA ($A0BA) is reached only below $55, so it always gives 0: the demo's hero never aims low (1), where the guards' brain aims a third of its blows ($6C71)."
  },
  {
   "address": 41159,
   "type": "line",
   "text": "Bytes left from an earlier build: the end of a version of the brain, then random numbers, $48 = $48 times 17 plus $0D. Nothing runs them."
  },
  {
   "address": 41191,
   "type": "line",
   "text": "The end of piece 3 of the cliff stage's gate ahead, the same bytes as there, its start covered by the code above. Nothing reads it."
  },
  {
   "address": 41254,
   "type": "line",
   "text": "The Broderbund crown, drawn above the company's name ($B898). 14 rows of 5 bytes."
  },
  {
   "address": 41326,
   "type": "line",
   "text": "\"Broderbund Software\", the publisher's name, drawn under the crown ($B8B3). 9 rows of 16 bytes."
  },
  {
   "address": 41472,
   "type": "line",
   "text": "The last 52 bytes of piece 5 of the cliff stage's gate ahead, whose start the publisher's name covers, then 14 bytes in the form of picture rows. Nothing reads them."
  },
  {
   "address": 41524,
   "type": "line",
   "text": "14 bytes after old_gate_5 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 41538,
   "type": "line",
   "text": "The same bytes as piece 6 of the gate ahead in the cliff stage; nothing in the title draws it. 8 rows of 5 bytes."
  },
  {
   "address": 41580,
   "type": "line",
   "text": "8 bytes after old_gate_6 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 41588,
   "type": "line",
   "text": "The same bytes as piece 7 of the gate ahead in the cliff stage; nothing in the title draws it. 8 rows of 3 bytes."
  },
  {
   "address": 41614,
   "type": "line",
   "text": "8 bytes after old_gate_7 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 41622,
   "type": "line",
   "text": "The same bytes as piece 8 of the gate ahead in the cliff stage; nothing in the title draws it. 12 rows of 1 byte."
  },
  {
   "address": 41636,
   "type": "line",
   "text": "The same bytes as piece 9 of the gate ahead in the cliff stage; nothing in the title draws it. 5 rows of 2 bytes."
  },
  {
   "address": 41648,
   "type": "line",
   "text": "The same bytes as piece 10 of the gate ahead in the cliff stage; nothing in the title draws it. 2 rows of 3 bytes."
  },
  {
   "address": 41656,
   "type": "line",
   "text": "The same bytes as piece 11 of the gate ahead in the cliff stage; nothing in the title draws it. 6 rows of 4 bytes."
  },
  {
   "address": 41682,
   "type": "line",
   "text": "12 bytes after old_gate_11 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 41728,
   "type": "line",
   "text": "Two JMPs to $A30C that nothing calls."
  },
  {
   "address": 41734,
   "type": "line",
   "text": "JMP: the whole background while $5F counts ($A30C)."
  },
  {
   "address": 41737,
   "type": "line",
   "text": "JMP: keep this frame's positions ($A316)."
  },
  {
   "address": 41740,
   "type": "line",
   "text": "While $5F counts (from 2: both pages), draw the whole background ($AD0F)."
  },
  {
   "address": 41750,
   "type": "line",
   "text": "Keep this frame's positions for the page drawn two frames from now: the fence ($51 into $AB, then $AC), the dot offset ($50 into $AD, $AE), the scroll ($52 into $E0, $E1), the hero ($62 into $E2, $E3), the opponent ($72 into $E4, $E5); and count $54 down."
  },
  {
   "address": 41797,
   "type": "line",
   "text": "LDA #2, STA $54, RTS: ask for both pages to be drawn whole; nothing calls it. Then six bytes nothing reads."
  },
  {
   "address": 41799,
   "type": "line",
   "text": "The base of the low bytes of the climb's pictures, read only as $A347 + X with X = $0C-$17 ($A383), at $A353-$A35E."
  },
  {
   "address": 41808,
   "type": "line",
   "text": "JMP: draw climbing picture X ($A383)."
  },
  {
   "address": 41811,
   "type": "line",
   "text": "The base of their high bytes, read at $A35F-$A36A. The twelve bytes here are the low bytes the climb reads, for its pictures at $A3C5-$A5DC."
  },
  {
   "address": 41823,
   "type": "line",
   "text": "The base of their columns, read at $A36B-$A376. The twelve bytes here are the high bytes the climb reads, $A3-$A5."
  },
  {
   "address": 41835,
   "type": "line",
   "text": "The base of their rows, read at $A377-$A382. The twelve bytes here are the columns the climb reads, 9-$0C, and the twelve after them its rows, $78-$9E."
  },
  {
   "address": 41859,
   "type": "line",
   "text": "Draw climbing picture X at its column and row."
  },
  {
   "address": 41882,
   "type": "line",
   "text": "43 bytes left from an earlier build, in the form of the climb's columns and rows. Nothing reads them."
  },
  {
   "address": 41925,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 12 of $0C-$17 ($A350). 17 rows of 2 bytes."
  },
  {
   "address": 41961,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 13 of $0C-$17 ($A350). 8 rows of 4 bytes."
  },
  {
   "address": 41995,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 14 of $0C-$17 ($A350). 8 rows of 3 bytes."
  },
  {
   "address": 42021,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 15 of $0C-$17 ($A350). 17 rows of 3 bytes."
  },
  {
   "address": 42074,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 16 of $0C-$17 ($A350). 24 rows of 3 bytes."
  },
  {
   "address": 42148,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 17 of $0C-$17 ($A350). 22 rows of 2 bytes."
  },
  {
   "address": 42194,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 18 of $0C-$17 ($A350). 6 rows of 5 bytes."
  },
  {
   "address": 42226,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 19 of $0C-$17 ($A350). 21 rows of 4 bytes."
  },
  {
   "address": 42312,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 20 of $0C-$17 ($A350). 10 rows of 4 bytes."
  },
  {
   "address": 42354,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 21 of $0C-$17 ($A350). 22 rows of 4 bytes."
  },
  {
   "address": 42444,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 22 of $0C-$17 ($A350). 7 rows of 2 bytes."
  },
  {
   "address": 42460,
   "type": "line",
   "text": "The hero climbing onto the cliff, picture 23 of $0C-$17 ($A350). 36 rows of 3 bytes."
  },
  {
   "address": 42570,
   "type": "line",
   "text": "58 bytes after climb_23 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 42628,
   "type": "line",
   "text": "Piece 0 of the gate on the cliff ($AE3F). 2 rows of 2 bytes."
  },
  {
   "address": 42634,
   "type": "line",
   "text": "Piece 1 of the gate on the cliff ($AE3F). 2 rows of 2 bytes."
  },
  {
   "address": 42640,
   "type": "line",
   "text": "22 bytes after gate_1 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 42662,
   "type": "line",
   "text": "Piece 3 of the gate on the cliff ($AE3F). 6 rows of 4 bytes."
  },
  {
   "address": 42688,
   "type": "line",
   "text": "Piece 4 of the gate on the cliff ($AE3F). 6 rows of 3 bytes."
  },
  {
   "address": 42708,
   "type": "line",
   "text": "Piece 5 of the gate on the cliff ($AE3F). 5 rows of 5 bytes."
  },
  {
   "address": 42735,
   "type": "line",
   "text": "Piece 6 of the gate on the cliff ($AE3F). 18 rows of 1 byte."
  },
  {
   "address": 42755,
   "type": "line",
   "text": "Piece 7 of the gate on the cliff ($AE3F). 2 rows of 1 byte."
  },
  {
   "address": 42759,
   "type": "line",
   "text": "Piece 8 of the gate on the cliff ($AE3F). 18 rows of 5 bytes."
  },
  {
   "address": 42851,
   "type": "line",
   "text": "Piece 9 of the gate on the cliff ($AE3F). 18 rows of 6 bytes."
  },
  {
   "address": 42961,
   "type": "line",
   "text": "Piece 10 of the gate on the cliff ($AE3F). 11 rows of 8 bytes."
  },
  {
   "address": 43051,
   "type": "line",
   "text": "Piece 11 of the gate on the cliff ($AE3F). 7 rows of 6 bytes."
  },
  {
   "address": 43095,
   "type": "line",
   "text": "Piece 12 of the gate on the cliff ($AE3F). 6 rows of 1 byte."
  },
  {
   "address": 43103,
   "type": "line",
   "text": "Piece 13 of the gate on the cliff ($AE3F). 2 rows of 2 bytes."
  },
  {
   "address": 43109,
   "type": "line",
   "text": "Piece 14 of the gate on the cliff ($AE3F). 8 rows of 2 bytes."
  },
  {
   "address": 43127,
   "type": "line",
   "text": "Piece 17 of the gate on the cliff ($AE3F). 1 row of 2 bytes."
  },
  {
   "address": 43131,
   "type": "line",
   "text": "Piece 2 of the gate on the cliff ($AE3F). 6 rows of 4 bytes."
  },
  {
   "address": 43157,
   "type": "line",
   "text": "179 bytes after gate_2 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 43336,
   "type": "line",
   "text": "The top of the mountain, drawn once with the background ($AD30). 11 rows of 4 bytes."
  },
  {
   "address": 43382,
   "type": "line",
   "text": "The mountain below its peak ($AD47). 8 rows of 8 bytes."
  },
  {
   "address": 43448,
   "type": "line",
   "text": "The mountain's lower slopes, drawn again whenever the scene scrolls ($ADD1). 4 rows of 10 bytes."
  },
  {
   "address": 43490,
   "type": "line",
   "text": "The mountain's foot and the far shore ($ADE8). 3 rows of 15 bytes."
  },
  {
   "address": 43537,
   "type": "line",
   "text": "Two columns of the fence's rail ($B069). 8 rows of 2 bytes."
  },
  {
   "address": 43555,
   "type": "line",
   "text": "A post of the fence, drawn every twelve columns from $51 + 1 ($AD8E). 12 rows of 1 byte."
  },
  {
   "address": 43569,
   "type": "line",
   "text": "The sky and rail that cover a fence post where it was ($AD86). 12 rows of 1 byte."
  },
  {
   "address": 43583,
   "type": "line",
   "text": "62 bytes after post_patch that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 43645,
   "type": "line",
   "text": "Piece 0 of the cliff's edge and the sea below it ($B1AE). 29 rows of 6 bytes."
  },
  {
   "address": 43821,
   "type": "line",
   "text": "29 bytes after edge_0 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 43850,
   "type": "line",
   "text": "Piece 1 of the cliff's edge and the sea below it ($B1AE). 4 rows of 12 bytes."
  },
  {
   "address": 43900,
   "type": "line",
   "text": "Piece 2 of the cliff's edge and the sea below it ($B1AE). 8 rows of 2 bytes."
  },
  {
   "address": 43918,
   "type": "line",
   "text": "Piece 3 of the cliff's edge and the sea below it ($B1AE). 1 row of 4 bytes."
  },
  {
   "address": 43924,
   "type": "line",
   "text": "Piece 4 of the cliff's edge and the sea below it ($B1AE). 4 rows of 15 bytes."
  },
  {
   "address": 43986,
   "type": "line",
   "text": "46 bytes after edge_4 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 44051,
   "type": "line",
   "text": "The base of the falling pictures' low bytes, read only as $AC13 + X with X = $20-$23: the bytes at $AC33-$AC36 (page $1E)."
  },
  {
   "address": 44055,
   "type": "line",
   "text": "The base of their columns, read at $AC37-$AC3A."
  },
  {
   "address": 44058,
   "type": "line",
   "text": "Piece 15 of the gate on the cliff ($AE3F). 8 rows of 2 bytes."
  },
  {
   "address": 44059,
   "type": "line",
   "text": "The base of their rows, read at $AC3B-$AC3E."
  },
  {
   "address": 44076,
   "type": "line",
   "text": "Four zeros."
  },
  {
   "address": 44080,
   "type": "line",
   "text": "JMP: the hero falling from the cliff, one step ($AC3F)."
  },
  {
   "address": 44083,
   "type": "line",
   "text": "The falling pictures' tables, as $AC13 + X reads them: low bytes $00 $4E $B9 $D3 (pictures at $1E00-$1F08), columns 7, 7, 6, 4 from the scroll, rows $84, $97, $9B, $A7."
  },
  {
   "address": 44095,
   "type": "line",
   "text": "One step of the fall: $A1 counts from $1F, set when the hero stepped off the cliff's edge ($B573). While it is below $23, the next two pictures of the falling hero are drawn ($AC52); from $30 the hero is dead ($B4EB)."
  },
  {
   "address": 44114,
   "type": "line",
   "text": "Draw falling picture X at its column moved with the scroll ($52 - $30) and one dot left of the scene's dot offset ($50), in store mode."
  },
  {
   "address": 44161,
   "type": "line",
   "text": "Zeros between the falling hero and the background's routines, to $AD02."
  },
  {
   "address": 44291,
   "type": "line",
   "text": "Seven JMPs: $AD03 the mountain and the fence posts, $AD06 the gate, $AD09 the gate's near post, drawn after the fighters, $AD0C the background where the gate was, $AD0F the whole background, $AD12 the fence posts covered where they were, $AD15 the rail's shape set up."
  },
  {
   "address": 44294,
   "type": "line",
   "text": "JMP: the gate ($AE7A)."
  },
  {
   "address": 44297,
   "type": "line",
   "text": "JMP: the gate's near post over the figures ($AF4D)."
  },
  {
   "address": 44300,
   "type": "line",
   "text": "JMP: cover the gate where it was ($AF76)."
  },
  {
   "address": 44303,
   "type": "line",
   "text": "JMP: the whole background ($B015)."
  },
  {
   "address": 44306,
   "type": "line",
   "text": "JMP: cover the fence posts where they were ($AD75)."
  },
  {
   "address": 44309,
   "type": "line",
   "text": "JMP: set up the rail's shape ($B069)."
  },
  {
   "address": 44312,
   "type": "line",
   "text": "Draw the fence's rail along the whole width, at row $68, two columns at a time."
  },
  {
   "address": 44336,
   "type": "line",
   "text": "Draw the mountain's top: $A948 at column $12, row $51, and $A976 at column $10, row $5C."
  },
  {
   "address": 44374,
   "type": "line",
   "text": "Draw the mountain's slopes ($ADD1) and the four fence posts, unless nothing has moved since this page was last drawn: the posts' column ($51), the scene's dot offset ($50) and $54 the same as two frames before ($AC, $AE)."
  },
  {
   "address": 44405,
   "type": "line",
   "text": "Cover the fence posts where they were drawn on this page two frames before ($AC, $AE) with the sky and rail behind them ($AA31), unless nothing has moved."
  },
  {
   "address": 44430,
   "type": "line",
   "text": "Draw four fence posts twelve columns apart from column X + 1, at dot Y + 1, row $64, in store mode; a post at columns $15-$7F is drawn mirrored, and a column past the right edge comes round 48 columns to the left."
  },
  {
   "address": 44497,
   "type": "line",
   "text": "Draw the mountain's lower slopes ($A9B8 at column $0F, row $64) and its foot and the far shore ($A9E2 at column $0C, row $6C)."
  },
  {
   "address": 44535,
   "type": "line",
   "text": "The gate's 18 pieces, low bytes ($AE3F). Piece 16 points into the engine at $8000 and is not drawn."
  },
  {
   "address": 44553,
   "type": "line",
   "text": "The gate's pieces, high bytes."
  },
  {
   "address": 44571,
   "type": "line",
   "text": "Each piece's column from the gate's ($52): added while $52 is $14 or more, taken away (and the piece mirrored) below that."
  },
  {
   "address": 44589,
   "type": "line",
   "text": "Each gate piece's top row."
  },
  {
   "address": 44607,
   "type": "line",
   "text": "Draw gate piece X at its row and at the gate's column ($52) plus its own, as it is, while $52 is $14 or more; below that (or negative), at $52 less its own, mirrored and right-aligned."
  },
  {
   "address": 44645,
   "type": "line",
   "text": "Draw the piece set up, as it is or mirrored by the gate's column ($52)."
  },
  {
   "address": 44666,
   "type": "line",
   "text": "Draw the gate on the cliff while the camera is on the hero ($4C = 0) and the gate's column ($52) is below $29 or at $FE-$FF. When anything has moved since this page was drawn ($54, $52 against $E1, $50 against $AE), the whole gate: pieces 5 and 8-13, the post below piece 13 down to row $66, pieces 14 and 15, then the second half below, with $3F = 1. When nothing has moved, $3F is set by where the fighters stand against the gate, and only when it is 1 is the second half drawn again: piece 1 repeated down to row $97, pieces 2, 3, 4, 6 and 7, the post down to row $66 and piece $11. $3F also has the near post drawn over the figures ($AF4D)."
  },
  {
   "address": 44877,
   "type": "line",
   "text": "When $3F is set and the gate is in sight, draw its near post again over the figures: piece 0, then repeated down to row $AA."
  },
  {
   "address": 44918,
   "type": "line",
   "text": "Cover the gate where it was drawn on this page two frames before ($E1): with $E1 at $14-$27, from column $1C to the right edge, the sky down to the rail, the rail, the floor's colours and the black above the floor, and column $1B on rows $54-$55; with $E1 below $14 or at $FE-$FF, the same from column 0 to $0A, the rail to $0B. Nothing is done when nothing has moved."
  },
  {
   "address": 45077,
   "type": "line",
   "text": "Draw the whole background: the sky ($D5 and $AA, blue) down to row $67, the floor's four colours from row $99 to $B4, black between them and below, the rail along the whole width ($AD18) and the mountain's top ($AD30)."
  },
  {
   "address": 45161,
   "type": "line",
   "text": "Set up the rail's shape ($AA11) at row $68, dot 0, store mode."
  },
  {
   "address": 45182,
   "type": "line",
   "text": "Bytes left from an earlier build: the end of a routine and a loop that draws gate pieces through $B04A. Nothing runs them."
  },
  {
   "address": 45248,
   "type": "line",
   "text": "JMP: the cliff's edge ($B0C6); JMP: cover it where it was ($B1C6)."
  },
  {
   "address": 45251,
   "type": "line",
   "text": "JMP: cover the cliff's edge where it was ($B1C6)."
  },
  {
   "address": 45254,
   "type": "line",
   "text": "On the first screen ($44 = 0) with the scroll at $23 or more, so that the end of the cliff is in sight, draw it, unless nothing has moved and both fighters are well right of it: the sea's black and blue, the cliff's top, the rock face (edge pieces 0, 2, 3, repeated down to row $97) and the ledge below (4, in AND mode)."
  },
  {
   "address": 45466,
   "type": "line",
   "text": "The cliff edge's five pieces, low bytes ($B1AE)."
  },
  {
   "address": 45471,
   "type": "line",
   "text": "Their high bytes."
  },
  {
   "address": 45476,
   "type": "line",
   "text": "Their columns from the scroll's ($80 = $52 - $30)."
  },
  {
   "address": 45481,
   "type": "line",
   "text": "Their top rows."
  },
  {
   "address": 45486,
   "type": "line",
   "text": "Set up edge piece X: its shape, its row, its column from $80."
  },
  {
   "address": 45510,
   "type": "line",
   "text": "Cover the cliff's edge where it was drawn two frames before ($E1), on the first screen: the rail from column 0 to $0C, then black and the floor's colours over its columns."
  },
  {
   "address": 45629,
   "type": "line",
   "text": "Bytes left from an earlier build of the routine before: fills through $0A00 and $0A03, and a call to $0D00. Nothing runs them."
  },
  {
   "address": 45664,
   "type": "line",
   "text": "Move the scene with the hero, once a frame. On the first screen ($44 = 0) a hero at column $2A or more sets $AF when no guard is coming on ($30), which in the title ends the demo ($B5D3); with a guard coming on, a hero at column $21 or more would take the scene to the second screen ($B2EC), but nothing in the title sets $30, so the demo stays on the first screen. On the second screen, at column $2A or more, $D0 = 2. A hero left of column 3 goes back to the first screen ($B2CF) from the second, and on the first starts the scene scrolling right. Elsewhere the scene scrolls to bring him to column $0F: from the left of it towards the right ($B381), from the right of it towards the left ($B30F). The scroll ($52) runs from $30 down to $1B on the first screen, and from $0B down on the second."
  },
  {
   "address": 45737,
   "type": "line",
   "text": "Stop the scroll: $53 = 0."
  },
  {
   "address": 45768,
   "type": "line",
   "text": "Start the scene scrolling right: $53 = 1."
  },
  {
   "address": 45775,
   "type": "line",
   "text": "Back to the first screen: $44 = 0, the scroll at $1B, every figure moved $1A columns right ($B3DF) and the fence two columns; then an opponent left of the screen ($72 negative) is moved ten columns further left."
  },
  {
   "address": 45804,
   "type": "line",
   "text": "On to the second screen: $44 = 1, the scroll at $0B, dot 0, every figure moved $1A columns left and the fence two columns; then an opponent left of the screen is moved ten columns right. The demo never comes here ($B260)."
  },
  {
   "address": 45839,
   "type": "line",
   "text": "Scroll towards the left: the speed $53 is brought two dots a frame towards -4 (in the stance), -6 (standing) or -10 (running, legs sequence $42-$49)."
  },
  {
   "address": 45882,
   "type": "line",
   "text": "Move the scene by $53 dots, at most six at a time: the dot offset $50 goes down, and each time it passes 0 every figure ($62, $72), the scroll ($52), the hawk's column ($91) and the fence ($51, coming round from -9 to 39) move a column left. Reaching $1A, everything is put back a column and the scroll stops at $1B."
  },
  {
   "address": 45898,
   "type": "line",
   "text": "Add A dots to the scene's offset."
  },
  {
   "address": 45953,
   "type": "line",
   "text": "Scroll towards the right: the speed $53 is brought two dots a frame towards +4."
  },
  {
   "address": 45976,
   "type": "line",
   "text": "Move the scene right by $53 dots, every figure and the fence a column right each time the offset passes 6; the scroll stops with dot 1 at $52 = $30, the start of the first screen, and with dot 0 at $0B, the start of the second."
  },
  {
   "address": 46047,
   "type": "line",
   "text": "Add A to every figure's column: the hero ($62), the opponent ($72) and the hawk ($91)."
  },
  {
   "address": 46071,
   "type": "line",
   "text": "An RTS left from an earlier build and eight zeros."
  },
  {
   "address": 46080,
   "type": "line",
   "text": "The demo begins, after the title. The guard's chances of a kick, a punch and a step forward ($D7-$D9) and the demo hero's ($DB) all $FF; $4A, the distance at which the hero stops running and takes the stance, 15-22 at random ($B711); the fighters' records ($7000); the arrows' recovery intervals ($B8, $B9) $FF and the sampled sound's speed ($BA) 30; the dot offset 1; both fighters alive ($5D, $5E); the scroll and its copies at $30; the fence at -2; the hawk's places ($91, $94) at $50; the cuts and the sounds cleared; both pages to be drawn whole ($5F, $54); 14 arrows each ($B0, $B1), the opponent's ($B72E) and the hero's ($B73F); headgear 0 ($3E); the opponent a guard ($4D = 0); the climb from picture $0B ($99). Then a clear page, the scene in Akuma's chamber and Mariko's cell ($79A3), and the guard's record ($7003)."
  },
  {
   "address": 46277,
   "type": "line",
   "text": "Draw the first frame and wipe it onto the screen ($7606); then the climb's frames, each with the frame's end ($7600) and the key check ($B763), until $99 is 0; the tune after the climb ($1009); then the demo's frames for ever, until a key starts a game ($B7DE) or the demo ends ($B766)."
  },
  {
   "address": 46311,
   "type": "line",
   "text": "One frame of the demo. While the hero falls ($A1): at $30 he is dead, without arrows, with the struck sound ($42), and the frame is drawn and ended before the death tune and the way back to the title ($B529); below $30, the frame without the hero's move. With the hero lying dead (legs $13 at $60; $90 is always 5 here), the guard lying dead or standing (legs 7) ends the demo the same way; so would Akuma (type 5) at once, or another type than a guard in the stance, but the demo's opponent is always a guard."
  },
  {
   "address": 46383,
   "type": "line",
   "text": "The fight's part of the frame. The first frame the guard lies dead with the hero alive in the stance: the tune of a guard beaten ($88), $82 set, the hero's arrows back quickly ($B8 = 1), and while his most is 9 or more, one fewer for him ($B0) and one more for the guard ($B1), his arrows cut to his new most ($B73F). Then, unless the hero falls or climbs, the start of the fall when he has stepped off the edge ($A2: $A1 = $1F, $5D cleared, legs $13), or else the hero's move ($B69A); $B569 tests $44 against 3, but its branch goes to the next instruction either way."
  },
  {
   "address": 46468,
   "type": "line",
   "text": "The guard's move: $34 = $FE (nothing reads it), then his brain and his step ($6B00, $6400) with the guard as the working figure. With both alive, the blows tested both ways every frame ($7366) and applied ($701E); the arrows given back ($0B0F); $96 set when the hero is dead, which nothing in the title reads; the scroll ($B260), and the end of the demo when it sets $AF ($B766)."
  },
  {
   "address": 46554,
   "type": "line",
   "text": "Draw the frame (a test of $C4 here branches to the next instruction either way): the bands behind the figures cleared ($678C, $6780), the fence posts, the cliff's edge and the gate covered where they were, the whole background while $5F counts ($A306), the arrows' strip ($0B00), the mountain and the posts, the gate and the cliff's edge; then, unless the hero climbs, the feet masks: the hero's unless he falls, and the guard's while he is on the screen. The climb ends when $99 reaches $17."
  },
  {
   "address": 46646,
   "type": "line",
   "text": "The figures: the hero's arrows ($0B03); the climb's pictures while $99 counts ($B71E), the fall while $A1 counts (with a pause, the Monitor's WAIT), or the hero ($6783); the guard when he is on the screen, with his feet mask when he lies dead, his arrows and the star of a blow on the hero ($74C0); the star of a blow on the guard; the gate's near post ($AD09) and the positions kept ($A309)."
  },
  {
   "address": 46746,
   "type": "line",
   "text": "The hero's move in the demo, as the working figure ($34 = 0, never read). With no guard alive: while the beaten tune is asked for ($88) or the guard does not yet lie dead, the hero stays and changes his arms ($D1); once the guard lies dead, arms held in guard (torso $1C, $1D) drop (torso 6). From column $25 on he runs on by himself, with $82 = $C8; otherwise the brain at $A000 plays him. When his legs' sequence reaches position $15, the end of taking the stance, the sampled sound plays at speed $1E. With the camera on him ($4C = 0) and his column on the screen ($30 - $52 + $22) below $0B, he has stepped off the cliff's edge: $A2 = 1."
  },
  {
   "address": 46858,
   "type": "line",
   "text": "Set off the sampled sound ($4E) at the speed in A ($BA)."
  },
  {
   "address": 46865,
   "type": "line",
   "text": "The title's own random numbers: $48 = $48 times 5 plus $0B, in A; used once, for $4A ($B40A)."
  },
  {
   "address": 46878,
   "type": "line",
   "text": "Draw climbing pictures X + 1 and X + 2, in store mode at dot 0, and return X + 2."
  },
  {
   "address": 46894,
   "type": "line",
   "text": "Give the opponent his arrows ($B7 = $B1), his arrows' place at the bottom right ($B3, $B5) and $5B cleared."
  },
  {
   "address": 46911,
   "type": "line",
   "text": "Give the hero his arrows ($B6 = $B0), with $B2 = 1 and $B4, $5C cleared."
  },
  {
   "address": 46928,
   "type": "line",
   "text": "Bytes left from an earlier build: the end of a JSR $A350 and a copy of the start of $B72E. Nothing runs them."
  },
  {
   "address": 46944,
   "type": "line",
   "text": "Three JMPs: $B760 the title, where the stage's entry ($BFFA) jumps; $B763 the check for a key or a button, which the engine also calls between the frames of its cutscenes ($7C47); $B766 back to the title after the demo."
  },
  {
   "address": 46947,
   "type": "line",
   "text": "JMP: check for a key or a button that starts a game ($B7F5)."
  },
  {
   "address": 46950,
   "type": "line",
   "text": "JMP: back to the title after the demo ($B769)."
  },
  {
   "address": 46953,
   "type": "line",
   "text": "After the demo: a pause of $50 times 256 key checks ($B823), a blank page shown, another pause, then the title from the start."
  },
  {
   "address": 46969,
   "type": "line",
   "text": "The title. The buttons are read ($B7EA), so that one already held does not start a game; then the Broderbund crown and name ($B898) with \"presents\" ($B8C2); a blank page; \"a game by jordan mechner\" ($B8CE); a blank page; the karateka logo ($B8E6), then on the other page the logo again with the copyright line under it ($B8F3); a blank page; the prologue's scroll ($B833); then the demo ($B895). Each page is drawn while the other is shown and then shown ($0783), with a pause of $50 or $A0 times 256 key checks after it ($B823)."
  },
  {
   "address": 47070,
   "type": "line",
   "text": "Start a game: the buttons read again, the music and the sound both turned on ($86, $4F), whatever CONTROL-S had set, and the engine's start ($0209)."
  },
  {
   "address": 47082,
   "type": "line",
   "text": "Read the two buttons ($C061, $C062) into $46 and $47; bit 7 is set while a button is held."
  },
  {
   "address": 47093,
   "type": "line",
   "text": "The title's check for a start, made between the steps of everything it draws: $48 counted up; a key goes through the special keys ($7603) and its strobe is cleared, and a key that is not a special one ($91) starts a game ($B7DE); so does a button pressed since the last look ($46, $47). Then the buttons are read again."
  },
  {
   "address": 47139,
   "type": "line",
   "text": "Wait X times 256 key checks ($B7F5), keeping the inner count in $80."
  },
  {
   "address": 47155,
   "type": "line",
   "text": "The prologue's scroll. The page shown goes into $E4 and the pages flip ($0783). For each line from 4 to $23 ($E7), seven steps: the screen moves up two rows ($0780), the bottom two rows go black ($B87C), the line is drawn at row $E8, which goes from $BF up to $B3 ($B867), and the pages flip, with a key check before and after. The lines from $16 on have no text and scroll the last ones up and off the top."
  },
  {
   "address": 47207,
   "type": "line",
   "text": "Draw prologue line $E7 at row $E8 ($0700) when there is one, below $16; otherwise a pause of 256 key checks."
  },
  {
   "address": 47228,
   "type": "line",
   "text": "Black over the bottom two rows ($BE-$BF), all 40 columns, with the engine's rectangle fill ($0A00)."
  },
  {
   "address": 47253,
   "type": "line",
   "text": "JMP: the demo ($B400)."
  },
  {
   "address": 47256,
   "type": "line",
   "text": "The Broderbund crown ($A126) at column $11, row $48, and the company's name ($A16E) at column $0C, row $58, both at dot 0 and stored over the page ($0F = 1)."
  },
  {
   "address": 47298,
   "type": "line",
   "text": "Draw \"presents\", text line 0, at row $6E."
  },
  {
   "address": 47310,
   "type": "line",
   "text": "Draw \"a game by\" (line 1) at row $55 and \"jordan mechner\" (line 2) at row $63."
  },
  {
   "address": 47334,
   "type": "line",
   "text": "Draw the karateka logo: its eleven pieces ($B90A), from the last to the first, ORed ($0F = 0)."
  },
  {
   "address": 47347,
   "type": "line",
   "text": "Draw the copyright line ($1F09) at column 8, row $B4, dot 0, ORed like the logo."
  },
  {
   "address": 47370,
   "type": "line",
   "text": "Draw logo piece X at the column, row and dot offset its tables give."
  },
  {
   "address": 47398,
   "type": "line",
   "text": "The logo's eleven pieces, low bytes: 0-2 the three a's ($BBEC), 3 and 4 the two k's ($BCA7), 5 and 6 the tops of the k's ($BD5D), 7 the t ($BD75), 8 the e ($BE44), 9 the r ($BF24), 10 a small piece where the r meets the a ($BFE4)."
  },
  {
   "address": 47409,
   "type": "line",
   "text": "The logo pieces' high bytes."
  },
  {
   "address": 47420,
   "type": "line",
   "text": "The logo pieces' byte columns: k at 0, a 5, r 9, a $0F, t $13, e $18, k $1D, a $22."
  },
  {
   "address": 47431,
   "type": "line",
   "text": "Their top rows, $45 for the tops of the k's, $4B-$50 for the letters, $70 for piece 10."
  },
  {
   "address": 47442,
   "type": "line",
   "text": "Their dot offsets, 0-6; then three bytes nothing reads."
  },
  {
   "address": 47456,
   "type": "line",
   "text": "Point $E5 and $E6 at text line X, for the engine's text routine ($0700)."
  },
  {
   "address": 47467,
   "type": "line",
   "text": "Line 0, \"presents\", at byte column $0E, dot 3. The title's words are in the game's own alphabet ($0700): each line a byte column, a dot offset and character codes, $60 a space, $61-$7A the letters a-z, $7B a full stop, $7C a comma, $7D a colon and $7E a hyphen, ended by $5F."
  },
  {
   "address": 47478,
   "type": "line",
   "text": "Line 1, \"a game by\", at byte column $0E, dot 0."
  },
  {
   "address": 47490,
   "type": "line",
   "text": "Line 2, \"jordan mechner\", at byte column $0A, dot 3."
  },
  {
   "address": 47507,
   "type": "line",
   "text": "Lines 3 and 4 both point here, and the prologue starts at line 4 ($B83A): \"high atop a craggy cliff, guarded\", from the left edge."
  },
  {
   "address": 47543,
   "type": "line",
   "text": "Line 5: \"by an army of fierce warriors,\"."
  },
  {
   "address": 47576,
   "type": "line",
   "text": "Line 6: \"stands the fortress of the evil\"."
  },
  {
   "address": 47610,
   "type": "line",
   "text": "Line 7: \"warlord akuma.  deep in the\"."
  },
  {
   "address": 47640,
   "type": "line",
   "text": "Line 8: \"darkest dungeon of the castle,\"."
  },
  {
   "address": 47673,
   "type": "line",
   "text": "Line 9: \"akuma gloats over his lovely\"."
  },
  {
   "address": 47704,
   "type": "line",
   "text": "Line 10: \"captive, the princess mariko.\"."
  },
  {
   "address": 47736,
   "type": "line",
   "text": "Line 11, a blank line between the prologue's paragraphs."
  },
  {
   "address": 47739,
   "type": "line",
   "text": "Line 12: \"you are one trained in the way\"."
  },
  {
   "address": 47772,
   "type": "line",
   "text": "Line 13: \"of karate: a karateka.  alone and\"."
  },
  {
   "address": 47808,
   "type": "line",
   "text": "Line 14: \"unarmed, you must defeat akuma\"."
  },
  {
   "address": 47841,
   "type": "line",
   "text": "Line 15: \"and rescue the beautiful mariko.\"."
  },
  {
   "address": 47876,
   "type": "line",
   "text": "Line 16, blank again, before the last paragraph."
  },
  {
   "address": 47879,
   "type": "line",
   "text": "Line 17: \"put fear and self-concern behind\"."
  },
  {
   "address": 47914,
   "type": "line",
   "text": "Line 18: \"you.  focus your will on your\"."
  },
  {
   "address": 47946,
   "type": "line",
   "text": "Line 19: \"objective, accepting death as a\"."
  },
  {
   "address": 47980,
   "type": "line",
   "text": "Line 20: \"possibility.  this is the way of\"."
  },
  {
   "address": 48015,
   "type": "line",
   "text": "Line 21: \"the karateka.\"."
  },
  {
   "address": 48031,
   "type": "line",
   "text": "Text lines 0-$15, low bytes."
  },
  {
   "address": 48053,
   "type": "line",
   "text": "The text lines' high bytes; then 33 bytes in the same form that nothing reads."
  },
  {
   "address": 48108,
   "type": "line",
   "text": "The letter a of the logo, drawn three times (pieces 0-2). 37 rows of 5 bytes."
  },
  {
   "address": 48295,
   "type": "line",
   "text": "The letter k, drawn twice (pieces 3 and 4). 36 rows of 5 bytes."
  },
  {
   "address": 48477,
   "type": "line",
   "text": "The top of each k's stem (pieces 5 and 6). 11 rows of 2 bytes."
  },
  {
   "address": 48501,
   "type": "line",
   "text": "The letter t (piece 7). 41 rows of 5 bytes."
  },
  {
   "address": 48708,
   "type": "line",
   "text": "The letter e (piece 8). 37 rows of 6 bytes."
  },
  {
   "address": 48932,
   "type": "line",
   "text": "The letter r (piece 9). 38 rows of 5 bytes."
  },
  {
   "address": 49121,
   "type": "line",
   "text": "The base of the brain's first table of thresholds ($6BBB, $6BD1), read as $BFE1 + X with X the distance held to 7-11, so at $BFE8-$BFEC; the three bytes here are the end of the r."
  },
  {
   "address": 49124,
   "type": "line",
   "text": "Piece 10, two rows of one byte, $8A and $82, where the r meets the a."
  },
  {
   "address": 49126,
   "type": "line",
   "text": "The base of the brain's second table ($6BD6), read at $BFED-$BFF1."
  },
  {
   "address": 49128,
   "type": "line",
   "text": "The demo guard's thresholds, which the opponents' brain ($6B00) reads from these bytes in the title: no blow at or above $FF $FF $C0 $B0 $90; then ($BFED-$BFF1) a kick at or above $C0 $A0 $30 $90 $90; then ($BFF2-$BFF6) a punch at or above $00 $00 $00 $90 $90, and a step forward below it."
  },
  {
   "address": 49131,
   "type": "line",
   "text": "The base of the third table ($6BC0, $6BDB), read at $BFF2-$BFF6."
  },
  {
   "address": 49138,
   "type": "line",
   "text": "The base of the fourth ($6C38), read at $BFF9-$BFFD: $80, then the JMP below and the stage number; with no blow, at the legs' sequence position 3, a random byte below it steps forward and any other halts. $BFF7 and $BFF8 are not read."
  },
  {
   "address": 49146,
   "type": "line",
   "text": "The stage's entry, where the engine jumps after loading it ($022C): JMP $B760, the title."
  },
  {
   "address": 49149,
   "type": "line",
   "text": "The stage's number, 0, checked by the engine's loader ($020C) with the next two."
  },
  {
   "address": 49150,
   "type": "line",
   "text": "The stage number EOR $3B."
  },
  {
   "address": 49151,
   "type": "line",
   "text": "The stage number EOR $49."
  }
 ]
}