mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2026-09-08 15:07:06 +00:00
* feat: IW3 menu dumping * fix: IW3 menu dumper preserve menu ownerdraw flag masks * fix: IW3 menu dumper preserve numeric script arguments Emit numeric tokens without quotes so the linker keeps colour arguments separate. Before: `"0.1" "0.1" "0.12" "0.5"` becomes `"0.10.10.120.5"` After: `0.1 0.1 0.12 0.5` This fixes `mouseExit` colour commands failing to clear menu hover borders. * fix: IW3 menu dumper preserve empty item text Keep explicit empty text distinct from null text when dumping menu items. This fixes CD-key values overflowing their input boxes. * test: cover IW3 menu dumper material case * test: cover IW3 menu list path precedence * chore: clang format * fix: reverse order of union to avoid edge case bug in zcg * feat: IW3 menu loading * fix: validate menu expression name table * chore: explain numeric token quoting in comment * refactor: simplify menu dump fallback path * chore: add more dynamic window flags * refactor: reuse IW3 menu window flag constants * refactor: use explicit menu item feature lookup * refactor: represent menu item text as optional * refactor: clarify shared IW3 and IW4 menu constants IW4 only extends the type enum so they can be shared * refactor: clarify IW3 menu zone state naming * fix: log IW3 menu conversion failures * refactor: align IW3 menu list loader with IW4 * refactor: align IW3 menu dumpers with IW4 * refactor: align IW3 menu converter with IW4 * chore: use default enum numeration for operationEnum * chore: small optimization on edit field capability initialization * fix: iw3 menu optimizations for rect not considering relative position to parent * chore: align iw3 menu converting closer to iw4 * chore: align iw3 menu dumping closer to iw4 * fix: not dumping menu flags properties correctly * chore: adjust iw3 expression dumping to work similar to iw4 * chore: adjust iw3 expression converting to work similar to iw4 * chore: use unordered_map for MenuExpressionMatchers --------- Co-authored-by: Jan Laupetin <[email protected]>
42 KiB
42 KiB
Supported Asset Types
All asset types are supported to be loaded from other fastfiles in memory.
The following section specify which assets are supported to be dumped to disk (using Unlinker) and loaded from disk (
using Linker):
- ❌ = Currently unsupported
- ✅ = Supported
- ⁉️ = Partial support
IW3 (Call of Duty 4: Modern Warfare)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ✅ | ✅ | |
| XAnimParts | ✅ | ✅ | |
| XModel | ✅ | ✅ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ✅ | ✅ | |
| MaterialTechniqueSet | ✅ | ✅ | For shaders: only dumps/loads shader bytecode. |
| GfxImage | ✅ | ✅ | |
| snd_alias_list_t | ❌ | ❌ | |
| SndCurve | ✅ | ✅ | |
| LoadedSound | ✅ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GameWorldSp | ❌ | ❌ | |
| GameWorldMp | ❌ | ❌ | |
| MapEnts | ✅ | ❌ | |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ✅ | ✅ | |
| Font_s | ✅ | ✅ | |
| MenuList | ✅ | ✅ | The output is decompiled. The result will not be the same as the input. |
| menuDef_t | ✅ | ✅ | See menulist. |
| LocalizeEntry | ✅ | ✅ | |
| WeaponDef | ✅ | ✅ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| StringTable | ✅ | ✅ |
IW4 (Call of Duty: Modern Warfare 2)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ✅ | ✅ | |
| PhysCollmap | ❌ | ❌ | |
| XAnimParts | ✅ | ✅ | |
| XModel | ✅ | ✅ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ✅ | ✅ | |
| MaterialPixelShader | ✅ | ✅ | Only dumps/loads shader bytecode. |
| MaterialVertexShader | ✅ | ✅ | Only dumps/loads shader bytecode. |
| MaterialVertexDeclaration | ✅ | ✅ | |
| MaterialTechniqueSet | ✅ | ✅ | |
| GfxImage | ✅ | ❌ | A few special image encodings are not yet supported. |
| snd_alias_list_t | ❌ | ❌ | |
| SndCurve | ✅ | ✅ | |
| LoadedSound | ✅ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GameWorldSp | ❌ | ❌ | |
| GameWorldMp | ❌ | ❌ | |
| MapEnts | ⁉️ | ❌ | Entity string can be exported. Binary data currently not. |
| FxWorld | ❌ | ❌ | |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ✅ | ✅ | |
| Font_s | ✅ | ✅ | |
| MenuList | ✅ | ✅ | The output is decompiled. The result will not be the same as the input. |
| menuDef_t | ✅ | ✅ | See menulist. |
| LocalizeEntry | ✅ | ✅ | |
| WeaponCompleteDef | ✅ | ✅ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| StringTable | ✅ | ✅ | |
| LeaderboardDef | ✅ | ✅ | |
| StructuredDataDefSet | ✅ | ✅ | The format is custom due to lacking information about original format. |
| TracerDef | ✅ | ✅ | |
| VehicleDef | ✅ | ✅ | |
| AddonMapEnts | ⁉️ | ❌ | MapEnts String can be exported. Binary data currently not. |
IW5 (Call of Duty: Modern Warfare 3)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ✅ | ✅ | |
| PhysCollmap | ❌ | ❌ | |
| XAnimParts | ✅ | ✅ | |
| XModelSurfs | ❌ | ❌ | |
| XModel | ✅ | ✅ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ✅ | ✅ | |
| MaterialPixelShader | ❌ | ❌ | |
| MaterialVertexShader | ❌ | ❌ | |
| MaterialVertexDeclaration | ❌ | ❌ | |
| MaterialTechniqueSet | ❌ | ❌ | |
| GfxImage | ✅ | ✅ | A few special image encodings are not yet supported. |
| snd_alias_list_t | ❌ | ❌ | |
| SndCurve | ✅ | ✅ | |
| LoadedSound | ✅ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GlassWorld | ❌ | ❌ | |
| PathData | ❌ | ❌ | |
| VehicleTrack | ❌ | ❌ | |
| MapEnts | ⁉️ | ❌ | Entity string can be exported. Binary data currently not. |
| FxWorld | ❌ | ❌ | |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ✅ | ✅ | |
| Font_s | ✅ | ✅ | |
| MenuList | ✅ | ✅ | The output is decompiled. The result will not be the same as the input. |
| menuDef_t | ✅ | ✅ | See menulist. |
| LocalizeEntry | ✅ | ✅ | |
| WeaponAttachment | ✅ | ✅ | |
| WeaponCompleteDef | ✅ | ✅ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| SurfaceFxTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| ScriptFile | ⁉️ | ⁉️ | Can only be dumped/loaded as binary. Editing is possible with GSC-Tool. |
| StringTable | ✅ | ✅ | |
| LeaderboardDef | ✅ | ✅ | |
| StructuredDataDefSet | ❌ | ❌ | |
| TracerDef | ✅ | ✅ | |
| VehicleDef | ✅ | ✅ | |
| AddonMapEnts | ⁉️ | ❌ | MapEnts String can be exported. Binary data currently not. |
QOS (007: Quantum of Solace)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ❌ | ❌ | |
| PhysConstraints | ❌ | ❌ | |
| DestructibleDef | ❌ | ❌ | |
| XAnimParts | ❌ | ❌ | |
| XModel | ✅ | ❌ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ❌ | ❌ | |
| MaterialTechniqueSet | ❌ | ❌ | |
| GfxImage | ✅ | ❌ | |
| snd_alias_list_t | ❌ | ❌ | |
| SndCurve | ❌ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GameWorldSp | ❌ | ❌ | |
| GameWorldMp | ❌ | ❌ | |
| MapEnts | ✅ | ❌ | |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ❌ | ❌ | |
| Font_s | ✅ | ❌ | |
| MenuList | ❌ | ❌ | |
| menuDef_t | ❌ | ❌ | |
| LocalizeEntry | ✅ | ✅ | |
| WeaponDef | ❌ | ❌ | |
| SndDriverGlobals | ❌ | ❌ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| StringTable | ✅ | ✅ | |
| XmlTree | ❌ | ❌ | |
| SceneAnimation | ❌ | ❌ | |
| Cutscene | ❌ | ❌ | |
| CustomCamera | ❌ | ❌ |
T4 (Call of Duty: World at War)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ✅ | ✅ | |
| PhysConstraints | ✅ | ❌ | |
| DestructibleDef | ❌ | ❌ | |
| XAnimParts | ✅ | ✅ | |
| XModel | ✅ | ❌ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ✅ | ✅ | |
| MaterialTechniqueSet | ❌ | ❌ | |
| GfxImage | ✅ | ✅ | A few special image encodings are not yet supported. |
| snd_alias_list_t | ❌ | ❌ | |
| SndDriverGlobals | ❌ | ❌ | |
| LoadedSound | ✅ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GameWorldSp | ❌ | ❌ | |
| GameWorldMp | ❌ | ❌ | |
| MapEnts | ✅ | ✅ | |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ❌ | ❌ | |
| Font_s | ✅ | ✅ | |
| MenuList | ❌ | ❌ | |
| menuDef_t | ❌ | ❌ | |
| LocalizeEntry | ✅ | ✅ | |
| WeaponDef | ✅ | ✅ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| StringTable | ✅ | ✅ | |
| PackIndex | ❌ | ❌ |
T5 (Call of Duty: Black Ops)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ✅ | ✅ | |
| PhysConstraints | ✅ | ❌ | |
| DestructibleDef | ❌ | ❌ | |
| XAnimParts | ✅ | ✅ | |
| XModel | ✅ | ✅ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ✅ | ✅ | |
| MaterialTechniqueSet | ✅ | ❌ | For shaders: only dumps/loads shader bytecode. |
| GfxImage | ✅ | ❌ | A few special image encodings are not yet supported. |
| SndBank | ❌ | ❌ | |
| SndPatch | ❌ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GameWorldSp | ❌ | ❌ | |
| GameWorldMp | ❌ | ❌ | |
| MapEnts | ✅ | ❌ | |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ✅ | ✅ | |
| Font_s | ✅ | ✅ | |
| MenuList | ❌ | ❌ | |
| menuDef_t | ❌ | ❌ | |
| LocalizeEntry | ✅ | ✅ | |
| WeaponVariantDef | ✅ | ✅ | |
| SndDriverGlobals | ❌ | ❌ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| StringTable | ✅ | ✅ | |
| PackIndex | ❌ | ❌ | |
| XGlobals | ❌ | ❌ | |
| ddlRoot_t | ❌ | ❌ | |
| Glasses | ❌ | ❌ | |
| EmblemSet | ❌ | ❌ |
T6 (Call of Duty: Black Ops II)
| Asset Type | Dumping Support | Loading Support | Notes |
|---|---|---|---|
| PhysPreset | ✅ | ✅ | |
| PhysConstraints | ✅ | ✅ | |
| DestructibleDef | ❌ | ❌ | |
| XAnimParts | ✅ | ✅ | |
| XModel | ✅ | ✅ | Model data can be exported to XMODEL_EXPORT/XMODEL_BIN, OBJ, GLB/GLTF. |
| Material | ✅ | ✅ | Dumping/Loading is currently possible for materials in their compiled form. There is currently no material pipeline. |
| MaterialTechniqueSet | ✅ | ✅ | For shaders: only dumps/loads shader bytecode. |
| GfxImage | ✅ | ✅ | A few special image encodings are not yet supported. |
| SndBank | ✅ | ✅ | The current implementation is subject to change. |
| SndPatch | ❌ | ❌ | |
| clipMap_t | ❌ | ❌ | |
| ComWorld | ❌ | ❌ | |
| GameWorldSp | ❌ | ❌ | |
| GameWorldMp | ❌ | ❌ | |
| MapEnts | ⁉️ | ❌ | Entity string can be exported. Binary data currently not. |
| GfxWorld | ❌ | ❌ | |
| GfxLightDef | ✅ | ✅ | |
| Font_s | ✅ | ✅ | |
| FontIcon | ✅ | ✅ | |
| MenuList | ❌ | ❌ | |
| menuDef_t | ❌ | ❌ | |
| LocalizeEntry | ✅ | ✅ | |
| WeaponVariantDef | ✅ | ✅ | |
| WeaponAttachment | ✅ | ✅ | |
| WeaponAttachmentUnique | ✅ | ✅ | |
| WeaponCamo | ✅ | ✅ | |
| SndDriverGlobals | ✅ | ❌ | |
| FxEffectDef | ❌ | ❌ | |
| FxImpactTable | ❌ | ❌ | |
| RawFile | ✅ | ✅ | |
| StringTable | ✅ | ✅ | |
| LeaderboardDef | ✅ | ✅ | |
| XGlobals | ❌ | ❌ | |
| ddlRoot_t | ❌ | ❌ | |
| Glasses | ❌ | ❌ | |
| EmblemSet | ❌ | ❌ | |
| ScriptParseTree | ⁉️ | ⁉️ | Can only be dumped/loaded as binary. Editing is possible with GSC-Tool. Plutonium supports loading source files however. |
| KeyValuePairs | ✅ | ✅ | Is dumped/loaded as part of the .zone file. |
| VehicleDef | ✅ | ✅ | |
| MemoryBlock | ❌ | ❌ | |
| AddonMapEnts | ⁉️ | ❌ | MapEnts String can be exported. Binary data currently not. |
| TracerDef | ✅ | ✅ | |
| SkinnedVertsDef | ❌ | ❌ | |
| Qdb | ⁉️ | ⁉️ | Dumping/Loading is implemented as rawfiles. Their use is currently unknown. |
| Slug | ⁉️ | ⁉️ | Dumping/Loading is implemented as rawfiles. Their use is currently unknown. |
| FootstepTableDef | ❌ | ❌ | |
| FootstepFXTableDef | ❌ | ❌ | |
| ZBarrierDef | ✅ | ✅ |