{
 "schema": 1,
 "platform": "apple2",
 "game": "karateka",
 "part": "palace",
 "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": 4169,
   "type": "Code"
  },
  {
   "start": 4170,
   "end": 4375,
   "type": "Byte"
  },
  {
   "start": 4376,
   "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": 44415,
   "type": "Byte"
  },
  {
   "start": 44416,
   "end": 44933,
   "type": "Code"
  },
  {
   "start": 44934,
   "end": 45055,
   "type": "Byte"
  },
  {
   "start": 45056,
   "end": 45229,
   "type": "Code"
  },
  {
   "start": 45230,
   "end": 45311,
   "type": "Byte"
  },
  {
   "start": 45312,
   "end": 45323,
   "type": "Code"
  },
  {
   "start": 45324,
   "end": 45367,
   "type": "Byte"
  },
  {
   "start": 45368,
   "end": 45625,
   "type": "Code"
  },
  {
   "start": 45626,
   "end": 45695,
   "type": "Byte"
  },
  {
   "start": 45696,
   "end": 45955,
   "type": "Code"
  },
  {
   "start": 45956,
   "end": 46079,
   "type": "Byte"
  },
  {
   "start": 46080,
   "end": 46336,
   "type": "Code"
  },
  {
   "start": 46337,
   "end": 46463,
   "type": "Byte"
  },
  {
   "start": 46464,
   "end": 46663,
   "type": "Code"
  },
  {
   "start": 46664,
   "end": 46667,
   "type": "Byte"
  },
  {
   "start": 46668,
   "end": 46728,
   "type": "Code"
  },
  {
   "start": 46729,
   "end": 46847,
   "type": "Byte"
  },
  {
   "start": 46848,
   "end": 48196,
   "type": "Code"
  },
  {
   "start": 48197,
   "end": 48383,
   "type": "Byte"
  },
  {
   "start": 48384,
   "end": 48599,
   "type": "Code"
  },
  {
   "start": 48600,
   "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": 4127,
   "name": "r_101F",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 4128,
   "name": "j_1020",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4135,
   "name": "j_1027",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4142,
   "name": "j_102E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4149,
   "name": "j_1035",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4156,
   "name": "j_103C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4163,
   "name": "j_1043",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4170,
   "name": "tune_death",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4222,
   "name": "tune_beaten",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4259,
   "name": "tune_cell1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4282,
   "name": "tune_cell2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4313,
   "name": "tune_akuma",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4329,
   "name": "tune_arm",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4373,
   "name": "b_1115",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4397,
   "name": "j_112D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 4404,
   "name": "b_1134",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4448,
   "name": "b_1160",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4464,
   "name": "b_1170",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4478,
   "name": "b_117E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4499,
   "name": "b_1193",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4518,
   "name": "s_11A6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 4542,
   "name": "b_11BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 4545,
   "name": "s_11C1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "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": 5632,
   "name": "mariko_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5694,
   "name": "mariko_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5741,
   "name": "mariko_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5777,
   "name": "mariko_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5806,
   "name": "mariko_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 5886,
   "name": "mariko_25",
   "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": 40960,
   "name": "teeth_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40982,
   "name": "teeth_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41004,
   "name": "teeth_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41036,
   "name": "teeth_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41083,
   "name": "teeth_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41140,
   "name": "teeth_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41212,
   "name": "bars_row",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41219,
   "name": "gate_post",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41261,
   "name": "gate_shadow",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41452,
   "name": "gate_pillar",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 41588,
   "name": "gate_house",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42200,
   "name": "window_post",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42224,
   "name": "window_post_cover",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42310,
   "name": "door_edge",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42386,
   "name": "fuji_top",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42424,
   "name": "fuji_foot",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42498,
   "name": "doors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43476,
   "name": "unused_scraps",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43717,
   "name": "hawk_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43819,
   "name": "hawk_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43876,
   "name": "hawk_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43953,
   "name": "hawk_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44045,
   "name": "hawk_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44173,
   "name": "hawk_shadow_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44200,
   "name": "hawk_shadow_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44247,
   "name": "hawk_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44329,
   "name": "crushed_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44352,
   "name": "crushed_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44372,
   "name": "crushed_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 44416,
   "name": "cut_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 44419,
   "name": "s_AD83",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44422,
   "name": "s_AD86",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44425,
   "name": "s_AD89",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44428,
   "name": "s_AD8C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44431,
   "name": "cut_guard",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44459,
   "name": "b_ADAB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44481,
   "name": "b_ADC1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44549,
   "name": "b_AE05",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44551,
   "name": "b_AE07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44574,
   "name": "b_AE1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44590,
   "name": "cut_run",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44634,
   "name": "b_AE5A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44696,
   "name": "b_AE98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44735,
   "name": "j_AEBF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 44744,
   "name": "r_AEC8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44745,
   "name": "s_AEC9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44752,
   "name": "s_AED0",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44762,
   "name": "b_AEDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44782,
   "name": "b_AEEE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 44785,
   "name": "s_AEF1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44810,
   "name": "s_AF0A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44829,
   "name": "keep_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44891,
   "name": "r_AF5B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 44892,
   "name": "s_AF5C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44897,
   "name": "mariko_cell",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 44922,
   "name": "s_AF7A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45056,
   "name": "doors_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45059,
   "name": "s_B003",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45062,
   "name": "j_B006",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45070,
   "name": "b_B00E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45098,
   "name": "r_B02A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45099,
   "name": "b_B02B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45148,
   "name": "j_B05C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45164,
   "name": "b_B06C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45172,
   "name": "r_B074",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45173,
   "name": "b_B075",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45312,
   "name": "gate_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45315,
   "name": "s_B103",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45318,
   "name": "s_B106",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45324,
   "name": "gate_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45335,
   "name": "gate_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45346,
   "name": "gate_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45357,
   "name": "gate_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45358,
   "name": "f_B12E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 45368,
   "name": "s_B138",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45397,
   "name": "r_B155",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45398,
   "name": "j_B156",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45430,
   "name": "b_B176",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45435,
   "name": "b_B17B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45445,
   "name": "j_B185",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45475,
   "name": "b_B1A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45489,
   "name": "j_B1B1",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45505,
   "name": "b_B1C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45533,
   "name": "s_B1DD",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45563,
   "name": "b_B1FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45571,
   "name": "r_B203",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45572,
   "name": "b_B204",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45588,
   "name": "j_B214",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45592,
   "name": "b_B218",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45602,
   "name": "b_B222",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45696,
   "name": "hall_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45699,
   "name": "s_B283",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45702,
   "name": "s_B286",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45705,
   "name": "j_B289",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45708,
   "name": "j_B28C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45744,
   "name": "j_B2B0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45802,
   "name": "j_B2EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45819,
   "name": "b_B2FB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45833,
   "name": "b_B309",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45836,
   "name": "j_B30C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45854,
   "name": "r_B31E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45855,
   "name": "j_B31F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45872,
   "name": "b_B330",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45883,
   "name": "j_B33B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45900,
   "name": "b_B34C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45914,
   "name": "s_B35A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46080,
   "name": "scroll",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46091,
   "name": "b_B40B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46101,
   "name": "b_B415",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46109,
   "name": "b_B41D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46120,
   "name": "b_B428",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46123,
   "name": "b_B42B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46128,
   "name": "b_B430",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46136,
   "name": "b_B438",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46144,
   "name": "j_B440",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46164,
   "name": "b_B454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46182,
   "name": "b_B466",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46187,
   "name": "b_B46B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46203,
   "name": "b_B47B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46211,
   "name": "b_B483",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46235,
   "name": "b_B49B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46257,
   "name": "r_B4B1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46258,
   "name": "j_B4B2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46276,
   "name": "b_B4C4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46281,
   "name": "b_B4C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46292,
   "name": "b_B4D4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46302,
   "name": "b_B4DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46326,
   "name": "b_B4F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46336,
   "name": "r_B500",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46464,
   "name": "hawk_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46467,
   "name": "s_B583",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46470,
   "name": "s_B586",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46473,
   "name": "hawk_move",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46480,
   "name": "b_B590",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46491,
   "name": "b_B59B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46534,
   "name": "b_B5C6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46557,
   "name": "b_B5DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46560,
   "name": "b_B5E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46592,
   "name": "b_B600",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46602,
   "name": "j_B60A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46617,
   "name": "j_B619",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46632,
   "name": "b_B628",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46645,
   "name": "r_B635",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46646,
   "name": "j_B636",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46661,
   "name": "b_B645",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46664,
   "name": "hawk_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46668,
   "name": "s_B64C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 46675,
   "name": "hawk_send",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46725,
   "name": "r_B685",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46726,
   "name": "b_B686",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46848,
   "name": "palace_start",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 46947,
   "name": "s_B763",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 47053,
   "name": "j_B7CD",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47062,
   "name": "palace_frame",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47091,
   "name": "b_B7F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47097,
   "name": "b_B7F9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47130,
   "name": "b_B81A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47133,
   "name": "b_B81D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47141,
   "name": "b_B825",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47152,
   "name": "b_B830",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47178,
   "name": "b_B84A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47212,
   "name": "b_B86C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47230,
   "name": "b_B87E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47256,
   "name": "b_B898",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47260,
   "name": "b_B89C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47263,
   "name": "j_B89F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47266,
   "name": "b_B8A2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47323,
   "name": "b_B8DB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47335,
   "name": "b_B8E7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47347,
   "name": "b_B8F3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47361,
   "name": "b_B901",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47371,
   "name": "b_B90B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47382,
   "name": "b_B916",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47397,
   "name": "b_B925",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47417,
   "name": "b_B939",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47421,
   "name": "b_B93D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47435,
   "name": "b_B94B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47441,
   "name": "b_B951",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47463,
   "name": "b_B967",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47518,
   "name": "b_B99E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47520,
   "name": "b_B9A0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47530,
   "name": "b_B9AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47542,
   "name": "b_B9B6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47577,
   "name": "b_B9D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47581,
   "name": "b_B9DD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47583,
   "name": "b_B9DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47602,
   "name": "b_B9F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47633,
   "name": "b_BA11",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47636,
   "name": "b_BA14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47642,
   "name": "j_BA1A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47687,
   "name": "b_BA47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47703,
   "name": "b_BA57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47722,
   "name": "b_BA6A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47732,
   "name": "b_BA74",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47746,
   "name": "b_BA82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47765,
   "name": "b_BA95",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47768,
   "name": "b_BA98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47785,
   "name": "b_BAA9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47808,
   "name": "b_BAC0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47882,
   "name": "b_BB0A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47885,
   "name": "b_BB0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47915,
   "name": "b_BB2B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47925,
   "name": "b_BB35",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47934,
   "name": "b_BB3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47948,
   "name": "b_BB4C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 47970,
   "name": "hero_move",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48001,
   "name": "b_BB81",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48014,
   "name": "b_BB8E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48026,
   "name": "b_BB9A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48044,
   "name": "b_BBAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48047,
   "name": "j_BBAF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48063,
   "name": "b_BBBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48082,
   "name": "b_BBD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48085,
   "name": "s_BBD5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 48092,
   "name": "s_BBDC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 48105,
   "name": "s_BBE9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 48128,
   "name": "j_BC00",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48131,
   "name": "r_BC03",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48132,
   "name": "s_BC04",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 48169,
   "name": "b_BC29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48178,
   "name": "r_BC32",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48179,
   "name": "guard_chances",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48196,
   "name": "f_BC44",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48197,
   "name": "chance_kick",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48201,
   "name": "f_BC49",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48202,
   "name": "chance_punch",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48206,
   "name": "f_BC4E",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 48207,
   "name": "chance_step",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48384,
   "name": "hawk_draw_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 48387,
   "name": "s_BD03",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 48461,
   "name": "b_BD4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48470,
   "name": "r_BD56",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48471,
   "name": "hawk_draw",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 48511,
   "name": "b_BD7F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48515,
   "name": "b_BD83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48521,
   "name": "b_BD89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48545,
   "name": "b_BDA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48551,
   "name": "b_BDA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48597,
   "name": "b_BDD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 48600,
   "name": "hawk_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48606,
   "name": "hawk_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48612,
   "name": "hawk_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 48640,
   "name": "hat1_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48672,
   "name": "hat1_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48707,
   "name": "hat1_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48736,
   "name": "hat2_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48768,
   "name": "hat2_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48803,
   "name": "hat2_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48832,
   "name": "hat3_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48864,
   "name": "hat3_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48899,
   "name": "hat3_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48928,
   "name": "hat4_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48960,
   "name": "hat4_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 48995,
   "name": "hat4_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49024,
   "name": "hat5_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49056,
   "name": "hat5_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49091,
   "name": "hat5_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49121,
   "name": "brain_t1",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49126,
   "name": "brain_t2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49131,
   "name": "brain_t3",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49138,
   "name": "brain_t4",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 49146,
   "name": "palace_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, six JMPs: $1000 the four notes as Akuma's chamber is shown ($79C6), $1003 the hero's death, $1006 a guard beaten (asked for by $88 and played at the end of the frame), $1009 and $100F the two tunes of Mariko in her cell at the stage's start ($AF61), $100C Akuma raising his arm ($7A10). Each sets A and X to its tune and goes on to $1012."
  },
  {
   "address": 4099,
   "type": "line",
   "text": "JMP: the hero's death tune ($104A)."
  },
  {
   "address": 4102,
   "type": "line",
   "text": "JMP: the tune of a guard beaten ($107E)."
  },
  {
   "address": 4105,
   "type": "line",
   "text": "JMP: Mariko's first tune in her cell ($10A3)."
  },
  {
   "address": 4108,
   "type": "line",
   "text": "JMP: the tune of Akuma raising his arm ($10E9)."
  },
  {
   "address": 4111,
   "type": "line",
   "text": "JMP: Mariko's second tune in her cell ($10BA)."
  },
  {
   "address": 4114,
   "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": 4117,
   "type": "line",
   "text": "The engine's scene in Akuma's chamber calls $1015 ($7BBC), where the title stage has a JMP to its tune; that scene runs only in the title, and here $1015 is the middle of the STX at $1014."
  },
  {
   "address": 4128,
   "type": "line",
   "text": "The tunes' entries, each setting A and X and going on to $1012: $1020 the death ($104A), $1027 a guard beaten ($107E), $102E Mariko's first ($10A3), $1035 her second ($10BA), $103C the four notes ($10D9), $1043 Akuma's arm ($10E9)."
  },
  {
   "address": 4170,
   "type": "line",
   "text": "The hero's death ($1003): tempo 6, the second voice on the speaker ($C0), 16 notes of three bytes (a length and the pitch as a coarse and a fine count), $FF at the end."
  },
  {
   "address": 4222,
   "type": "line",
   "text": "A guard beaten ($1006): tempo 5, 11 notes."
  },
  {
   "address": 4259,
   "type": "line",
   "text": "Mariko's first tune in her cell ($1009): tempo 8, a $FD 2 command, six notes."
  },
  {
   "address": 4282,
   "type": "line",
   "text": "Her second ($100F): tempo 8, eight notes, with $FD 2 and $FD $41 commands."
  },
  {
   "address": 4313,
   "type": "line",
   "text": "Akuma's chamber ($1000): tempo 7, four notes."
  },
  {
   "address": 4329,
   "type": "line",
   "text": "Akuma raising his arm ($100C): tempo 4, seven notes."
  },
  {
   "address": 4354,
   "type": "line",
   "text": "The ends of three tunes in the same form that nothing plays; then at $1118 a JMP $B700, the last instruction of the earlier entry points after it, whose start the tunes cover."
  },
  {
   "address": 4376,
   "type": "line",
   "text": "JMP $B700: the last instruction of the earlier entry points ($111B), whose start the tunes cover; nothing jumps here."
  },
  {
   "address": 4379,
   "type": "line",
   "text": "An earlier version of the engine's entry points ($0200-$02CA), left in the stage: load stage $D0 ($0300), check $BFFF against $D0 EOR $49 and enter the stage at $B700; a call into the Monitor's MOVE ($FE2C); a wait for a key or a button; and THE END ($11A6), the picture at $9A74 drawn on both pages. It begins at $1115, under the tunes, and nothing calls it."
  },
  {
   "address": 4518,
   "type": "line",
   "text": "Clear the draw page, draw THE END ($11C1) and flip, twice, so that both pages show it."
  },
  {
   "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). The same picture serves as mariko_9, mariko_26. 43 rows of 3 bytes."
  },
  {
   "address": 5555,
   "type": "line",
   "text": "77 bytes after mariko_8, the same as the dungeon's and Akuma's chamber's at these addresses, in the form of picture rows; nothing in the palace points at them."
  },
  {
   "address": 5632,
   "type": "line",
   "text": "Mariko's part or pose 20 for the engine's tables ($7E3F). 20 rows of 3 bytes."
  },
  {
   "address": 5694,
   "type": "line",
   "text": "Mariko's part or pose 21 for the engine's tables ($7E3F). 15 rows of 3 bytes."
  },
  {
   "address": 5741,
   "type": "line",
   "text": "Mariko's part or pose 22 for the engine's tables ($7E3F). 17 rows of 2 bytes."
  },
  {
   "address": 5777,
   "type": "line",
   "text": "Mariko's part or pose 23 for the engine's tables ($7E3F). 9 rows of 3 bytes."
  },
  {
   "address": 5806,
   "type": "line",
   "text": "Mariko's part or pose 24 for the engine's tables ($7E3F). 26 rows of 3 bytes."
  },
  {
   "address": 5886,
   "type": "line",
   "text": "Mariko's part or pose 25 for the engine's tables ($7E3F). 38 rows of 3 bytes."
  },
  {
   "address": 6002,
   "type": "line",
   "text": "97 bytes that nothing in the palace points at: from $1773 the last 96 bytes of Mariko's pose 16 as the title and the cliff stages hold it at $175E, whose start mariko_25 covers here."
  },
  {
   "address": 6099,
   "type": "line",
   "text": "Mariko's part or pose 17 for the engine's tables ($7E3F). 14 rows of 6 bytes."
  },
  {
   "address": 6185,
   "type": "line",
   "text": "Mariko's part or pose 18 for the engine's tables ($7E3F). 10 rows of 6 bytes."
  },
  {
   "address": 6247,
   "type": "line",
   "text": "Mariko's part or pose 19 for the engine's tables ($7E3F). 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). 2 rows of 7 bytes."
  },
  {
   "address": 7380,
   "type": "line",
   "text": "Mariko's part or pose 6 for the engine's tables ($7E3F). 21 rows of 2 bytes."
  },
  {
   "address": 7424,
   "type": "line",
   "text": "Mariko's part or pose 5 for the engine's tables ($7E3F). 26 rows of 2 bytes."
  },
  {
   "address": 7478,
   "type": "line",
   "text": "Mariko's part or pose 1 for the engine's tables ($7E3F). 17 rows of 2 bytes."
  },
  {
   "address": 7514,
   "type": "line",
   "text": "Mariko's part or pose 2 for the engine's tables ($7E3F). 17 rows of 2 bytes."
  },
  {
   "address": 7550,
   "type": "line",
   "text": "Mariko's part or pose 3 for the engine's tables ($7E3F). 17 rows of 2 bytes."
  },
  {
   "address": 7586,
   "type": "line",
   "text": "Mariko's part or pose 4 for the engine's tables ($7E3F). 17 rows of 3 bytes."
  },
  {
   "address": 7639,
   "type": "line",
   "text": "Mariko's part or pose 0 for the engine's tables ($7E3F). 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, the cliff stage's four pictures at the same addresses with five bytes changed ($1E1F-$1E23, $1ECB-$1ECD); nothing in the palace draws them."
  },
  {
   "address": 7945,
   "type": "line",
   "text": "247 bytes the same as the dungeon's at these addresses, in the form of picture rows; nothing in the palace points at them."
  },
  {
   "address": 40960,
   "type": "line",
   "text": "The portcullis's teeth, piece 0 of the eleven ($B10C): the shortest, drawn while its bottom ($A7) is above row $7D ($B214). 4 rows of 5 bytes."
  },
  {
   "address": 40982,
   "type": "line",
   "text": "The portcullis's teeth, piece 1: its bottom at rows $7D-$84. 4 rows of 5 bytes."
  },
  {
   "address": 41004,
   "type": "line",
   "text": "The portcullis's teeth, piece 2: rows $85-$8B. 6 rows of 5 bytes."
  },
  {
   "address": 41036,
   "type": "line",
   "text": "The portcullis's teeth, piece 3: rows $8C-$93. 9 rows of 5 bytes."
  },
  {
   "address": 41083,
   "type": "line",
   "text": "The portcullis's teeth, piece 4: rows $94-$9A. 11 rows of 5 bytes."
  },
  {
   "address": 41140,
   "type": "line",
   "text": "The portcullis's teeth, piece 5, the longest: row $9B and below. 14 rows of 5 bytes."
  },
  {
   "address": 41212,
   "type": "line",
   "text": "Piece 6: one row of the portcullis's bars, drawn row by row from its top down to its bottom ($B185). 1 row of 5 bytes."
  },
  {
   "address": 41219,
   "type": "line",
   "text": "Piece 7: the post on the portcullis's left ($B156). 40 rows of 1 byte."
  },
  {
   "address": 41261,
   "type": "line",
   "text": "Piece 8: the portcullis's shadow on the floor in front of it, drawn at row $9A ($B156). 27 rows of 7 bytes."
  },
  {
   "address": 41452,
   "type": "line",
   "text": "Piece 9: the pillar on its right, drawn after the figures ($B185). 67 rows of 2 bytes."
  },
  {
   "address": 41588,
   "type": "line",
   "text": "Piece 10: the gatehouse's front, columns and beam, drawn when anything has moved ($B156). 61 rows of 10 bytes."
  },
  {
   "address": 42200,
   "type": "line",
   "text": "A post between the windows, drawn six times eight columns apart ($B2EA). 22 rows of 1 byte."
  },
  {
   "address": 42224,
   "type": "line",
   "text": "Black to cover a window post where it was ($B330). 22 rows of 1 byte."
  },
  {
   "address": 42248,
   "type": "line",
   "text": "Two pictures of 29 rows of 1 byte ($A508, $A527) that nothing in the palace draws."
  },
  {
   "address": 42310,
   "type": "line",
   "text": "The doors' edge, drawn eight columns right of them ($B051). 22 rows of 1 byte."
  },
  {
   "address": 42334,
   "type": "line",
   "text": "52 bytes of blue stripes ($AA $D5 in turn, with $85 $AB) that nothing in the palace points at."
  },
  {
   "address": 42386,
   "type": "line",
   "text": "Mount Fuji's top, seen through the windows ($B35A). 9 rows of 4 bytes."
  },
  {
   "address": 42424,
   "type": "line",
   "text": "Its lower slopes ($B375). 9 rows of 8 bytes."
  },
  {
   "address": 42498,
   "type": "line",
   "text": "The doors the hero comes in by, at the hall's left end ($B037). 122 rows of 8 bytes."
  },
  {
   "address": 43476,
   "type": "line",
   "text": "241 bytes after the doors that nothing in the palace points at: black ($80) with a few scraps of picture rows."
  },
  {
   "address": 43717,
   "type": "line",
   "text": "The hawk in flight, picture 0 of 0-5 ($BD57): 0-2 the wings' beat as it flies, 3-5 as it swoops on the hero. 20 rows of 5 bytes."
  },
  {
   "address": 43819,
   "type": "line",
   "text": "The hawk in flight, picture 1 of 0-5 ($BD57): 0-2 the wings' beat as it flies, 3-5 as it swoops on the hero. 11 rows of 5 bytes."
  },
  {
   "address": 43876,
   "type": "line",
   "text": "The hawk in flight, picture 2 of 0-5 ($BD57): 0-2 the wings' beat as it flies, 3-5 as it swoops on the hero. 15 rows of 5 bytes."
  },
  {
   "address": 43953,
   "type": "line",
   "text": "The hawk in flight, picture 3 of 0-5 ($BD57): 0-2 the wings' beat as it flies, 3-5 as it swoops on the hero. 18 rows of 5 bytes."
  },
  {
   "address": 44045,
   "type": "line",
   "text": "The hawk in flight, picture 5 of 0-5 ($BD57): 0-2 the wings' beat as it flies, 3-5 as it swoops on the hero. 21 rows of 6 bytes."
  },
  {
   "address": 44173,
   "type": "line",
   "text": "The hawk's shadow on the floor, drawn with AND before the hawk ($BD9D). 5 rows of 5 bytes."
  },
  {
   "address": 44200,
   "type": "line",
   "text": "Its shadow for pictures 1 and 5, two rows higher ($BDA5). 9 rows of 5 bytes."
  },
  {
   "address": 44247,
   "type": "line",
   "text": "The hawk in flight, picture 4 of 0-5 ($BD57): 0-2 the wings' beat as it flies, 3-5 as it swoops on the hero. 20 rows of 4 bytes."
  },
  {
   "address": 44329,
   "type": "line",
   "text": "Drawn over the hero lying dead under the portcullis ($BC04), at column $20, row $98. 7 rows of 3 bytes."
  },
  {
   "address": 44352,
   "type": "line",
   "text": "Drawn below it, at row $A0, while the portcullis's bottom is above row $8C ($BC27). 6 rows of 3 bytes."
  },
  {
   "address": 44372,
   "type": "line",
   "text": "Drawn there instead while its bottom is at rows $8C-$97 ($BC1B). 4 rows of 2 bytes."
  },
  {
   "address": 44382,
   "type": "line",
   "text": "34 bytes left from an earlier build of the cut routines that follow them; nothing runs them."
  },
  {
   "address": 44416,
   "type": "line",
   "text": "Five JMPs: $AD80 the cut to the next guard, $AD83 the cut to the guard running on, $AD86 the whole background while $5F counts, $AD89 keep the frame's positions, $AD8C Mariko in her cell."
  },
  {
   "address": 44419,
   "type": "line",
   "text": "JMP: the cut to the guard running on ($AE2E)."
  },
  {
   "address": 44422,
   "type": "line",
   "text": "JMP: the whole background while $5F counts ($AEBF)."
  },
  {
   "address": 44425,
   "type": "line",
   "text": "JMP: keep the frame's positions ($AF1D)."
  },
  {
   "address": 44428,
   "type": "line",
   "text": "JMP: Mariko in her cell, at the stage's start ($AF61)."
  },
  {
   "address": 44431,
   "type": "line",
   "text": "The cut to the next guard: with the dot offset kept ($31), a cutscene counted ($36), $82 cleared and the fence's column ($51) kept on the stack, the guard's record is set up ($AF0A). When the hero is near the doors (the scroll $52 at 0 or $55 and over), the camera moves to the hall's far end: the guard running ($AEF1) comes on from column $27 at the portcullis (the scroll at $1C, the window posts at $1D) until he is at column 4 + 4 times his headgear ($3E; 5 when $57 is set, which the palace never does), each frame drawn with the portcullis. Then the camera comes back: the scroll as it was ($38), the guard's record set up again with his column $2C less. Nearer the portcullis no cut is made. Last, the fence and the dot offset come back, $36 and $4B are cleared and both pages are to be drawn whole."
  },
  {
   "address": 44590,
   "type": "line",
   "text": "The cut to the guard running on while he is out of sight: the camera runs with him for 14 frames ($89), the scene scrolling ten dots a frame behind him ($AEC9), each column the scene moves bringing his true column ($37) one nearer, and on until the dot offset and his column are odd or even as they were ($8D, $8C). Then the camera comes back: the dot offset as it was, and the guard at his new column."
  },
  {
   "address": 44735,
   "type": "line",
   "text": "While $5F counts (from 2: both pages), draw the whole background ($B283)."
  },
  {
   "address": 44745,
   "type": "line",
   "text": "Scroll the scene by six dots and by four."
  },
  {
   "address": 44752,
   "type": "line",
   "text": "Add A dots to the dot offset; past 6, the guard moves a column right on the screen, his true column ($37) one less, and the window posts ($51) a column right, coming round from 40 to -8."
  },
  {
   "address": 44785,
   "type": "line",
   "text": "The guard running for the cut: legs $23, torso $1E, sequence positions $43 and $2E, steps 1, stick forward."
  },
  {
   "address": 44810,
   "type": "line",
   "text": "Set up the opponent's record ($7003), coming on ($30 = 1), at the scroll's column + $13, facing left ($7F = $FF)."
  },
  {
   "address": 44829,
   "type": "line",
   "text": "Keep this frame's positions for the page drawn two frames from now: the window posts ($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), the hawk's column ($91 into $EA, $EB) and its countdown ($90 into $EE, $EF); and count $54 down."
  },
  {
   "address": 44892,
   "type": "line",
   "text": "Ask for both pages to be drawn whole: $54 = 2."
  },
  {
   "address": 44897,
   "type": "line",
   "text": "Mariko in her cell at the stage's start: its door shut ($84 = 5), $83 = 2, her pose $15 ($AF7A) and the first tune ($1009), then pose $16 and the second tune ($100F)."
  },
  {
   "address": 44922,
   "type": "line",
   "text": "One frame of the cell: Mariko in pose X ($7E3C), the cell's doorway ($7809), the special keys and the frame's end."
  },
  {
   "address": 44934,
   "type": "line",
   "text": "Bytes left from an earlier build of the cell scene, waits and the request for both pages; then $80 to the end of the page. Nothing runs them."
  },
  {
   "address": 45056,
   "type": "line",
   "text": "JMP: draw the doors ($B006); JMP: cover them where they were ($B05C)."
  },
  {
   "address": 45059,
   "type": "line",
   "text": "JMP: cover the doors where they were ($B05C)."
  },
  {
   "address": 45062,
   "type": "line",
   "text": "Draw the doors at the hall's left end while they are in sight (the scroll $52 at 0 or from $F7, -9, on), unless nothing has moved and both fighters are well right of them (the hero at column $10 or more, the opponent at $13 or more): the doors ($A602) at the scroll's column, row $39, and their edge ($A546) eight columns on, row $50, stored over the page."
  },
  {
   "address": 45148,
   "type": "line",
   "text": "Cover the doors where they were drawn two frames before ($E1), unless nothing has moved or they were not in sight: black over columns 0-7 from row $39 to $98, the floor's colours from $99 to $B2, then the windows' band ($B289)."
  },
  {
   "address": 45230,
   "type": "line",
   "text": "Bytes left from an earlier build of the portcullis's tables and routines. Nothing runs them."
  },
  {
   "address": 45312,
   "type": "line",
   "text": "The portcullis's three JMPs: $B100 the gatehouse, $B103 its pillar, bars and teeth over the figures, $B106 cover it where it was; and a fourth, $B109, to the teeth alone ($B214), which nothing calls."
  },
  {
   "address": 45315,
   "type": "line",
   "text": "JMP: the pillar, the bars and the teeth ($B185)."
  },
  {
   "address": 45318,
   "type": "line",
   "text": "JMP: cover the portcullis where it was ($B1B1)."
  },
  {
   "address": 45321,
   "type": "line",
   "text": "JMP: the teeth alone ($B214); nothing calls it."
  },
  {
   "address": 45324,
   "type": "line",
   "text": "The portcullis's eleven pieces, low bytes: 0-5 the teeth at its bottom, shortest to longest, 6 one row of its bars, 7 the post on its left, 8 its shadow on the floor, 9 the pillar on its right, 10 the gatehouse with the bars' top."
  },
  {
   "address": 45335,
   "type": "line",
   "text": "The portcullis pieces' high bytes."
  },
  {
   "address": 45346,
   "type": "line",
   "text": "Each piece's column from the scroll's ($52 - $1C): $20 for the teeth and bars, $1F the post and the shadow, $26 the pillar, $1E the gatehouse."
  },
  {
   "address": 45357,
   "type": "line",
   "text": "Each piece's top row. Those of pieces 1-5, $7D-$9B, are also the bottoms ($A7) from which each longer set of teeth is drawn ($B214)."
  },
  {
   "address": 45358,
   "type": "line",
   "text": "The teeth's rows, read as $B12E + X ($B218): the bottom row ($A7) from which each longer set of teeth is drawn, $7D $85 $8C $94 $9B."
  },
  {
   "address": 45368,
   "type": "line",
   "text": "Draw portcullis piece X at its row and at the scroll ($52) less $1C plus its column."
  },
  {
   "address": 45398,
   "type": "line",
   "text": "Draw the gatehouse while it is in sight (the scroll at 1-$28), in store mode at the dot offset: the gatehouse itself ($0A) only when anything has moved since this page was drawn ($54, $50 against $AE, $52 against $E1), then the post (7) and the shadow (8)."
  },
  {
   "address": 45445,
   "type": "line",
   "text": "Over the figures, while the portcullis is in sight (the scroll at 1-$27): the pillar (9), stored; then with OR the bars, piece 6 drawn row after row from $73 down to the portcullis's bottom ($A7), and the teeth ($B214)."
  },
  {
   "address": 45489,
   "type": "line",
   "text": "Cover the portcullis where it was drawn two frames before ($E1). When anything has moved and it was in sight: black over columns $1E-$27 from row $35 to $98 ($B1DD), the floor's colours from $99 to $B4, then the windows' band ($B289). When nothing has moved: black over columns $20-$27 from row $74 to $99 only, where the bars and teeth are."
  },
  {
   "address": 45533,
   "type": "line",
   "text": "Black over the rectangle set up, down to row A; then the floor's colours, rows $99-$B4: black, $AA and $D5 in turn."
  },
  {
   "address": 45588,
   "type": "line",
   "text": "Draw the teeth at the portcullis's bottom row ($A7), at column $52 + 4: the longer the further down it is, piece 0 above row $7D, 1 from $7D, 2 from $85, 3 from $8C, 4 from $94 and 5 from $9B."
  },
  {
   "address": 45626,
   "type": "line",
   "text": "Bytes left from an earlier build: the ends of the routines before, fills, and the start of the hawk's drawing ($BD57). Nothing runs them."
  },
  {
   "address": 45696,
   "type": "line",
   "text": "Four JMPs: $B280 the window posts and Mount Fuji, $B283 the whole background, $B286 the window posts covered where they were, $B289 the windows' band."
  },
  {
   "address": 45699,
   "type": "line",
   "text": "JMP: the whole background ($B28C)."
  },
  {
   "address": 45702,
   "type": "line",
   "text": "JMP: cover the window posts where they were ($B31F)."
  },
  {
   "address": 45705,
   "type": "line",
   "text": "JMP: the windows' band ($B2B0)."
  },
  {
   "address": 45708,
   "type": "line",
   "text": "Draw the whole background: the page cleared, the floor's colours from row $99 to $B4, then the windows' band."
  },
  {
   "address": 45744,
   "type": "line",
   "text": "The windows' band along the whole width: blue ($D5 and $AA) over rows $51-$59 and $5D-$65, white over rows $50 and $5C."
  },
  {
   "address": 45802,
   "type": "line",
   "text": "Draw six window posts (the shape at $A4 and $03) eight columns apart from column X, at row $50, dot Y, stored; a post at columns $15-$7F is drawn mirrored, and one past the right edge comes round 48 columns to the left."
  },
  {
   "address": 45855,
   "type": "line",
   "text": "Cover the window posts where they were drawn on this page two frames before ($AC, $AE) with black ($A4F0), unless nothing has moved."
  },
  {
   "address": 45883,
   "type": "line",
   "text": "Draw Mount Fuji ($B35A) and the window posts at their column ($51) and the dot offset, unless nothing has moved since this page was drawn."
  },
  {
   "address": 45914,
   "type": "line",
   "text": "Draw Mount Fuji through the windows: its top ($A592) at column $12, row $51, and its slopes ($A5B8) at column $10, row $5D, in store mode at dot 0. It does not scroll."
  },
  {
   "address": 45956,
   "type": "line",
   "text": "Bytes left from an earlier build of the window posts and Mount Fuji; then $80 to the end of the page. Nothing runs them."
  },
  {
   "address": 46080,
   "type": "line",
   "text": "Move the scene with the hero, once a frame. A hero at column $2A or more has gone through the portcullis: $D0 = 3, and the main loop loads the dungeon. The hall runs from the doors, the scroll $52 at 0, to the portcullis, the scroll at $1C, passing through $FF on the way: at 0 the scene only scrolls left, at $1C only right. Elsewhere it scrolls to bring the hero to column $0F: from the left of it towards the right ($B4B2), from the right of it towards the left ($B440)."
  },
  {
   "address": 46123,
   "type": "line",
   "text": "Stop the scroll: $53 = 0."
  },
  {
   "address": 46144,
   "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": 46187,
   "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 window posts ($51, coming round from -9 to 39) move a column left. Reaching $1B, everything is put back a column and the scroll stops at $1C, the portcullis."
  },
  {
   "address": 46203,
   "type": "line",
   "text": "Add A dots to the scene's offset."
  },
  {
   "address": 46258,
   "type": "line",
   "text": "Scroll towards the right: the speed $53 is brought two dots a frame towards +4; the scroll stops at 0, the doors, with dot 0."
  },
  {
   "address": 46337,
   "type": "line",
   "text": "Bytes left from an earlier build of the routines before and of the cut's routines. Nothing runs them."
  },
  {
   "address": 46464,
   "type": "line",
   "text": "Three JMPs: $B580 the hawk's flight, $B583 the hawk sent, $B586 its countdown set."
  },
  {
   "address": 46467,
   "type": "line",
   "text": "JMP: send the hawk ($B653)."
  },
  {
   "address": 46470,
   "type": "line",
   "text": "JMP: set the hawk's countdown ($B636)."
  },
  {
   "address": 46473,
   "type": "line",
   "text": "The hawk's flight, while its countdown ($90) is out; both pages are drawn whole meanwhile ($54). Struck or done ($96), it turns and flies off to the right ($94 = 2). Otherwise it moves by $94 columns. Three to five columns from the hero, flying at him, a kick (legs 2-4) or a punch at full stretch (legs $16) at the height of its row ($B648 by the hero's height $6A) strikes it: $97 and $96 set, the hit's sound ($43) and the sampled sound at speed 6. One column from him or less, it pecks: the sampled sound at speed 4, a blow on the hero ($40 = 2), its star ($97 = 2), and it moves two columns on; after $A5 pecks ($A4 counts them; one when the hero is dead) it leaves. While it has pecked and flies left, the sampled sound at speed 5. Off the right of the screen (column $2C), its next countdown ($B636) and $89 = $19."
  },
  {
   "address": 46646,
   "type": "line",
   "text": "Set the hawk's countdown ($90): a random 0-31 ($48) plus $92, and $32 more when $97 is 1."
  },
  {
   "address": 46664,
   "type": "line",
   "text": "The hawk's rows by the height of the hero's blow ($6A + 1): $6C high, $79 middle, $82 low; and $6C again, for the random choice of 0-3 ($B665)."
  },
  {
   "address": 46668,
   "type": "line",
   "text": "Set off the sampled sound ($4E) at the speed in A ($BA)."
  },
  {
   "address": 46675,
   "type": "line",
   "text": "Send the hawk, when the guard is 20 or more columns ahead of the hero (otherwise the countdown is put back to 1, to try again): at the right edge (column $29, or $2A with an odd dot offset), at a random one of the rows ($93, $B648), flying left two columns a frame ($94 = $FE), its wings' picture and $96 cleared, its pecks at $A5; and $92, the countdown's least, one less down to 9, so that each hawk comes sooner."
  },
  {
   "address": 46729,
   "type": "line",
   "text": "Bytes left from an earlier build of the scroll's routines. Nothing runs them."
  },
  {
   "address": 46848,
   "type": "line",
   "text": "Stage 2 begins: $D0 = 2; the portcullis up ($A7 = $74) and still ($A8, $A9, $AA cleared); the fighters' records ($7000) with the hero a column left; the arrows' recovery intervals ($B8, $B9) and the sampled sound's speed ($BA) at 30; the dot offset 0; both fighters alive ($5D, $5E); the scroll and its copies at 0, the doors; the cuts and the sounds cleared; the window posts at column $11; both pages to be drawn whole ($5F, $54); 12 arrows for the hero ($B0, $B6) and 28 less that, 16, for the guards ($B1, $B7); headgear 1 and its chances ($BC33); the hawk's countdown ($90) at 5 and its least ($92) at $10; $89 = 7; the guard coming on ($30), his record ($7003) a column further right; the hero's height up ($6A). Then Mariko in her cell ($AD8C), and the main loop: one frame ($B7D6) and its end ($7600), for ever."
  },
  {
   "address": 46947,
   "type": "line",
   "text": "The engine calls $B763 at the end of each cutscene frame ($7C47) only in the title stage ($D0 = 0). Here it is the middle of the stage's start, reached only from $B700: both pages to be drawn whole, the arrows ($B0 12, $B1 16), headgear 1 and its chances, the hawk's countdown, the guard's record."
  },
  {
   "address": 47062,
   "type": "line",
   "text": "One frame of the palace. A new random number ($BBDC). With the hero lying dead (legs $13), the portcullis up, the hawk not flying ($90) and the guard lying dead or standing: the death tune and THE END ($0203). With the hero alive, away from the portcullis's end of the hall (the scroll not $1C) and a guard beaten ($82): the first time ($35), Akuma sends the next guard ($79A0) and the hero's torso is put in the stance (6); after that, $82 counts to 20 and the next guard comes, with the next headgear (up to 5), his chances, his arrows and the cut to him ($AD80), the hawk's countdown set again and $89 = $19."
  },
  {
   "address": 47178,
   "type": "line",
   "text": "When $89 has counted out, the hawk is not about to come ($90 above $92) and a guard is alive, the cut to him running ($AD83), with $90 put to $92 + 4, $89 = $19 and $8B = 15. The hawk's countdown ($90), while $98 is set, from the second guard on (no hawk while the guard has headgear 1, unless $57): at 0 the hawk is sent ($B583); at $92, with the guard 40 or more columns ahead, the sampled sound at speed 7, Akuma's cry, and otherwise the count waits there."
  },
  {
   "address": 47266,
   "type": "line",
   "text": "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 = 2), and while his most is 9 or more, one fewer for him ($B0) and one more for the next guard ($B1), his arrows cut to his new most."
  },
  {
   "address": 47319,
   "type": "line",
   "text": "LDA #1, STA $55: no branch leads here."
  },
  {
   "address": 47323,
   "type": "line",
   "text": "The hero's move ($BB62). In the stance at column 3 or less he is put back in the stance at column 5 ($BBE9). Legs pose $29 counts a column further left for the portcullis's tests, until $B9AA puts it back."
  },
  {
   "address": 47347,
   "type": "line",
   "text": "The portcullis. Resting after a fall ($AA counts down), it then rises ($A8 = $FF). Falling ($A9 set), its speed $A8 grows by twice $A9 and $A9 by one each frame. Rising, it goes up a row a frame. Its bottom ($A7) is kept between $74, up, and $A0, down; reaching $A0 it stops, the clang ($43) sounds and it rests for 20 frames ($AA = $14)."
  },
  {
   "address": 47421,
   "type": "line",
   "text": "Still and up, it falls ($A9 = 3) when the living hero stands under it, at columns $1E-$21. With no guard alive, a hero at column $1D or more who kicks (legs sequence position 2, $65) or punches at full stretch (legs $16) also sets it falling."
  },
  {
   "address": 47463,
   "type": "line",
   "text": "Falling with its bottom at row $82 or lower, it crushes a hero at columns $1F-$21: he is dead ($5D = 0) and falls dead ($C6, two steps at once), at column $21, with one arrow left, or two when he had three or more, his recovery count cleared ($5B) and $B8 = 4."
  },
  {
   "address": 47530,
   "type": "line",
   "text": "Legs pose $29 back, with the column. With the guard 60 or more columns ahead and off the right of the screen ($30 - $52 + $72 at $50 or more), $89 counts down; when the hero has not pushed the stick forward ($69) for 15 frames ($8B), it is cut to 0."
  },
  {
   "address": 47583,
   "type": "line",
   "text": "The guard's move: on frames drawn on page 2 he only moves when his legs' sequence is past $0D or stopped. With the portcullis down to row $78 or more and the guard at column $16 or more, he stands still; otherwise the brain chooses ($6B00). Then his step ($6400), with $34 = $FE and $4B, $4C cleared."
  },
  {
   "address": 47642,
   "type": "line",
   "text": "The hits, reading the buttons first ($6D03): with both alive, the hero's blow is tested every frame, the guard's on frames drawn on page 1 ($7366). Then the hawk ($B580); the hero at columns $1E-$20 before the portcullis down to row $7C or more, and not falling, bounces off it ($40 = $88); the hits applied ($701E); the arrows back ($0B0F); $96 set when the hero is dead, so that the hawk leaves; the scroll ($B400). At the end of the hall ($D0 = 3) the dungeon is loaded on a frame drawn on page 2; on page 1 $D0 goes back to 2."
  },
  {
   "address": 47768,
   "type": "line",
   "text": "The dead hero: kept at column 7 or more; lying under the portcullis at column $21, he loses an arrow each time his recovery count allows, $B8 ten frames longer each time."
  },
  {
   "address": 47808,
   "type": "line",
   "text": "Draw the frame, reading the buttons between steps ($6D03): the portcullis covered where it was, the bands behind the figures, the window posts and the doors covered, the hawk covered ($BD03), the special keys, the whole background while $5F counts, the arrows' strip, the window posts and Mount Fuji, the doors, the gatehouse; the feet masks, the hero's arrows, the hawk ($BD00) and the hero, over him the pieces of a hero crushed under the portcullis ($BC04); 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 portcullis's pillar, bars and teeth over the figures ($B103); the positions kept ($AD89)."
  },
  {
   "address": 47970,
   "type": "line",
   "text": "The hero's move. 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) and the buttons are cleared. From column $22 on he runs on by himself; otherwise the player moves him ($6E00). Dead, with the portcullis down to row $82 or more, his fall goes two steps a frame. When his legs' sequence reaches position $15, the end of taking the stance, with a guard alive and no sampled sound playing, the sampled sound plays at speed $1E."
  },
  {
   "address": 48085,
   "type": "line",
   "text": "The sampled sound ($4E) set off at the speed in A ($BA), from the hero's move."
  },
  {
   "address": 48092,
   "type": "line",
   "text": "The palace's random numbers: $48 = $48 times 5 plus $0D, in A."
  },
  {
   "address": 48105,
   "type": "line",
   "text": "A hero in the stance ($6F clear) is put back at column 5 in the stance, legs and torso 6, their sequences at $0D and stepping 1."
  },
  {
   "address": 48132,
   "type": "line",
   "text": "Over the hero lying dead under the portcullis: $AD29 at column $20, row $98, stored; and while the portcullis is above row $98, $AD40 (above row $8C) or $AD54 at row $A0."
  },
  {
   "address": 48179,
   "type": "line",
   "text": "Set the guard's chances for his headgear $3E (1-5): of a kick ($D7), a punch ($D8) and a step forward ($D9), each the number a random byte must be below ($6C23, $6BF2, $6BE3). The tables are read as $BC44 + X, $BC49 + X and $BC4E + X."
  },
  {
   "address": 48196,
   "type": "line",
   "text": "RTS. The three tables after it are read as $BC44 + X, $BC49 + X and $BC4E + X, with X the headgear 1-5."
  },
  {
   "address": 48197,
   "type": "line",
   "text": "The chance of a kick ($D7) for headgear 1-5: $F0 $20 $F8 $FF $FF."
  },
  {
   "address": 48201,
   "type": "line",
   "text": "The kick table's last entry, for headgear 5; read from here as $BC49 + X, the punch table."
  },
  {
   "address": 48202,
   "type": "line",
   "text": "The chance of a punch ($D8): $F0 $FF $FF $20 $FF."
  },
  {
   "address": 48206,
   "type": "line",
   "text": "The punch table's last entry, for headgear 5; read from here as $BC4E + X, the step table."
  },
  {
   "address": 48207,
   "type": "line",
   "text": "The chance of a step forward ($D9): $C0 $A0 $80 $60 $40. After it, left from an earlier build: a copy of $BC33 with its tables and an earlier drawing of the hawk; nothing runs them."
  },
  {
   "address": 48384,
   "type": "line",
   "text": "JMP: draw the hawk ($BD57); then, at $BD03, cover it where it was."
  },
  {
   "address": 48387,
   "type": "line",
   "text": "Cover the hawk where it was drawn two frames before ($EB, $EF), when it was flying: black over its columns from row $6C to $99, then its shadow's rows $9D-$A6 with the floor's colours. Here, in the palace ($D2 = 2), the floor's rows are black and blue in turn; in the dungeon the pattern is the other way round."
  },
  {
   "address": 48471,
   "type": "line",
   "text": "Draw the hawk while it flies ($90 = 0). Its wings beat through pictures 0-2; flying at the hero and within seven columns of him (and $55 clear), it swoops, 3 and then 4 and 5 in turn ($95). First its shadow on the floor with AND (row $9F, or $9D for pictures 1 and 5), then the hawk with OR at its row ($93) plus the picture's own, mirrored when it flies right."
  },
  {
   "address": 48600,
   "type": "line",
   "text": "The hawk's six pictures, low bytes."
  },
  {
   "address": 48606,
   "type": "line",
   "text": "The hawk pictures' high bytes."
  },
  {
   "address": 48612,
   "type": "line",
   "text": "Each picture's row below the hawk's ($93): 0, 9, 9, 2, 4, 0."
  },
  {
   "address": 48618,
   "type": "line",
   "text": "22 bytes in the form of picture rows that nothing points at."
  },
  {
   "address": 48640,
   "type": "line",
   "text": "Headgear type 1 ($3E), drawing 1 of 3 for the engine's tables ($62E8). 10 rows of 3 bytes."
  },
  {
   "address": 48672,
   "type": "line",
   "text": "Headgear type 1 ($3E), drawing 2 of 3 for the engine's tables ($62E8). 11 rows of 3 bytes."
  },
  {
   "address": 48707,
   "type": "line",
   "text": "Headgear type 1 ($3E), drawing 3 of 3 for the engine's tables ($62E8). 9 rows of 3 bytes."
  },
  {
   "address": 48736,
   "type": "line",
   "text": "Headgear type 2 ($3E), drawing 1 of 3 for the engine's tables ($62EE). 10 rows of 3 bytes."
  },
  {
   "address": 48768,
   "type": "line",
   "text": "Headgear type 2 ($3E), drawing 2 of 3 for the engine's tables ($62EE). 11 rows of 3 bytes."
  },
  {
   "address": 48803,
   "type": "line",
   "text": "Headgear type 2 ($3E), drawing 3 of 3 for the engine's tables ($62EE). 9 rows of 3 bytes."
  },
  {
   "address": 48832,
   "type": "line",
   "text": "Headgear type 3 ($3E), drawing 1 of 3 for the engine's tables ($62F4). 10 rows of 3 bytes."
  },
  {
   "address": 48864,
   "type": "line",
   "text": "Headgear type 3 ($3E), drawing 2 of 3 for the engine's tables ($62F4). 11 rows of 3 bytes."
  },
  {
   "address": 48899,
   "type": "line",
   "text": "Headgear type 3 ($3E), drawing 3 of 3 for the engine's tables ($62F4). 9 rows of 3 bytes."
  },
  {
   "address": 48928,
   "type": "line",
   "text": "Headgear type 4 ($3E), drawing 1 of 3 for the engine's tables ($62FA). 9 rows of 3 bytes."
  },
  {
   "address": 48957,
   "type": "line",
   "text": "3 bytes after hat4_0 that no table or instruction in this stage points at, in the form of picture rows."
  },
  {
   "address": 48960,
   "type": "line",
   "text": "Headgear type 4 ($3E), drawing 2 of 3 for the engine's tables ($62FA). 11 rows of 3 bytes."
  },
  {
   "address": 48995,
   "type": "line",
   "text": "Headgear type 4 ($3E), drawing 3 of 3 for the engine's tables ($62FA). 9 rows of 3 bytes."
  },
  {
   "address": 49024,
   "type": "line",
   "text": "Headgear type 5 ($3E), drawing 1 of 3 for the engine's tables ($6AEA). 10 rows of 3 bytes."
  },
  {
   "address": 49056,
   "type": "line",
   "text": "Headgear type 5 ($3E), drawing 2 of 3 for the engine's tables ($6AEA). 11 rows of 3 bytes."
  },
  {
   "address": 49091,
   "type": "line",
   "text": "Headgear type 5 ($3E), drawing 3 of 3 for the engine's tables ($6AEA). 9 rows of 3 bytes."
  },
  {
   "address": 49120,
   "type": "line",
   "text": "The end of the last headgear picture's row."
  },
  {
   "address": 49121,
   "type": "line",
   "text": "The opponents' brain ($6B00) reads four tables of thresholds here, each as its base + X with X the distance between the fighters held to 7-11. This one ($6BBB, $6BD1) is read at $BFE8-$BFEC: $FF $FF $FF $80 $80; a random byte at or above it throws no blow."
  },
  {
   "address": 49126,
   "type": "line",
   "text": "The second ($6BD6), read at $BFED-$BFF1: $C0 $80 $60 $40 $40; a random byte at or above it, below the first, tries a kick ($D7)."
  },
  {
   "address": 49131,
   "type": "line",
   "text": "The third ($6BC0, $6BDB), read at $BFF2-$BFF6: $00 $00 $20 $40 $40; at or above it, below the second, a punch ($D8); below it, a step forward ($D9)."
  },
  {
   "address": 49138,
   "type": "line",
   "text": "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."
  },
  {
   "address": 49146,
   "type": "line",
   "text": "The stage's entry, where the engine jumps after loading it ($022C): JMP $B700."
  },
  {
   "address": 49149,
   "type": "line",
   "text": "The stage's number, 2, 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."
  }
 ]
}