From 42b5270a78e6842db85cdfbf8599d1d97628ea92 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 15 Apr 2024 19:20:00 +0200 Subject: [PATCH 1/3] docs: add documentation about supported asset types --- docs/SupportedAssetTypes.md | 213 ++++++++++++++++++++++++++++++++++++ 1 file changed, 213 insertions(+) create mode 100644 docs/SupportedAssetTypes.md diff --git a/docs/SupportedAssetTypes.md b/docs/SupportedAssetTypes.md new file mode 100644 index 00000000..ef3e7cd7 --- /dev/null +++ b/docs/SupportedAssetTypes.md @@ -0,0 +1,213 @@ +# 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 + +| Asset Type | Dumping Support | Loading Support | Notes | +| -------------------- | --------------- | --------------- | -------------------------------------------------------- | +| PhysPreset | ❌ | ❌ | | +| XAnimParts | ❌ | ❌ | | +| XModel | ⁉️ | ❌ | Model data can be exported to `XMODEL_EXPORT` and `OBJ`. | +| Material | ❌ | ❌ | | +| MaterialTechniqueSet | ❌ | ❌ | | +| GfxImage | ✅ | ✅ | | +| snd_alias_list_t | ❌ | ❌ | | +| SndCurve | ❌ | ❌ | | +| LoadedSound | ✅ | ❌ | | +| clipMap_t | ❌ | ❌ | | +| ComWorld | ❌ | ❌ | | +| GameWorldSp | ❌ | ❌ | | +| GameWorldMp | ❌ | ❌ | | +| MapEnts | ✅ | ❌ | | +| GfxWorld | ❌ | ❌ | | +| GfxLightDef | ❌ | ❌ | | +| Font_s | ❌ | ❌ | | +| MenuList | ❌ | ❌ | | +| menuDef_t | ❌ | ❌ | | +| LocalizeEntry | ✅ | ✅ | | +| WeaponDef | ❌ | ❌ | | +| FxEffectDef | ❌ | ❌ | | +| FxImpactTable | ❌ | ❌ | | +| RawFile | ✅ | ✅ | | +| StringTable | ✅ | ✅ | | + +## IW4 + +| Asset Type | Dumping Support | Loading Support | Notes | +| ------------------------- | --------------- | --------------- | ----------------------------------------------------------------------- | +| PhysPreset | ✅ | ✅ | | +| PhysCollmap | ❌ | ❌ | | +| XAnimParts | ❌ | ❌ | | +| XModel | ⁉️ | ❌ | Model data can be exported to `XMODEL_EXPORT` and `OBJ`. | +| Material | ❌ | ❌ | | +| MaterialPixelShader | ✅ | ✅ | Shaders are compiled. Only dumps/loads shader bytecode. | +| MaterialVertexShader | ✅ | ✅ | Shaders are compiled. Only dumps/loads shader bytecode. | +| MaterialVertexDeclaration | ✅ | ✅ | Vertex declarations are dumped/loaded as part of a technique. | +| MaterialTechniqueSet | ⁉️ | ⁉️ | Statemaps are currently not exported. | +| GfxImage | ✅ | ❌ | A few special image encodings are not yet supported. | +| snd_alias_list_t | ❌ | ❌ | | +| SndCurve | ✅ | ✅ | | +| LoadedSound | ✅ | ❌ | | +| clipMap_t | ❌ | ❌ | | +| ComWorld | ❌ | ❌ | | +| GameWorldSp | ❌ | ❌ | | +| GameWorldMp | ❌ | ❌ | | +| MapEnts | ❌ | ❌ | | +| 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 + +| Asset Type | Dumping Support | Loading Support | Notes | +| ------------------------- | --------------- | --------------- | ------------------------------------------------------------------------------------------------------------- | +| PhysPreset | ❌ | ❌ | | +| PhysCollmap | ❌ | ❌ | | +| XAnimParts | ❌ | ❌ | | +| XModelSurfs | ❌ | ❌ | | +| XModel | ⁉️ | ❌ | Model data can be exported to `XMODEL_EXPORT` and `OBJ`. | +| 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 | ❌ | ❌ | | +| 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](https://github.com/xensik/gsc-tool). | +| StringTable | ✅ | ✅ | | +| LeaderboardDef | ❌ | ❌ | | +| StructuredDataDefSet | ❌ | ❌ | | +| TracerDef | ❌ | ❌ | | +| VehicleDef | ❌ | ❌ | | +| AddonMapEnts | ⁉️ | ❌ | MapEnts String can be exported. Binary data currently not. | + +## T5 + +| Asset Type | Dumping Support | Loading Support | Notes | +| -------------------- | --------------- | --------------- | -------------------------------------------------------- | +| PhysPreset | ❌ | ❌ | | +| PhysConstraints | ❌ | ❌ | | +| DestructibleDef | ❌ | ❌ | | +| XAnimParts | ❌ | ❌ | | +| XModel | ⁉️ | ❌ | Model data can be exported to `XMODEL_EXPORT` and `OBJ`. | +| Material | ❌ | ❌ | | +| MaterialTechniqueSet | ❌ | ❌ | | +| 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 + +| Asset Type | Dumping Support | Loading Support | Notes | +| ---------------------- | --------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| PhysPreset | ✅ | ✅ | | +| PhysConstraints | ✅ | ✅ | | +| DestructibleDef | ❌ | ❌ | | +| XAnimParts | ❌ | ❌ | | +| XModel | ⁉️ | ❌ | Model data can be exported to `XMODEL_EXPORT` and `OBJ`. | +| Material | ⁉️ | ⁉️ | Dumping/Loading is currently possible for materials in their compiled form. There is currently no material pipeline. | +| MaterialTechniqueSet | ⁉️ | ❌ | Only dumps compiled shaders. | +| 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 | ❌ | ❌ | | +| 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](https://github.com/xensik/gsc-tool). Plutonium supports loading source files however. | +| KeyValuePairs | ✅ | ✅ | Is dumped/loaded as part of the `.zone` file. | +| VehicleDef | ✅ | ✅ | | +| MemoryBlock | ❌ | ❌ | | +| AddonMapEnts | ❌ | ❌ | | +| 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 | ✅ | ✅ | | From 49b1a94f7d3227fd13c8b88fafc34edf5a77965a Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 15 Apr 2024 19:21:53 +0200 Subject: [PATCH 2/3] docs: clarity game names in supported asset types documentation --- docs/SupportedAssetTypes.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/SupportedAssetTypes.md b/docs/SupportedAssetTypes.md index ef3e7cd7..e27aa59c 100644 --- a/docs/SupportedAssetTypes.md +++ b/docs/SupportedAssetTypes.md @@ -7,7 +7,7 @@ The following section specify which assets are supported to be dumped to disk (u - ✅ = Supported - ⁉️ = Partial support -## IW3 +## IW3 (Call of Duty 4: Modern Warfare) | Asset Type | Dumping Support | Loading Support | Notes | | -------------------- | --------------- | --------------- | -------------------------------------------------------- | @@ -37,7 +37,7 @@ The following section specify which assets are supported to be dumped to disk (u | RawFile | ✅ | ✅ | | | StringTable | ✅ | ✅ | | -## IW4 +## IW4 (Call of Duty: Modern Warfare 2) | Asset Type | Dumping Support | Loading Support | Notes | | ------------------------- | --------------- | --------------- | ----------------------------------------------------------------------- | @@ -77,7 +77,7 @@ The following section specify which assets are supported to be dumped to disk (u | VehicleDef | ✅ | ❌ | | | AddonMapEnts | ⁉️ | ❌ | MapEnts String can be exported. Binary data currently not. | -## IW5 +## IW5 (Call of Duty: Modern Warfare 3) | Asset Type | Dumping Support | Loading Support | Notes | | ------------------------- | --------------- | --------------- | ------------------------------------------------------------------------------------------------------------- | @@ -122,7 +122,7 @@ The following section specify which assets are supported to be dumped to disk (u | VehicleDef | ❌ | ❌ | | | AddonMapEnts | ⁉️ | ❌ | MapEnts String can be exported. Binary data currently not. | -## T5 +## T5 (Call of Duty: Black Ops) | Asset Type | Dumping Support | Loading Support | Notes | | -------------------- | --------------- | --------------- | -------------------------------------------------------- | @@ -159,7 +159,7 @@ The following section specify which assets are supported to be dumped to disk (u | Glasses | ❌ | ❌ | | | EmblemSet | ❌ | ❌ | | -## T6 +## T6 (Call of Duty: Black Ops II) | Asset Type | Dumping Support | Loading Support | Notes | | ---------------------- | --------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | From 8587b495e72d0b03bab0f0e93a379220e08aaf79 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 15 Apr 2024 19:24:20 +0200 Subject: [PATCH 3/3] docs: link documentation of currently supported assets in the README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9d23771b..37f4988d 100644 --- a/README.md +++ b/README.md @@ -22,12 +22,12 @@ While still incomplete these are the features that are currently available: ### Tools The **Unlinker** tool allows loading any fastfile (.ff) of supported games and works standalone. -While being able to load any asset it can currently only dump a subset of these assets to disk, depending on the game. +While being able to load any asset it can currently only dump [a subset of these assets](docs/SupportedAssetTypes.md) to disk, depending on the game. The formats of the dumped assets are either as close as possible to the originally used formats for these games or a commonly used format. The **Linker** tool allows building custom fastfiles (.ff) for the supported games. It can also load existing zones and reuse their assets from in-memory. -Only a subset of asset types can be read from disk depending on the game. +Only [a subset of asset types](docs/SupportedAssetTypes.md) can be read from disk depending on the game. Additionally, there are a couple of libraries and tools. A full list of the subcomponents can be found [here](https://openassettools.dev/guide/components.html).