{
  "format": "tfx-pcplus-demo-1",
  "version": "cd_demo_pcplus_1994_07",
  "source_archive": "install media/cd_demo_pcplus_1994_07/files/did.dat",
  "archive_sha256": "3eff03960e44c2911db01a94941404fd438f0973dd22a52116c60ebda898c0e3",
  "archive_bytes": 11308585,
  "archive_entries": 2962,
  "decoded_bytes": 24686603,
  "archive_trailer_hex": "0bb7ffff",
  "families": {
    "object_definition": 704,
    "model": 1012,
    "music": 81,
    "text": 174,
    "bitmap": 116,
    "palette": 101,
    "waypoints_binary": 192,
    "sprites": 39,
    "waypoints_text": 182,
    "texture_page": 12,
    "terrain_table": 40,
    "terrain_grid_high": 39,
    "terrain_grid_low": 39,
    "sample": 105,
    "terrain_attributes": 7,
    "presentation_program": 7,
    "colour_selector": 1,
    "unclassified": 11,
    "mission": 28,
    "overlay_code": 6,
    "overlay_panel": 1,
    "texture_page_palette": 1,
    "return_stub": 1,
    "manoeuvre": 18,
    "presentation_source": 3,
    "animation": 40,
    "ilbm": 1,
    "colour_remap": 1
  },
  "shared_with_existing_entries": 2953,
  "new_entries": 9,
  "retained": [
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cdintro.par",
      "bytes": 976,
      "sha256": "4f112119ff812f60fa902e91629d5da30f4d1621f34a079a122388c6016a0dba"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cddeath1.par",
      "bytes": 540,
      "sha256": "02cf1d28509e1de61b2096f4c77423e2b7ac9fa7dc777994e20bcd20fbdf5800"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cdbusted.par",
      "bytes": 890,
      "sha256": "b574a5cf139c832d9d5d755eea65a0319f62b41ba1ed0912ccdc9e669117076c"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cdfwsint.par",
      "bytes": 1226,
      "sha256": "8d93be38b4aa418ea31b581f1e2e71ccbe056bb8554e5853e3cbdef5c25c193d"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cdyugmid.par",
      "bytes": 2003,
      "sha256": "eca4d6658fadcc4018d64403ff32d0e5844f52be4e5719bbc02080e4c14b77c9"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cdyugint.par",
      "bytes": 3220,
      "sha256": "cee1da2a50f529a95f8dfb036654b4ef402f8bef6ba35a658a31d9d6d37b6a6b"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/lev/mastopts.opt",
      "bytes": 390,
      "sha256": "ab294600618bdc4a1fee918948b382ecaa698c46eb4ebec724cc44aa4f8dfd2b"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/lev/soap_sel.opt",
      "bytes": 338,
      "sha256": "ef20604e80bacc7e501fa1517508c5e51026b950397fddf1e4003e38f8c2b271"
    },
    {
      "path": "extracted/cd_demo_pcplus_1994_07/resources/cd_mag.par",
      "bytes": 21206,
      "sha256": "d8604220a56b637d098a9ddcf97d85f53964e067c6b3717aedf26d9b8b5eea9d"
    }
  ],
  "comparisons": {
    "cd_1994_09": {
      "shared_entry_count": 2926,
      "shared_unique_payload_hashes": 2730,
      "demo_only_unique_payload_hashes": 36,
      "retail_only_unique_payload_hashes": 561
    },
    "cd_1994_03": {
      "shared_entry_count": 2953,
      "shared_unique_payload_hashes": 2757,
      "demo_only_unique_payload_hashes": 9,
      "retail_only_unique_payload_hashes": 193
    },
    "cd_1993_12": {
      "shared_entry_count": 2771,
      "shared_unique_payload_hashes": 2577,
      "demo_only_unique_payload_hashes": 189,
      "retail_only_unique_payload_hashes": 713
    },
    "floppy_1993_11_loose": {
      "shared_entry_count": 2875,
      "shared_unique_payload_hashes": 2680,
      "demo_only_unique_payload_hashes": 86,
      "retail_only_unique_payload_hashes": 596
    }
  },
  "launch_command": "start cd_mag\r\n",
  "config_version": "2.01",
  "engine_sha256": "184cebd56ed090262066c1bf8d35d2609aa63a923eb1b93c2989cbabafaa4e7a",
  "engine_format": "DID three-section loader",
  "engine_relocation_sites": 28724,
  "engine_objects": [
    {
      "number": 1,
      "file": 205926,
      "virtual_size": 501028,
      "initialised_bytes": 501028,
      "page_count": 123,
      "load_base": 65536
    },
    {
      "number": 2,
      "file": 709734,
      "virtual_size": 612,
      "initialised_bytes": 612,
      "page_count": 1,
      "load_base": 589824
    },
    {
      "number": 3,
      "file": 713830,
      "virtual_size": 166304,
      "initialised_bytes": 61440,
      "page_count": 15,
      "load_base": 655360
    }
  ],
  "launcher": {
    "sha256": "6a06ef17378e59cb0d841e6fa9a9b360868426382c8338e09f94761f218a57c0",
    "build_stamps": [
      "Date: 03/20/94",
      "Time: 22:18:57",
      "Date: 03/20/94",
      "Time: 22:18:57",
      "Date: 03/20/94",
      "Time: 22:18:57",
      "Date: 03/20/94",
      "Time: 22:18:57"
    ],
    "identical_to_march_except_build_stamps": true,
    "different_bytes": 28
  },
  "selected_graph": {
    "name": "cd_mag.par",
    "functions": [
      "main",
      "fws",
      "soapyug2",
      "soapsea",
      "enrol",
      "nocando",
      "soap_sel",
      "busted1",
      "mia",
      "death1",
      "commander",
      "mission",
      "outcomes",
      "ejectrap",
      "eject_ok",
      "bust_ejc",
      "civirap",
      "promote",
      "un-defeat"
    ],
    "nodes": 378,
    "retail_function_count": 33,
    "training_mission_numbers": [
      501,
      504,
      505,
      506,
      510
    ],
    "mission_numbers_by_function": {
      "fws": [
        501,
        504,
        505,
        506,
        510
      ],
      "soapyug2": [
        961,
        962,
        963,
        964,
        965,
        966,
        967,
        968,
        969,
        970,
        971,
        972,
        973,
        974,
        975
      ],
      "soapsea": [
        981,
        982,
        983,
        984,
        985,
        986,
        987,
        988
      ]
    },
    "flashpoint_branch_targets": [
      {
        "variable": "soap_val",
        "value": 1,
        "target_function": "soapyug2",
        "target_node": 0
      },
      {
        "variable": "soap_val",
        "value": 2,
        "target_function": "soapyug2",
        "target_node": 0
      },
      {
        "variable": "soap_val",
        "value": 4,
        "target_function": "soapyug2",
        "target_node": 0
      },
      {
        "variable": "soap_val",
        "value": 5,
        "target_function": "soapyug2",
        "target_node": 0
      },
      {
        "variable": "soap_val",
        "value": 6,
        "target_function": "main",
        "target_node": 7
      }
    ]
  },
  "scope": "Every demo entry decoded and compared by exact bytes/SHA-256 with retained CD/floppy extractions. Only unseen content is written. Presentation graphs use the explicit 17-byte text header; all saved pointer/settings bytes are retained. Visual comparison excludes non-visual operands and is not proof of complete behavioural equivalence."
}
