{
 "schema": 1,
 "platform": "apple2",
 "game": "karateka",
 "part": "engine",
 "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"
   ],
   [
    8192,
    16383,
    "hi-res page 1, the screen drawn on every other frame; empty when the engine takes over at $0200 (runtime: the screen)"
   ],
   [
    16896,
    20223,
    "the part of hi-res page 2 that the loader does not use, the screen drawn on in turn with page 1; empty at the hand-over (runtime: the screen)"
   ],
   [
    20224,
    20479,
    "where $0393 keeps the loader's own zero page while the game runs, swapped with the game's for each load (runtime state)"
   ],
   [
    22528,
    24575,
    "the rest of hi-res page 2 after the loader's third stage; empty at the hand-over (runtime: the screen)"
   ],
   [
    53248,
    65535,
    "the language card's RAM: a copy of the machine's ROM that the boot makes, with its reset vector pointed at $0309 (orientation.md, \"Steady state\"); the ROM's bytes, not the game's"
   ],
   [
    4096,
    8191,
    "5 parts: Akuma's chamber and the ending, The cliff and the gates, The lower palace and others"
   ],
   [
    40960,
    49151,
    "5 parts: Akuma's chamber and the ending, The cliff and the gates, The lower palace and others"
   ]
  ],
  "extra": [],
  "edges": [
   0,
   256,
   512,
   768,
   1024,
   2048,
   3072,
   8192,
   16384,
   24576,
   49152,
   53248,
   57344
  ],
  "elsewhere": [
   [
    4096,
    8191,
    "5 parts: Akuma's chamber and the ending, The cliff and the gates, The lower palace and others"
   ],
   [
    40960,
    49151,
    "5 parts: Akuma's chamber and the ending, The cliff and the gates, The lower palace and others"
   ]
  ]
 },
 "blocks": [
  {
   "start": 0,
   "end": 511,
   "type": "Undefined"
  },
  {
   "start": 512,
   "end": 765,
   "type": "Code"
  },
  {
   "start": 766,
   "end": 767,
   "type": "Byte"
  },
  {
   "start": 768,
   "end": 773,
   "type": "Code"
  },
  {
   "start": 774,
   "end": 776,
   "type": "Byte"
  },
  {
   "start": 777,
   "end": 1005,
   "type": "Code"
  },
  {
   "start": 1006,
   "end": 1012,
   "type": "Byte"
  },
  {
   "start": 1013,
   "end": 1023,
   "type": "Code"
  },
  {
   "start": 1024,
   "end": 1791,
   "type": "Byte"
  },
  {
   "start": 1792,
   "end": 1890,
   "type": "Code"
  },
  {
   "start": 1891,
   "end": 1919,
   "type": "Byte"
  },
  {
   "start": 1920,
   "end": 2019,
   "type": "Code"
  },
  {
   "start": 2020,
   "end": 2559,
   "type": "Byte"
  },
  {
   "start": 2560,
   "end": 2807,
   "type": "Code"
  },
  {
   "start": 2808,
   "end": 2815,
   "type": "Byte"
  },
  {
   "start": 2816,
   "end": 2833,
   "type": "Code"
  },
  {
   "start": 2834,
   "end": 2843,
   "type": "Byte"
  },
  {
   "start": 2844,
   "end": 3104,
   "type": "Code"
  },
  {
   "start": 3105,
   "end": 3135,
   "type": "Byte"
  },
  {
   "start": 3136,
   "end": 3261,
   "type": "Code"
  },
  {
   "start": 3262,
   "end": 3327,
   "type": "Byte"
  },
  {
   "start": 3328,
   "end": 3493,
   "type": "Code"
  },
  {
   "start": 3494,
   "end": 3519,
   "type": "Byte"
  },
  {
   "start": 3520,
   "end": 3577,
   "type": "Code"
  },
  {
   "start": 3578,
   "end": 4095,
   "type": "Byte"
  },
  {
   "start": 8192,
   "end": 16383,
   "type": "Undefined"
  },
  {
   "start": 16384,
   "end": 16447,
   "type": "Code"
  },
  {
   "start": 16448,
   "end": 16449,
   "type": "Byte"
  },
  {
   "start": 16450,
   "end": 16684,
   "type": "Code"
  },
  {
   "start": 16685,
   "end": 16895,
   "type": "Byte"
  },
  {
   "start": 16896,
   "end": 20479,
   "type": "Undefined"
  },
  {
   "start": 20480,
   "end": 20498,
   "type": "Code"
  },
  {
   "start": 20499,
   "end": 20499,
   "type": "Byte"
  },
  {
   "start": 20500,
   "end": 20557,
   "type": "Code"
  },
  {
   "start": 20558,
   "end": 21247,
   "type": "Byte"
  },
  {
   "start": 21248,
   "end": 21282,
   "type": "Code"
  },
  {
   "start": 21283,
   "end": 21759,
   "type": "Byte"
  },
  {
   "start": 21760,
   "end": 21805,
   "type": "Code"
  },
  {
   "start": 21806,
   "end": 21807,
   "type": "Byte"
  },
  {
   "start": 21808,
   "end": 21829,
   "type": "Code"
  },
  {
   "start": 21830,
   "end": 21839,
   "type": "Byte"
  },
  {
   "start": 21840,
   "end": 21852,
   "type": "Code"
  },
  {
   "start": 21853,
   "end": 22271,
   "type": "Byte"
  },
  {
   "start": 22272,
   "end": 22274,
   "type": "Code"
  },
  {
   "start": 22275,
   "end": 22286,
   "type": "Byte"
  },
  {
   "start": 22287,
   "end": 22486,
   "type": "Code"
  },
  {
   "start": 22487,
   "end": 22527,
   "type": "Byte"
  },
  {
   "start": 22528,
   "end": 24575,
   "type": "Undefined"
  },
  {
   "start": 24576,
   "end": 25599,
   "type": "Byte"
  },
  {
   "start": 25600,
   "end": 25915,
   "type": "Code"
  },
  {
   "start": 25916,
   "end": 25919,
   "type": "Byte"
  },
  {
   "start": 25920,
   "end": 26454,
   "type": "Code"
  },
  {
   "start": 26455,
   "end": 26495,
   "type": "Byte"
  },
  {
   "start": 26496,
   "end": 27369,
   "type": "Code"
  },
  {
   "start": 27370,
   "end": 27391,
   "type": "Byte"
  },
  {
   "start": 27392,
   "end": 27722,
   "type": "Code"
  },
  {
   "start": 27723,
   "end": 27729,
   "type": "Byte"
  },
  {
   "start": 27730,
   "end": 27755,
   "type": "Code"
  },
  {
   "start": 27756,
   "end": 27760,
   "type": "Byte"
  },
  {
   "start": 27761,
   "end": 27811,
   "type": "Code"
  },
  {
   "start": 27812,
   "end": 27903,
   "type": "Byte"
  },
  {
   "start": 27904,
   "end": 27909,
   "type": "Code"
  },
  {
   "start": 27910,
   "end": 27912,
   "type": "Byte"
  },
  {
   "start": 27913,
   "end": 28086,
   "type": "Code"
  },
  {
   "start": 28087,
   "end": 28159,
   "type": "Byte"
  },
  {
   "start": 28160,
   "end": 28482,
   "type": "Code"
  },
  {
   "start": 28483,
   "end": 28671,
   "type": "Byte"
  },
  {
   "start": 28672,
   "end": 28692,
   "type": "Code"
  },
  {
   "start": 28693,
   "end": 28695,
   "type": "Byte"
  },
  {
   "start": 28696,
   "end": 28869,
   "type": "Code"
  },
  {
   "start": 28870,
   "end": 28911,
   "type": "Byte"
  },
  {
   "start": 28912,
   "end": 29180,
   "type": "Code"
  },
  {
   "start": 29181,
   "end": 29181,
   "type": "Byte"
  },
  {
   "start": 29182,
   "end": 29387,
   "type": "Code"
  },
  {
   "start": 29388,
   "end": 29541,
   "type": "Byte"
  },
  {
   "start": 29542,
   "end": 29765,
   "type": "Code"
  },
  {
   "start": 29766,
   "end": 29786,
   "type": "Byte"
  },
  {
   "start": 29787,
   "end": 29823,
   "type": "Code"
  },
  {
   "start": 29824,
   "end": 29887,
   "type": "Byte"
  },
  {
   "start": 29888,
   "end": 29942,
   "type": "Code"
  },
  {
   "start": 29943,
   "end": 29951,
   "type": "Byte"
  },
  {
   "start": 29952,
   "end": 30019,
   "type": "Code"
  },
  {
   "start": 30020,
   "end": 30020,
   "type": "Byte"
  },
  {
   "start": 30021,
   "end": 30121,
   "type": "Code"
  },
  {
   "start": 30122,
   "end": 30207,
   "type": "Byte"
  },
  {
   "start": 30208,
   "end": 30630,
   "type": "Code"
  },
  {
   "start": 30631,
   "end": 30719,
   "type": "Byte"
  },
  {
   "start": 30720,
   "end": 30740,
   "type": "Code"
  },
  {
   "start": 30741,
   "end": 30784,
   "type": "Byte"
  },
  {
   "start": 30785,
   "end": 31109,
   "type": "Code"
  },
  {
   "start": 31110,
   "end": 31135,
   "type": "Byte"
  },
  {
   "start": 31136,
   "end": 31921,
   "type": "Code"
  },
  {
   "start": 31922,
   "end": 31924,
   "type": "Byte"
  },
  {
   "start": 31925,
   "end": 31978,
   "type": "Code"
  },
  {
   "start": 31979,
   "end": 31999,
   "type": "Byte"
  },
  {
   "start": 32000,
   "end": 32008,
   "type": "Code"
  },
  {
   "start": 32009,
   "end": 32079,
   "type": "Byte"
  },
  {
   "start": 32080,
   "end": 32302,
   "type": "Code"
  },
  {
   "start": 32303,
   "end": 32303,
   "type": "Byte"
  },
  {
   "start": 32304,
   "end": 32318,
   "type": "Code"
  },
  {
   "start": 32319,
   "end": 32442,
   "type": "Byte"
  },
  {
   "start": 32443,
   "end": 32736,
   "type": "Code"
  },
  {
   "start": 32737,
   "end": 40959,
   "type": "Byte"
  },
  {
   "start": 49152,
   "end": 65535,
   "type": "Undefined"
  }
 ],
 "symbols": [
  {
   "address": 0,
   "name": "zpa_00",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 1,
   "name": "zpa_01",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2,
   "name": "zpa_02",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3,
   "name": "zpa_03",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 4,
   "name": "zpa_04",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 5,
   "name": "zpa_05",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 6,
   "name": "zpa_06",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 7,
   "name": "zpa_07",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 8,
   "name": "zpa_08",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 9,
   "name": "zpa_09",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 10,
   "name": "zpa_0A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 11,
   "name": "zpa_0B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 13,
   "name": "zpa_0D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 14,
   "name": "zpa_0E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 15,
   "name": "zpa_0F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16,
   "name": "zpa_10",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 17,
   "name": "zpa_11",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 18,
   "name": "zpa_12",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 19,
   "name": "zpa_13",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 24,
   "name": "zpa_18",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 31,
   "name": "zpa_1F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 32,
   "name": "zpa_20",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 33,
   "name": "zpa_21",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 34,
   "name": "zpa_22",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 35,
   "name": "zpa_23",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 36,
   "name": "zpa_24",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 37,
   "name": "zpa_25",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 38,
   "name": "zpa_26",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 39,
   "name": "zpa_27",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 40,
   "name": "zpa_28",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 41,
   "name": "zpa_29",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42,
   "name": "zpa_2A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 43,
   "name": "zpa_2B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 44,
   "name": "zpa_2C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 47,
   "name": "zpa_2F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 48,
   "name": "zpa_30",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49,
   "name": "zpa_31",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 50,
   "name": "zpa_32",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 51,
   "name": "zpa_33",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 54,
   "name": "zpa_36",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 55,
   "name": "zpa_37",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 57,
   "name": "zpa_39",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 58,
   "name": "zpa_3A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 59,
   "name": "zpa_3B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 60,
   "name": "zpa_3C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 61,
   "name": "zpa_3D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 62,
   "name": "zpa_3E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 63,
   "name": "zpa_3F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64,
   "name": "zpa_40",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 65,
   "name": "zpa_41",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 66,
   "name": "zpa_42",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 67,
   "name": "zpa_43",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 68,
   "name": "zpa_44",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 69,
   "name": "zpa_45",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 70,
   "name": "zpa_46",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 71,
   "name": "zpa_47",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 72,
   "name": "zpa_48",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 75,
   "name": "zpa_4B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 76,
   "name": "zpa_4C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 77,
   "name": "zpa_4D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 78,
   "name": "zpa_4E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 79,
   "name": "zpa_4F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 80,
   "name": "zpa_50",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 82,
   "name": "zpa_52",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 84,
   "name": "zpa_54",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 86,
   "name": "zpa_56",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 90,
   "name": "zpa_5A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 91,
   "name": "zpa_5B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 92,
   "name": "zpa_5C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 93,
   "name": "zpa_5D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 94,
   "name": "zpa_5E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 95,
   "name": "zpa_5F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 96,
   "name": "zpa_60",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 97,
   "name": "zpa_61",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 98,
   "name": "zpa_62",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 101,
   "name": "zpa_65",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 102,
   "name": "zpa_66",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 103,
   "name": "zpa_67",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 104,
   "name": "zpa_68",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 105,
   "name": "zpa_69",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 106,
   "name": "zpa_6A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 107,
   "name": "zpa_6B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 108,
   "name": "zpa_6C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 109,
   "name": "zpa_6D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 111,
   "name": "zpa_6F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 112,
   "name": "zpa_70",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 113,
   "name": "zpa_71",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 114,
   "name": "zpa_72",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 117,
   "name": "zpa_75",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 118,
   "name": "zpa_76",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 119,
   "name": "zpa_77",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 120,
   "name": "zpa_78",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 121,
   "name": "zpa_79",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 122,
   "name": "zpa_7A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 123,
   "name": "zpa_7B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 124,
   "name": "zpa_7C",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 125,
   "name": "zpa_7D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 127,
   "name": "zpa_7F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 128,
   "name": "zpa_80",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 129,
   "name": "zpa_81",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 131,
   "name": "zpa_83",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 132,
   "name": "zpa_84",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 134,
   "name": "zpa_86",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 136,
   "name": "zpa_88",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 138,
   "name": "zpa_8A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 143,
   "name": "zpa_8F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 145,
   "name": "zpa_91",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 147,
   "name": "zpa_93",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 148,
   "name": "zpa_94",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 151,
   "name": "zpa_97",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 152,
   "name": "zpa_98",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 154,
   "name": "zpa_9A",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 155,
   "name": "zpa_9B",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 156,
   "name": "zpf_9C",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 157,
   "name": "zpa_9D",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 158,
   "name": "zpa_9E",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 159,
   "name": "zpa_9F",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 160,
   "name": "zpf_A0",
   "type": "ZeroPageField",
   "kind": "auto"
  },
  {
   "address": 161,
   "name": "zpa_A1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 162,
   "name": "zpa_A2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 163,
   "name": "zpa_A3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 164,
   "name": "zpa_A4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 165,
   "name": "zpa_A5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 166,
   "name": "zpa_A6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 167,
   "name": "zpa_A7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 168,
   "name": "zpa_A8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 176,
   "name": "zpa_B0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 177,
   "name": "zpa_B1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 182,
   "name": "zpa_B6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 183,
   "name": "zpa_B7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 184,
   "name": "zpa_B8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 185,
   "name": "zpa_B9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 186,
   "name": "zpa_BA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 192,
   "name": "zpa_C0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 193,
   "name": "zpa_C1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 194,
   "name": "zpa_C2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 195,
   "name": "zpa_C3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 196,
   "name": "zpa_C4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 197,
   "name": "zpa_C5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 208,
   "name": "zpa_D0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 210,
   "name": "zpa_D2",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 213,
   "name": "zpa_D5",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 214,
   "name": "zpa_D6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 215,
   "name": "zpa_D7",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 216,
   "name": "zpa_D8",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 217,
   "name": "zpa_D9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 220,
   "name": "zpa_DC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 224,
   "name": "zpa_E0",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 225,
   "name": "zpa_E1",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 226,
   "name": "zpp_E2",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 227,
   "name": "zpa_E3",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 228,
   "name": "zpa_E4",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 229,
   "name": "zpp_E5",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 237,
   "name": "zpa_ED",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 246,
   "name": "zpa_F6",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 247,
   "name": "zpp_F7",
   "type": "ZeroPagePointer",
   "kind": "auto"
  },
  {
   "address": 249,
   "name": "zpa_F9",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 250,
   "name": "zpa_FA",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 251,
   "name": "zpa_FB",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 252,
   "name": "zpa_FC",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 253,
   "name": "zpa_FD",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 254,
   "name": "zpa_FE",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 255,
   "name": "zpa_FF",
   "type": "ZeroPageAbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 512,
   "name": "engine_vectors",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 518,
   "name": "j_0206",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 524,
   "name": "load_stage",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 556,
   "name": "j_022C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 567,
   "name": "start_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 582,
   "name": "b_0246",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 585,
   "name": "b_0249",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 606,
   "name": "the_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 616,
   "name": "b_0268",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 632,
   "name": "b_0278",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 646,
   "name": "b_0286",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 657,
   "name": "b_0291",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 667,
   "name": "b_029B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 674,
   "name": "j_02A2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 692,
   "name": "b_02B4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 706,
   "name": "b_02C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 715,
   "name": "draw_the_end",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 742,
   "name": "r_02E6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 743,
   "name": "s_02E7",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 768,
   "name": "loader_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 771,
   "name": "s_0303",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 774,
   "name": "boot_slot",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 775,
   "name": "p_0307",
   "type": "Pointer",
   "kind": "auto"
  },
  {
   "address": 777,
   "name": "reset_handler",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 793,
   "name": "b_0319",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 796,
   "name": "b_031C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 798,
   "name": "a_031E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 824,
   "name": "load",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 834,
   "name": "b_0342",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 846,
   "name": "b_034E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 851,
   "name": "b_0353",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 855,
   "name": "b_0357",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 860,
   "name": "b_035C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 864,
   "name": "b_0360",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 873,
   "name": "b_0369",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 881,
   "name": "b_0371",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 896,
   "name": "b_0380",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 915,
   "name": "swap_zero_page",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 917,
   "name": "b_0395",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 933,
   "name": "show_castle",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 963,
   "name": "copy_pages",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 973,
   "name": "b_03CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 988,
   "name": "rom_to_card",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1012,
   "name": "PWREDUP",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 1013,
   "name": "motor_on",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 1024,
   "name": "font_glyphs",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 1664,
   "name": "font_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1696,
   "name": "font_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1728,
   "name": "font_width_bytes",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1760,
   "name": "font_width_dots",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 1792,
   "name": "draw_text",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1805,
   "name": "j_070D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 1853,
   "name": "b_073D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1862,
   "name": "b_0746",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1885,
   "name": "b_075D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1890,
   "name": "r_0762",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 1920,
   "name": "scroll_vectors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 1926,
   "name": "scroll_copy",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1928,
   "name": "b_0788",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1933,
   "name": "b_078D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1945,
   "name": "title_flip",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 1964,
   "name": "b_07AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 1977,
   "name": "s_07B9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2007,
   "name": "s_07D7",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2014,
   "name": "b_07DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2019,
   "name": "r_07E3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2048,
   "name": "row_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2240,
   "name": "row_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 2432,
   "name": "bit_reverse",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2560,
   "name": "fill_vectors",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2563,
   "name": "j_0A03",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 2566,
   "name": "s_0A06",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2569,
   "name": "fill_rect",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2576,
   "name": "b_0A10",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2602,
   "name": "b_0A2A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2609,
   "name": "b_0A31",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2616,
   "name": "b_0A38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2621,
   "name": "b_0A3D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2624,
   "name": "fill_rect2",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2631,
   "name": "b_0A47",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2661,
   "name": "b_0A65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2668,
   "name": "b_0A6C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2677,
   "name": "b_0A75",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2683,
   "name": "b_0A7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2690,
   "name": "b_0A82",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2697,
   "name": "b_0A89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2703,
   "name": "clip_rect",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 2722,
   "name": "a_0AA2",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 2723,
   "name": "b_0AA3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2733,
   "name": "b_0AAD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2748,
   "name": "b_0ABC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2751,
   "name": "blank_right_dot",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2760,
   "name": "b_0AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2799,
   "name": "s_0AEF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2816,
   "name": "arrow_vectors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2825,
   "name": "s_0B09",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2828,
   "name": "s_0B0C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2834,
   "name": "arrow_shape",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 2844,
   "name": "clear_arrows",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2869,
   "name": "draw_hero_arrows",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2883,
   "name": "b_0B43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2909,
   "name": "b_0B5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2921,
   "name": "s_0B69",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 2935,
   "name": "b_0B77",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2939,
   "name": "r_0B7B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 2940,
   "name": "draw_opp_arrows",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 2954,
   "name": "b_0B8A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2980,
   "name": "b_0BA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 2992,
   "name": "s_0BB0",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3004,
   "name": "b_0BBC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3009,
   "name": "hero_hit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3025,
   "name": "r_0BD1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3026,
   "name": "opp_hit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3042,
   "name": "r_0BE2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3043,
   "name": "recover",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 3058,
   "name": "b_0BF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3073,
   "name": "r_0C01",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3074,
   "name": "s_0C02",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3086,
   "name": "r_0C0E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3087,
   "name": "b_0C0F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3092,
   "name": "s_0C14",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3104,
   "name": "r_0C20",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3136,
   "name": "sound_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3139,
   "name": "s_0C43",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3142,
   "name": "s_0C46",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3145,
   "name": "s_0C49",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3148,
   "name": "j_0C4C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3151,
   "name": "s_0C4F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3154,
   "name": "s_0C52",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 3157,
   "name": "j_0C55",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3159,
   "name": "b_0C57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3172,
   "name": "j_0C64",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3174,
   "name": "b_0C66",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3188,
   "name": "j_0C74",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3190,
   "name": "b_0C76",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3204,
   "name": "j_0C84",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3206,
   "name": "b_0C86",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3218,
   "name": "j_0C92",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3220,
   "name": "b_0C94",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3232,
   "name": "j_0CA0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3234,
   "name": "b_0CA2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3248,
   "name": "j_0CB0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3250,
   "name": "b_0CB2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3328,
   "name": "play_tune",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3344,
   "name": "j_0D10",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3362,
   "name": "b_0D22",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3384,
   "name": "b_0D38",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3401,
   "name": "b_0D49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3421,
   "name": "b_0D5D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3422,
   "name": "a_0D5E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3425,
   "name": "b_0D61",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3429,
   "name": "b_0D65",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3443,
   "name": "b_0D73",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3449,
   "name": "a_0D79",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3450,
   "name": "a_0D7A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3451,
   "name": "b_0D7B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3464,
   "name": "a_0D88",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 3465,
   "name": "b_0D89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3472,
   "name": "b_0D90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3486,
   "name": "b_0D9E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3488,
   "name": "b_0DA0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3493,
   "name": "r_0DA5",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 3520,
   "name": "play_sample",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 3522,
   "name": "b_0DC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3530,
   "name": "b_0DCA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3536,
   "name": "b_0DD0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3538,
   "name": "b_0DD2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3552,
   "name": "j_0DE0",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 3570,
   "name": "b_0DF2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3573,
   "name": "b_0DF5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 3578,
   "name": "f_0DFA",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 3584,
   "name": "sample_data",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 3840,
   "name": "saved_opp",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 4016,
   "name": "tune_akuma1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 4068,
   "name": "tune_akuma2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 16384,
   "name": "loader_stage2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16398,
   "name": "b_400E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16413,
   "name": "b_401D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16417,
   "name": "s_4021",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 16419,
   "name": "b_4023",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16448,
   "name": "f_4040",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16450,
   "name": "read_sector2",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16489,
   "name": "b_4069",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16490,
   "name": "a_406A",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16504,
   "name": "b_4078",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16509,
   "name": "b_407D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16513,
   "name": "b_4081",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16518,
   "name": "b_4086",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16522,
   "name": "b_408A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16531,
   "name": "b_4093",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16539,
   "name": "b_409B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16554,
   "name": "b_40AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16570,
   "name": "seek_slow",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16573,
   "name": "seek",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 16590,
   "name": "b_40CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16609,
   "name": "b_40E1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16613,
   "name": "b_40E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16621,
   "name": "b_40ED",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16626,
   "name": "b_40F2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16654,
   "name": "b_410E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16658,
   "name": "s_4112",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 16660,
   "name": "s_4114",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 16670,
   "name": "b_411E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16674,
   "name": "s_4122",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 16675,
   "name": "a_4123",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16676,
   "name": "b_4124",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 16685,
   "name": "f_412D",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16697,
   "name": "f_4139",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16709,
   "name": "a_4145",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16710,
   "name": "a_4146",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16711,
   "name": "a_4147",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 16712,
   "name": "f_4148",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16716,
   "name": "f_414C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 16724,
   "name": "sector_end_mark",
   "type": "AbsoluteAddress",
   "kind": "user"
  },
  {
   "address": 20224,
   "name": "f_4F00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20480,
   "name": "loader_stage3",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 20485,
   "name": "b_5005",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20500,
   "name": "b_5014",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20509,
   "name": "j_501D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 20516,
   "name": "b_5024",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20536,
   "name": "b_5038",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20538,
   "name": "b_503A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 20545,
   "name": "b_5041",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21248,
   "name": "boot_rest",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 21261,
   "name": "b_530D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21504,
   "name": "page_lists",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 21760,
   "name": "read_tracks",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21770,
   "name": "b_550A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21803,
   "name": "b_552B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21808,
   "name": "read_track",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 21814,
   "name": "b_5536",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 21840,
   "name": "j_5550",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 22016,
   "name": "f_5600",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22032,
   "name": "track_marks",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22272,
   "name": "s_5700",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 22275,
   "name": "page_list",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 22287,
   "name": "read_track_data",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22301,
   "name": "b_571D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22310,
   "name": "b_5726",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22319,
   "name": "b_572F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22328,
   "name": "b_5738",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22338,
   "name": "b_5742",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22350,
   "name": "b_574E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22359,
   "name": "a_5757",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22360,
   "name": "a_5758",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22369,
   "name": "b_5761",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22383,
   "name": "seek3",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 22394,
   "name": "b_577A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22413,
   "name": "b_578D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22418,
   "name": "b_5792",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22424,
   "name": "b_5798",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22429,
   "name": "b_579D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22455,
   "name": "b_57B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22459,
   "name": "s_57BB",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 22462,
   "name": "s_57BE",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 22475,
   "name": "r_57CB",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 22476,
   "name": "s_57CC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 22478,
   "name": "b_57CE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 22487,
   "name": "f_57D7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22499,
   "name": "f_57E3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 24576,
   "name": "legs_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24618,
   "name": "legs_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24660,
   "name": "legs_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24702,
   "name": "legs_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24744,
   "name": "feet_mask_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24786,
   "name": "feet_mask_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24828,
   "name": "feet_mask_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24870,
   "name": "feet_mask_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24912,
   "name": "torso_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24954,
   "name": "torso_dot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 24996,
   "name": "head_type",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25034,
   "name": "hero_head_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25037,
   "name": "hero_head_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25040,
   "name": "hat0_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25043,
   "name": "hat0_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25046,
   "name": "face_mask_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25049,
   "name": "face_mask_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25050,
   "name": "head_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25088,
   "name": "head_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25126,
   "name": "torso_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25164,
   "name": "torso_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25202,
   "name": "torso_shape_x",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25240,
   "name": "torso_y",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25278,
   "name": "legs_mirror",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25320,
   "name": "hat1_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25323,
   "name": "hat1_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25326,
   "name": "hat2_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25329,
   "name": "hat2_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25332,
   "name": "hat3_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25335,
   "name": "hat3_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25338,
   "name": "hat4_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25341,
   "name": "hat4_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25344,
   "name": "legs_seq",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25440,
   "name": "legs_step",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25534,
   "name": "torso_seq",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 25600,
   "name": "animate",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25629,
   "name": "b_641D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25632,
   "name": "j_6420",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25641,
   "name": "b_6429",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25661,
   "name": "b_643D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25670,
   "name": "b_6446",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25677,
   "name": "b_644D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25684,
   "name": "b_6454",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25691,
   "name": "b_645B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25693,
   "name": "b_645D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25717,
   "name": "b_6475",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25726,
   "name": "b_647E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25735,
   "name": "r_6487",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25736,
   "name": "b_6488",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25738,
   "name": "r_648A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 25739,
   "name": "j_648B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25747,
   "name": "b_6493",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25756,
   "name": "b_649C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25766,
   "name": "b_64A6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25772,
   "name": "j_64AC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25784,
   "name": "b_64B8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25813,
   "name": "b_64D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25817,
   "name": "b_64D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25828,
   "name": "b_64E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25834,
   "name": "j_64EA",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25849,
   "name": "j_64F9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25857,
   "name": "b_6501",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25862,
   "name": "b_6506",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25872,
   "name": "b_6510",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25878,
   "name": "j_6516",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25887,
   "name": "j_651F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 25895,
   "name": "b_6527",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25900,
   "name": "b_652C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25910,
   "name": "b_6536",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25920,
   "name": "command",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 25931,
   "name": "b_654B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25938,
   "name": "b_6552",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25945,
   "name": "b_6559",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25952,
   "name": "b_6560",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25959,
   "name": "b_6567",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 25970,
   "name": "b_6572",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26000,
   "name": "r_6590",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 26001,
   "name": "b_6591",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26014,
   "name": "b_659E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26035,
   "name": "b_65B3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26070,
   "name": "b_65D6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26079,
   "name": "b_65DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26084,
   "name": "b_65E4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26095,
   "name": "b_65EF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26099,
   "name": "r_65F3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 26100,
   "name": "j_65F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26114,
   "name": "b_6602",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26121,
   "name": "b_6609",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26129,
   "name": "b_6611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26133,
   "name": "b_6615",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26136,
   "name": "j_6618",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26148,
   "name": "b_6624",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26166,
   "name": "b_6636",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26175,
   "name": "b_663F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26183,
   "name": "b_6647",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26197,
   "name": "b_6655",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26222,
   "name": "b_666E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26238,
   "name": "j_667E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26250,
   "name": "b_668A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26263,
   "name": "b_6697",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26284,
   "name": "b_66AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26304,
   "name": "b_66C0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26307,
   "name": "j_66C3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26336,
   "name": "b_66E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26354,
   "name": "j_66F2",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26366,
   "name": "j_66FE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26378,
   "name": "b_670A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26391,
   "name": "j_6717",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26401,
   "name": "b_6721",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26413,
   "name": "b_672D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26420,
   "name": "b_6734",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26424,
   "name": "b_6738",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26432,
   "name": "r_6740",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 26433,
   "name": "j_6741",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26443,
   "name": "r_674B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 26444,
   "name": "j_674C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26496,
   "name": "draw_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 26499,
   "name": "s_6783",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 26502,
   "name": "s_6786",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 26511,
   "name": "j_678F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26519,
   "name": "erase_strip",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26524,
   "name": "j_679C",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26530,
   "name": "r_67A2",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 26531,
   "name": "b_67A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26533,
   "name": "b_67A5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26546,
   "name": "b_67B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26614,
   "name": "b_67F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26623,
   "name": "b_67FF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26632,
   "name": "b_6808",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26641,
   "name": "draw_figure",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 26662,
   "name": "b_6826",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26665,
   "name": "b_6829",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26696,
   "name": "b_6848",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26710,
   "name": "b_6856",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26758,
   "name": "b_6886",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26803,
   "name": "j_68B3",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 26832,
   "name": "b_68D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26846,
   "name": "b_68DE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26895,
   "name": "b_690F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 26943,
   "name": "s_693F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 26949,
   "name": "s_6945",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 26969,
   "name": "s_6959",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 26993,
   "name": "s_6971",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27001,
   "name": "b_6979",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27004,
   "name": "s_697C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27012,
   "name": "b_6984",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27015,
   "name": "s_6987",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27029,
   "name": "b_6995",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27031,
   "name": "b_6997",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27050,
   "name": "b_69AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27069,
   "name": "s_69BD",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27083,
   "name": "b_69CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27088,
   "name": "b_69D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27097,
   "name": "b_69D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27100,
   "name": "s_69DC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27114,
   "name": "b_69EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27127,
   "name": "b_69F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27143,
   "name": "b_6A07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27152,
   "name": "r_6A10",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 27153,
   "name": "s_6A11",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27162,
   "name": "b_6A1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27171,
   "name": "s_6A23",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27182,
   "name": "draw_opp_feet",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27214,
   "name": "r_6A4E",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 27215,
   "name": "draw_hero_feet",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27243,
   "name": "r_6A6B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 27244,
   "name": "s_6A6C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27279,
   "name": "b_6A8F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27288,
   "name": "b_6A98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27297,
   "name": "b_6AA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27306,
   "name": "b_6AAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27315,
   "name": "b_6AB3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27324,
   "name": "b_6ABC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27333,
   "name": "s_6AC5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27349,
   "name": "b_6AD5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27352,
   "name": "b_6AD8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27367,
   "name": "b_6AE7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27370,
   "name": "hat5_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27373,
   "name": "hat5_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27376,
   "name": "hat6_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27379,
   "name": "hat6_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27392,
   "name": "opp_brain",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 27405,
   "name": "b_6B0D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27411,
   "name": "b_6B13",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27418,
   "name": "b_6B1A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27437,
   "name": "b_6B2D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27455,
   "name": "b_6B3F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27462,
   "name": "b_6B46",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27469,
   "name": "b_6B4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27478,
   "name": "b_6B56",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27495,
   "name": "b_6B67",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27504,
   "name": "b_6B70",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27515,
   "name": "r_6B7B",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 27516,
   "name": "b_6B7C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27520,
   "name": "j_6B80",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27529,
   "name": "b_6B89",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27544,
   "name": "b_6B98",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27547,
   "name": "b_6B9B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27556,
   "name": "b_6BA4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27562,
   "name": "b_6BAA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27598,
   "name": "b_6BCE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27616,
   "name": "b_6BE0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27631,
   "name": "b_6BEF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27655,
   "name": "b_6C07",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27671,
   "name": "b_6C17",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27680,
   "name": "j_6C20",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27695,
   "name": "b_6C2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27713,
   "name": "b_6C41",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27715,
   "name": "b_6C43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27720,
   "name": "b_6C48",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27730,
   "name": "j_6C52",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27736,
   "name": "j_6C58",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 27753,
   "name": "b_6C69",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27756,
   "name": "opp_limit",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 27761,
   "name": "s_6C71",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 27776,
   "name": "b_6C80",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27780,
   "name": "b_6C84",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27784,
   "name": "b_6C88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27788,
   "name": "b_6C8C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27792,
   "name": "b_6C90",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27794,
   "name": "b_6C92",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27797,
   "name": "random",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 27904,
   "name": "stick_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 27913,
   "name": "read_stick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 27922,
   "name": "b_6D12",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27924,
   "name": "b_6D14",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27931,
   "name": "b_6D1B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27948,
   "name": "b_6D2C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27951,
   "name": "b_6D2F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27979,
   "name": "b_6D4B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 27998,
   "name": "b_6D5E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28009,
   "name": "r_6D69",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 28010,
   "name": "read_buttons",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28035,
   "name": "b_6D83",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28037,
   "name": "b_6D85",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28039,
   "name": "b_6D87",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28063,
   "name": "b_6D9F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28065,
   "name": "b_6DA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28067,
   "name": "r_6DA3",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 28068,
   "name": "stick_axis",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 28076,
   "name": "b_6DAC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28084,
   "name": "b_6DB4",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28086,
   "name": "r_6DB6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 28160,
   "name": "player_input",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28181,
   "name": "b_6E15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28191,
   "name": "b_6E1F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28219,
   "name": "b_6E3B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28238,
   "name": "b_6E4E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28242,
   "name": "b_6E52",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28244,
   "name": "b_6E54",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28247,
   "name": "b_6E57",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28251,
   "name": "b_6E5B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28255,
   "name": "b_6E5F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28265,
   "name": "keyboard_input",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 28280,
   "name": "b_6E78",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28296,
   "name": "b_6E88",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28301,
   "name": "b_6E8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28311,
   "name": "b_6E97",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28321,
   "name": "b_6EA1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28327,
   "name": "b_6EA7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28329,
   "name": "j_6EA9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 28335,
   "name": "b_6EAF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28351,
   "name": "b_6EBF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28357,
   "name": "b_6EC5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28362,
   "name": "b_6ECA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28370,
   "name": "b_6ED2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28378,
   "name": "b_6EDA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28390,
   "name": "b_6EE6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28396,
   "name": "b_6EEC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28401,
   "name": "b_6EF1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28409,
   "name": "b_6EF9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28417,
   "name": "b_6F01",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28420,
   "name": "b_6F04",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28437,
   "name": "b_6F15",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28444,
   "name": "b_6F1C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28449,
   "name": "b_6F21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28456,
   "name": "j_6F28",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 28467,
   "name": "b_6F33",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28478,
   "name": "b_6F3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28672,
   "name": "record_vectors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 28675,
   "name": "s_7003",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 28678,
   "name": "s_7006",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 28681,
   "name": "s_7009",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 28705,
   "name": "init_hero",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28744,
   "name": "init_opp",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28785,
   "name": "save_opp",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28787,
   "name": "b_7073",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28797,
   "name": "load_opp",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28799,
   "name": "b_707F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28813,
   "name": "save_hero",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28815,
   "name": "b_708F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28825,
   "name": "load_hero",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28827,
   "name": "b_709B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28838,
   "name": "measure",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28858,
   "name": "b_70BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28862,
   "name": "b_70BE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28867,
   "name": "b_70C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28870,
   "name": "pose_class",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 28912,
   "name": "hero_side",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28928,
   "name": "b_7100",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28936,
   "name": "b_7108",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28938,
   "name": "b_710A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28940,
   "name": "r_710C",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 28941,
   "name": "opp_side",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 28957,
   "name": "b_711D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28965,
   "name": "b_7125",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28967,
   "name": "b_7127",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28969,
   "name": "r_7129",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 28970,
   "name": "b_712A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 28977,
   "name": "kill_hero",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 28997,
   "name": "fall_dead",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 29002,
   "name": "recoil",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29017,
   "name": "b_7159",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29026,
   "name": "b_7162",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29084,
   "name": "b_719C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29091,
   "name": "b_71A3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29098,
   "name": "b_71AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29101,
   "name": "b_71AD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29105,
   "name": "s_71B1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 29113,
   "name": "b_71B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29116,
   "name": "b_71BC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29123,
   "name": "b_71C3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29132,
   "name": "b_71CC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29141,
   "name": "b_71D5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29147,
   "name": "j_71DB",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29161,
   "name": "j_71E9",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29172,
   "name": "j_71F4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29174,
   "name": "b_71F6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29182,
   "name": "s_71FE",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 29191,
   "name": "apply_hits",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29214,
   "name": "b_721E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29259,
   "name": "b_724B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29267,
   "name": "b_7253",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29273,
   "name": "b_7259",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29301,
   "name": "b_7275",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29306,
   "name": "b_727A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29315,
   "name": "b_7283",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29355,
   "name": "b_72AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29364,
   "name": "j_72B4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 29373,
   "name": "r_72BD",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 29374,
   "name": "s_72BE",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 29385,
   "name": "b_72C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29440,
   "name": "reach",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29466,
   "name": "pose_group",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29492,
   "name": "kick_far",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29502,
   "name": "kick_mid_far",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29512,
   "name": "punch_near",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29522,
   "name": "punch_low_near",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29532,
   "name": "punch_far",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29542,
   "name": "hit_test",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29549,
   "name": "b_736D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29560,
   "name": "b_7378",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29585,
   "name": "b_7391",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29608,
   "name": "b_73A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29623,
   "name": "b_73B7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29634,
   "name": "b_73C2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29641,
   "name": "b_73C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29648,
   "name": "b_73D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29656,
   "name": "b_73D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29664,
   "name": "b_73E0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29668,
   "name": "door_kick",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29723,
   "name": "b_741B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29727,
   "name": "b_741F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29730,
   "name": "b_7422",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29738,
   "name": "b_742A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29746,
   "name": "b_7432",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29754,
   "name": "b_743A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29762,
   "name": "b_7442",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29766,
   "name": "quick_reach",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29776,
   "name": "quick_lunge",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29787,
   "name": "quick_hit",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 29805,
   "name": "b_746D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29821,
   "name": "b_747D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29888,
   "name": "draw_impact",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 29901,
   "name": "b_74CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29912,
   "name": "b_74D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29942,
   "name": "r_74F6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 29943,
   "name": "punch_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29946,
   "name": "quick_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29949,
   "name": "kick_rows",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 29952,
   "name": "b_7500",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29957,
   "name": "b_7505",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29960,
   "name": "b_7508",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29974,
   "name": "b_7516",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 29977,
   "name": "j_7519",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30021,
   "name": "b_7545",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30038,
   "name": "b_7556",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30041,
   "name": "j_7559",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30051,
   "name": "b_7563",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30054,
   "name": "b_7566",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30093,
   "name": "j_758D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30110,
   "name": "j_759E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30208,
   "name": "frame_vectors",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30211,
   "name": "s_7603",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30214,
   "name": "s_7606",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30217,
   "name": "flip",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30237,
   "name": "b_761D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30248,
   "name": "end_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30268,
   "name": "b_763C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30279,
   "name": "b_7647",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30288,
   "name": "b_7650",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30305,
   "name": "b_7661",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30308,
   "name": "b_7664",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30319,
   "name": "b_766F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30330,
   "name": "b_767A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30346,
   "name": "b_768A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30355,
   "name": "b_7693",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30358,
   "name": "r_7696",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30359,
   "name": "special_keys",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30376,
   "name": "b_76A8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30379,
   "name": "b_76AB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30386,
   "name": "b_76B2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30411,
   "name": "b_76CB",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30413,
   "name": "b_76CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30425,
   "name": "b_76D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30437,
   "name": "b_76E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30449,
   "name": "b_76F1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30461,
   "name": "b_76FD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30469,
   "name": "b_7705",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30479,
   "name": "b_770F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30487,
   "name": "b_7717",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30495,
   "name": "b_771F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30498,
   "name": "b_7722",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30514,
   "name": "b_7732",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30536,
   "name": "b_7748",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30538,
   "name": "r_774A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30539,
   "name": "wipe",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30550,
   "name": "b_7756",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30561,
   "name": "wipe_column",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30601,
   "name": "b_7789",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30606,
   "name": "wait_key",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30609,
   "name": "b_7791",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30618,
   "name": "wait_vbl",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30625,
   "name": "b_77A1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30630,
   "name": "r_77A6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 30720,
   "name": "room_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 30723,
   "name": "s_7803",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30726,
   "name": "s_7806",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30729,
   "name": "s_7809",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30732,
   "name": "s_780C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30741,
   "name": "piece_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30752,
   "name": "piece_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30763,
   "name": "piece_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30774,
   "name": "piece_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 30785,
   "name": "draw_walls",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30836,
   "name": "b_7874",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30853,
   "name": "draw_doorways",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 30876,
   "name": "b_789C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30895,
   "name": "b_78AF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30901,
   "name": "s_78B5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30909,
   "name": "b_78BD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 30926,
   "name": "j_78CE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30936,
   "name": "s_78D8",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30952,
   "name": "j_78E8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 30969,
   "name": "s_78F9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 30984,
   "name": "j_7908",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31002,
   "name": "s_791A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31017,
   "name": "draw_cell",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31026,
   "name": "b_7932",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31082,
   "name": "draw_cell_door",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31107,
   "name": "b_7983",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31136,
   "name": "scene_vectors",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 31142,
   "name": "akuma_sends",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31214,
   "name": "b_79EE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31265,
   "name": "b_7A21",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31282,
   "name": "b_7A32",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31299,
   "name": "b_7A43",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31319,
   "name": "s_7A57",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31321,
   "name": "b_7A59",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31330,
   "name": "s_7A62",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31332,
   "name": "b_7A64",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31341,
   "name": "s_7A6D",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31398,
   "name": "b_7AA6",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31400,
   "name": "j_7AA8",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31409,
   "name": "s_7AB1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31411,
   "name": "s_7AB3",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31425,
   "name": "s_7AC1",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31432,
   "name": "b_7AC8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31452,
   "name": "s_7ADC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31479,
   "name": "chamber_scene",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31561,
   "name": "b_7B49",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31568,
   "name": "b_7B50",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31571,
   "name": "b_7B53",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31597,
   "name": "b_7B6D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31662,
   "name": "b_7BAE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31682,
   "name": "b_7BC2",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31700,
   "name": "j_7BD4",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31707,
   "name": "s_7BDB",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31746,
   "name": "b_7C02",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31752,
   "name": "b_7C08",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31755,
   "name": "j_7C0B",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31774,
   "name": "b_7C1E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31785,
   "name": "b_7C29",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31799,
   "name": "b_7C37",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31811,
   "name": "end_scene_frame",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31821,
   "name": "b_7C4D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 31827,
   "name": "scene_start",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 31864,
   "name": "scene_end",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 31891,
   "name": "s_7C93",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31910,
   "name": "s_7CA6",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31916,
   "name": "j_7CAC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 31925,
   "name": "s_7CB5",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31928,
   "name": "s_7CB8",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31931,
   "name": "s_7CBB",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31940,
   "name": "s_7CC4",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31964,
   "name": "s_7CDC",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 31970,
   "name": "s_7CE2",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32000,
   "name": "akuma_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32003,
   "name": "s_7D03",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32006,
   "name": "s_7D06",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32012,
   "name": "akuma_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32029,
   "name": "akuma_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32046,
   "name": "akuma_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32063,
   "name": "akuma_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32080,
   "name": "s_7D50",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32106,
   "name": "s_7D6A",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32132,
   "name": "j_7D84",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32143,
   "name": "j_7D8F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32190,
   "name": "j_7DBE",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32248,
   "name": "s_7DF8",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32259,
   "name": "s_7E03",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32270,
   "name": "j_7E0E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32287,
   "name": "s_7E1F",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32292,
   "name": "s_7E24",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32304,
   "name": "mariko_vectors",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 32307,
   "name": "s_7E33",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32310,
   "name": "s_7E36",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32313,
   "name": "s_7E39",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32319,
   "name": "mariko_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32346,
   "name": "mariko_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32373,
   "name": "mariko_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32400,
   "name": "mariko_row",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32427,
   "name": "mariko_step_col",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32435,
   "name": "mariko_step_dot",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 32443,
   "name": "s_7EBB",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32455,
   "name": "s_7EC7",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32463,
   "name": "s_7ECF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32476,
   "name": "j_7EDC",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32515,
   "name": "b_7F03",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32548,
   "name": "j_7F24",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32574,
   "name": "b_7F3E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32579,
   "name": "j_7F43",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32608,
   "name": "j_7F60",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32653,
   "name": "b_7F8D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32659,
   "name": "j_7F93",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 32697,
   "name": "s_7FB9",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32719,
   "name": "s_7FCF",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 32732,
   "name": "b_7FDC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 32736,
   "name": "r_7FE0",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 32768,
   "name": "legs_00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32845,
   "name": "legs_01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32922,
   "name": "legs_02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32945,
   "name": "legs_03",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 32991,
   "name": "legs_04",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33131,
   "name": "legs_05",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33213,
   "name": "legs_06",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33310,
   "name": "torso_00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33348,
   "name": "torso_02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33518,
   "name": "torso_03",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33604,
   "name": "torso_04",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33650,
   "name": "torso_05",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33704,
   "name": "torso_06",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33758,
   "name": "legs_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33855,
   "name": "legs_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 33952,
   "name": "legs_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34014,
   "name": "legs_1a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34073,
   "name": "legs_1b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34135,
   "name": "legs_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34194,
   "name": "legs_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34291,
   "name": "legs_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34388,
   "name": "legs_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34485,
   "name": "torso_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34539,
   "name": "torso_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34580,
   "name": "torso_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34667,
   "name": "torso_17",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34739,
   "name": "torso_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34811,
   "name": "torso_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 34927,
   "name": "torso_1a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35013,
   "name": "torso_1b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35099,
   "name": "torso_1c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35170,
   "name": "torso_1d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35228,
   "name": "legs_07",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35278,
   "name": "legs_08",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35358,
   "name": "legs_09",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35429,
   "name": "legs_0a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35531,
   "name": "torso_07",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35561,
   "name": "torso_08",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35599,
   "name": "torso_09",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35640,
   "name": "torso_0a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35694,
   "name": "legs_0b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35748,
   "name": "legs_0c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35802,
   "name": "legs_0d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35856,
   "name": "torso_0b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35882,
   "name": "torso_0c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35914,
   "name": "torso_0d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 35946,
   "name": "legs_0e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36032,
   "name": "legs_0f",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36106,
   "name": "legs_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36138,
   "name": "legs_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36215,
   "name": "legs_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36265,
   "name": "legs_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36315,
   "name": "torso_0e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36367,
   "name": "torso_0f",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36401,
   "name": "torso_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36439,
   "name": "torso_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36463,
   "name": "torso_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36483,
   "name": "torso_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36507,
   "name": "hero_head_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36517,
   "name": "hero_head_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36531,
   "name": "hero_head_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36545,
   "name": "face_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36555,
   "name": "hat0_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36587,
   "name": "hat0_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36622,
   "name": "hat0_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36651,
   "name": "hat6_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36683,
   "name": "hat6_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36718,
   "name": "hat6_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36761,
   "name": "spare_hat_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36793,
   "name": "spare_hat_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36825,
   "name": "spare_hat_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36867,
   "name": "spare_hat_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36902,
   "name": "spare_hat_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36931,
   "name": "feet_mask_00",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36953,
   "name": "feet_mask_01",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 36975,
   "name": "feet_mask_02",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37001,
   "name": "feet_mask_03",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37031,
   "name": "feet_mask_04",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37057,
   "name": "feet_mask_05",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37079,
   "name": "feet_mask_06",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37109,
   "name": "feet_mask_07",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37119,
   "name": "feet_mask_08",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37142,
   "name": "feet_mask_09",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37174,
   "name": "feet_mask_0a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37200,
   "name": "feet_mask_0b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37214,
   "name": "feet_mask_0c",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37228,
   "name": "feet_mask_0d",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37246,
   "name": "feet_mask_0e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37272,
   "name": "feet_mask_0f",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37334,
   "name": "feet_mask_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37376,
   "name": "feet_mask_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37448,
   "name": "feet_mask_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37520,
   "name": "feet_mask_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37599,
   "name": "feet_mask_18",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37625,
   "name": "feet_mask_19",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37647,
   "name": "feet_mask_1a",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37667,
   "name": "feet_mask_1b",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37687,
   "name": "feet_mask_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37705,
   "name": "spare_mask_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37714,
   "name": "spare_mask_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37723,
   "name": "spare_mask_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37739,
   "name": "spare_mask_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37755,
   "name": "spare_mask_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37771,
   "name": "spare_mask_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37787,
   "name": "spare_mask_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37803,
   "name": "star_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 37930,
   "name": "star",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38032,
   "name": "quick_star_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38118,
   "name": "quick_star",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38180,
   "name": "feet_mask_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38224,
   "name": "feet_mask_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38286,
   "name": "feet_mask_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38328,
   "name": "feet_mask_25",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38346,
   "name": "feet_mask_28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38372,
   "name": "feet_mask_29",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38400,
   "name": "scenery_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38474,
   "name": "scenery_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38606,
   "name": "scenery_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38685,
   "name": "scenery_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38723,
   "name": "scenery_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38731,
   "name": "akuma_10",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 38991,
   "name": "akuma_11",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39000,
   "name": "akuma_15",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39004,
   "name": "akuma_16",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39033,
   "name": "akuma_1",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39051,
   "name": "akuma_2",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39069,
   "name": "akuma_3",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39087,
   "name": "akuma_4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39105,
   "name": "akuma_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39123,
   "name": "akuma_7",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39176,
   "name": "akuma_8",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39254,
   "name": "akuma_9",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39296,
   "name": "scenery_5",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39448,
   "name": "standing_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39466,
   "name": "stance_mask",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39522,
   "name": "akuma_6",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39540,
   "name": "the_end_picture",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39680,
   "name": "legs_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39787,
   "name": "legs_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39909,
   "name": "legs_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 39963,
   "name": "legs_25",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40037,
   "name": "legs_26",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40111,
   "name": "legs_27",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40151,
   "name": "legs_28",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40222,
   "name": "legs_29",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40296,
   "name": "torso_1e",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40343,
   "name": "torso_1f",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40405,
   "name": "torso_20",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40453,
   "name": "torso_21",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40494,
   "name": "torso_22",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40522,
   "name": "torso_23",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40564,
   "name": "torso_24",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40594,
   "name": "torso_25",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40632,
   "name": "akuma_0",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40844,
   "name": "akuma_12",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40900,
   "name": "akuma_13",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 40920,
   "name": "akuma_14",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 49152,
   "name": "a_C000",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49168,
   "name": "a_C010",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49177,
   "name": "a_C019",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49200,
   "name": "a_C030",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49236,
   "name": "a_C054",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49237,
   "name": "a_C055",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49249,
   "name": "a_C061",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49250,
   "name": "a_C062",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49252,
   "name": "f_C064",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49253,
   "name": "a_C065",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49264,
   "name": "a_C070",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49280,
   "name": "f_C080",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49281,
   "name": "a_C081",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49282,
   "name": "a_C082",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 49288,
   "name": "f_C088",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49289,
   "name": "f_C089",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 49292,
   "name": "f_C08C",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 53417,
   "name": "a_D0A9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64303,
   "name": "INIT",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64435,
   "name": "a_FBB3",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 64600,
   "name": "HOME",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 64680,
   "name": "WAIT",
   "type": "Predefined",
   "kind": "system"
  },
  {
   "address": 65535,
   "name": "a_FFFF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  }
 ],
 "comments": [
  {
   "address": 0,
   "type": "line",
   "text": "The low byte of the row pointer the drawing routines write through ($00),Y: the fills ($0A09, $0A40), the right-edge clear ($0ABF) and the shape routines in each stage; the loader's scratch too."
  },
  {
   "address": 1,
   "type": "line",
   "text": "The row pointer's high byte, the draw page ($07) added to the row table's."
  },
  {
   "address": 2,
   "type": "line",
   "text": "The fill's colour for even byte columns ($0A09); $80 is black, $D5 and $AA the blue pair. The loader's scratch too."
  },
  {
   "address": 3,
   "type": "line",
   "text": "The low byte of the shape being drawn ($1903) or of the glyph in the text routine ($0700)."
  },
  {
   "address": 4,
   "type": "line",
   "text": "The shape's high byte."
  },
  {
   "address": 5,
   "type": "line",
   "text": "The byte column a shape is drawn at, or a fill's first column."
  },
  {
   "address": 6,
   "type": "line",
   "text": "The row a shape is drawn at (its top), or a fill's first row."
  },
  {
   "address": 7,
   "type": "line",
   "text": "The draw page's high byte, $20 or $40: the page not shown, which every drawing routine writes to; the frame's end flips them ($7609)."
  },
  {
   "address": 8,
   "type": "line",
   "text": "A fill's end row, one past its last ($0A09); the loader's sector scratch."
  },
  {
   "address": 9,
   "type": "line",
   "text": "A fill's end column, one past its last."
  },
  {
   "address": 10,
   "type": "line",
   "text": "The loader's count of pages left in a sector ($406A); an index in the stages' mirrored shape routine ($1BA9)."
  },
  {
   "address": 11,
   "type": "line",
   "text": "The loader's decoding scratch ($4099); a second index in the stages' mirrored shape routine ($1BAD)."
  },
  {
   "address": 13,
   "type": "line",
   "text": "The rows to draw: a shape's height, or a fill's rows less one ($0A8F)."
  },
  {
   "address": 14,
   "type": "line",
   "text": "The bytes to draw on each row: a shape's width after clipping, or a fill's columns less one."
  },
  {
   "address": 15,
   "type": "line",
   "text": "The drawing mode: 0 ORs the shape onto the screen, $FF ANDs it (a mask), 1 stores it over what is there."
  },
  {
   "address": 16,
   "type": "line",
   "text": "The dot offset (0-6) a shape is drawn at within its byte column."
  },
  {
   "address": 17,
   "type": "line",
   "text": "The fill's colour for odd byte columns; the pair $02, $11 makes one hi-res colour."
  },
  {
   "address": 18,
   "type": "line",
   "text": "The fill's colour for even columns on odd rows ($0A40), for the floor's patterns."
  },
  {
   "address": 19,
   "type": "line",
   "text": "The fill's colour for odd columns on odd rows."
  },
  {
   "address": 24,
   "type": "line",
   "text": "X kept by the fill's clip ($0A8F) and by the shape routines."
  },
  {
   "address": 31,
   "type": "line",
   "text": "The half track the disk head is on, kept by the loader ($40BD)."
  },
  {
   "address": 32,
   "type": "line",
   "text": "The working figure's legs pose. $20-$2F hold whichever fighter is being moved or drawn, copied in and out of the hero's record ($60-$6F) and the opponent's ($70-$7F) by $7000."
  },
  {
   "address": 33,
   "type": "line",
   "text": "The working figure's torso pose."
  },
  {
   "address": 34,
   "type": "line",
   "text": "The working figure's byte column, with the dot offset $50."
  },
  {
   "address": 35,
   "type": "line",
   "text": "The legs' column, worked out from $22 while the figure is drawn."
  },
  {
   "address": 36,
   "type": "line",
   "text": "Counts the kick's wind-ups asked for again (at most three); a hit in the kick, a punch's lunge or the fall sets it to 10 ($714A), so that the next punch is refused ($6618)."
  },
  {
   "address": 37,
   "type": "line",
   "text": "The position in the legs' sequence ($6300)."
  },
  {
   "address": 38,
   "type": "line",
   "text": "The position in the torso's sequence ($63BE)."
  },
  {
   "address": 39,
   "type": "line",
   "text": "The legs' step through their sequence: 1 forwards, $FF backwards, 0 held."
  },
  {
   "address": 40,
   "type": "line",
   "text": "The torso's step through its sequence."
  },
  {
   "address": 41,
   "type": "line",
   "text": "The stick's left and right for the working figure, made relative to the way it faces: 1 forward, $FF back, 0 centred."
  },
  {
   "address": 42,
   "type": "line",
   "text": "The stick's up and down: the height of the next blow, $FF up."
  },
  {
   "address": 43,
   "type": "line",
   "text": "The blow being thrown: kicks 0-2, punches 3-5, quick punches 6-8, $FF none ($6400)."
  },
  {
   "address": 44,
   "type": "line",
   "text": "The way the figure faces: 1 right, $FF left."
  },
  {
   "address": 47,
   "type": "line",
   "text": "Standing ($FF) or in the stance (0)."
  },
  {
   "address": 48,
   "type": "line",
   "text": "Set while the opponent walks on before taking the stance; the stages set it when a guard comes."
  },
  {
   "address": 49,
   "type": "line",
   "text": "The dot offset kept during a cutscene ($7C53)."
  },
  {
   "address": 50,
   "type": "line",
   "text": "The other fighter's pose class ($70C6), set by the measure ($70A6) for the hit tests."
  },
  {
   "address": 51,
   "type": "line",
   "text": "The distance between the fighters, the opponent's column less the hero's, or $FF when they are on different screens."
  },
  {
   "address": 54,
   "type": "line",
   "text": "Counts up while a cutscene runs; 0 in play."
  },
  {
   "address": 55,
   "type": "line",
   "text": "The screen number kept during a cutscene ($7C53); the cliff and the palace use it for a guard's true column as the camera runs."
  },
  {
   "address": 57,
   "type": "line",
   "text": "Mariko's pose."
  },
  {
   "address": 58,
   "type": "line",
   "text": "Mariko's dot offset."
  },
  {
   "address": 59,
   "type": "line",
   "text": "Mariko's column; in the last stage, the embrace's step."
  },
  {
   "address": 60,
   "type": "line",
   "text": "The page copy's source pointer, low byte ($03C3); in the title's chamber scene a count of frames ($7B19, $7C14)."
  },
  {
   "address": 61,
   "type": "line",
   "text": "The page copy's source page; in the chamber scene a flag that would end it early at 0 ($7AF7)."
  },
  {
   "address": 62,
   "type": "line",
   "text": "The headgear, which tells guards apart: types 1-5 drawn from the stage's pictures, 6 and 0 from the engine's ($6A6C). The page copy uses it as its destination pointer's low byte ($03CB)."
  },
  {
   "address": 63,
   "type": "line",
   "text": "The page copy's destination page; in the title and the cliff, set while the gate's near post is to be drawn over the figures ($AF4D)."
  },
  {
   "address": 64,
   "type": "line",
   "text": "The result of the opponent's blow on the hero ($7366 with $A3 = 1): 0 none, 1-3 a quick punch, a punch or a kick, 4 a collision; the stages set $88 for a bounce off a shut doorway and $FF for Mariko's kick."
  },
  {
   "address": 65,
   "type": "line",
   "text": "The result of the hero's blow on the opponent."
  },
  {
   "address": 66,
   "type": "line",
   "text": "Counts the frames of the struck sound ($0C40), played at the frame's end."
  },
  {
   "address": 67,
   "type": "line",
   "text": "Counts the frames of the hit's sound ($0C43, or $0C46 for a quick punch)."
  },
  {
   "address": 68,
   "type": "line",
   "text": "The screen or room the hero is in: 0 the first, which scrolls."
  },
  {
   "address": 69,
   "type": "line",
   "text": "Set by a kick or punch ($6441), the swing's sound ($0C49) played and cleared at the frame's end."
  },
  {
   "address": 70,
   "type": "line",
   "text": "The kick button's press, kept until the kick is taken ($80) so that one press makes one kick; $FF a waiting stance."
  },
  {
   "address": 71,
   "type": "line",
   "text": "The punch button's press, kept the same way; $FF a waiting bow."
  },
  {
   "address": 72,
   "type": "line",
   "text": "The random number, stepped by the brain ($6C95) and by each stage's own routine."
  },
  {
   "address": 75,
   "type": "line",
   "text": "Set while the opponent is on the camera's far side, at the gate ahead; while $4B and $4C differ the measure ($70A6) puts the fighters on different screens."
  },
  {
   "address": 76,
   "type": "line",
   "text": "Set while the camera is ahead at the gate, 0 while it is on the hero."
  },
  {
   "address": 77,
   "type": "line",
   "text": "The opponent's type: 0 a guard, 1 Akuma, 2 Akuma beaten, 5 the hawk."
  },
  {
   "address": 78,
   "type": "line",
   "text": "Counts down to the sampled sound ($0DC0) at the frame's end."
  },
  {
   "address": 79,
   "type": "line",
   "text": "The music on (1) or off (0), turned by CONTROL-S."
  },
  {
   "address": 80,
   "type": "line",
   "text": "The scene's dot offset (0-6), shared by every figure and the scrolling scenery."
  },
  {
   "address": 82,
   "type": "line",
   "text": "The scroll: the scenery's column on a screen that scrolls."
  },
  {
   "address": 84,
   "type": "line",
   "text": "Counts the frames still to draw whole, both pages after a cutscene ($7C7C)."
  },
  {
   "address": 86,
   "type": "line",
   "text": "Akuma's hand part in his chamber ($7E21); the stages set it to 5 at their start."
  },
  {
   "address": 90,
   "type": "line",
   "text": "Set by a stage so that the opponent takes no recoil from a hit ($72AB)."
  },
  {
   "address": 91,
   "type": "line",
   "text": "The hero's arrows' recovery count ($0BE3): every $B8 counts one comes back."
  },
  {
   "address": 92,
   "type": "line",
   "text": "The opponent's recovery count, every $B9 counts."
  },
  {
   "address": 93,
   "type": "line",
   "text": "The hero alive (1) or dead (0)."
  },
  {
   "address": 94,
   "type": "line",
   "text": "The opponent alive (1) or dead (0)."
  },
  {
   "address": 95,
   "type": "line",
   "text": "A second count of frames to draw whole, set to 2 after a cutscene ($7C7A) and counted down by the title, the cliff and the palace."
  },
  {
   "address": 96,
   "type": "line",
   "text": "The hero's legs pose. $60-$6F is the hero's record, laid out as $20-$2F."
  },
  {
   "address": 97,
   "type": "line",
   "text": "The hero's torso pose."
  },
  {
   "address": 98,
   "type": "line",
   "text": "The hero's byte column."
  },
  {
   "address": 101,
   "type": "line",
   "text": "The hero's legs' sequence position; the brain reads it to see him bow."
  },
  {
   "address": 102,
   "type": "line",
   "text": "The hero's torso's sequence position."
  },
  {
   "address": 103,
   "type": "line",
   "text": "The hero's legs' step."
  },
  {
   "address": 104,
   "type": "line",
   "text": "The hero's torso's step."
  },
  {
   "address": 105,
   "type": "line",
   "text": "The hero's stick, left and right."
  },
  {
   "address": 106,
   "type": "line",
   "text": "The hero's height, up and down."
  },
  {
   "address": 107,
   "type": "line",
   "text": "The blow the hero is throwing, which the stages test ($7366)."
  },
  {
   "address": 108,
   "type": "line",
   "text": "The way the hero faces."
  },
  {
   "address": 109,
   "type": "line",
   "text": "A field of the hero's record that the set-up clears ($703B) and nothing reads."
  },
  {
   "address": 111,
   "type": "line",
   "text": "The hero standing ($FF) or in the stance (0)."
  },
  {
   "address": 112,
   "type": "line",
   "text": "The opponent's legs pose. $70-$7F is the opponent's record, laid out as $20-$2F."
  },
  {
   "address": 113,
   "type": "line",
   "text": "The opponent's torso pose."
  },
  {
   "address": 114,
   "type": "line",
   "text": "The opponent's byte column."
  },
  {
   "address": 117,
   "type": "line",
   "text": "The opponent's legs' sequence position."
  },
  {
   "address": 118,
   "type": "line",
   "text": "The opponent's torso's sequence position."
  },
  {
   "address": 119,
   "type": "line",
   "text": "The opponent's legs' step."
  },
  {
   "address": 120,
   "type": "line",
   "text": "The opponent's torso's step."
  },
  {
   "address": 121,
   "type": "line",
   "text": "The opponent's stick: 1 walks him forward, as Akuma's guards do in his chamber ($79E6)."
  },
  {
   "address": 122,
   "type": "line",
   "text": "The opponent's height; cleared when the hero dies of a collision ($7143)."
  },
  {
   "address": 123,
   "type": "line",
   "text": "The blow the opponent is throwing."
  },
  {
   "address": 124,
   "type": "line",
   "text": "The way the opponent faces."
  },
  {
   "address": 125,
   "type": "line",
   "text": "A field of the opponent's record that the set-up clears ($7064) and nothing reads."
  },
  {
   "address": 127,
   "type": "line",
   "text": "The opponent standing ($FF) or in the stance (0)."
  },
  {
   "address": 128,
   "type": "line",
   "text": "Scratch: the torso's column while a figure is drawn, the high byte of the page shown in the wipe ($7752), an index in the hit test, and more in the stages."
  },
  {
   "address": 129,
   "type": "line",
   "text": "The torso's dot offset while a figure is drawn."
  },
  {
   "address": 131,
   "type": "line",
   "text": "Counts the frames for which the room is drawn whole, both pages ($7845)."
  },
  {
   "address": 132,
   "type": "line",
   "text": "The doorway shut (5) or open (0), drawn over the room ($7895); in the cell scene, its door."
  },
  {
   "address": 134,
   "type": "line",
   "text": "The sound on (1) or off (0), turned by CONTROL-S after the music; with it off the frame's sounds are dropped."
  },
  {
   "address": 136,
   "type": "line",
   "text": "The stage's tune asked for, played at the frame's end ($1006); the track reader's index into its table ($5501)."
  },
  {
   "address": 138,
   "type": "line",
   "text": "Akuma's arm in his chamber: 7 down, 8 raising, 9 pointing."
  },
  {
   "address": 143,
   "type": "line",
   "text": "Akuma's head in his chamber, one of his six drawings ($7D0C)."
  },
  {
   "address": 145,
   "type": "line",
   "text": "The hawk's column."
  },
  {
   "address": 147,
   "type": "line",
   "text": "The hawk's row."
  },
  {
   "address": 148,
   "type": "line",
   "text": "The hawk's speed in columns a frame, negative flying left."
  },
  {
   "address": 151,
   "type": "line",
   "text": "A star on the hawk, struck (1) or pecking (2), drawn and cleared by $74C0."
  },
  {
   "address": 152,
   "type": "line",
   "text": "A hawk in the stage; cleared when it falls."
  },
  {
   "address": 154,
   "type": "line",
   "text": "Mariko's state in the last stage: $FE and $FF after her kick, 2 the embrace; at $FE the star of her kick is drawn on the hero ($74C0)."
  },
  {
   "address": 155,
   "type": "line",
   "text": "The last sample's bit, while the sampled sound plays ($0DC0)."
  },
  {
   "address": 156,
   "type": "line",
   "text": "The sampled sound's pointer, low byte."
  },
  {
   "address": 157,
   "type": "line",
   "text": "The sampled sound's pointer, high byte."
  },
  {
   "address": 158,
   "type": "line",
   "text": "The sampled sound's end, low byte; during a cutscene, the opponent's last column kept ($E5)."
  },
  {
   "address": 159,
   "type": "line",
   "text": "The sampled sound's end, high byte; during a cutscene, his other kept column ($E4)."
  },
  {
   "address": 160,
   "type": "line",
   "text": "The first of the three disk marks the loader looks for ($570F); in the stages, Mariko held while Akuma lives (5)."
  },
  {
   "address": 161,
   "type": "line",
   "text": "The loader's second mark; in the cliff, the hero falling."
  },
  {
   "address": 162,
   "type": "line",
   "text": "The loader's third mark; in the cliff, the fall starting."
  },
  {
   "address": 163,
   "type": "line",
   "text": "Set when the hero is the target of the hit test (1), the opponent (0); the loader's end mark."
  },
  {
   "address": 164,
   "type": "line",
   "text": "The loader's count of sectors ($5711); in the stages, the hawk's pecks."
  },
  {
   "address": 165,
   "type": "line",
   "text": "The loader's sector index ($5718); in the stages, the hawk's most pecks."
  },
  {
   "address": 166,
   "type": "line",
   "text": "The half track the loader's seek goes to ($576F); the chamber scene clears it ($7B63)."
  },
  {
   "address": 167,
   "type": "line",
   "text": "The loader's seek scratch ($5778); in the palace, the portcullis's bottom row."
  },
  {
   "address": 168,
   "type": "line",
   "text": "The loader's seek scratch ($577D); in the palace, the portcullis moving."
  },
  {
   "address": 176,
   "type": "line",
   "text": "The hero's most arrows, which his arrows recover up to ($0C08)."
  },
  {
   "address": 177,
   "type": "line",
   "text": "The opponent's most arrows ($0C1A)."
  },
  {
   "address": 182,
   "type": "line",
   "text": "The hero's arrows now: his life, drawn along the bottom left ($0B35)."
  },
  {
   "address": 183,
   "type": "line",
   "text": "The opponent's arrows now, drawn along the bottom right."
  },
  {
   "address": 184,
   "type": "line",
   "text": "The hero's arrows' recovery interval, in calls of $0BE3."
  },
  {
   "address": 185,
   "type": "line",
   "text": "The opponent's recovery interval; $FF for the hawk, which never recovers."
  },
  {
   "address": 186,
   "type": "line",
   "text": "The sampled sound's speed: the delay between its samples ($0DD0)."
  },
  {
   "address": 192,
   "type": "line",
   "text": "CONTROL-E's flag, the stick's axes swapped."
  },
  {
   "address": 193,
   "type": "line",
   "text": "CONTROL-X's flag, the stick's left and right turned over."
  },
  {
   "address": 194,
   "type": "line",
   "text": "CONTROL-Y's flag, the stick's up and down turned over."
  },
  {
   "address": 195,
   "type": "line",
   "text": "CONTROL-B's flag, the buttons swapped."
  },
  {
   "address": 196,
   "type": "line",
   "text": "The keyboard chosen (K) rather than the joystick (J)."
  },
  {
   "address": 197,
   "type": "line",
   "text": "The rooms opened in stages 3 and 4: a doorway kicked open counts one more ($7416)."
  },
  {
   "address": 208,
   "type": "line",
   "text": "The stage to load ($020C): 0 the title, 1 the cliff, 2 the palace, 3 the dungeon, 4 Akuma's chamber."
  },
  {
   "address": 210,
   "type": "line",
   "text": "The stage loaded, copied from $D0 once it is in; the engine's checks of which stage is running read it."
  },
  {
   "address": 213,
   "type": "line",
   "text": "A copy of the music's flag that CONTROL-S writes and nothing reads."
  },
  {
   "address": 214,
   "type": "line",
   "text": "A copy of the sound's flag that CONTROL-S writes and nothing reads."
  },
  {
   "address": 215,
   "type": "line",
   "text": "The chance of a kick: a random byte below it lets the brain's kick go ahead ($6C23); each stage sets it for its guards."
  },
  {
   "address": 216,
   "type": "line",
   "text": "The chance of a punch ($6BF2)."
  },
  {
   "address": 217,
   "type": "line",
   "text": "The chance of a step forward ($6BE3)."
  },
  {
   "address": 220,
   "type": "line",
   "text": "Set to 1 by a key at THE END ($02BD) and to 0 as the title starts ($0259); nothing reads it."
  },
  {
   "address": 224,
   "type": "line",
   "text": "The scroll kept from the last frame ($52), for the covers; in the title, the text and scroll routines' row pointer."
  },
  {
   "address": 225,
   "type": "line",
   "text": "The scroll kept from two frames before: the page now being drawn was last drawn then."
  },
  {
   "address": 226,
   "type": "line",
   "text": "The hero's column kept from the last frame; in the title, the scroll's second row pointer."
  },
  {
   "address": 227,
   "type": "line",
   "text": "The hero's column from two frames before, for the band cleared behind him ($678F); in the title, the scroll's second row pointer, high byte."
  },
  {
   "address": 228,
   "type": "line",
   "text": "The opponent's column kept from the last frame; in the title, the page shown ($0799)."
  },
  {
   "address": 229,
   "type": "line",
   "text": "The opponent's column from two frames before, for the band behind him ($6797); the text routine's pointer to its line ($0700)."
  },
  {
   "address": 237,
   "type": "line",
   "text": "The piece of scenery drawn on room 1's left: 5, the door shut behind the hero in the dungeon."
  },
  {
   "address": 246,
   "type": "line",
   "text": "The tune player's position in the tune ($0D00)."
  },
  {
   "address": 247,
   "type": "line",
   "text": "The tune's address, low byte; each stage's tunes set it ($1013 and the like)."
  },
  {
   "address": 249,
   "type": "line",
   "text": "The note's coarse count, kept; with bit 7 set the note is a rest and neither voice clicks."
  },
  {
   "address": 250,
   "type": "line",
   "text": "The first voice's coarse count, counted down to its next click."
  },
  {
   "address": 251,
   "type": "line",
   "text": "The second voice's coarse count, counted down to its next click."
  },
  {
   "address": 252,
   "type": "line",
   "text": "The note's fine count, for both voices' inner loops."
  },
  {
   "address": 253,
   "type": "line",
   "text": "The note's length, counted down."
  },
  {
   "address": 254,
   "type": "line",
   "text": "The tempo's count, from the tune's first byte, for each pass of a note's loop."
  },
  {
   "address": 255,
   "type": "line",
   "text": "The tune player's innermost count, from $FF."
  },
  {
   "address": 512,
   "type": "line",
   "text": "The engine's four entry points: $0200 loads the stage named by $D0 and enters it (the loader's boot jumps here with $D0 = 0, and stages jump here to load the next), $0203 shows THE END and waits for a key, $0206 restarts the demo (CONTROL-R), $0209 starts a game (the title stage, on a key)."
  },
  {
   "address": 515,
   "type": "line",
   "text": "THE END: stages jump here when the hero has died (or the demo is over); runs to $025E."
  },
  {
   "address": 518,
   "type": "line",
   "text": "Restart the demo: CONTROL-R in play jumps here ($772F) with A = the stage number."
  },
  {
   "address": 521,
   "type": "line",
   "text": "Start a game: the title stage jumps here when a key is pressed at the title ($B7E7); runs to $0237."
  },
  {
   "address": 524,
   "type": "line",
   "text": "Load stage $D0 with the loader ($0300) until it reads without error and the stage's last three bytes check: $BFFD must equal $D0, $BFFE $D0 EOR $3B and $BFFF $D0 EOR $49; it retries the whole load until they do. Then copies $D0 into $D2, sets the draw page ($07) to $40 and enters the stage through its vector at $BFFA."
  },
  {
   "address": 556,
   "type": "line",
   "text": "Enter the loaded stage: $D2 = $D0, draw on page 2 ($07 = $40), and jump to the stage's entry, $BFFA."
  },
  {
   "address": 567,
   "type": "line",
   "text": "Start a game: clear the draw page ($1900) and, unless page 1 was the one drawn on, flip ($7609) and clear the other too, then flip; then show the castle picture ($0303), play the tune the title stage keeps at $1012, set $D0 = 1 (the cliff) and $DC = 0, and load the cliff ($020C)."
  },
  {
   "address": 582,
   "type": "line",
   "text": "Show the page just cleared ($7609)."
  },
  {
   "address": 585,
   "type": "line",
   "text": "Count $D2 down once and show the castle picture ($0303 returns A = 0, so the BNE back never branches); then the tune, $D0 = 1, $DC = 0, and load the cliff."
  },
  {
   "address": 606,
   "type": "line",
   "text": "THE END: draw the words ($02CB), then poll about 65,000 times for a key ($C000), or for either joystick button ($C061, $C062) when $C4 says joystick, and start a game on one ($02B4). If none comes, flip ($7609) and go back to the title: re-enter the title stage ($022C) if it is the one loaded ($D2 = 0), otherwise set $D0 = 0 and load it ($020C)."
  },
  {
   "address": 657,
   "type": "line",
   "text": "No key in time: flip pages, then back into the title stage if $D2 is 0, else reload the title stage."
  },
  {
   "address": 674,
   "type": "line",
   "text": "CONTROL-R's restart (through $0206): clear both pages and continue as if no key came ($0291), which returns to the title and its demo."
  },
  {
   "address": 692,
   "type": "line",
   "text": "A key or button at THE END: flip pages and set $DC = 1; if the cliff is the stage loaded ($D2 = 1), enter it again as it is ($022C), otherwise set $D0 = 1 and load it ($020C)."
  },
  {
   "address": 715,
   "type": "line",
   "text": "Clear the draw page, draw THE END on it ($02E7) and show it ($7609), then clear the other page; when that is page 2, draw the words there too, flip again and clear."
  },
  {
   "address": 743,
   "type": "line",
   "text": "Draw THE END, the shape at $9A74 (10 rows of 10 bytes), at byte column 15, row 90, stored over what is there ($0F = 1), through the stage's shape routine at $1903."
  },
  {
   "address": 766,
   "type": "line",
   "text": "Two bytes after THE END's routine, $19 $DF; nothing reads them."
  },
  {
   "address": 768,
   "type": "line",
   "text": "The loader's two entry points: $0300 loads what A names (a stage's number, $10 for the castle picture), $0303 loads and shows the castle picture."
  },
  {
   "address": 771,
   "type": "line",
   "text": "JMP: load the castle picture and show it ($03A5)."
  },
  {
   "address": 774,
   "type": "line",
   "text": "The disk controller's slot times 16, $60 for slot 6, which the loader reads into X for every access to the drive ($C08C,X and the rest); $0307-$0308 hold $C600, the address of slot 6's boot ROM, through which the reset handler boots the disk again ($0335)."
  },
  {
   "address": 777,
   "type": "line",
   "text": "The reset handler (page 3's soft-reset vector $03F2, and the language card's copy of the ROM's reset vector at $FFFC): loads 'R' and skips the next load with BIT; the BRK handler at $030C loads 'P'. Either way it initialises the text screen (INIT, HOME), puts the letter at the top left of text page 1, clears $0800-$BFFF a page at a time while clicking the speaker, copies the ROM into the language card again ($03DC), spoils the power-up byte ($03F4) and jumps to the boot ROM at $C600 ($0307): reset or a BRK reboots the disk."
  },
  {
   "address": 780,
   "type": "line",
   "text": "The BRK handler (page 3's vector $03F0): the same as reset with 'P' on the screen."
  },
  {
   "address": 798,
   "type": "line",
   "text": "The page of the STA above, counted up from $08 by the INC at $0325 until it reaches $C0: the page being cleared."
  },
  {
   "address": 824,
   "type": "line",
   "text": "Load from the disk: A says what. Swaps zero page with $4F00 ($0393), turns the drive's motor on and reads two pages from the track under the head into $4000 (each sector found by the marks F5 D5 DA, each byte made of two disk bytes, a ROL and an AND, closing with the mark FB), then calls the second stage of the loader at $4000 with A, swaps zero page back and returns A = 0. A read that fails its closing mark starts the two pages again."
  },
  {
   "address": 893,
   "type": "line",
   "text": "ASL $FFFF, once per page read: it changes no memory, since the language card is not write-enabled while the game runs (orientation.md, \"Steady state\"), and spends six cycles between the page's last byte and the test for the closing mark."
  },
  {
   "address": 915,
   "type": "line",
   "text": "Swap zero page with $4F00-$4FFF, so that the loader's own variables are kept apart from the game's; returns A = 0."
  },
  {
   "address": 933,
   "type": "line",
   "text": "Load the castle picture (A = $10) into $A000-$BFFF, draw on page 2, clear it ($1900), show page 2, copy the 32 pages from $A000 to $2000 (page 1) with $03C3, then show page 1: the castle picture before the cliff."
  },
  {
   "address": 963,
   "type": "line",
   "text": "Copy X pages of 256 bytes from the page in A to the page in Y."
  },
  {
   "address": 988,
   "type": "line",
   "text": "Copy the ROM into the language card: two reads of $C081 write-enable the card's RAM with the ROM still read, then the 48 pages from $D000 are copied onto themselves, which writes the ROM's bytes into the RAM beneath, and $C082 leaves the ROM switched in and the card protected. Called by the reset handler."
  },
  {
   "address": 1006,
   "type": "line",
   "text": "Page 3's vectors as the game sets them: $03EE-$03EF unused (0, 0); $03F0-$03F1 the BRK vector, $030C; $03F2-$03F3 the soft-reset vector, $0309; $03F4 the power-up byte, $A6 ($03 EOR $A5), which makes the ROM take a reset as warm and go through $03F2."
  },
  {
   "address": 1013,
   "type": "line",
   "text": "Turn the drive's motor on ($C089,X) and wait twice through the Monitor's WAIT with A = 0, the longest it waits, for the motor to come up to speed."
  },
  {
   "address": 1024,
   "type": "line",
   "text": "The text routine's glyphs ($0700): 30 shapes in the shape routine's format (height, width in bytes, then the rows), for the character codes $61-$7E of the game's own alphabet (facts.md, \"The text alphabet\"); $60 is a space and has none. Character n's glyph is at $0680+n (low byte) and $06A0+n plus 4 (high). The first, 'a', is 10 rows of 2 bytes."
  },
  {
   "address": 1664,
   "type": "line",
   "text": "The low bytes of the glyphs' addresses, one per character code minus $60 (the text routine at $0700 subtracts $60 from each character); code 0 draws nothing."
  },
  {
   "address": 1696,
   "type": "line",
   "text": "The high bytes of the glyphs' addresses less 4: the text routine adds 4, so 0, 1 and 2 are pages $04, $05 and $06."
  },
  {
   "address": 1728,
   "type": "line",
   "text": "Each character's advance in whole bytes of 7 dots, added to the column after it is drawn."
  },
  {
   "address": 1760,
   "type": "line",
   "text": "Each character's advance in extra dots (0-6), added to the dot position; at 7 or more the routine carries a byte into the column."
  },
  {
   "address": 1792,
   "type": "line",
   "text": "Draw one line of the game's own alphabet. ($E5) points at the line: a byte column, a dot offset (0-6), then character codes, $60 a space and $61-$7E the glyphs at $0400, ended by any byte below $60. Each glyph is drawn through the shape routine at $1903 at the row in $06, ORed on the draw page ($0F = 0), and the position moves on by the character's width ($06C0 bytes, $06E0 dots). A glyph that would reach below row $C0 has the height in its header cut for the draw and put back after it. Called by the title stage for the prologue and by the last stage for the closing text."
  },
  {
   "address": 1891,
   "type": "line",
   "text": "A shape of 9 rows of 3 bytes, after the text routine; nothing in the engine or any stage points at it."
  },
  {
   "address": 1920,
   "type": "line",
   "text": "Two entry points for the title stage: $0780 copies the shown page two rows up onto the draw page, the prologue's scroll; $0783 flips pages and remembers the page now shown."
  },
  {
   "address": 1926,
   "type": "line",
   "text": "Copy the screen up two rows: each of the 190 rows from the top takes the 40 bytes of the row two below it on page $E4 (the one shown), written to the draw page ($07). $07B9 sets up the two row pointers. The title stage calls it once for each step of the prologue's scroll."
  },
  {
   "address": 1945,
   "type": "line",
   "text": "The title stage's page flip: show the page just drawn on ($C054 or $C055, after the IIe's wait for the vertical blank, $07D7), make the other the draw page, and keep the shown page's number in $E4 for the scroll copy. It does not clear the right edge, as the game's own flip ($7609) does."
  },
  {
   "address": 1977,
   "type": "line",
   "text": "Row pointers for the scroll: $E0/$E1 = row X on the draw page, $E2/$E3 = row X+2 on page $E4; returns with X one more than it came."
  },
  {
   "address": 2007,
   "type": "line",
   "text": "Wait for the vertical blank on a IIe or IIc: when the ROM's ID byte $FBB3 is 6, loop while $C019's bit 7 says the beam is not in the blank. On an older machine it returns at once."
  },
  {
   "address": 2020,
   "type": "line",
   "text": "Bytes nothing reads, after the scroll routines: the last eight, $07F8-$07FF, are the same as the last eight of the title stage's load at $BFF8-$BFFF (its entry, JMP $B760, and its check bytes 00 3B 49), left there when the disk was made."
  },
  {
   "address": 2048,
   "type": "line",
   "text": "The low byte of the address of each of the 192 hi-res rows, top to bottom, the same for both pages."
  },
  {
   "address": 2240,
   "type": "line",
   "text": "The high byte of each row's address on page 1 less $20; the drawing routines add the draw page ($07, $20 or $40)."
  },
  {
   "address": 2432,
   "type": "line",
   "text": "The 128 values of seven dots in reverse order, each with bit 7 set: the mirrored shape routines ($1909, $190C) look up each byte of a shape here, as $0900 plus the byte, to draw a figure facing left from the same shape that faces right."
  },
  {
   "address": 2560,
   "type": "line",
   "text": "The rectangle routines: $0A00 fills a rectangle with two colour bytes, $0A03 with four (alternate rows), $0A06 blanks the screen's last dot column."
  },
  {
   "address": 2566,
   "type": "line",
   "text": "JMP: blank the screen's last dot column ($0ABF)."
  },
  {
   "address": 2569,
   "type": "line",
   "text": "Fill a rectangle on the draw page: byte columns from $05 to one less than $09, rows from $06 to one less than $08, with $02 in even columns and $11 in odd ones (a hi-res colour needs a pair). A left edge of 40 or more is taken as off the left of the screen: the rectangle is clipped to column 0, or skipped when its right edge is past column 40. Keeps X."
  },
  {
   "address": 2624,
   "type": "line",
   "text": "Fill a rectangle as $0A09 does, but with $12 and $13 on odd rows: two colour pairs, a pattern of rows."
  },
  {
   "address": 2703,
   "type": "line",
   "text": "Clip the rectangle for the fill routines and compute its size: rows-1 into $0D, columns-1 into $0E. Returns A = $FF when nothing is on the screen."
  },
  {
   "address": 2722,
   "type": "line",
   "text": "Not an entry: the operand of BEQ at $0AA1. Only the BIT $0AA2 at $40BC names this address, and it is there to skip seek's LDX #$0A."
  },
  {
   "address": 2751,
   "type": "line",
   "text": "Clear bit 6, the rightmost dot, of byte column 39 on all 192 rows of the draw page: the last dot column is kept black, where shapes drawn past the edge would otherwise leave dots. Called before every page flip ($7609)."
  },
  {
   "address": 2799,
   "type": "line",
   "text": "Clear bit 6 of byte Y at ($00): one row's rightmost dot."
  },
  {
   "address": 2808,
   "type": "line",
   "text": "Eight bytes after the routine, the tail of an earlier copy of it ($29 $BF $91 $00 $60 is AND #$BF, STA ($00),Y, RTS); nothing runs them."
  },
  {
   "address": 2816,
   "type": "line",
   "text": "The fight's energy arrows and their rules, six JMPs: $0B00 clears the strip at the bottom, $0B03 draws the hero's arrows, $0B06 the opponent's, $0B09 takes an arrow off the hero, $0B0C off the opponent, $0B0F gives arrows back."
  },
  {
   "address": 2825,
   "type": "line",
   "text": "JMP: take an arrow off the hero ($0BC1)."
  },
  {
   "address": 2828,
   "type": "line",
   "text": "JMP: take an arrow off the opponent ($0BD2)."
  },
  {
   "address": 2834,
   "type": "line",
   "text": "The arrow: a shape of 7 rows of 1 byte, a point to the right. The hero's arrows are drawn with it as it is and the opponent's mirrored."
  },
  {
   "address": 2844,
   "type": "line",
   "text": "Clear rows $B9-$BF, the strip at the bottom where the arrows are, to black across the whole width."
  },
  {
   "address": 2869,
   "type": "line",
   "text": "Draw the hero's arrows ($B6 of them) along the bottom left from column 0, dot 1, at row $B9, ten dots apart, stored over the strip ($0F = 1). With fewer than three left they are drawn only on page 2, so they flash as the pages alternate."
  },
  {
   "address": 2883,
   "type": "line",
   "text": "The drawing: the arrow ($0B12) stored at column 0, dot 1, row $B9, then again ten dots on for each further arrow until X reaches $B6."
  },
  {
   "address": 2921,
   "type": "line",
   "text": "Move the arrow's position ten dots right: a byte column and three dots."
  },
  {
   "address": 2940,
   "type": "line",
   "text": "Draw the opponent's arrows ($B7 of them) along the bottom right, mirrored ($1909), from column $26, dot 6, ten dots apart leftward; with fewer than three they flash as the hero's do."
  },
  {
   "address": 2992,
   "type": "line",
   "text": "Move the arrow's position ten dots left: a byte column and three dots."
  },
  {
   "address": 3009,
   "type": "line",
   "text": "Take an arrow off the hero: if he has any, restart his recovery count ($5B = 0) and take one; when the last goes, clear $5D, his alive flag."
  },
  {
   "address": 3025,
   "type": "line",
   "text": "Done: no arrows to take, or some still left."
  },
  {
   "address": 3026,
   "type": "line",
   "text": "Take an arrow off the opponent, as $0BC1 does for the hero: $5C, $B7, and $5E cleared when the last goes."
  },
  {
   "address": 3043,
   "type": "line",
   "text": "Arrows come back: each call counts $5B up, and every $B8 calls gives the hero one back ($0C02); $5C and $B9 do the same for the opponent ($0C14)."
  },
  {
   "address": 3074,
   "type": "line",
   "text": "Give the hero an arrow back if he is alive and below his most, $B0; once he has them all, set his recovery interval $B8 to $1E (30 calls)."
  },
  {
   "address": 3092,
   "type": "line",
   "text": "Give the opponent an arrow back if he is alive and below his most, $B1."
  },
  {
   "address": 3105,
   "type": "line",
   "text": "An earlier version of the arrow routines, left after them: it stores 2 into $C9 when the opponent is hit, which the routines in use do not. Nothing calls it."
  },
  {
   "address": 3136,
   "type": "line",
   "text": "Seven sound effects, each a few clicks of the speaker spaced by the Monitor's WAIT. The frame routine ($7628) plays $0C40 when $42 is set, $0C43 or $0C46 when $43 is, $0C49 when $45 is, and $0C4F or $0C52 for a running figure's step; the control keys' answer jumps to $0C4C."
  },
  {
   "address": 3139,
   "type": "line",
   "text": "JMP: the 28 clicks of $0C64, the opponent struck or a doorway kicked."
  },
  {
   "address": 3142,
   "type": "line",
   "text": "JMP: the 17 clicks of $0C74, a quick punch landed on the opponent."
  },
  {
   "address": 3145,
   "type": "line",
   "text": "JMP: the ten clicks of $0C84, a punch or kick thrown."
  },
  {
   "address": 3151,
   "type": "line",
   "text": "JMP: the four clicks of $0CA0, a step in a cutscene."
  },
  {
   "address": 3154,
   "type": "line",
   "text": "JMP: the three clicks of $0CB0, a step in play."
  },
  {
   "address": 3157,
   "type": "line",
   "text": "38 clicks spaced by WAIT with A rising from 2 to 39, a falling pitch: the sound for $42, which the engine sets when the hero is struck."
  },
  {
   "address": 3172,
   "type": "line",
   "text": "28 clicks, WAIT 2 to 56 in steps of 2: the sound for $43 when $41 is not 1 ($43 is set when the opponent is struck, and by a kick at a doorway)."
  },
  {
   "address": 3188,
   "type": "line",
   "text": "17 clicks, WAIT 2 to 34 in steps of 2: the sound for $43 when $41 is 1."
  },
  {
   "address": 3204,
   "type": "line",
   "text": "Ten clicks spaced by WAIT 5: the sound for $45, which the animation counts up when a punch or kick starts ($6441, $6479, $6482)."
  },
  {
   "address": 3218,
   "type": "line",
   "text": "Sixteen clicks spaced by WAIT 10, a short beep: the answer to a control key ($771F)."
  },
  {
   "address": 3232,
   "type": "line",
   "text": "Four clicks spaced by WAIT 16, 8, 4 and 2: a step, played during a cutscene ($36 not zero)."
  },
  {
   "address": 3248,
   "type": "line",
   "text": "Three clicks spaced by WAIT 16: a step, played in play ($36 zero)."
  },
  {
   "address": 3262,
   "type": "line",
   "text": "The tail of an earlier version of the arrow routines (it calls $0BB4 and $0B4F, which are not entry points now), then zeros to the end of the page. Nothing runs it."
  },
  {
   "address": 3328,
   "type": "line",
   "text": "Play the tune at ($F7) on the speaker in two voices. The header's first byte is the tempo (written into the count at $0D5D) and its second the page of the second voice's click (written into the LDA at $0D86: $C0 clicks the speaker). Then notes of three bytes: the length, and the pitch as a coarse and a fine count; both voices count the same pitch, the second one count shorter, so that they beat; a coarse count with bit 7 set is a rest. $FD n writes LDY #n at $0D79, which resets the second voice's count to n at each click of the first; $FE writes two NOPs there instead; $FF ends the tune. Before each note a key that is down goes to the special keys ($7603) and is cleared, so it never reaches the game; if the music or the sound is now off ($4F AND $86 zero) the tune ends."
  },
  {
   "address": 3422,
   "type": "line",
   "text": "The tempo: the LDA's operand, written from the tune's first byte ($0D04), the count put in $FE for each pass of a note's middle loop."
  },
  {
   "address": 3449,
   "type": "line",
   "text": "The first byte of the pair the tune's $FD and $FE commands rewrite: LDY (for $FD n) or NOP (for $FE)."
  },
  {
   "address": 3450,
   "type": "line",
   "text": "The second byte at $0D79: a NOP, or the count of LDY #n after $FD n ($0D44)."
  },
  {
   "address": 3464,
   "type": "line",
   "text": "The page of the second voice's LDA, written from the tune's second byte ($0D0A): $C0 clicks the speaker, another page reads without a sound."
  },
  {
   "address": 3494,
   "type": "line",
   "text": "Zeros between the tune player and the sampled sound."
  },
  {
   "address": 3520,
   "type": "line",
   "text": "Play the recorded sound: the 256 bytes at $0E00-$0EFF, eight one-bit samples a byte, top bit first. For each sample it waits $BA times round a loop and clicks the speaker only when the sample differs from the one before, so that the cone follows the samples. $9C-$9F hold the pointer and the end. The frame routine plays it when $4E counts down to zero: set when an opponent falls dead ($BA = $1E), when the hero does against the opponent of type 1 ($BA = $28, slower and lower), and when a doorway is kicked open ($BA = $1E)."
  },
  {
   "address": 3578,
   "type": "line",
   "text": "The sampled sound's pointers: $0DFB-$0DFD are copied into $9D-$9F (start page $0E, end $0EFF); $0DFA and $0DFE-$0DFF are not read."
  },
  {
   "address": 3584,
   "type": "line",
   "text": "The recorded sound, 2,048 one-bit samples played by $0DC0, top bit first, at two speeds."
  },
  {
   "address": 3840,
   "type": "line",
   "text": "Sixteen bytes where a cutscene keeps the opponent's record ($70-$7F) while it uses the record for a guard walking in ($7A57, $7A62). As loaded, they and the bytes to $0FAF read as tunes of two bytes a note, a length and a pitch, with $FF after each tune: a form the tune player at $0D00 does not take, and nothing points at them."
  },
  {
   "address": 4016,
   "type": "line",
   "text": "The last stage's death tune ($1003 there), for the play routine ($0D00): tempo 6, the second voice on the speaker; a rest, then a short phrase."
  },
  {
   "address": 4068,
   "type": "line",
   "text": "The four notes the last stage plays the first time the hero takes the stance in room 5 ($100F there): tempo 7, the second voice on the speaker."
  },
  {
   "address": 16384,
   "type": "line",
   "text": "The loader's second stage, read from the track the head is parked on (track 1) by $0338, which calls it with A holding what to load. It reads the third stage into $5000-$57FF: four sectors of two pages each, from half tracks 4, 5, 4 and 5 (tracks 2 and 2.5, stepping back and forth between them, $4148), then jumps to $5000 with A."
  },
  {
   "address": 16417,
   "type": "line",
   "text": "Read four sectors of two pages each into the pages from A on, stepping the head by $4148 after each."
  },
  {
   "address": 16448,
   "type": "line",
   "text": "The first page of each run of four sectors to read, $50, ended by 0."
  },
  {
   "address": 16450,
   "type": "line",
   "text": "Read one sector of two pages into page A. Each sector has its own mark: $414C's byte for the sector number ($04), then the number shifted right OR $AA, then the number OR $AA; after each page of data, $F5 ($4154). Each byte of data is two disk bytes, the first rotated left and ANDed with the second. A sector with a wrong end mark is read again from its start."
  },
  {
   "address": 16486,
   "type": "line",
   "text": "The page count, 2, is written into the LDX at $4069."
  },
  {
   "address": 16490,
   "type": "line",
   "text": "The LDX's operand, the number of pages in a sector, written by $4066; from here the sector's marks are looked for."
  },
  {
   "address": 16551,
   "type": "line",
   "text": "ASL $FFFF: an instruction that changes nothing, for its time between two disk bytes."
  },
  {
   "address": 16570,
   "type": "line",
   "text": "Move the head to half track A, with longer steps (X = $13 into $4123)."
  },
  {
   "address": 16572,
   "type": "line",
   "text": "BIT $0AA2 here hides LDX #$0A, the first instruction of seek ($40BD), from a caller entering at $40BA, which keeps X = $13; the BIT only sets flags."
  },
  {
   "address": 16573,
   "type": "line",
   "text": "Move the head to half track A from $1F, one half track at a time through the four phase magnets ($C080-$C087 of the slot in $0306), each step's wait from $412D (magnet on) and $4139 (magnet off), shorter as the move goes on."
  },
  {
   "address": 16658,
   "type": "line",
   "text": "Switch the phase magnet for half track $1F on (carry set) or off (carry clear)."
  },
  {
   "address": 16660,
   "type": "line",
   "text": "Switch the phase magnet for half track A on (carry set) or off: A AND 3, doubled, plus the carry, plus the slot ($0306), indexes $C080-$C087."
  },
  {
   "address": 16674,
   "type": "line",
   "text": "Wait A times $4123's count (the LDX's operand, set by $40BA and $40BD)."
  },
  {
   "address": 16675,
   "type": "line",
   "text": "The wait's count, the LDX's operand: $13 from $40BA, $0A from $40BD."
  },
  {
   "address": 16685,
   "type": "line",
   "text": "The wait after each step's magnet is switched on, by the step's number (0-11), the first steps longest."
  },
  {
   "address": 16697,
   "type": "line",
   "text": "The wait after the magnet is switched off, by the step's number."
  },
  {
   "address": 16709,
   "type": "line",
   "text": "The half track the head is moving to."
  },
  {
   "address": 16710,
   "type": "line",
   "text": "The number of steps taken so far in this move."
  },
  {
   "address": 16711,
   "type": "line",
   "text": "The half track the head was on before the step."
  },
  {
   "address": 16712,
   "type": "line",
   "text": "The head's move after each of the four sectors, in half tracks: +1, -1, +1, +1."
  },
  {
   "address": 16716,
   "type": "line",
   "text": "The first byte of each sector's mark, by the sector number's low three bits."
  },
  {
   "address": 16724,
   "type": "line",
   "text": "The sector's end mark, $F5, then zeros to the end of the page."
  },
  {
   "address": 20480,
   "type": "line",
   "text": "The loader's third stage, from $4000 with A holding what to load: negative is the boot ($5300); $10 the castle picture, from half track 8 (track 4) through row $00 of $5400; a stage number n, from half track 8n + $0E (track 4n + 7) through row $30. After the read, the game's zero page comes back from $4F00, and the bytes $78-$7F and $F8-$FF of every page of $4000-$5FFF are cleared: the parts of the second hi-res page that are never shown."
  },
  {
   "address": 20499,
   "type": "line",
   "text": "A zero between the routines."
  },
  {
   "address": 20500,
   "type": "line",
   "text": "The castle picture: from half track 8 (track 4), through row $00 of $5400."
  },
  {
   "address": 20504,
   "type": "line",
   "text": "Five NOPs where something was taken out."
  },
  {
   "address": 20512,
   "type": "line",
   "text": "Two PLAs drop the return into $0338 (after its JSR $4000), so that the RTS at $504D returns straight to $0338's caller, with A = 0; the copy back from $4F00 takes the place of $0338's swap."
  },
  {
   "address": 20558,
   "type": "line",
   "text": "Zeros, then from $5100 bytes left in memory when the disk was made: code that calls ROM routines ($F12C, $FEFD, $FF3A and others). Nothing runs it."
  },
  {
   "address": 21248,
   "type": "line",
   "text": "The boot's last step: reset the stack, read the engine (row $70 of $5400, from half track $36, track 27), clear zero page, turn the music and sound on ($4F, $86), set the stage to 0 ($D0) and $D2 to $FF, and start the game at $0200."
  },
  {
   "address": 21283,
   "type": "line",
   "text": "Zeros to the end of the page."
  },
  {
   "address": 21504,
   "type": "line",
   "text": "For each load, the page each sector of each track goes to, twelve to a track, ended by 0. Row $00, the castle picture: $A0-$BF, then four sectors all into page $40, each over the last: 36 sectors. Row $30, a stage: $10-$1F and $A0-$BF, 48 sectors. Row $70, the engine: $08-$0F and $60-$9F, 72 sectors."
  },
  {
   "address": 21688,
   "type": "line",
   "text": "Zeros after the last row, to the end of the page."
  },
  {
   "address": 21760,
   "type": "line",
   "text": "Read whole tracks from half track A, two half tracks (one track) apart, each into the twelve pages its row of $5400 gives (Y), until the next entry is 0; then the head goes back to half track 2 (track 1, where the second stage is) and the motor is turned off ($C088)."
  },
  {
   "address": 21802,
   "type": "line",
   "text": "A BRK after a branch that is always taken."
  },
  {
   "address": 21806,
   "type": "line",
   "text": "PLA and RTS that nothing reaches."
  },
  {
   "address": 21808,
   "type": "line",
   "text": "Take this track's four marks from $5610 by the half track ($1F / 2): three bytes before the track's data and one after each sector; then read it ($570F)."
  },
  {
   "address": 21830,
   "type": "line",
   "text": "Zeros between the routines."
  },
  {
   "address": 21840,
   "type": "line",
   "text": "The end of a load: back to half track 2, the motor off, and return."
  },
  {
   "address": 21853,
   "type": "line",
   "text": "More bytes left in memory when the disk was made, code that calls ROM routines; nothing runs it. Then 16 bytes at $5600 that no disk byte can index ($5600 + Y is read only with Y = $80-$FF)."
  },
  {
   "address": 22016,
   "type": "line",
   "text": "16 bytes that no disk byte can index: the table is read at $5600 + Y only with Y = $80-$FF."
  },
  {
   "address": 22032,
   "type": "line",
   "text": "The marks of the tracks: four bytes from the entry the half track picks, so that each track's marks differ from the next one's."
  },
  {
   "address": 22048,
   "type": "line",
   "text": "Zeros, and the decoding table's entries for the disk bytes, $5680-$56FF: the four bits each disk byte stands for ($5747, $5753)."
  },
  {
   "address": 22272,
   "type": "line",
   "text": "JMP to the seek at $576F."
  },
  {
   "address": 22275,
   "type": "line",
   "text": "The twelve pages the sectors of the track being read go to, copied from $5400 ($550D). As loaded, the last track of the engine's load, $94-$9F."
  },
  {
   "address": 22287,
   "type": "line",
   "text": "Read a track's twelve sectors: find the three marks ($A0-$A2) once, then for each sector 256 bytes, each from two disk bytes through the table at $5600 (four bits each), into the page $5703 names for it (written into the STA at $5756), and the end mark ($A3). A wrong end mark starts the whole track again."
  },
  {
   "address": 22359,
   "type": "line",
   "text": "The STA's low byte, which counts the sector's 256 bytes ($5759)."
  },
  {
   "address": 22360,
   "type": "line",
   "text": "The STA's page, set from $5703 for each sector ($573D); its low byte, $5757, counts the sector's 256 bytes."
  },
  {
   "address": 22383,
   "type": "line",
   "text": "Move the head to half track A, as $40BD does, with the waits at $57D7 and $57E3."
  },
  {
   "address": 22459,
   "type": "line",
   "text": "Switch the phase magnet for half track $1F on (carry set) or off."
  },
  {
   "address": 22462,
   "type": "line",
   "text": "Switch the phase magnet for half track A on (carry set) or off, as $4114 does."
  },
  {
   "address": 22476,
   "type": "line",
   "text": "Wait A times $13 rounds."
  },
  {
   "address": 22487,
   "type": "line",
   "text": "The wait after each step's magnet is switched on, by the step's number."
  },
  {
   "address": 22499,
   "type": "line",
   "text": "The wait after it is switched off; then zeros."
  },
  {
   "address": 24576,
   "type": "line",
   "text": "The low bytes of the 42 legs shapes, one per legs pose ($20): standing, the stance, kicks, steps, the run, the bow, falling and lying dead. The shapes are at $8000-$9DFF; drawn by $6959."
  },
  {
   "address": 24618,
   "type": "line",
   "text": "The high bytes of the 42 legs shapes."
  },
  {
   "address": 24660,
   "type": "line",
   "text": "For each legs pose, the legs shape's byte column from the figure's position ($22): added facing right, taken away facing left. Signed."
  },
  {
   "address": 24702,
   "type": "line",
   "text": "For each legs pose, the legs shape's top row less 114 ($693F adds $72)."
  },
  {
   "address": 24744,
   "type": "line",
   "text": "The low bytes of 42 masks, one per legs pose, shapes of rows of mostly set dots with the feet left clear. $6786 and $6789 draw one with AND ($0F = $FF) under a fighter's feet before he is drawn, so the floor's pattern does not show through his feet."
  },
  {
   "address": 24786,
   "type": "line",
   "text": "The high bytes of the 42 feet masks ($90-$95)."
  },
  {
   "address": 24828,
   "type": "line",
   "text": "Each feet mask's byte column from the legs shape's (signed)."
  },
  {
   "address": 24870,
   "type": "line",
   "text": "Each feet mask's top row less 114."
  },
  {
   "address": 24912,
   "type": "line",
   "text": "For each legs pose, the byte column of the torso from the figure's position: where the hips are."
  },
  {
   "address": 24954,
   "type": "line",
   "text": "For each legs pose, the dots (0-6) added to the figure's dot offset ($50) for the torso; a carry past 6 moves it a byte."
  },
  {
   "address": 24996,
   "type": "line",
   "text": "For each torso pose ($21), the head: 0-6 is the dots the head is moved forward from the torso's column, with the ordinary head; 7 and 8 select the head's second and third drawings (a head turned or bowed), with no move."
  },
  {
   "address": 25034,
   "type": "line",
   "text": "The hero's head, three drawings by head type: high bytes, $8E."
  },
  {
   "address": 25037,
   "type": "line",
   "text": "The hero's head, three drawings: low bytes ($8E9B, $8EA5, $8EB3)."
  },
  {
   "address": 25040,
   "type": "line",
   "text": "The headgear of opponent type 0 ($3E), three drawings by head type: high bytes."
  },
  {
   "address": 25043,
   "type": "line",
   "text": "The headgear of type 0: low bytes ($8ECB, $8EEB, $8F0E)."
  },
  {
   "address": 25046,
   "type": "line",
   "text": "The mask cut under the head before it is drawn, high byte ($8E); only the ordinary head has one, so the table's other two entries are the zeros that start $61DA and the head routine skips them."
  },
  {
   "address": 25049,
   "type": "line",
   "text": "The head mask's low byte: $8EC1."
  },
  {
   "address": 25050,
   "type": "line",
   "text": "For each torso pose, the head's byte column from the torso's (signed)."
  },
  {
   "address": 25088,
   "type": "line",
   "text": "For each torso pose, the head's top row less 114."
  },
  {
   "address": 25126,
   "type": "line",
   "text": "The low bytes of the 38 torso shapes, one per torso pose ($21): the arms in the stance, punches high, middle and low, the kick's lean, blocks, the bow, falling."
  },
  {
   "address": 25164,
   "type": "line",
   "text": "The high bytes of the 38 torso shapes."
  },
  {
   "address": 25202,
   "type": "line",
   "text": "For each torso pose, the torso shape's byte column from the torso's position (signed)."
  },
  {
   "address": 25240,
   "type": "line",
   "text": "For each torso pose, the torso shape's top row less 114."
  },
  {
   "address": 25278,
   "type": "line",
   "text": "For each legs pose, $FF when its shape is drawn mirrored: poses $1C-$20, the second half of the long step forward (sequence $2B-$34), which reuse the shapes of poses $1B-$17 facing the other way."
  },
  {
   "address": 25320,
   "type": "line",
   "text": "Headgear type 1's three drawings: high bytes, in the stage's memory ($BE)."
  },
  {
   "address": 25323,
   "type": "line",
   "text": "Headgear type 1: low bytes ($BE00, $BE20, $BE43). The headgear of types 1-5 is each stage's own, at $BE00-$BFFF."
  },
  {
   "address": 25326,
   "type": "line",
   "text": "Headgear type 2: high bytes."
  },
  {
   "address": 25329,
   "type": "line",
   "text": "Headgear type 2: low bytes ($BE60, $BE80, $BEA3)."
  },
  {
   "address": 25332,
   "type": "line",
   "text": "Headgear type 3: high bytes."
  },
  {
   "address": 25335,
   "type": "line",
   "text": "Headgear type 3: low bytes ($BEC0, $BEE0, $BF03)."
  },
  {
   "address": 25338,
   "type": "line",
   "text": "Headgear type 4: high bytes."
  },
  {
   "address": 25341,
   "type": "line",
   "text": "Headgear type 4: low bytes ($BF20, $BF40, $BF63)."
  },
  {
   "address": 25344,
   "type": "line",
   "text": "The legs' animation sequences: legs poses one per frame, each sequence ended by $FF. $25 is the position and $27 the step (+1, -1 to run a sequence backwards, 0 to hold); $6400 reads it. $80-$83 are commands: $80 the kick, at the height in $2A; $81 the kick's end, which goes on by the stick ($64AC); $82 the step back; $83 back to position 0. $EE holds the pose."
  },
  {
   "address": 25440,
   "type": "line",
   "text": "For each entry of the legs sequences, how far the figure moves on that frame, in byte columns, forward in the direction it faces ($2C); taken away when the sequence runs backwards."
  },
  {
   "address": 25534,
   "type": "line",
   "text": "The torso's animation sequences, read the same way through $26 and $28: torso poses, $FF to end, $84 a punch from the stance and $86 a quick punch, each at the height in $2A; other values with bit 7 set ($DD, $EE) leave the torso as it is."
  },
  {
   "address": 25594,
   "type": "line",
   "text": "Six zeros after the torso sequences."
  },
  {
   "address": 25600,
   "type": "line",
   "text": "Move the working figure ($20-$2F) on by one frame. If $27 is not 0, step the legs sequence ($6300) by it, move the figure ($22) by the step table ($6360), negated for a backward step and for facing left ($2C), and take the new legs pose into $20; $FF stops the sequence, and $80-$83 run the commands below. Then the same for the torso sequence ($63BE) through $26, $28 and $21. $2B, the blow being thrown, is set to $FF first and to the blow's type by a kick or punch command."
  },
  {
   "address": 25739,
   "type": "line",
   "text": "Sequence command $80, a kick: both halves take the kick's pose, 2, 3 or 4 for a high, middle or low kick by $2A (up, centre, down), and $2B the blow's type, 0-2; counts $45 for the swing's sound."
  },
  {
   "address": 25772,
   "type": "line",
   "text": "Sequence command $81, the kick's end: with the stick centred, or pushed forward when the opponent is less than 8 columns away ($33), back into the stance by the step sequence run backwards from $3A (the two columns it will take back added first); pushed forward further off, on into a step forward ($39); pulled back, a step back (from 5)."
  },
  {
   "address": 25834,
   "type": "line",
   "text": "Sequence command $82: run the legs from $30 backwards and the torso from $39: the step back."
  },
  {
   "address": 25849,
   "type": "line",
   "text": "Torso command $86, the quick punch: torso pose $19, $1A or $1B by $2A, the blow's type 6, 7 or 8; counts $45."
  },
  {
   "address": 25878,
   "type": "line",
   "text": "Sequence command $83: both sequences back to position 0."
  },
  {
   "address": 25887,
   "type": "line",
   "text": "Torso command $84, the punch from the stance: torso pose $16, $17 or $18 by $2A, the blow's type 3, 4 or 5; counts $45."
  },
  {
   "address": 25916,
   "type": "line",
   "text": "Four bytes between the routines ($80 $D5 $FF $BF); nothing reads them."
  },
  {
   "address": 25920,
   "type": "line",
   "text": "Carry out a command for the working figure ($20-$2F). A is the command: 0 nothing but the movement by the stick ($29), $9B take the stance or stand up, $C5 a kick, $D7 a punch, $C2 a bow, $D1 change the arms ($65F4), $C6 fall dead; the height is in $2A. Standing ($2F not zero), $C2 is taken; in the stance, $D1, $D7 and $C5; $C6, $9B and the movement in either. The player's input ($6E00) and the opponents' brain ($6B00) both end here, and the stages send commands of their own."
  },
  {
   "address": 25970,
   "type": "line",
   "text": "The movement by the stick ($29, forward is the way the figure faces). Standing still (legs 7), forward starts the run (legs sequence $3F, torso $2A); running, the cycle repeats ($49 back to $41) while the stick stays forward, and stops ($49) at legs pose $23 when it does not. In the stance (legs 6), forward runs the step sequence from $37 and back runs it backwards from $3D; during a step the stick can turn it round ($27), and positions $39 and $3B lead into the longer steps at $2C and $33."
  },
  {
   "address": 26100,
   "type": "line",
   "text": "Command $D1: change the arms from the stance's (torso 6) to torso pose $1C when $2A is up, or $1D otherwise, or from one of those two to the other; then the movement. The stages send it."
  },
  {
   "address": 26136,
   "type": "line",
   "text": "Command $D7, a punch. If $24 is 5 or more (a hit in the kick, a punch's lunge or the fall sets it to 10, $714A) the punch is refused and $24 cleared. With the legs in pose $16 (a punch's lunge), $24 is set to 1, and with the torso at position $39 both sequences go back to position $0B for another punch; with the torso at $0D the torso goes to $37 and the legs to $0B; at any other position, on to the arms' test. With the arms in the stance (torso 6, $1C or $1D): from the plain stance (legs 6) the full punch, both sequences from $0A; otherwise the quick punch, the torso alone from $38, while the legs go on. On those paths the hero's punch is marked as taken ($674C: $47 = $80, when the working figure is the hero)."
  },
  {
   "address": 26238,
   "type": "line",
   "text": "Command $C5, a kick. From the plain stance (legs 6) the kick: legs and torso from position 7 (lift, wind-up, the kick, back). Asked again during the wind-up (legs 1), the wind-up starts again, at most three times ($24). At legs $1B of a step forward, the kick from its wind-up at once. The kick button is marked as taken ($6741)."
  },
  {
   "address": 26307,
   "type": "line",
   "text": "Command $9B: standing still (legs and torso 7), take the stance (sequence $11 forward); in the stance (legs 6), stand up (sequence $15 backwards). Then $2F, the standing flag, is turned over and the kick button marked as taken."
  },
  {
   "address": 26366,
   "type": "line",
   "text": "Command $C2, the bow, only when standing still (legs and torso 7): sequence $16 forward. The punch button is marked as taken."
  },
  {
   "address": 26391,
   "type": "line",
   "text": "Command $C6, fall dead: the falling sequence from position $20, unless the figure already lies (legs $0E-$13). The figure is first moved a column back when its column and the dot offset ($50) have the wrong parity for the falling shapes: even for the hero (the working figure is taken to be the hero when its column is $62), odd for anyone else."
  },
  {
   "address": 26433,
   "type": "line",
   "text": "If the working figure's column is the hero's ($62), mark the kick request as taken ($46 = $80) so that one press makes one kick."
  },
  {
   "address": 26444,
   "type": "line",
   "text": "If the working figure's column is the hero's, mark the punch request as taken ($47 = $80)."
  },
  {
   "address": 26455,
   "type": "line",
   "text": "Bytes after the command routines that nothing reads, in the pattern of shape data ($AA $D5 ...)."
  },
  {
   "address": 26496,
   "type": "line",
   "text": "Five entry points: $6780 clears the band behind the opponent ($E5), $6783 draws the working figure, $6786 the opponent's feet mask, $6789 the hero's, $678C clears the band behind the hero ($E3)."
  },
  {
   "address": 26499,
   "type": "line",
   "text": "JMP: draw the working figure ($6811)."
  },
  {
   "address": 26502,
   "type": "line",
   "text": "JMP: draw the opponent's feet mask ($6A2E)."
  },
  {
   "address": 26511,
   "type": "line",
   "text": "Clear the band behind the hero: from column $E3 - 3, as $6797."
  },
  {
   "address": 26519,
   "type": "line",
   "text": "Clear the band behind the opponent before he is redrawn: from column $E5 - 6, 11 columns wide (clipped to the screen), rows $72-$98 to black, then rows $99-$A3 to the floor's pattern for the screen ($44) and the stage ($D0): rows of $D5 and $AA in turn, or such rows between black ones, or black, so that the floor comes back where the figure was."
  },
  {
   "address": 26641,
   "type": "line",
   "text": "Draw the working figure on the draw page, facing right, or facing left ($2C negative) through $68B3 with the mirrored shape routines. In order: for the torso poses that need it, a mask ($69DC); the legs ($6000 tables; mirrored for the poses $62BE marks); the head's mask ($61D6) and the head or the headgear ($6987); and the torso ($6226 tables). The figure's position is $22 (byte column) with the dot offset $50; rows are offsets from 114. Facing left with $4D not 0 or 5, the stage's own routine at $BC00 draws it instead."
  },
  {
   "address": 26803,
   "type": "line",
   "text": "The same for a figure facing left: each offset is taken away from the position and the shapes are drawn mirrored ($190C, $1906)."
  },
  {
   "address": 26943,
   "type": "line",
   "text": "Add 114 to a shape's row offset and put it in $06."
  },
  {
   "address": 26949,
   "type": "line",
   "text": "Set up a feet mask for legs pose X: AND mode ($0F = $FF), its pointer from $60A8/$60D2, its row from $6126."
  },
  {
   "address": 26969,
   "type": "line",
   "text": "Set up the legs shape for pose X: OR mode ($0F = 0), pointer from $6000/$602A, column $23, row from $607E."
  },
  {
   "address": 26993,
   "type": "line",
   "text": "Draw the legs facing right: mirrored ($1909) for the poses $62BE marks, else as they are ($1903)."
  },
  {
   "address": 27004,
   "type": "line",
   "text": "Draw the legs facing left: as they are, right-aligned ($1906), for the poses $62BE marks, else mirrored ($190C)."
  },
  {
   "address": 27015,
   "type": "line",
   "text": "Pick the head for torso pose $21 by its head type ($61A4: 7 and 8 the second and third drawings, the rest the first). Out of the cutscenes ($36 zero) a figure facing right is the hero and wears his own head ($61CA/$61CD); anyone else's is moved up 2 rows and a column back and is the headgear of the opponent type in $3E ($6A6C)."
  },
  {
   "address": 27069,
   "type": "line",
   "text": "Pick the head's mask for torso pose $21 ($61D6/$61D9, only for the first drawing), first moving the dot position forward by the head type's dots ($6AC5)."
  },
  {
   "address": 27100,
   "type": "line",
   "text": "For the torso poses 6 and $14-$1D (the stance's arms, the punches and the guards) set up a mask, $9A2A, at the torso's column plus one in the direction faced; for 7, $27 and $0A-$0D (standing and bowing) a smaller one, $9A18, at the torso's column. Returns X = $64 when it set one up, and the caller draws it."
  },
  {
   "address": 27153,
   "type": "line",
   "text": "Set up the stance's foot mask, $9A2A, at row $0F + 114, AND mode."
  },
  {
   "address": 27171,
   "type": "line",
   "text": "Set up the standing foot mask, $9A18, at row $16 + 114."
  },
  {
   "address": 27182,
   "type": "line",
   "text": "Draw the opponent's feet mask (from his record, $70 and $72), mirrored, since opponents face left."
  },
  {
   "address": 27215,
   "type": "line",
   "text": "Draw the hero's feet mask (from $60 and $62)."
  },
  {
   "address": 27244,
   "type": "line",
   "text": "Pick the headgear of opponent type $3E (0-6) for head drawing Y: type 0 and 6 are the engine's ($8ECB..., $8F2B...), types 1-5 the stage's own at $BE00-$BFC3."
  },
  {
   "address": 27333,
   "type": "line",
   "text": "Move the dot position ($10, with $23 as the column) forward by A dots, in the direction the figure faces ($2C)."
  },
  {
   "address": 27370,
   "type": "line",
   "text": "Headgear type 5: high bytes ($BF)."
  },
  {
   "address": 27373,
   "type": "line",
   "text": "Headgear type 5: low bytes ($BF80, $BFA0, $BFC3)."
  },
  {
   "address": 27376,
   "type": "line",
   "text": "Headgear type 6, the engine's own: high bytes ($8F)."
  },
  {
   "address": 27379,
   "type": "line",
   "text": "Headgear type 6: low bytes ($8F2B, $8F4B, $8F6E)."
  },
  {
   "address": 27382,
   "type": "line",
   "text": "Ten bytes after the headgear tables that nothing reads ($AA $80 $D5 ...)."
  },
  {
   "address": 27392,
   "type": "line",
   "text": "The opponents' brain: choose a command for the opponent, who is the working figure, and carry it out ($6540). If the hero lies dead (legs $13), a guard (type 0, $4D) in the stance stands up, and any other opponent does nothing. Standing and coming on ($30 set), he walks forward until he is in place, by his column, the hero's ($62), $4B and $4C, and the scroll ($52), then takes the stance; in stages 3 and 4 the brain leaves the walk to the stage. Standing otherwise, at column $27 or less, he takes the stance when the hero is in his stance or within 13 columns ($33), and bows when the hero's legs reach position $1A of their sequences, in the bow. In the stance, while the hero lives: a standing hero is kicked within 8 columns and walked towards further off; a hero in his stance more than 11 columns off is walked towards; nearer, random numbers ($6C95) against the stage's tables, indexed by the distance counted as 7-11 ($BFE1, $BFE6 and $BFEB, with $BFF2 at $6C2F), and the stage's chances in $D7-$D9 choose a kick, a punch, a step forward or nothing. No path steps back."
  },
  {
   "address": 27520,
   "type": "line",
   "text": "No command: clear the stick ($29, $2A) and carry out command 0."
  },
  {
   "address": 27680,
   "type": "line",
   "text": "A kick at a random height, if the random number is below $D7."
  },
  {
   "address": 27695,
   "type": "line",
   "text": "No blow: when the legs' sequence is at position 3, a step forward or a halt, at random against $BFF2 indexed by X; otherwise nothing at all ($6B80). Come from the brain's tables, X is the distance, 7-11, and the read is $BFF9-$BFFD: in every stage $80, the stage's entry jump at $BFFA and its number. After a punch not taken ($6C11, $6C15) X is the opponent's type ($4D, from $6C71); after a kick refused at a standing hero ($6B95), whatever X held when the brain was called."
  },
  {
   "address": 27723,
   "type": "line",
   "text": "Seven bytes nothing reaches: LDA #$FF, STA $29, JMP $6540, which would be a step back."
  },
  {
   "address": 27730,
   "type": "line",
   "text": "Step forward ($29 = 1), unless the opponent has reached the stage's limit for the first screen ($6C6C by $D0) when $44 is 0."
  },
  {
   "address": 27756,
   "type": "line",
   "text": "For each stage ($D0), the column an opponent stops at on the first screen."
  },
  {
   "address": 27761,
   "type": "line",
   "text": "A random height for a blow into $2A: $FF (up) below $55, 0 (middle) below $AA, 1 (down) above. Opponent type 1 aims only up or middle, against $80."
  },
  {
   "address": 27797,
   "type": "line",
   "text": "The random numbers: $48 = $48 * 17 + $A1, in A."
  },
  {
   "address": 27812,
   "type": "line",
   "text": "An earlier copy of the random number routine and zeros to the end of the page; nothing runs it."
  },
  {
   "address": 27904,
   "type": "line",
   "text": "Two entry points: $6D00 reads the joystick's position into $29 and $2A, $6D03 its buttons into $46 and $47. The stages call $6D03 several times in each frame, between drawing steps, so that a short press is not missed."
  },
  {
   "address": 27910,
   "type": "line",
   "text": "A third JMP to $6D6A that nothing calls."
  },
  {
   "address": 27913,
   "type": "line",
   "text": "Read the joystick into $29 (across) and $2A (up and down), each -1, 0 or 1. Touching $C070 starts both paddle timers; the loop counts in $29 and $2A until each timer ($C064, $C065) runs out, or a count reaches 128, the NOP evening out the two paths. Each count becomes -1 below 5, 1 from 45, else 0 ($6DA4). Then CONTROL-E's flag ($C0) swaps the axes, $29 is made relative to the way the figure faces ($2C), so that 1 is forward, with CONTROL-X's flag ($C1) turning it round, and CONTROL-Y's ($C2) turns $2A over."
  },
  {
   "address": 27948,
   "type": "line",
   "text": "The other path's timing: a NOP and a branch, as long as the INC."
  },
  {
   "address": 28010,
   "type": "line",
   "text": "Read the joystick's buttons, unless the keyboard is chosen ($C4). Each of $46 (kick) and $47 (punch) goes to $FF when its button is pressed, back to 0 when it is let go, and is left alone while it reads $FF (a press not yet taken) or $80 (taken, the button still held: $6741, $674C). Button 0 ($C061) kicks and button 1 ($C062) punches, the other way round when CONTROL-B's flag ($C3) is set."
  },
  {
   "address": 28068,
   "type": "line",
   "text": "A paddle count into a direction: below 5 is $FF, below 45 is 0, else 1."
  },
  {
   "address": 28087,
   "type": "line",
   "text": "An earlier copy of the input routine below, cut off at $6E00; nothing runs it."
  },
  {
   "address": 28160,
   "type": "line",
   "text": "Choose the hero's command, the hero being the working figure, and carry it out ($6540). With the keyboard chosen ($C4) at $6E69. With the joystick: standing, the stick held up keeps him standing (with a new press of button 1, a bow), and letting it go takes the stance. In the stance, a new press of either button kicks or punches at the stick's height; held up, the stick stands him up only when no opponent of type 0 or 1 ($4D) is within 15 columns, the opponent is not type 5 and no hawk is close ($98 set, $91 below $27, $94 negative). Near an opponent, up only aims the next blow high."
  },
  {
   "address": 28247,
   "type": "line",
   "text": "Standing, joystick: up and a new press of button 1 ($47) is a bow; up alone, nothing more than the run by the stick; not up, the stance."
  },
  {
   "address": 28265,
   "type": "line",
   "text": "The keyboard: first the special keys ($7603), then the key in $C000, lower case taken as capitals. SPACE takes the stance or stands up; LEFT and RIGHT arrows set $29, which stays set while standing (RIGHT runs, LEFT stops the run) and lasts one frame in the stance (one step). In the stance (at $6EAF) Q, A and Z punch high, middle and low, and W, S and X kick high, middle and low; standing (at $6F04), B bows. A punch or kick is kept in $47 or $46 as $FF and sent again each frame until the command takes it, and while one is waiting the next key is thrown away. The key's strobe is cleared at $6EA9."
  },
  {
   "address": 28329,
   "type": "line",
   "text": "Clear the key and carry out the command."
  },
  {
   "address": 28335,
   "type": "line",
   "text": "In the stance: no movement unless an arrow key set it this frame; a waiting punch goes first, then Q, A, Z, then a waiting kick, then W, S, X ($6EDA), then $6F28."
  },
  {
   "address": 28420,
   "type": "line",
   "text": "Standing: a waiting bow ($47 = $FF) is sent again; a waiting stance ($46 = $FF, set by SPACE) too; B asks for the bow."
  },
  {
   "address": 28456,
   "type": "line",
   "text": "No key that counts: a waiting kick, else a waiting punch, else command 0."
  },
  {
   "address": 28483,
   "type": "line",
   "text": "An earlier copy of the arrows' code (now at $0B12-$0C20 in the low pages: drawing the arrows, taking one off, giving them back), and the code after it; nothing runs it."
  },
  {
   "address": 28672,
   "type": "line",
   "text": "The fighters' records: $7000 sets up the hero's, $7003 the opponent's; $7006 saves the working figure ($20-$2F) as the opponent ($70-$7F), $7009 loads him into it; $700C saves it as the hero ($60-$6F), $700F loads the hero; $7012 measures the fight for the pose in A; $7018 and $701B keep $4C and $4B; $701E applies the frame's hits."
  },
  {
   "address": 28675,
   "type": "line",
   "text": "JMP: set up the opponent's record ($7048)."
  },
  {
   "address": 28678,
   "type": "line",
   "text": "JMP: save the working figure as the opponent ($7071)."
  },
  {
   "address": 28681,
   "type": "line",
   "text": "JMP: load the opponent into the working figure ($707D)."
  },
  {
   "address": 28693,
   "type": "line",
   "text": "A JMP to $70AC, the distance alone; nothing calls it."
  },
  {
   "address": 28696,
   "type": "line",
   "text": "JMP: keep $4C, the hero's side of the screen ($70F0)."
  },
  {
   "address": 28705,
   "type": "line",
   "text": "Set up the hero's record: standing (legs and torso 7, $6F = $FF) at column $0B, facing right ($6C = 1), the sequences stopped, the stick centred, the height up ($6A = $FF)."
  },
  {
   "address": 28744,
   "type": "line",
   "text": "Set up the opponent's record: standing at column $30, facing left ($7C = $FF), the sequences stopped; $4B cleared."
  },
  {
   "address": 28785,
   "type": "line",
   "text": "Copy the working figure ($20-$2F) to the opponent's record ($70-$7F)."
  },
  {
   "address": 28797,
   "type": "line",
   "text": "Copy the opponent's record into the working figure, then measure the fight against the hero's legs pose ($60)."
  },
  {
   "address": 28813,
   "type": "line",
   "text": "Copy the working figure to the hero's record ($60-$6F)."
  },
  {
   "address": 28825,
   "type": "line",
   "text": "Copy the hero's record into the working figure, then measure the fight against the opponent's legs pose ($70)."
  },
  {
   "address": 28838,
   "type": "line",
   "text": "For the other fighter's legs pose in A, put his pose class ($70C6) in $32 and the distance between the two, the opponent's column less the hero's ($72 - $62), in $33; $FF in $33 while $4B and $4C differ and the scroll ($52) is 0-$30, when the two are not on the same screen."
  },
  {
   "address": 28870,
   "type": "line",
   "text": "For each of the 42 legs poses, its class for the hit test ($7366): poses 0-7 (the kick's, the stance and standing) their own classes 0-7; poses 8-$16 (rising into the stance, the bow, the fall, the punch's lunge) class 6 or 7; poses $17-$29 (the steps and the run) classes 8-$19."
  },
  {
   "address": 28912,
   "type": "line",
   "text": "Keep $4C, the side the hero is on during a scroll: his column on the screen, $30 - $52 + $62, at 0-4 sets it to 1, at -5 to -1 sets it to 0, elsewhere leaves it."
  },
  {
   "address": 28941,
   "type": "line",
   "text": "The same for the opponent and $4B, by $30 - $52 + $72."
  },
  {
   "address": 28970,
   "type": "line",
   "text": "A blow on a figure standing, running or bowing: if it is the hero (his column is the working figure's), he dies of it ($7131); an opponent does not."
  },
  {
   "address": 28977,
   "type": "line",
   "text": "The hero dies: no arrows left ($B6) and not alive ($5D). For a collision (Y = 4) the struck sound too ($42), $40 one less and $7A cleared. Then the fall ($7145)."
  },
  {
   "address": 28997,
   "type": "line",
   "text": "Command $C6 for the working figure: he falls dead."
  },
  {
   "address": 29002,
   "type": "line",
   "text": "React to a blow by the working figure's legs pose ($20), each reaction a sequence that ends in the stance. In the kick's first poses (0, 1) the torso runs from $39 and the legs back from $58 or $59; in the kick (2-4), a punch's lunge ($14-$16) or the fall ($0E-$13) both sequences go back a frame and $24 is set to 10, so that the next punch asked for is refused ($6618); in poses 5, 9 and $0A the torso runs from $39, the stance is taken ($2F = 0) and the legs go back from $5D, and in 6, $1F and $20 the legs alone; in the steps ($17-$1E, $21) one of the stumbles, $4F forwards or $57-$59 backwards, some moving him a column or two back; standing, rising, bowing or running (7, 8, $0B-$0D, $22 and after) the hero dies of it ($712A)."
  },
  {
   "address": 29105,
   "type": "line",
   "text": "Move the working figure a column back from the way he faces."
  },
  {
   "address": 29123,
   "type": "line",
   "text": "Run the legs from $4F forwards."
  },
  {
   "address": 29132,
   "type": "line",
   "text": "Both sequences a frame back, and no punch for a while ($24 = 10)."
  },
  {
   "address": 29147,
   "type": "line",
   "text": "The torso from $39 forwards, the stance taken ($2F = 0), the legs from $5D backwards."
  },
  {
   "address": 29161,
   "type": "line",
   "text": "Move the working figure two columns back."
  },
  {
   "address": 29172,
   "type": "line",
   "text": "The legs from $5D backwards."
  },
  {
   "address": 29181,
   "type": "line",
   "text": "A NOP between routines; nothing reaches it."
  },
  {
   "address": 29182,
   "type": "line",
   "text": "The torso from $39 forwards."
  },
  {
   "address": 29191,
   "type": "line",
   "text": "Apply the frame's hit results, $40 (on the hero) and $41 (on the opponent), from the hit test ($7366) or the stage. Once the opponent lies dead ($70 = $13) nothing counts, unless the hero's result is negative or the opponent is type 5. For each result not 0: the fighter is loaded as the working figure; except for a collision (4) he loses an arrow ($0B09, $0B0C) and the struck sound is asked for ($42, $43); with no arrows left he falls dead, and the sampled sound is set off ($4E, $BA) for the opponent, and for the hero only against opponent type 1; otherwise he recoils ($72BE). Then one frame of his animation, his side of the screen ($70F0, $710D), and his record is saved. $88 on the hero is the stages' bounce off a shut door or portcullis: standing, he is put at column $1E and stopped by legs sequence $4C and torso $34, which take him two columns back; killed by it, at column $1D."
  },
  {
   "address": 29315,
   "type": "line",
   "text": "The opponent's result, $41, the same way; when $5A is set he does not recoil."
  },
  {
   "address": 29374,
   "type": "line",
   "text": "React to result A: 1 (a quick punch) no recoil; $FF the hero dies outright ($7131); anything else the recoil by pose ($714A)."
  },
  {
   "address": 29388,
   "type": "line",
   "text": "An earlier copy of the end of $72BE and of other code; nothing runs it."
  },
  {
   "address": 29440,
   "type": "line",
   "text": "For each pose class (26), the distance at which a blow reaches a fighter in that pose, 6 or 7 columns."
  },
  {
   "address": 29466,
   "type": "line",
   "text": "For each pose class, which column (0-9) of the result tables below it uses."
  },
  {
   "address": 29492,
   "type": "line",
   "text": "At the reach plus two, whether a high or low kick lands (3) or misses (0), by the target's group."
  },
  {
   "address": 29502,
   "type": "line",
   "text": "At the reach plus two, whether a middle kick lands (3), by group."
  },
  {
   "address": 29512,
   "type": "line",
   "text": "Within the reach plus one, whether a high or middle punch lands (2) or is kept off (0), by group."
  },
  {
   "address": 29522,
   "type": "line",
   "text": "Within the reach plus one, whether a low punch lands (2), by group."
  },
  {
   "address": 29532,
   "type": "line",
   "text": "At the reach plus two, whether a punch lands (2): only against group 8."
  },
  {
   "address": 29542,
   "type": "line",
   "text": "Does the blow Y (the attacker's $2B: kicks 0-2, punches 3-5, quick punches 6-8, $FF none) land on the fighter whose pose class is in $32, at the distance in $33? $A3 is 1 when the target is the hero. Returns A: 0 nothing, 1 a quick punch landed, 2 a punch, 3 a kick, 4 a collision, $FF a doorway kicked open. Closer than the reach, the hero as target collides (4); the opponent as target, with the two within 5 columns and the hero not standing still, pushes the hero two columns back, and a collision if the hero is standing. Within the reach plus one every kick lands and a punch by $7348 or $7352; at the reach plus two by $7334, $733E or $735C; further off, nothing. With no opponent alive, the doorway test ($73E4)."
  },
  {
   "address": 29668,
   "type": "line",
   "text": "No opponent: in stage 3 or 4, with the hero at column $1D-$1F before a shut doorway ($84), a kick opens it, counts a room ($C5), starts the door's sound ($43, $4E, $BA = $1E, $83 = 2) and returns $FF; a punch there only sounds ($43)."
  },
  {
   "address": 29730,
   "type": "line",
   "text": "At the reach plus two: kicks from $7334 and $733E, punches from $735C, by the group in X."
  },
  {
   "address": 29766,
   "type": "line",
   "text": "For each group, the distance at which a quick punch reaches."
  },
  {
   "address": 29776,
   "type": "line",
   "text": "Added to it for the attacker's legs pose $17 and after ($60 less $17): the steps a quick punch is thrown from."
  },
  {
   "address": 29787,
   "type": "line",
   "text": "A quick punch (Y = 6-8) lands (1) only at exactly its reach, from $7446 and $7450."
  },
  {
   "address": 29824,
   "type": "line",
   "text": "The tail of an earlier copy of a stage's code; nothing runs it."
  },
  {
   "address": 29888,
   "type": "line",
   "text": "Draw the star where a blow landed, for result X on the working figure: a mask with AND and then the star with OR, at the blow's height ($2A) and in front of the figure (column $22 + 4 facing right, $22 - 8 facing left). A punch (2) and a kick (3) use the shapes $93AB and $942A at the rows of $74F7 and $74FD, a quick punch (1) $9490 and $94E6 at $74FA. $97 at 2 or 1 instead draws it on the hawk ($91, $93), and clears $97; $9A at $FE, Mariko's kick in the last stage, draws it at row $7B, column $13."
  },
  {
   "address": 29943,
   "type": "line",
   "text": "The star's top row for a punch, high, middle and low."
  },
  {
   "address": 29946,
   "type": "line",
   "text": "The star's top row for a quick punch."
  },
  {
   "address": 29949,
   "type": "line",
   "text": "The star's top row for a kick."
  },
  {
   "address": 29952,
   "type": "line",
   "text": "A punch's star (X = 2): the row from $74F7 by the height."
  },
  {
   "address": 29977,
   "type": "line",
   "text": "Draw the star: its mask $93AB with AND, then the star $942A with OR three rows lower."
  },
  {
   "address": 30020,
   "type": "line",
   "text": "An RTS that nothing reaches."
  },
  {
   "address": 30021,
   "type": "line",
   "text": "The quick punch's star: column moved a further column back for legs poses $1A and $1D; mask $9490 with AND, then $94E6 with OR three rows lower."
  },
  {
   "address": 30093,
   "type": "line",
   "text": "The star on the hawk when $97 is 2: two rows below and three columns left of it."
  },
  {
   "address": 30110,
   "type": "line",
   "text": "The star on the hawk when $97 is 1."
  },
  {
   "address": 30122,
   "type": "line",
   "text": "The tail of an earlier copy of code that kept the fighters' last positions ($AB-$AE, $E0-$E5), and zeros; nothing runs it."
  },
  {
   "address": 30208,
   "type": "line",
   "text": "Three entry points: $7600 ends a frame (shows what was drawn, plays the frame's sounds), $7603 reads the special keys, $7606 wipes the drawn page onto the screen."
  },
  {
   "address": 30211,
   "type": "line",
   "text": "JMP: the special keys ($7697)."
  },
  {
   "address": 30214,
   "type": "line",
   "text": "JMP: the wipe ($774B)."
  },
  {
   "address": 30217,
   "type": "line",
   "text": "Show the page just drawn and draw on the other: $07, the draw page, goes from $20 to $40 or back, and the switch ($C054 page 1, $C055 page 2) is thrown after the vertical blank on a IIe ($779A). The screen's last dot column is blanked first ($0A06)."
  },
  {
   "address": 30248,
   "type": "line",
   "text": "End a frame: flip the pages, then the sounds asked for during it, unless the sound is off ($86 = 0, when the requests are dropped): the recorded sound ($0DC0) when $4E counts down to 0; the struck sound ($0C40) while $42 counts; while $43 counts, $0C46 for a quick punch ($41 = 1) or $0C43 for anything else; the stage's own sound ($1006) when $88 is set; the swing ($0C49) when $45 is set; and a step ($0C4F, or $0C52 out of a cutscene) when the working figure's legs are in pose $24 or its sequence at $4A or $4B, the run."
  },
  {
   "address": 30359,
   "type": "line",
   "text": "The keys that work at any time. The key is cleared here unless the keyboard plays the game ($C4) in a fight, outside the title and the cutscenes, when $6E6C reads it after. ESC waits for another key ($778E). CONTROL-S turns the music off ($4F), then the sound too ($86), then both on again, and outside the title copies the two flags to $D5 and $D6, which nothing reads. CONTROL-B swaps the buttons ($C3), CONTROL-E the stick's axes ($C0), CONTROL-Y turns the stick's up and down over ($C2), CONTROL-X its left and right ($C1), and CONTROL-N sets all four back. J chooses the joystick and K the keyboard ($C4). CONTROL-R starts the demo again ($0206), unless $D2 is negative. CONTROL-S, -B, -E, -Y, -X and -N, and J or K when they change the control, answer with a click ($0C4C); any other key returns $91 in A, which the title takes as the key that starts a game."
  },
  {
   "address": 30386,
   "type": "line",
   "text": "CONTROL-S: $86 and $4F go 1,1 then 1,0 then 0,0, and round again."
  },
  {
   "address": 30530,
   "type": "line",
   "text": "LDA #1, STA $B7: the opponent's arrows set to one, then the click. No branch leads here."
  },
  {
   "address": 30536,
   "type": "line",
   "text": "Not a special key: return $91."
  },
  {
   "address": 30539,
   "type": "line",
   "text": "Copy the drawn page onto the shown one, a byte column at a time from left to right, each row of a column through the row tables ($0800, $08C0), with a pause after each column (the Monitor's WAIT, A = $30); ESC during it waits for a key."
  },
  {
   "address": 30561,
   "type": "line",
   "text": "Copy byte column Y of all 192 rows from the draw page to the shown one ($80 is the shown page's high byte); then ESC pauses, and a WAIT of $30 between columns."
  },
  {
   "address": 30606,
   "type": "line",
   "text": "Clear the key, wait for another, clear it."
  },
  {
   "address": 30618,
   "type": "line",
   "text": "On a IIe or IIc (the Monitor's ID byte at $FBB3 is 6), wait for the vertical blank ($C019), so that the flip does not tear the picture; on an older machine, nothing."
  },
  {
   "address": 30631,
   "type": "line",
   "text": "Earlier copies of the wait for the vertical blank and of tone loops on the speaker ($C030); nothing runs them."
  },
  {
   "address": 30720,
   "type": "line",
   "text": "The rooms' scenery, which the dungeon, Akuma's chamber and the engine's cutscenes draw (the palace calls only $7809, for Mariko's cell): $7800 the walls, $7803 the doorways, $7806 the cell's wall, $7809 the cell's doorway, $780C one piece mirrored, $780F one piece moved by the scroll, $7812 the black band at the right edge."
  },
  {
   "address": 30723,
   "type": "line",
   "text": "JMP: draw the doorways ($7885)."
  },
  {
   "address": 30726,
   "type": "line",
   "text": "JMP: draw the cell's wall ($7929)."
  },
  {
   "address": 30729,
   "type": "line",
   "text": "JMP: draw the cell's doorway ($796A)."
  },
  {
   "address": 30732,
   "type": "line",
   "text": "JMP: draw piece X mirrored ($7908)."
  },
  {
   "address": 30741,
   "type": "line",
   "text": "The scenery's eleven pieces, low bytes of their shapes: 0 a beam under the ceiling, 1 a pillar, 2 a doorpost, 3 and 4 small pieces at the floor, 5 the door, and 6-10 the stage's own pieces, in its memory at $1200-$18FF."
  },
  {
   "address": 30752,
   "type": "line",
   "text": "The pieces' shapes, high bytes."
  },
  {
   "address": 30763,
   "type": "line",
   "text": "Each piece's byte column as drawn on the right of the room; $7908 mirrors it to the left, at $26 less the column."
  },
  {
   "address": 30774,
   "type": "line",
   "text": "Each piece's top row."
  },
  {
   "address": 30785,
   "type": "line",
   "text": "Draw a room's walls, in store mode. While $83 counts down, the whole room: the draw page cleared ($1900), the floor's pattern of $D5 and $AA laid over columns 4-$23 and rows $99-$B5 ($0A03), and pieces 0 (the beam) and 3 on both sides. Every time, the pillars (1) and pieces 4 on both sides."
  },
  {
   "address": 30853,
   "type": "line",
   "text": "Draw the doorposts (2) on both sides; then, with OR, the shut door, piece $84 (5, or 0 when open), on the right; in stages 3 and 4, on the room's second screen ($44 = 1), piece $ED on the left; then the black bands at both edges ($78B5, $78CE)."
  },
  {
   "address": 30901,
   "type": "line",
   "text": "Black from column 0 to 2 over rows $5F-$AC, the left edge, through $0A00."
  },
  {
   "address": 30926,
   "type": "line",
   "text": "Black from column $25 to $27 over the same rows, the right edge."
  },
  {
   "address": 30936,
   "type": "line",
   "text": "Set up piece X: its shape and its row."
  },
  {
   "address": 30952,
   "type": "line",
   "text": "Draw piece X at its column moved by the scroll ($52 less $E0)."
  },
  {
   "address": 30969,
   "type": "line",
   "text": "Draw piece X at its column, dot 0 ($1903)."
  },
  {
   "address": 30984,
   "type": "line",
   "text": "Draw piece X mirrored at column $26 less its own, dot 6 ($190C)."
  },
  {
   "address": 31002,
   "type": "line",
   "text": "The floor's colours for $0A03: $D5 and $AA on alternate rows, black between."
  },
  {
   "address": 31017,
   "type": "line",
   "text": "Draw the wall of Mariko's cell: while $83 counts down, the draw page cleared and the floor laid over columns 4-$1D and rows $9F-$A7; the beam and a pillar on the left (0 and 1, mirrored), and the stage's pieces 6-9 at their columns."
  },
  {
   "address": 31082,
   "type": "line",
   "text": "Draw the cell's doorway: the doorpost on the left (2, mirrored) and the stage's piece 10, in store mode; then with OR the door ($84) on the left when shut; then the black band at the left edge ($78B5)."
  },
  {
   "address": 31110,
   "type": "line",
   "text": "An earlier copy of the end of $796A and of a stage's code; nothing runs it."
  },
  {
   "address": 31136,
   "type": "line",
   "text": "The cutscenes: $79A0 Akuma sends the next guard, from stages 1 and 2 between fights; $79A3 the title's scene in Akuma's chamber."
  },
  {
   "address": 31142,
   "type": "line",
   "text": "Akuma sends a guard. The game's state is put aside ($7C53), the next headgear ($3E) is taken, the door shut, and the chamber drawn ($7800, $7803, Akuma $7D03) and wiped onto the screen ($7606); the stage's routine at $1000 runs. The opponent's record is kept at $0F00 ($7A57) while a guard walks in from the left (column $FB) to column 3 and stops; Akuma raises his arm ($8A 8, then 9) and the stage's $100C runs; the guard bows ($C2), turns and walks out to the left; Akuma lowers his arm. The opponent's record comes back ($7A62), $3E is put back, and play goes on ($7C78)."
  },
  {
   "address": 31319,
   "type": "line",
   "text": "Keep the opponent's record ($70-$7F) at $0F00."
  },
  {
   "address": 31330,
   "type": "line",
   "text": "Bring the opponent's record back from $0F00."
  },
  {
   "address": 31341,
   "type": "line",
   "text": "One frame of the walking guard: load him, clear behind him ($6780), carry out his command ($6540) and animate him; save him and keep his last two columns ($E4, $E5); draw pieces 1 and 4 on the left, the floor ($7ADC), his feet ($7AC1), him ($6783), the doorways ($7803), black over rows $A9-$AB from column $1E to $25 ($7AB3), and end the frame ($7C43)."
  },
  {
   "address": 31398,
   "type": "line",
   "text": "A black rectangle down to row A ($08), through $0A00."
  },
  {
   "address": 31400,
   "type": "line",
   "text": "A black rectangle with $05, $09, $06 and $08 already set."
  },
  {
   "address": 31409,
   "type": "line",
   "text": "From column $19: $7AB3."
  },
  {
   "address": 31411,
   "type": "line",
   "text": "Black over rows $A9-$AB from column A to $25."
  },
  {
   "address": 31425,
   "type": "line",
   "text": "The opponent's feet: his mask when he faces left ($6786), then black over row $A1 from his column + 1 to + 7."
  },
  {
   "address": 31452,
   "type": "line",
   "text": "The floor's pattern over row $A1, columns 4-$13."
  },
  {
   "address": 31479,
   "type": "line",
   "text": "The title's scene in Akuma's chamber. Akuma, a guard by the door (headgear 6, column 7, facing right) and Mariko ($39-$3B) at column $15. Akuma raises his arm ($8A) and the stage's $100C runs; Mariko walks to the right, Akuma's hand changes ($56) as she passes column $16, and at column $22 the scene moves to her cell: she walks in from column 4 to $0D, turns (pose $13), the cell's door shuts ($84 = 5) with the struck sound ($42), and she goes through poses 8 to $12, the stage's $1000, $1015 and $100F running between. The scene would end early if $3D were 0; it is set to 1 here and nothing during the scene clears it."
  },
  {
   "address": 31700,
   "type": "line",
   "text": "End of the chamber scene: headgear 0 again, then $7C78."
  },
  {
   "address": 31707,
   "type": "line",
   "text": "One frame of the chamber: the floor under Mariko ($7CC4), Akuma's place cleared ($7D06), a small block ($7C93), the walls ($7800); while Mariko is left of column $21, the guard, and Mariko drawn where she is or, once Akuma points ($8A = 9), a step of her walk; the doorways; every sixth frame (the first after 16, $3C) Akuma's head turns, up to $8F = 6; black from column $1A, Akuma facing right ($7D00), the end of the frame. From column $21 Mariko walks on out of sight and Akuma lowers his arm."
  },
  {
   "address": 31811,
   "type": "line",
   "text": "End a cutscene frame: in the title stage its own routine ($B763), elsewhere the special keys ($7603); then the frame's end and flip ($7600)."
  },
  {
   "address": 31827,
   "type": "line",
   "text": "Put the game aside for a cutscene: keep the dot offset ($50 into $31), the screen ($44 into $37) and the last columns ($E4, $E5 into $9F, $9E); Akuma's arm down ($8A = 7), his hand part $0E ($56), the dot offset 0, $36 counted up (a cutscene is running), the screen number 3."
  },
  {
   "address": 31864,
   "type": "line",
   "text": "Back from a cutscene: $5F and $54 = 2, $36 cleared, and the dot offset, screen and last columns restored."
  },
  {
   "address": 31891,
   "type": "line",
   "text": "Black over rows $71-$76, columns $19-$1A."
  },
  {
   "address": 31910,
   "type": "line",
   "text": "Clear behind Mariko ($7E36) and draw the cell's wall ($7806)."
  },
  {
   "address": 31916,
   "type": "line",
   "text": "The cell's doorway ($7809) and the end of the frame."
  },
  {
   "address": 31922,
   "type": "line",
   "text": "A JSR $7CB5 that nothing reaches."
  },
  {
   "address": 31925,
   "type": "line",
   "text": "Four frames of Mariko in her cell."
  },
  {
   "address": 31928,
   "type": "line",
   "text": "Two frames of Mariko in her cell."
  },
  {
   "address": 31931,
   "type": "line",
   "text": "One frame of Mariko in her cell: cleared, the wall, Mariko ($7E39), the doorway, the end of the frame."
  },
  {
   "address": 31940,
   "type": "line",
   "text": "Lay the floor's pattern under Mariko, from row $98 ($0A03 with $D5 and $AA)."
  },
  {
   "address": 31964,
   "type": "line",
   "text": "One frame of Akuma facing left ($7D03)."
  },
  {
   "address": 31970,
   "type": "line",
   "text": "One frame of Akuma facing right: his place cleared ($7D06), drawn ($7D00)."
  },
  {
   "address": 31979,
   "type": "line",
   "text": "The end of an earlier copy of these frame routines; nothing runs it."
  },
  {
   "address": 32000,
   "type": "line",
   "text": "Akuma: $7D00 draws him facing right, $7D03 facing left (mirrored), $7D06 clears his place."
  },
  {
   "address": 32003,
   "type": "line",
   "text": "JMP: draw Akuma facing left ($7DBE)."
  },
  {
   "address": 32006,
   "type": "line",
   "text": "JMP: clear Akuma's place ($7D84)."
  },
  {
   "address": 32009,
   "type": "line",
   "text": "A JMP to $7D6A that nothing calls."
  },
  {
   "address": 32012,
   "type": "line",
   "text": "Akuma's seventeen parts, low bytes: 0 his body, 1-6 his head turned ($8F), 7-9 his arm down, raised and pointing ($8A), 10 and 11 masks, 12 a part drawn first in store mode, 13-16 smaller parts (his hand, $56, is 14 or 16)."
  },
  {
   "address": 32029,
   "type": "line",
   "text": "Akuma's parts, high bytes ($97-$9F)."
  },
  {
   "address": 32046,
   "type": "line",
   "text": "Each part's byte column, less 10."
  },
  {
   "address": 32063,
   "type": "line",
   "text": "Each part's top row."
  },
  {
   "address": 32080,
   "type": "line",
   "text": "Draw Akuma's part X facing right, at its column + 10 ($1903)."
  },
  {
   "address": 32106,
   "type": "line",
   "text": "Draw Akuma's part X mirrored, at $28 less its column ($190C)."
  },
  {
   "address": 32132,
   "type": "line",
   "text": "Clear Akuma's place: black over rows $7C-$8E, columns $1A-$1F."
  },
  {
   "address": 32143,
   "type": "line",
   "text": "Draw Akuma facing right: the masks 10 and 11 with AND, the throne (12) stored, then with OR the body, his head ($8F), his arm ($8A) and part 13; then his hand ($56) and part 15 stored."
  },
  {
   "address": 32190,
   "type": "line",
   "text": "Draw Akuma facing left, the same parts mirrored, after black over columns $13-$18."
  },
  {
   "address": 32248,
   "type": "line",
   "text": "The masks 10 and 11 with AND, facing right."
  },
  {
   "address": 32259,
   "type": "line",
   "text": "The masks mirrored."
  },
  {
   "address": 32270,
   "type": "line",
   "text": "Black over rows $7C-$8E, from the column in $05 to the one before the column in $09, which the caller sets."
  },
  {
   "address": 32287,
   "type": "line",
   "text": "Store mode from here on, and X = Akuma's hand part ($56)."
  },
  {
   "address": 32292,
   "type": "line",
   "text": "AND mode, dot 0, X = 10."
  },
  {
   "address": 32303,
   "type": "line",
   "text": "A byte between routines that nothing reads."
  },
  {
   "address": 32304,
   "type": "line",
   "text": "Mariko: $7E30 draws her where she is, $7E33 takes a step of her walk, $7E36 clears behind her, $7E39 draws her in her cell, $7E3C plays the cell scene of the palace and the dungeon ($7F93)."
  },
  {
   "address": 32307,
   "type": "line",
   "text": "JMP: a step of Mariko's walk ($7F24)."
  },
  {
   "address": 32310,
   "type": "line",
   "text": "JMP: clear behind Mariko ($7F43)."
  },
  {
   "address": 32313,
   "type": "line",
   "text": "JMP: draw Mariko in her cell ($7F60)."
  },
  {
   "address": 32319,
   "type": "line",
   "text": "Mariko's 27 parts and poses, low bytes. The shapes are each stage's own, at $1530-$1DFF."
  },
  {
   "address": 32346,
   "type": "line",
   "text": "Mariko's parts, high bytes."
  },
  {
   "address": 32373,
   "type": "line",
   "text": "Each part's byte column from Mariko's ($3B)."
  },
  {
   "address": 32400,
   "type": "line",
   "text": "Each part's top row less $53."
  },
  {
   "address": 32427,
   "type": "line",
   "text": "For walking poses 0-7, a column added to the masks' position."
  },
  {
   "address": 32435,
   "type": "line",
   "text": "For walking poses 0-7, dots added to it."
  },
  {
   "address": 32443,
   "type": "line",
   "text": "Set up Mariko's part X: dot $3A, column $3B plus its offset, row $53 plus its offset, and its shape."
  },
  {
   "address": 32455,
   "type": "line",
   "text": "Set part X's row, $53 plus its offset, and its shape."
  },
  {
   "address": 32463,
   "type": "line",
   "text": "Set the row to A, and part X's shape."
  },
  {
   "address": 32476,
   "type": "line",
   "text": "Draw Mariko walking: masks 6 and 7 with AND, moved for the pose ($7EAB, $7EB3), then with OR part 5 and her pose $39."
  },
  {
   "address": 32548,
   "type": "line",
   "text": "One step of Mariko's walk: the next of poses 1-4, and after the fourth a column and a dot on ($3B, $3A); then $7EDC."
  },
  {
   "address": 32579,
   "type": "line",
   "text": "Black behind Mariko: columns $3B - 1 to $3B + 3, rows $77-$A2."
  },
  {
   "address": 32608,
   "type": "line",
   "text": "Draw Mariko in her cell, in store mode: part 7, then part 11 for poses $0C-$0E, then her pose $39; for poses $11 and $12 the pose alone."
  },
  {
   "address": 32659,
   "type": "line",
   "text": "The cell scene of stages 2 and 3: black over columns $1E-$22 and rows $76-$95; the cell's wall ($7806); Mariko in pose X at the column and row her tables give, with part $14 before it (and $16 for pose $17) for the poses below $19; all in store mode."
  },
  {
   "address": 32697,
   "type": "line",
   "text": "Draw Mariko's part X at the column and row of her tables, dot 6, in store mode."
  },
  {
   "address": 32719,
   "type": "line",
   "text": "For poses below $19, add part $14, and part $16 for pose $17."
  },
  {
   "address": 32737,
   "type": "line",
   "text": "Bytes nothing reads. They begin as a stage's last page does (stage 1's $BFE1-$BFE7) and hold its number check, 01 3A 48: left over in the engine's image."
  },
  {
   "address": 32768,
   "type": "line",
   "text": "Legs pose $00, a pose of the kick before it lands: 25 rows of 2 bytes."
  },
  {
   "address": 32820,
   "type": "line",
   "text": "25 bytes nothing points at, in the form of the last rows of a shape 3 bytes wide: left over from an earlier drawing."
  },
  {
   "address": 32845,
   "type": "line",
   "text": "Legs pose $01, a pose of the kick before it lands: 25 rows of 3 bytes."
  },
  {
   "address": 32922,
   "type": "line",
   "text": "Legs pose $02, the high kick: 21 rows of 1 byte."
  },
  {
   "address": 32945,
   "type": "line",
   "text": "Legs pose $03, the middle kick: 22 rows of 2 bytes."
  },
  {
   "address": 32991,
   "type": "line",
   "text": "Legs pose $04, the low kick: 23 rows of 6 bytes."
  },
  {
   "address": 33131,
   "type": "line",
   "text": "Legs pose $05, the pose between the stance and the kick: 20 rows of 4 bytes."
  },
  {
   "address": 33213,
   "type": "line",
   "text": "Legs pose $06, the stance: 19 rows of 5 bytes."
  },
  {
   "address": 33310,
   "type": "line",
   "text": "Torso poses $00 and $01, the kick's wind-up: 9 rows of 4 bytes."
  },
  {
   "address": 33348,
   "type": "line",
   "text": "Torso pose $02, a kick: 21 rows of 8 bytes."
  },
  {
   "address": 33518,
   "type": "line",
   "text": "Torso pose $03, a kick: 12 rows of 7 bytes."
  },
  {
   "address": 33604,
   "type": "line",
   "text": "Torso pose $04, a kick: 11 rows of 4 bytes."
  },
  {
   "address": 33650,
   "type": "line",
   "text": "Torso pose $05, before the kick: 13 rows of 4 bytes."
  },
  {
   "address": 33704,
   "type": "line",
   "text": "Torso pose $06, the stance: 13 rows of 4 bytes."
  },
  {
   "address": 33758,
   "type": "line",
   "text": "Legs pose $17, a step, and pose $20 drawn mirrored ($62BE): 19 rows of 5 bytes."
  },
  {
   "address": 33855,
   "type": "line",
   "text": "Legs pose $18, a step, and pose $1F drawn mirrored ($62BE): 19 rows of 5 bytes."
  },
  {
   "address": 33952,
   "type": "line",
   "text": "Legs pose $19, a step, and pose $1E drawn mirrored ($62BE): 20 rows of 3 bytes."
  },
  {
   "address": 34014,
   "type": "line",
   "text": "Legs pose $1A, a step, and pose $1D drawn mirrored ($62BE): 19 rows of 3 bytes."
  },
  {
   "address": 34073,
   "type": "line",
   "text": "Legs pose $1B, a step, and pose $1C drawn mirrored ($62BE): 20 rows of 3 bytes."
  },
  {
   "address": 34135,
   "type": "line",
   "text": "Legs pose $21, a step: 19 rows of 3 bytes."
  },
  {
   "address": 34194,
   "type": "line",
   "text": "Legs pose $14, a punch's lunge: 19 rows of 5 bytes."
  },
  {
   "address": 34291,
   "type": "line",
   "text": "Legs pose $15, a punch's lunge: 19 rows of 5 bytes."
  },
  {
   "address": 34388,
   "type": "line",
   "text": "Legs pose $16, a punch's lunge: 19 rows of 5 bytes."
  },
  {
   "address": 34485,
   "type": "line",
   "text": "Torso pose $14, a punch's wind-up: 13 rows of 4 bytes."
  },
  {
   "address": 34539,
   "type": "line",
   "text": "Torso pose $15, a punch's wind-up: 13 rows of 3 bytes."
  },
  {
   "address": 34580,
   "type": "line",
   "text": "Torso pose $16, a punch, high: 17 rows of 5 bytes."
  },
  {
   "address": 34667,
   "type": "line",
   "text": "Torso pose $17, a punch, middle: 14 rows of 5 bytes."
  },
  {
   "address": 34739,
   "type": "line",
   "text": "Torso pose $18, a punch, low: 14 rows of 5 bytes."
  },
  {
   "address": 34811,
   "type": "line",
   "text": "Torso pose $19, a quick punch, high: 19 rows of 6 bytes."
  },
  {
   "address": 34927,
   "type": "line",
   "text": "Torso pose $1A, a quick punch, middle: 14 rows of 6 bytes."
  },
  {
   "address": 35013,
   "type": "line",
   "text": "Torso pose $1B, a quick punch, low: 14 rows of 6 bytes."
  },
  {
   "address": 35099,
   "type": "line",
   "text": "Torso pose $1C, the high guard: 23 rows of 3 bytes."
  },
  {
   "address": 35170,
   "type": "line",
   "text": "Torso pose $1D, the low guard: 14 rows of 4 bytes."
  },
  {
   "address": 35228,
   "type": "line",
   "text": "Legs pose $07, standing: 24 rows of 2 bytes."
  },
  {
   "address": 35278,
   "type": "line",
   "text": "Legs pose $08, between standing and the stance: 26 rows of 3 bytes."
  },
  {
   "address": 35358,
   "type": "line",
   "text": "Legs pose $09, between standing and the stance: 23 rows of 3 bytes."
  },
  {
   "address": 35429,
   "type": "line",
   "text": "Legs pose $0A, between standing and the stance: 20 rows of 5 bytes."
  },
  {
   "address": 35531,
   "type": "line",
   "text": "Torso pose $07, standing: 14 rows of 2 bytes."
  },
  {
   "address": 35561,
   "type": "line",
   "text": "Torso pose $08, between standing and the stance: 12 rows of 3 bytes."
  },
  {
   "address": 35599,
   "type": "line",
   "text": "Torso pose $09, between standing and the stance: 13 rows of 3 bytes."
  },
  {
   "address": 35640,
   "type": "line",
   "text": "Torso pose $0A, between standing and the stance: 13 rows of 4 bytes."
  },
  {
   "address": 35694,
   "type": "line",
   "text": "Legs pose $0B, the bow: 26 rows of 2 bytes."
  },
  {
   "address": 35748,
   "type": "line",
   "text": "Legs pose $0C, the bow: 26 rows of 2 bytes."
  },
  {
   "address": 35802,
   "type": "line",
   "text": "Legs pose $0D, the bow: 26 rows of 2 bytes."
  },
  {
   "address": 35856,
   "type": "line",
   "text": "Torso pose $0B, the bow: 12 rows of 2 bytes."
  },
  {
   "address": 35882,
   "type": "line",
   "text": "Torso pose $0C, the bow: 10 rows of 3 bytes."
  },
  {
   "address": 35914,
   "type": "line",
   "text": "Torso pose $0D, the bow: 9 rows of 3 bytes."
  },
  {
   "address": 35943,
   "type": "line",
   "text": "Three bytes nothing reads, between two shapes."
  },
  {
   "address": 35946,
   "type": "line",
   "text": "Legs pose $0E, the fall: 14 rows of 6 bytes."
  },
  {
   "address": 36032,
   "type": "line",
   "text": "Legs pose $0F, the fall: 12 rows of 6 bytes."
  },
  {
   "address": 36106,
   "type": "line",
   "text": "Legs pose $10, the fall: 6 rows of 5 bytes."
  },
  {
   "address": 36138,
   "type": "line",
   "text": "Legs pose $11, the fall: 15 rows of 5 bytes."
  },
  {
   "address": 36215,
   "type": "line",
   "text": "Legs pose $12, the fall: 12 rows of 4 bytes."
  },
  {
   "address": 36265,
   "type": "line",
   "text": "Legs pose $13, lying dead: 12 rows of 4 bytes."
  },
  {
   "address": 36315,
   "type": "line",
   "text": "Torso pose $0E, the fall: 10 rows of 5 bytes."
  },
  {
   "address": 36367,
   "type": "line",
   "text": "Torso pose $0F, the fall: 8 rows of 4 bytes."
  },
  {
   "address": 36401,
   "type": "line",
   "text": "Torso pose $10, the fall: 9 rows of 4 bytes."
  },
  {
   "address": 36439,
   "type": "line",
   "text": "Torso pose $11, the fall: 11 rows of 2 bytes."
  },
  {
   "address": 36463,
   "type": "line",
   "text": "Torso pose $12, the fall: 9 rows of 2 bytes."
  },
  {
   "address": 36483,
   "type": "line",
   "text": "Torso pose $13, the fall: 11 rows of 2 bytes."
  },
  {
   "address": 36507,
   "type": "line",
   "text": "The hero's head, drawing 1 of 3 (the ordinary head): 8 rows of 1 byte."
  },
  {
   "address": 36517,
   "type": "line",
   "text": "The hero's head, drawing 2 of 3 (head type 7): 6 rows of 2 bytes."
  },
  {
   "address": 36531,
   "type": "line",
   "text": "The hero's head, drawing 3 of 3 (head type 8): 6 rows of 2 bytes."
  },
  {
   "address": 36545,
   "type": "line",
   "text": "The mask drawn with AND under the ordinary head ($61D6): 8 rows of 1 byte."
  },
  {
   "address": 36555,
   "type": "line",
   "text": "Headgear type 0, drawing 1 of 3: 10 rows of 3 bytes."
  },
  {
   "address": 36587,
   "type": "line",
   "text": "Headgear type 0, drawing 2 of 3: 11 rows of 3 bytes."
  },
  {
   "address": 36622,
   "type": "line",
   "text": "Headgear type 0, drawing 3 of 3: 9 rows of 3 bytes."
  },
  {
   "address": 36651,
   "type": "line",
   "text": "Headgear type 6, drawing 1 of 3: 10 rows of 3 bytes."
  },
  {
   "address": 36683,
   "type": "line",
   "text": "Headgear type 6, drawing 2 of 3: 11 rows of 3 bytes."
  },
  {
   "address": 36718,
   "type": "line",
   "text": "Headgear type 6, drawing 3 of 3: 9 rows of 3 bytes."
  },
  {
   "address": 36747,
   "type": "line",
   "text": "The last 14 bytes of an earlier shape; nothing points at them."
  },
  {
   "address": 36761,
   "type": "line",
   "text": "Headgear that no table points at, drawing 1 of five at $8F99-$9042: 10 rows of 3 bytes."
  },
  {
   "address": 36793,
   "type": "line",
   "text": "Headgear that no table points at, drawing 2 of five at $8F99-$9042: 10 rows of 3 bytes."
  },
  {
   "address": 36825,
   "type": "line",
   "text": "Headgear that no table points at, drawing 3 of five at $8F99-$9042: 10 rows of 4 bytes."
  },
  {
   "address": 36867,
   "type": "line",
   "text": "Headgear that no table points at, drawing 4 of five at $8F99-$9042: 11 rows of 3 bytes."
  },
  {
   "address": 36902,
   "type": "line",
   "text": "Headgear that no table points at, drawing 5 of five at $8F99-$9042: 9 rows of 3 bytes."
  },
  {
   "address": 36931,
   "type": "line",
   "text": "The feet mask for legs pose $00, drawn with AND under a fighter: 5 rows of 4 bytes."
  },
  {
   "address": 36953,
   "type": "line",
   "text": "The feet mask for legs pose $01, drawn with AND under a fighter: 4 rows of 5 bytes."
  },
  {
   "address": 36975,
   "type": "line",
   "text": "The feet mask for legs pose $02, drawn with AND under a fighter: 4 rows of 6 bytes."
  },
  {
   "address": 37001,
   "type": "line",
   "text": "The feet mask for legs pose $03, drawn with AND under a fighter: 4 rows of 7 bytes."
  },
  {
   "address": 37031,
   "type": "line",
   "text": "The feet mask for legs pose $04, drawn with AND under a fighter: 4 rows of 6 bytes."
  },
  {
   "address": 37057,
   "type": "line",
   "text": "The feet mask for legs pose $05, drawn with AND under a fighter: 4 rows of 5 bytes."
  },
  {
   "address": 37079,
   "type": "line",
   "text": "The feet mask for legs poses $06, $14, $15, $16, $17, $20, drawn with AND under a fighter: 4 rows of 7 bytes."
  },
  {
   "address": 37109,
   "type": "line",
   "text": "The feet mask for legs pose $07, drawn with AND under a fighter: 4 rows of 2 bytes."
  },
  {
   "address": 37119,
   "type": "line",
   "text": "The feet mask for legs pose $08, drawn with AND under a fighter: 7 rows of 3 bytes."
  },
  {
   "address": 37142,
   "type": "line",
   "text": "The feet mask for legs pose $09, drawn with AND under a fighter: 6 rows of 5 bytes."
  },
  {
   "address": 37174,
   "type": "line",
   "text": "The feet mask for legs pose $0A, drawn with AND under a fighter: 4 rows of 6 bytes."
  },
  {
   "address": 37200,
   "type": "line",
   "text": "The feet mask for legs pose $0B, drawn with AND under a fighter: 4 rows of 3 bytes."
  },
  {
   "address": 37214,
   "type": "line",
   "text": "The feet mask for legs poses $0C, $27, drawn with AND under a fighter: 4 rows of 3 bytes."
  },
  {
   "address": 37228,
   "type": "line",
   "text": "The feet mask for legs pose $0D, drawn with AND under a fighter: 4 rows of 4 bytes."
  },
  {
   "address": 37246,
   "type": "line",
   "text": "The feet mask for legs pose $0E, drawn with AND under a fighter: 4 rows of 6 bytes."
  },
  {
   "address": 37272,
   "type": "line",
   "text": "The feet mask for legs pose $0F, drawn with AND under a fighter: 10 rows of 6 bytes."
  },
  {
   "address": 37334,
   "type": "line",
   "text": "The feet mask for legs pose $10, drawn with AND under a fighter: 8 rows of 5 bytes."
  },
  {
   "address": 37376,
   "type": "line",
   "text": "The feet mask for legs pose $11, drawn with AND under a fighter: 10 rows of 7 bytes."
  },
  {
   "address": 37448,
   "type": "line",
   "text": "The feet mask for legs pose $12, drawn with AND under a fighter: 10 rows of 7 bytes."
  },
  {
   "address": 37520,
   "type": "line",
   "text": "The feet mask for legs pose $13, drawn with AND under a fighter: 11 rows of 7 bytes."
  },
  {
   "address": 37599,
   "type": "line",
   "text": "The feet mask for legs poses $18, $1F, drawn with AND under a fighter: 4 rows of 6 bytes."
  },
  {
   "address": 37625,
   "type": "line",
   "text": "The feet mask for legs poses $19, $1E, drawn with AND under a fighter: 5 rows of 4 bytes."
  },
  {
   "address": 37647,
   "type": "line",
   "text": "The feet mask for legs poses $1A, $1D, drawn with AND under a fighter: 9 rows of 2 bytes."
  },
  {
   "address": 37667,
   "type": "line",
   "text": "The feet mask for legs poses $1B, $1C, drawn with AND under a fighter: 6 rows of 3 bytes."
  },
  {
   "address": 37687,
   "type": "line",
   "text": "The feet mask for legs pose $21, drawn with AND under a fighter: 4 rows of 4 bytes."
  },
  {
   "address": 37705,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 1 of seven at $9349-$93AA, its gap starting 0 dots into the first byte: 7 rows of 1 byte. Nothing points at them."
  },
  {
   "address": 37714,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 2 of seven at $9349-$93AA, its gap starting 1 dot into the first byte: 7 rows of 1 byte. Nothing points at them."
  },
  {
   "address": 37723,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 3 of seven at $9349-$93AA, its gap starting 2 dots into the first byte: 7 rows of 2 bytes. Nothing points at them."
  },
  {
   "address": 37739,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 4 of seven at $9349-$93AA, its gap starting 3 dots into the first byte: 7 rows of 2 bytes. Nothing points at them."
  },
  {
   "address": 37755,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 5 of seven at $9349-$93AA, its gap starting 4 dots into the first byte: 7 rows of 2 bytes. Nothing points at them."
  },
  {
   "address": 37771,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 6 of seven at $9349-$93AA, its gap starting 5 dots into the first byte: 7 rows of 2 bytes. Nothing points at them."
  },
  {
   "address": 37787,
   "type": "line",
   "text": "A mask 7 rows high with a gap six dots wide (five in the last row), drawing 7 of seven at $9349-$93AA, its gap starting 6 dots into the first byte: 7 rows of 2 bytes. Nothing points at them."
  },
  {
   "address": 37803,
   "type": "line",
   "text": "The mask under the star where a punch or kick lands, drawn with AND ($7519): 25 rows of 5 bytes."
  },
  {
   "address": 37930,
   "type": "line",
   "text": "The star where a punch or kick lands, drawn with OR ($7519): 20 rows of 5 bytes."
  },
  {
   "address": 38032,
   "type": "line",
   "text": "The mask under a quick punch's star ($7545): 21 rows of 4 bytes."
  },
  {
   "address": 38118,
   "type": "line",
   "text": "A quick punch's star ($7545): 15 rows of 4 bytes."
  },
  {
   "address": 38180,
   "type": "line",
   "text": "The feet mask for legs pose $22, drawn with AND under a fighter: 7 rows of 6 bytes."
  },
  {
   "address": 38224,
   "type": "line",
   "text": "The feet mask for legs pose $23, drawn with AND under a fighter: 10 rows of 6 bytes."
  },
  {
   "address": 38286,
   "type": "line",
   "text": "The feet mask for legs pose $24, drawn with AND under a fighter: 10 rows of 4 bytes."
  },
  {
   "address": 38328,
   "type": "line",
   "text": "The feet mask for legs poses $25, $26, drawn with AND under a fighter: 4 rows of 4 bytes."
  },
  {
   "address": 38346,
   "type": "line",
   "text": "The feet mask for legs pose $28, drawn with AND under a fighter: 6 rows of 4 bytes."
  },
  {
   "address": 38372,
   "type": "line",
   "text": "The feet mask for legs pose $29, drawn with AND under a fighter: 7 rows of 4 bytes."
  },
  {
   "address": 38400,
   "type": "line",
   "text": "Scenery piece 0, the beam under the ceiling ($7815): 12 rows of 6 bytes."
  },
  {
   "address": 38474,
   "type": "line",
   "text": "Scenery piece 1, a pillar ($7815): 65 rows of 2 bytes."
  },
  {
   "address": 38606,
   "type": "line",
   "text": "Scenery piece 2, a doorpost ($7815): 77 rows of 1 byte."
  },
  {
   "address": 38685,
   "type": "line",
   "text": "Scenery piece 3, at the floor ($7815): 9 rows of 4 bytes."
  },
  {
   "address": 38723,
   "type": "line",
   "text": "Scenery piece 4, at the floor ($7815): 6 rows of 1 byte."
  },
  {
   "address": 38731,
   "type": "line",
   "text": "A mask cut out of the screen before Akuma is drawn (AND) ($7D0C, part 10): 43 rows of 6 bytes."
  },
  {
   "address": 38991,
   "type": "line",
   "text": "A second mask for Akuma (AND) ($7D0C, part 11): 3 rows of 2 bytes."
  },
  {
   "address": 38999,
   "type": "line",
   "text": "One byte between shapes that nothing reads."
  },
  {
   "address": 39000,
   "type": "line",
   "text": "A small part of Akuma ($7D0C, part 15): 2 rows of 1 byte."
  },
  {
   "address": 39004,
   "type": "line",
   "text": "Akuma's hand (part 16) ($7D0C, part 16): 4 rows of 3 bytes."
  },
  {
   "address": 39018,
   "type": "line",
   "text": "15 bytes between shapes that nothing reads."
  },
  {
   "address": 39033,
   "type": "line",
   "text": "Akuma's head, drawing 1 of 6 ($8F) ($7D0C, part 1): 8 rows of 2 bytes."
  },
  {
   "address": 39051,
   "type": "line",
   "text": "Akuma's head, drawing 2 of 6 ($8F) ($7D0C, part 2): 8 rows of 2 bytes."
  },
  {
   "address": 39069,
   "type": "line",
   "text": "Akuma's head, drawing 3 of 6 ($8F) ($7D0C, part 3): 8 rows of 2 bytes."
  },
  {
   "address": 39087,
   "type": "line",
   "text": "Akuma's head, drawing 4 of 6 ($8F) ($7D0C, part 4): 8 rows of 2 bytes."
  },
  {
   "address": 39105,
   "type": "line",
   "text": "Akuma's head, drawing 5 of 6 ($8F) ($7D0C, part 5): 8 rows of 2 bytes."
  },
  {
   "address": 39123,
   "type": "line",
   "text": "Akuma's arm, down ($7D0C, part 7): 17 rows of 3 bytes."
  },
  {
   "address": 39176,
   "type": "line",
   "text": "Akuma's arm, raised ($7D0C, part 8): 19 rows of 4 bytes."
  },
  {
   "address": 39254,
   "type": "line",
   "text": "Akuma's arm, pointing ($7D0C, part 9): 8 rows of 5 bytes."
  },
  {
   "address": 39296,
   "type": "line",
   "text": "Scenery piece 5, the door ($7815): 75 rows of 2 bytes."
  },
  {
   "address": 39448,
   "type": "line",
   "text": "The mask drawn with AND before standing and the bow ($6A23): 8 rows of 2 bytes."
  },
  {
   "address": 39466,
   "type": "line",
   "text": "The mask drawn with AND before the stance's arms and the punches ($6A11): 18 rows of 3 bytes."
  },
  {
   "address": 39522,
   "type": "line",
   "text": "Akuma's head, drawing 6 of 6 ($8F) ($7D0C, part 6): 8 rows of 2 bytes."
  },
  {
   "address": 39540,
   "type": "line",
   "text": "THE END, drawn when the hero dies ($02E7): 10 rows of 10 bytes."
  },
  {
   "address": 39642,
   "type": "line",
   "text": "An earlier copy of code (an RTS, then a test of the buttons and the keyboard), the floor's pattern and zeros; nothing runs or reads it."
  },
  {
   "address": 39680,
   "type": "line",
   "text": "Legs pose $22, the run: 21 rows of 5 bytes."
  },
  {
   "address": 39787,
   "type": "line",
   "text": "Legs pose $23, the run: 20 rows of 6 bytes."
  },
  {
   "address": 39909,
   "type": "line",
   "text": "Legs pose $24, the run: 13 rows of 4 bytes."
  },
  {
   "address": 39963,
   "type": "line",
   "text": "Legs pose $25, the run: 24 rows of 3 bytes."
  },
  {
   "address": 40037,
   "type": "line",
   "text": "Legs pose $26, the run: 24 rows of 3 bytes."
  },
  {
   "address": 40111,
   "type": "line",
   "text": "Legs pose $27, the run: 19 rows of 2 bytes."
  },
  {
   "address": 40151,
   "type": "line",
   "text": "Legs pose $28, the run: 23 rows of 3 bytes."
  },
  {
   "address": 40222,
   "type": "line",
   "text": "Legs pose $29, the run: 24 rows of 3 bytes."
  },
  {
   "address": 40296,
   "type": "line",
   "text": "Torso pose $1E, the steps and the run: 15 rows of 3 bytes."
  },
  {
   "address": 40343,
   "type": "line",
   "text": "Torso pose $1F, the steps and the run: 15 rows of 4 bytes."
  },
  {
   "address": 40405,
   "type": "line",
   "text": "Torso pose $20, the steps and the run: 23 rows of 2 bytes."
  },
  {
   "address": 40453,
   "type": "line",
   "text": "Torso pose $21, the steps and the run: 13 rows of 3 bytes."
  },
  {
   "address": 40494,
   "type": "line",
   "text": "Torso pose $22, the steps and the run: 13 rows of 2 bytes."
  },
  {
   "address": 40522,
   "type": "line",
   "text": "Torso pose $23, the steps and the run: 20 rows of 2 bytes."
  },
  {
   "address": 40564,
   "type": "line",
   "text": "Torso pose $24, the steps and the run: 14 rows of 2 bytes."
  },
  {
   "address": 40594,
   "type": "line",
   "text": "Torso pose $25, the steps and the run: 12 rows of 3 bytes."
  },
  {
   "address": 40632,
   "type": "line",
   "text": "Akuma's body ($7D0C, part 0): 42 rows of 5 bytes."
  },
  {
   "address": 40844,
   "type": "line",
   "text": "A part of Akuma drawn first, in store mode ($7D0C, part 12): 9 rows of 6 bytes."
  },
  {
   "address": 40900,
   "type": "line",
   "text": "A small part of Akuma ($7D0C, part 13): 9 rows of 2 bytes."
  },
  {
   "address": 40920,
   "type": "line",
   "text": "Akuma's hand (part 14) ($7D0C, part 14): 6 rows of 3 bytes."
  },
  {
   "address": 40940,
   "type": "line",
   "text": "20 bytes after the last shape that nothing reads."
  }
 ]
}