{
 "schema": 1,
 "platform": "c64",
 "game": "space-rogue",
 "part": "flight",
 "build": "",
 "source": "regenerator2000 live",
 "regions": {
  "exclude": [
   [
    256,
    511,
    "stack"
   ],
   [
    53248,
    57343,
    "I/O and colour RAM"
   ],
   [
    16384,
    22271,
    "the second display buffer's bitmap, where the 3D view is drawn every other frame (in navigation the chart's tiles and the system's map are loaded here: the nav part)"
   ],
   [
    59222,
    59647,
    "the model heap past the last model loaded ($1D80): bytes left from earlier loads, which nothing reads until a model is loaded over them"
   ],
   [
    0,
    16383,
    "Engine"
   ],
   [
    22272,
    42239,
    "Engine"
   ],
   [
    48384,
    58367,
    "Engine"
   ],
   [
    60160,
    65535,
    "Engine"
   ]
  ],
  "extra": [],
  "elsewhere": [
   [
    0,
    16383,
    "Engine"
   ],
   [
    22272,
    42239,
    "Engine"
   ],
   [
    48384,
    58367,
    "Engine"
   ],
   [
    60160,
    65535,
    "Engine"
   ]
  ]
 },
 "blocks": [
  {
   "start": 16384,
   "end": 22271,
   "type": "Undefined"
  },
  {
   "start": 42240,
   "end": 45674,
   "type": "Byte"
  },
  {
   "start": 45675,
   "end": 46276,
   "type": "Code"
  },
  {
   "start": 46277,
   "end": 46532,
   "type": "Byte"
  },
  {
   "start": 46533,
   "end": 46704,
   "type": "Code"
  },
  {
   "start": 46705,
   "end": 46960,
   "type": "Byte"
  },
  {
   "start": 46961,
   "end": 48226,
   "type": "Code"
  },
  {
   "start": 48227,
   "end": 48383,
   "type": "Byte"
  },
  {
   "start": 58368,
   "end": 58378,
   "type": "Code"
  },
  {
   "start": 58379,
   "end": 58414,
   "type": "Byte"
  },
  {
   "start": 58415,
   "end": 58416,
   "type": "Word"
  },
  {
   "start": 58417,
   "end": 58842,
   "type": "Byte"
  },
  {
   "start": 58843,
   "end": 58853,
   "type": "Code"
  },
  {
   "start": 58854,
   "end": 58889,
   "type": "Byte"
  },
  {
   "start": 58890,
   "end": 58891,
   "type": "Word"
  },
  {
   "start": 58892,
   "end": 59221,
   "type": "Byte"
  },
  {
   "start": 59222,
   "end": 59647,
   "type": "Undefined"
  },
  {
   "start": 59648,
   "end": 60109,
   "type": "Code"
  },
  {
   "start": 60110,
   "end": 60159,
   "type": "Byte"
  }
 ],
 "symbols": [
  {
   "address": 17376,
   "name": "f_43E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17377,
   "name": "f_43E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17378,
   "name": "f_43E2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17379,
   "name": "f_43E3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17380,
   "name": "f_43E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17381,
   "name": "f_43E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17382,
   "name": "f_43E6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17383,
   "name": "f_43E7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17696,
   "name": "f_4520",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17697,
   "name": "f_4521",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17698,
   "name": "f_4522",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17699,
   "name": "f_4523",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17700,
   "name": "f_4524",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17701,
   "name": "f_4525",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17702,
   "name": "f_4526",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 17703,
   "name": "f_4527",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18016,
   "name": "f_4660",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18017,
   "name": "f_4661",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18018,
   "name": "f_4662",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18019,
   "name": "f_4663",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18020,
   "name": "f_4664",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18021,
   "name": "f_4665",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18022,
   "name": "f_4666",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18023,
   "name": "f_4667",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18336,
   "name": "f_47A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18337,
   "name": "f_47A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18338,
   "name": "f_47A2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18339,
   "name": "f_47A3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18340,
   "name": "f_47A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18341,
   "name": "f_47A5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18342,
   "name": "f_47A6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18343,
   "name": "f_47A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18656,
   "name": "f_48E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18657,
   "name": "f_48E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18658,
   "name": "f_48E2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18659,
   "name": "f_48E3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18660,
   "name": "f_48E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18661,
   "name": "f_48E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18662,
   "name": "f_48E6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18663,
   "name": "f_48E7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18976,
   "name": "f_4A20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18977,
   "name": "f_4A21",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18978,
   "name": "f_4A22",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18979,
   "name": "f_4A23",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18980,
   "name": "f_4A24",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18981,
   "name": "f_4A25",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18982,
   "name": "f_4A26",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 18983,
   "name": "f_4A27",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19296,
   "name": "f_4B60",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19297,
   "name": "f_4B61",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19298,
   "name": "f_4B62",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19299,
   "name": "f_4B63",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19300,
   "name": "f_4B64",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19301,
   "name": "f_4B65",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19302,
   "name": "f_4B66",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19303,
   "name": "f_4B67",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19616,
   "name": "f_4CA0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19617,
   "name": "f_4CA1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19618,
   "name": "f_4CA2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19619,
   "name": "f_4CA3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19620,
   "name": "f_4CA4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19621,
   "name": "f_4CA5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19622,
   "name": "f_4CA6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19623,
   "name": "f_4CA7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19936,
   "name": "f_4DE0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19937,
   "name": "f_4DE1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19938,
   "name": "f_4DE2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19939,
   "name": "f_4DE3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19940,
   "name": "f_4DE4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19941,
   "name": "f_4DE5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19942,
   "name": "f_4DE6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 19943,
   "name": "f_4DE7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20224,
   "name": "f_4F00",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20256,
   "name": "f_4F20",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20257,
   "name": "f_4F21",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20258,
   "name": "f_4F22",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20259,
   "name": "f_4F23",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20260,
   "name": "f_4F24",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20261,
   "name": "f_4F25",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20262,
   "name": "f_4F26",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20263,
   "name": "f_4F27",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20352,
   "name": "f_4F80",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20480,
   "name": "f_5000",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20576,
   "name": "f_5060",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20577,
   "name": "f_5061",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20578,
   "name": "f_5062",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20579,
   "name": "f_5063",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20580,
   "name": "f_5064",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20581,
   "name": "f_5065",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20582,
   "name": "f_5066",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20583,
   "name": "f_5067",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20606,
   "name": "a_507E",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20607,
   "name": "a_507F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20608,
   "name": "f_5080",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20734,
   "name": "a_50FE",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20735,
   "name": "a_50FF",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 20896,
   "name": "f_51A0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20897,
   "name": "f_51A1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20898,
   "name": "f_51A2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20899,
   "name": "f_51A3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20900,
   "name": "f_51A4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20901,
   "name": "f_51A5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20902,
   "name": "f_51A6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 20903,
   "name": "f_51A7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21120,
   "name": "f_5280",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21216,
   "name": "f_52E0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21217,
   "name": "f_52E1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21218,
   "name": "f_52E2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21219,
   "name": "f_52E3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21220,
   "name": "f_52E4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21221,
   "name": "f_52E5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21222,
   "name": "f_52E6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21776,
   "name": "a_5510",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21808,
   "name": "a_5530",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 21840,
   "name": "f_5550",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21872,
   "name": "f_5570",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21904,
   "name": "f_5590",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21936,
   "name": "f_55B0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21968,
   "name": "f_55D0",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 21969,
   "name": "f_55D1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22032,
   "name": "a_5610",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22033,
   "name": "a_5611",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 22034,
   "name": "f_5612",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22048,
   "name": "f_5620",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22049,
   "name": "f_5621",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22050,
   "name": "f_5622",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22064,
   "name": "f_5630",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22065,
   "name": "f_5631",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22066,
   "name": "f_5632",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22067,
   "name": "f_5633",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22257,
   "name": "f_56F1",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22258,
   "name": "f_56F2",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22259,
   "name": "f_56F3",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22260,
   "name": "f_56F4",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22261,
   "name": "f_56F5",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22262,
   "name": "f_56F6",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 22263,
   "name": "f_56F7",
   "type": "Field",
   "kind": "auto"
  },
  {
   "address": 42240,
   "name": "log_add_table",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 42318,
   "name": "s_A54E",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 42333,
   "name": "s_A55D",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 42357,
   "name": "s_A575",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 42372,
   "name": "s_A584",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 42611,
   "name": "a_A673",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 42612,
   "name": "s_A674",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 42752,
   "name": "log_add_table_d2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43264,
   "name": "log_add_table_d4",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 43520,
   "name": "log_sub_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43776,
   "name": "log_sub_table_d2",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 43911,
   "name": "s_AB87",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 44544,
   "name": "log_sub_near_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44800,
   "name": "log_sub_near_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 44907,
   "name": "exp_table_lo",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45163,
   "name": "exp_table_hi",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45419,
   "name": "log_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 45675,
   "name": "b_B26B",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45692,
   "name": "b_B27C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45705,
   "name": "b_B289",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45714,
   "name": "b_B292",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45718,
   "name": "b_B296",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45724,
   "name": "b_B29C",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45727,
   "name": "b_B29F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45740,
   "name": "b_B2AC",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45753,
   "name": "b_B2B9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45759,
   "name": "j_B2BF",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45768,
   "name": "r_B2C8",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45769,
   "name": "b_B2C9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45781,
   "name": "a_B2D5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45784,
   "name": "b_B2D8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45798,
   "name": "r_B2E6",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45799,
   "name": "s_B2E7",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 45816,
   "name": "b_B2F8",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45822,
   "name": "b_B2FE",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45854,
   "name": "b_B31E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45869,
   "name": "b_B32D",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45883,
   "name": "a_B33B",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45893,
   "name": "b_B345",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45907,
   "name": "a_B353",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 45914,
   "name": "r_B35A",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 45915,
   "name": "log_sub",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45921,
   "name": "log_sub_mag",
   "type": "Branch",
   "kind": "user"
  },
  {
   "address": 45935,
   "name": "j_B36F",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 45955,
   "name": "b_B383",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 45970,
   "name": "log_add",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 45976,
   "name": "log_add_mag",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46009,
   "name": "a_B3B9",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46010,
   "name": "b_B3BA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46024,
   "name": "a_B3C8",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46031,
   "name": "r_B3CF",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46032,
   "name": "b_B3D0",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46046,
   "name": "r_B3DE",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46047,
   "name": "b_B3DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46051,
   "name": "b_B3E3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46057,
   "name": "r_B3E9",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46058,
   "name": "b_B3EA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46071,
   "name": "b_B3F7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46084,
   "name": "b_B404",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46090,
   "name": "j_B40A",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 46097,
   "name": "a_B411",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46104,
   "name": "r_B418",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 46105,
   "name": "b_B419",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46122,
   "name": "b_B42A",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46131,
   "name": "b_B433",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46140,
   "name": "byte_to_log",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46147,
   "name": "b_B443",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46151,
   "name": "int16_to_log",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46161,
   "name": "uint16_to_log",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46170,
   "name": "lin_to_log",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46174,
   "name": "b_B45E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46192,
   "name": "b_B470",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46214,
   "name": "b_B486",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46225,
   "name": "b_B491",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46232,
   "name": "b_B498",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46239,
   "name": "a_B49F",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46250,
   "name": "b_B4AA",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46277,
   "name": "log_shift_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46405,
   "name": "log_whole_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46533,
   "name": "log_to_lin_signed",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46560,
   "name": "log_to_lin",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46581,
   "name": "a_B5F5",
   "type": "AbsoluteAddress",
   "kind": "auto"
  },
  {
   "address": 46609,
   "name": "b_B611",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46633,
   "name": "b_B629",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46649,
   "name": "b_B639",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46687,
   "name": "b_B65F",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46705,
   "name": "exp_shift_table",
   "type": "Field",
   "kind": "user"
  },
  {
   "address": 46961,
   "name": "clamp_s8",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46976,
   "name": "b_B780",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46981,
   "name": "b_B785",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 46984,
   "name": "tac_fill",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 46989,
   "name": "j_B78D",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47160,
   "name": "r_B838",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47161,
   "name": "tac_copy",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 47166,
   "name": "j_B83E",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47488,
   "name": "r_B980",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47489,
   "name": "view_clear_c000",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47494,
   "name": "j_B986",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 47857,
   "name": "r_BAF1",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 47858,
   "name": "view_clear_4000",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 47863,
   "name": "j_BAF7",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 48226,
   "name": "r_BC62",
   "type": "Return",
   "kind": "auto"
  },
  {
   "address": 48227,
   "name": "seg0_end_zeros",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58368,
   "name": "sta_model",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58379,
   "name": "sta_header",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58415,
   "name": "sta_size",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58417,
   "name": "sta_reflist",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58421,
   "name": "sta_axes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58476,
   "name": "s_E46C",
   "type": "Subroutine",
   "kind": "auto"
  },
  {
   "address": 58493,
   "name": "sta_parents",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58511,
   "name": "sta_axisidx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58529,
   "name": "sta_refpts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58565,
   "name": "sta_normals",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58691,
   "name": "sta_normref",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58705,
   "name": "sta_planes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58719,
   "name": "sta_polynorm",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58733,
   "name": "sta_backcol",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58747,
   "name": "sta_frontcol",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58761,
   "name": "sta_vertcounts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58775,
   "name": "sta_vertlists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58823,
   "name": "sta_groups",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58839,
   "name": "sta_groupsizes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58843,
   "name": "icr_model",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58854,
   "name": "icr_header",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58890,
   "name": "icr_size",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58892,
   "name": "icr_reflist",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58895,
   "name": "icr_axes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58976,
   "name": "icr_parents",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 58994,
   "name": "icr_axisidx",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59012,
   "name": "icr_refpts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59039,
   "name": "icr_normals",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59111,
   "name": "icr_normref",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59119,
   "name": "icr_planes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59130,
   "name": "icr_polynorm",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59141,
   "name": "icr_backcol",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59152,
   "name": "icr_frontcol",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59163,
   "name": "icr_vertcounts",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59174,
   "name": "icr_vertlists",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59214,
   "name": "icr_groups",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59220,
   "name": "icr_groupsizes",
   "type": "UserDefined",
   "kind": "user"
  },
  {
   "address": 59648,
   "name": "init_game",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 59653,
   "name": "b_E905",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59662,
   "name": "b_E90E",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59665,
   "name": "b_E911",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59717,
   "name": "j_E945",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59730,
   "name": "b_E952",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59762,
   "name": "game_over",
   "type": "Jump",
   "kind": "user"
  },
  {
   "address": 59795,
   "name": "b_E993",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59841,
   "name": "b_E9C1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59847,
   "name": "b_E9C7",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59853,
   "name": "b_E9CD",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59859,
   "name": "b_E9D3",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59865,
   "name": "b_E9D9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59871,
   "name": "b_E9DF",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59877,
   "name": "b_E9E5",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59881,
   "name": "b_E9E9",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59926,
   "name": "j_EA16",
   "type": "Jump",
   "kind": "auto"
  },
  {
   "address": 59939,
   "name": "clear_bitmap_c000",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 59952,
   "name": "b_EA30",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 59966,
   "name": "load_resident",
   "type": "Subroutine",
   "kind": "user"
  },
  {
   "address": 60081,
   "name": "b_EAB1",
   "type": "Branch",
   "kind": "auto"
  },
  {
   "address": 60110,
   "name": "init_end_zeros",
   "type": "UserDefined",
   "kind": "user"
  }
 ],
 "comments": [
  {
   "address": 42240,
   "type": "line",
   "text": "Log-addition correction, 1,280 entries for a difference d of two logs below 5.0 (index d, page $A5 plus d's whole part): 256 * log2(1 + 2^(-d/256)) less 1, from $FF down to $0A. log_add_mag adds it, plus one, to the larger log. MAIN's base entry at $A49A calls SEG1 at addresses inside it (s_A54E and the others): at a base SEG1 is loaded here instead"
  },
  {
   "address": 42318,
   "type": "line",
   "text": "Byte 78 of the log-addition table in flight; at a base SEG1's routine called from $A4CE"
  },
  {
   "address": 42333,
   "type": "line",
   "text": "Byte 93 of the log-addition table in flight; at a base SEG1's routine called from $A4AA"
  },
  {
   "address": 42357,
   "type": "line",
   "text": "Byte 117 of the log-addition table in flight; at a base SEG1's routine called from $A4CB"
  },
  {
   "address": 42372,
   "type": "line",
   "text": "Byte 132 of the log-addition table in flight; at a base SEG1's routine called from $A4D1"
  },
  {
   "address": 42611,
   "type": "line",
   "text": "Byte 371 of the log-addition table in flight; at a base SEG1's flag that ends the base loop at $A4DF when nonzero"
  },
  {
   "address": 42612,
   "type": "line",
   "text": "Byte 372 of the log-addition table in flight; at a base SEG1's routine the base loop calls each pass ($A4E2)"
  },
  {
   "address": 42752,
   "type": "line",
   "text": "log_add_table from difference 2.0: the base address in log_add_mag's ADC at $B3C6, whose high byte (at $B3C8) is set to $A5-$A9 by the difference's whole part"
  },
  {
   "address": 43264,
   "type": "line",
   "text": "The log-addition table's last page, differences 4.0 to 4.996: corrections $15 down to $0A"
  },
  {
   "address": 43520,
   "type": "line",
   "text": "Log-subtraction correction for differences d of 1.0 to 4.996 (page $A9 plus d's whole part): -256 * log2(1 - 2^(-d/256)) less 1, from $FF down to $0B; log_sub_mag subtracts it, and one more, from the larger log"
  },
  {
   "address": 43776,
   "type": "line",
   "text": "log_sub_table from difference 2.0: the base address in the SBC at $B339, its high byte patched at $B33B"
  },
  {
   "address": 43911,
   "type": "line",
   "text": "Byte $187 of log_sub_table in flight; at a base SEG1's status page, called from $26A8 (Navigation's STATUS loads SEG1 to show it)"
  },
  {
   "address": 44544,
   "type": "line",
   "text": "Low bytes of the log-subtraction correction for differences below 1.0, where the result can fall far below both numbers; high bytes at $AF00 (difference $6B and up uses 1)"
  },
  {
   "address": 44800,
   "type": "line",
   "text": "High bytes for log_sub_near_lo, differences 0 to $6A: $14 at 0 (the two cancel, leaving a log of about -20, zero), falling to 2"
  },
  {
   "address": 44907,
   "type": "line",
   "text": "Low bytes of 2^(i/256) * $4000 for the fraction i of a log, 256 entries; high bytes at $B06B. log_to_lin shifts this mantissa by the whole part"
  },
  {
   "address": 45163,
   "type": "line",
   "text": "High bytes of 2^(i/256) * $4000: $40 to $7F"
  },
  {
   "address": 45419,
   "type": "line",
   "text": "256 * log2(1 + i/256) for i = 0-255: the fraction of a log for the 8 significant bits of a number; lin_to_log adds the whole part"
  },
  {
   "address": 45675,
   "type": "line",
   "text": "Log subtraction, d of 5.0 (the whole part 5): 6 to 12 taken off the result's log, more for a smaller low byte of d; one of the pieces at $B26B-$B2C8 that $B2C9 picks by d's whole part"
  },
  {
   "address": 45714,
   "type": "line",
   "text": "Log subtraction, d of 9.0: one off the log when d's low byte is below $88, nothing otherwise"
  },
  {
   "address": 45718,
   "type": "line",
   "text": "Log subtraction, d of 8.0 (and of 7.0 with a low byte of $F3 or more): one off the log"
  },
  {
   "address": 45727,
   "type": "line",
   "text": "Log subtraction, d of 7.0: 3 or 2 off the log"
  },
  {
   "address": 45740,
   "type": "line",
   "text": "Log subtraction, d of 6.0: 6 to 3 off the log"
  },
  {
   "address": 45759,
   "type": "line",
   "text": "Adds the negative correction in A to the result's log"
  },
  {
   "address": 45769,
   "type": "line",
   "text": "Log subtraction when the logs differ by 5.0 or more: the result is the larger number, with the whole part of d kept in the operand at $B2D5 to pick the small correction (5 to 9); 10 or more needs none"
  },
  {
   "address": 45781,
   "type": "line",
   "text": "The operand of LDA # at $B2D4: $B2C9 writes the difference's whole part here, and the CMPs that follow pick its correction"
  },
  {
   "address": 45799,
   "type": "line",
   "text": "Log subtraction of magnitudes with no sign test, entered by MAIN's unused arcsine ($98C2): d = ($5F) - ($62), then on as at $B36B"
  },
  {
   "address": 45816,
   "type": "line",
   "text": "Log subtraction when the second magnitude is the larger: the sign in $61 is flipped and the result is (second - first), by the same tables"
  },
  {
   "address": 45883,
   "type": "line",
   "text": "The high byte of the SBC operand at $B339: $B32D writes $A9 plus the difference's whole part, the page of log_sub_table"
  },
  {
   "address": 45893,
   "type": "line",
   "text": "Log subtraction, d of 1.0 to 4.996: the log less the log_sub_table entry (page from d's whole part, kept in the operand at $B353) and one"
  },
  {
   "address": 45907,
   "type": "line",
   "text": "The high byte of the SBC operand at $B351: $B345 writes $A9 plus the difference's whole part"
  },
  {
   "address": 45915,
   "type": "line",
   "text": "Subtracts the log-form number in $62-$64 from the one in $5F-$61, result in $5F-$61: opposite signs add the magnitudes (log_add_mag), the same sign subtracts them ($B361)"
  },
  {
   "address": 45921,
   "type": "line",
   "text": "log(|a| - |b|) with a's sign, or b - a with the sign flipped when |b| is the larger ($B2F8); differences below 1.0 use the 16-bit table at $AE00/$AF00, larger ones log_sub_table or the small corrections"
  },
  {
   "address": 45970,
   "type": "line",
   "text": "Adds the log-form number in $62-$64 to the one in $5F-$61, result in $5F-$61: the same sign adds the magnitudes (log_add_mag), opposite signs subtract them (log_sub_mag)"
  },
  {
   "address": 45976,
   "type": "line",
   "text": "log(|a| + |b|): the larger log plus a correction for the difference d of the two (swapped first when $62/$63 is the larger): from log_add_table below 5.0 (its page kept in the operand at $B3C8), from steps of 11 down to 0 for 5.0 to 9.5, none above; the sign byte $61 is left alone"
  },
  {
   "address": 46009,
   "type": "line",
   "text": "The operand of LDX # at $B3B8: log_add_mag writes the swapped difference's low byte here, the index into log_add_table"
  },
  {
   "address": 46024,
   "type": "line",
   "text": "The high byte of the ADC operand at $B3C6: log_add_mag writes $A5 plus the difference's whole part, the page of log_add_table"
  },
  {
   "address": 46090,
   "type": "line",
   "text": "Log addition, d of 5.0 or more: adds the correction to the result's log, given in A as 256 less it and patched into the operand at $B411"
  },
  {
   "address": 46097,
   "type": "line",
   "text": "The operand of SBC # at $B410: written with 256 less the correction log_add_mag adds for differences of 5.0 and up"
  },
  {
   "address": 46140,
   "type": "line",
   "text": "The signed byte in A, as a whole number, to log form: sign-extended into $60/$61 with $5F zero, then byte_to_log's tail ($B447)"
  },
  {
   "address": 46151,
   "type": "line",
   "text": "The signed 16-bit whole number in $60/$61 ($5F is set to zero) to log form, negated first when negative; the sign stays in $61"
  },
  {
   "address": 46161,
   "type": "line",
   "text": "The unsigned 16-bit whole number in $60/$61 ($5F set to zero) to log form"
  },
  {
   "address": 46170,
   "type": "line",
   "text": "The signed 24-bit number in $5F-$61 (16.8 fixed point) to log form in $5F/$60, the sign left in $61: the top nonzero byte gives the whole part from $B545 and a shift count from $B4C5 (patched into the branch at $B49E) that brings 8 significant bits down to index log_table"
  },
  {
   "address": 46239,
   "type": "line",
   "text": "The offset of the BNE at $B49E: lin_to_log writes the shift count's branch offset from log_shift_table here"
  },
  {
   "address": 46277,
   "type": "line",
   "text": "For lin_to_log, by the top nonzero byte's value: the branch offset into the shift code at $B4A1-$B4BD that leaves its 8 significant bits in X"
  },
  {
   "address": 46405,
   "type": "line",
   "text": "For lin_to_log, by the top nonzero byte's value: the whole part of its log2 plus 8 ($08 for 1 to $0F for $80-$FF), added to $F0 or $F8 when the number is below $10000; $FC for zero"
  },
  {
   "address": 46533,
   "type": "line",
   "text": "log_to_lin, then the 24-bit result negated when the sign byte $61 has bit 7 set"
  },
  {
   "address": 46560,
   "type": "line",
   "text": "The log-form number in $5F/$60 to a positive 24-bit number in $5F-$61 (16.8 fixed point): the mantissa from exp_table_lo/hi by the fraction, shifted by the whole part through the branch offset from $B671 patched into $B5F5; a whole part of 15 or more saturates to $7FFFFF, a very negative one gives 0 or 1"
  },
  {
   "address": 46581,
   "type": "line",
   "text": "The offset of the BNE at $B5F4: log_to_lin writes the branch offset from exp_shift_table here, 0 (fall through to saturate) for an overflow"
  },
  {
   "address": 46593,
   "type": "line",
   "text": "log_to_lin's results for the smallest logs: 0, or 1 at $B605, or the mantissa shifted down 6 at $B609, written as a 24-bit number"
  },
  {
   "address": 46692,
   "type": "line",
   "text": "log_to_lin's case for a whole part of 14: the mantissa moved up a byte"
  },
  {
   "address": 46705,
   "type": "line",
   "text": "For log_to_lin, by the whole part of the log (a signed byte): the branch offset into its shift code ($B601-$B670); 0 for 15 to 127, an overflow; $0B for the most negative, a result of zero"
  },
  {
   "address": 46961,
   "type": "line",
   "text": "Clamps the signed 16-bit number in $60/$61 to a signed byte in A: $7F above 127, $80 below -128, else $60"
  },
  {
   "address": 46984,
   "type": "line",
   "text": "Fills the TAC panel of the $C000 bitmap (character rows 18-23, columns 14-23, less its top and bottom pixel rows) with the byte in $3B, and its screen colours at $E2DE with $CC"
  },
  {
   "address": 47161,
   "type": "line",
   "text": "Copies the TAC panel from the $C000 bitmap and its colours ($E2DE) to the same places in the $4000 bitmap and its screen at $6000, so both display buffers show it"
  },
  {
   "address": 47489,
   "type": "line",
   "text": "Clears the 3D view of the $C000 bitmap (character rows 3-15, columns 4-35) to the byte in $3B and its screen colours at $E07C to $CC"
  },
  {
   "address": 47858,
   "type": "line",
   "text": "Clears the 3D view of the $4000 bitmap (character rows 3-15, columns 4-35) to the byte in $3B and its colours at $607C to $CC"
  },
  {
   "address": 48227,
   "type": "line",
   "text": "Zeros to the end of SEG0"
  },
  {
   "address": 58368,
   "type": "line",
   "text": "STA: the Starbase's model (type $13), 475 bytes, loaded at $E400 by load_model. Its prologue, relocated there, points $7A/$7B at its header and jumps to draw_model"
  },
  {
   "address": 58379,
   "type": "line",
   "text": "STA's header, copied to $9A-$BD: prepared, so its reference points and normals are filled in (first byte 1); 18 points, 4 reference points, 14 normals, 14 polygons, 8 axis vectors; then 15 pointers to its tables"
  },
  {
   "address": 58415,
   "type": "line",
   "text": "STA's size, 475 bytes, by which load_model moves the heap pointer on"
  },
  {
   "address": 58417,
   "type": "line",
   "text": "STA's 4 reference points, as point numbers (4, 8, 9, 17): each normal is tested from one of them"
  },
  {
   "address": 58421,
   "type": "line",
   "text": "STA's 8 axis vectors, 9 bytes each (three log-form components: fraction, whole part, sign); the points are built by adding and subtracting them, and preparation adds the scale to their logs"
  },
  {
   "address": 58476,
   "type": "line",
   "text": "Byte 55 of STA's axis vectors in flight; at a base, SEG1A's routine that MAIN calls at $A4D4 when the player docks"
  },
  {
   "address": 58493,
   "type": "line",
   "text": "For each of STA's 18 points, the point it is built from, negative for the model's own position"
  },
  {
   "address": 58511,
   "type": "line",
   "text": "For each of STA's points, the axis vector added to its parent, negative to subtract it"
  },
  {
   "address": 58529,
   "type": "line",
   "text": "STA's reference points in its own frame, 9 bytes each, linear and negated, filled in when it is prepared"
  },
  {
   "address": 58565,
   "type": "line",
   "text": "STA's 14 face normals, 9 bytes each in log form, each made when the model is prepared as the cross product of two edges of a polygon"
  },
  {
   "address": 58691,
   "type": "line",
   "text": "For each of STA's normals, which reference point its facing is tested from"
  },
  {
   "address": 58705,
   "type": "line",
   "text": "For each of STA's 14 polygons, the normal whose facing decides its pass in the painter's order: 0 the middle pass, negative reversing the test"
  },
  {
   "address": 58719,
   "type": "line",
   "text": "For each of STA's polygons, its own normal, which says whether its front or back is seen"
  },
  {
   "address": 58733,
   "type": "line",
   "text": "For each of STA's polygons, the colour code its back is drawn in, $FF for not drawn"
  },
  {
   "address": 58747,
   "type": "line",
   "text": "For each of STA's polygons, the colour code its front is drawn in (set_colour), $FF for not drawn"
  },
  {
   "address": 58761,
   "type": "line",
   "text": "The number of vertices of each of STA's polygons (48 in all)"
  },
  {
   "address": 58775,
   "type": "line",
   "text": "STA's polygons' vertices, as point numbers, one polygon after another"
  },
  {
   "address": 58823,
   "type": "line",
   "text": "STA's face groups, the normals of each group in turn: when the player touches the model, facing_face finds the first group all turned toward the player; group 0 is a base's docking face, any other is a collision"
  },
  {
   "address": 58839,
   "type": "line",
   "text": "The number of normals in each of STA's 3 face groups (6, 5, 5), ended by a zero"
  },
  {
   "address": 58843,
   "type": "line",
   "text": "ICR: the Cruiser's model (type 3), 379 bytes, loaded at $E5DB by load_model. Its prologue, relocated there, points $7A/$7B at its header and jumps to draw_model"
  },
  {
   "address": 58854,
   "type": "line",
   "text": "ICR's header, copied to $9A-$BD: not yet drawn, so its reference points and normals are still zero (first byte 0); 18 points, 3 reference points, 8 normals, 11 polygons, 9 axis vectors; then 15 pointers to its tables"
  },
  {
   "address": 58890,
   "type": "line",
   "text": "ICR's size, 379 bytes, by which load_model moves the heap pointer on"
  },
  {
   "address": 58892,
   "type": "line",
   "text": "ICR's 3 reference points, as point numbers (6, 8, 11): each normal is tested from one of them"
  },
  {
   "address": 58895,
   "type": "line",
   "text": "ICR's 9 axis vectors, 9 bytes each (three log-form components: fraction, whole part, sign); the points are built by adding and subtracting them, and preparation adds the scale to their logs"
  },
  {
   "address": 58976,
   "type": "line",
   "text": "For each of ICR's 18 points, the point it is built from, negative for the model's own position"
  },
  {
   "address": 58994,
   "type": "line",
   "text": "For each of ICR's points, the axis vector added to its parent, negative to subtract it"
  },
  {
   "address": 59012,
   "type": "line",
   "text": "ICR's reference points in its own frame, 9 bytes each, linear and negated, filled in when it is prepared"
  },
  {
   "address": 59039,
   "type": "line",
   "text": "ICR's 8 face normals, 9 bytes each in log form, each made when the model is prepared as the cross product of two edges of a polygon"
  },
  {
   "address": 59111,
   "type": "line",
   "text": "For each of ICR's normals, which reference point its facing is tested from"
  },
  {
   "address": 59119,
   "type": "line",
   "text": "For each of ICR's 11 polygons, the normal whose facing decides its pass in the painter's order: 0 the middle pass, negative reversing the test"
  },
  {
   "address": 59130,
   "type": "line",
   "text": "For each of ICR's polygons, its own normal, which says whether its front or back is seen"
  },
  {
   "address": 59141,
   "type": "line",
   "text": "For each of ICR's polygons, the colour code its back is drawn in, $FF for not drawn"
  },
  {
   "address": 59152,
   "type": "line",
   "text": "For each of ICR's polygons, the colour code its front is drawn in (set_colour), $FF for not drawn"
  },
  {
   "address": 59163,
   "type": "line",
   "text": "The number of vertices of each of ICR's polygons (40 in all)"
  },
  {
   "address": 59174,
   "type": "line",
   "text": "ICR's polygons' vertices, as point numbers, one polygon after another"
  },
  {
   "address": 59214,
   "type": "line",
   "text": "ICR's face groups, the normals of each group in turn: when the player touches the model, facing_face finds the first group all turned toward the player; group 0 is a base's docking face, any other is a collision"
  },
  {
   "address": 59220,
   "type": "line",
   "text": "The number of normals in each of ICR's 1 face group (6), ended by a zero"
  },
  {
   "address": 59648,
   "type": "line",
   "text": "INIT's entry, called once from SR ($14E2) with the carry set for an old game: a new game copies the 12-byte name from $BF00 to $0711. Zero page $38-$FF is cleared and MAIN, SPB, EXTERN and FONT are loaded ($EA3E). An old game then loads SAVED to $0403, sets the disk prompt to DATA (side 2) and loads SEG0, and restores the ship (copy_ship_stats, load_slot_models); a new one sets the prompt, loads SEG0 and sets up the first sector (start_game_objects, load_nav_tiles, load_system_map, enter_sector). Both work out the view's projection ($66CA with $5F/$60 zero) before that, then turn on text into both bitmaps ($A14C), put the cockpit back (restore_after_disk), turn the engine hum on and set the view ($65B0)"
  },
  {
   "address": 59762,
   "type": "line",
   "text": "Death, from $1B93: the hum off, the screen cleared ($EA23), and a message for what killed the player by the type in $0835 (a missile, a ship type, an object or a hazard: disk texts $CF67-$CF6E, or $CEAF less the value when it is negative) and $CF6F; after a key it sets the disk prompt to BOOT (side 1), loads TITLE to $2000 and starts it again. A base overwrites this code ($E400-$EAFF is SEG1A there); END is loaded on leaving to put it back"
  },
  {
   "address": 59926,
   "type": "line",
   "text": "A negative $0835 picks disk text $CEAF less its complement"
  },
  {
   "address": 59939,
   "type": "line",
   "text": "Clears the bitmap at $C000-$DFFF and sets the border black (set_border)"
  },
  {
   "address": 59966,
   "type": "line",
   "text": "Loads MAIN to $6400, SPB to $BD00, EXTERN to $EB00 and FONT to $F200, then sets up the display: $0D03 = 1, the bitmap cleared, bitmap and multicolour modes on, $D018 = $80 (screen $E000, bitmap $C000), bank 3 shown ($8EF6), black border and background, the colour RAM white; then $A164, $87FE and window 0 ($9E4C)"
  },
  {
   "address": 60110,
   "type": "line",
   "text": "Zeros to the end of INIT"
  }
 ]
}
