decomp3: decompile remaining mission code (#3515)

This should make all missions playable with the exception of the end of
`precursor-destroy-ship` because `precurd` asserts on level extraction.

- `trail`
- `trail-graph`
- `wastrail-graph`
- `cty-protect`
- `protect-gunship`
- `protect-path`
- `protect-script`
- `assault-cams`
- `assault-enemies`
- `assault-path`
- `assault-script`
- `assault-shared`
- `assault-task`
- `hover-nav-precura`
- `precura-mood`
- `precura-obs`
- `precura-obs2`
- `precura-part`
- `precurc-mood`
- `precurc-obs`
- `precurc-part`
- `precurd-obs`
- `precurd-part`
- `precurd-scenes`
This commit is contained in:
Hat Kid
2024-05-16 16:21:44 +02:00
committed by GitHub
parent 456d1ba536
commit c12a5d777c
121 changed files with 72672 additions and 1703 deletions
+21 -1
View File
@@ -1044,9 +1044,29 @@ const std::unordered_map<
{"anim2", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)},
{"anim3", ArrayFieldDecompMeta(TypeSpec("tpath-control-frame"), 16)}}},
{"blow-tower-path",
// TODO - should be able to just decompile the `anims` field
{{"pts", ArrayFieldDecompMeta(TypeSpec("vector"), 16)},
{"node-info", ArrayFieldDecompMeta(TypeSpec("blow-tower-node-info"), 32)}}},
{"trail-conn-hash",
{{"cell", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 6)},
{"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
2,
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
{"trail-graph",
{{"node", ArrayFieldDecompMeta(TypeSpec("trail-node"), 20)},
{"conn", ArrayFieldDecompMeta(TypeSpec("trail-conn"), 8)},
{"conn-ids", ArrayFieldDecompMeta(TypeSpec("uint16"),
2,
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
{"visgroup", ArrayFieldDecompMeta(TypeSpec("trail-conn-hash-cell"), 6)},
{"blocker", ArrayFieldDecompMeta(TypeSpec("trail-blocker"), 32)},
{"visnode-ids",
ArrayFieldDecompMeta(TypeSpec("uint16"),
2,
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)},
{"cell-pov-bit-arrays",
ArrayFieldDecompMeta(TypeSpec("uint64"),
8,
ArrayFieldDecompMeta::Kind::REF_TO_INTEGER_ARR)}}},
}}};
goos::Object decompile_structure(const TypeSpec& type,