Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add many more image semantics and improve process for mapping other constants #48

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/WraithXCOD/WraithXCOD/CoDAssetType.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,15 @@ XMaterial_t::XMaterial_t(uint32_t ImageCount)
Images.reserve(ImageCount);
}

XImage_t::XImage_t(ImageUsageType Usage, uint32_t Hash, uint64_t Pointer, const std::string& Name)
XImage_t::XImage_t(ImageUsageType Usage, uint32_t Hash, uint32_t First, uint32_t Last, uint64_t Pointer, const std::string& Name)
{
// Defaults
ImageUsage = Usage;
ImagePtr = Pointer;
ImageName = Name;
SemanticHash = Hash;
FirstCharacter = First;
LastCharacter = Last;
}

XModelSubmesh_t::XModelSubmesh_t()
Expand Down
5 changes: 4 additions & 1 deletion src/WraithXCOD/WraithXCOD/CoDAssetType.h
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ enum class ImageUsageType : uint8_t
struct XImage_t
{
// Constructor
XImage_t(ImageUsageType Usage, uint32_t Hash, uint64_t Pointer, const std::string& Name);
XImage_t(ImageUsageType Usage, uint32_t Hash, uint32_t First, uint32_t Last, uint64_t Pointer, const std::string& Name);

// The usage of this image asset
ImageUsageType ImageUsage;
Expand All @@ -273,6 +273,9 @@ struct XImage_t

uint32_t SemanticHash;

uint32_t FirstCharacter;
uint32_t LastCharacter;

// The name of this image asset
std::string ImageName;
};
Expand Down
64 changes: 62 additions & 2 deletions src/WraithXCOD/WraithXCOD/CoDAssets.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -405,8 +405,61 @@ std::map<uint32_t, std::string> SemanticHashes =
{ 0x95B48AE5, "meltRevealMap" },
{ 0x1DCB003F, "meltNormalMap" },
{ 0xB607C0FE, "Color_Map" },

{ 0x27568B1F, "decalColorMap1" },
{ 0x27568B1C, "decalColorMap2" },

{ 0x5A7D8971, "decalNormalMap1" },

{ 0xCC382E3A, "decalSpecColorMap1" },
{ 0xCC382E39, "decalSpecColorMap2" },

{ 0xBAE31156, "decalAlphaMap1" },
{ 0xBAE31155, "decalAlphaMap2" },

{ 0xCD7DF742, "envBrdFlut" },
{ 0x7D3CDFB3, "envBrdFlut1" },

{ 0x48D1074B, "displacementMap" },
{ 0x62F1F09A, "displacementMap1" },
{ 0x62F1F099, "displacementMap2" },
{ 0x62F1F098, "displacementMap3" },
{ 0x62F1F09F, "displacementMap4" },
{ 0x62F1F09E, "displacementMap5" },
{ 0x62F1F09D, "displacementMap6" },
{ 0x62F1F09C, "displacementMap7" },
{ 0x62F1F093, "displacementMap8" },

{ 0xB60D1850, "colorMap1" },
{ 0xB60D1853, "colorMap2" },
{ 0xB60D1852, "colorMap3" },

{ 0x9434AEDE, "normalMap1" },

{ 0x34ECCCB3, "specularMap" },
{ 0x6001F931, "occlusionMap" }
{ 0xD2866322, "specularMap1" },

{ 0x6001F931, "occlusionMap" },
{ 0x60411F60, "occlusionMap1" },

{ 0x7389AC64, "heatMap" },

{ 0xCFE18444, "revealMap1" },

{ 0x38436E1C, "uvDistortMap" },

{ 0xFFC5A8BB, "worldXyzNoiseMap" },

{ 0xF2C66201, "envMap" },

{ 0x44C0B99F, "tangentMap" },

{ 0x103B5996, "cloakMap" },

{ 0x197CA29E, "eyeAOTex" },
{ 0x26FE83DC, "eyeIrradianceTex" },

{ 0x546D65C7, "parallaxMap"}
};

// -- Find game information
Expand Down Expand Up @@ -2191,7 +2244,14 @@ void CoDAssets::ExportMaterialImageNames(const XMaterial_t& Material, const std:
}
else
{
ImageNames.WriteLineFmt("unk_semantic_0x%X,%s", Image.SemanticHash, Image.ImageName.c_str());
if (Image.FirstCharacter && Image.LastCharacter)
{
ImageNames.WriteLineFmt("unk_semantic_0x%X,%i,%i,%s", Image.SemanticHash, Image.FirstCharacter, Image.LastCharacter, Image.ImageName.c_str());
}
else
{
ImageNames.WriteLineFmt("unk_semantic_0x%X,%s", Image.SemanticHash, Image.ImageName.c_str());
}
}
}

Expand Down
66 changes: 54 additions & 12 deletions src/WraithXCOD/WraithXCOD/DBGameAssets.h
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,12 @@ struct WAWXMaterial
struct WAWXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[8];
int8_t NameStart;
int8_t NameEnd;
uint8_t SamplerState;
uint8_t Semantic;
int8_t IsMatureContent;
uint8_t padding[3];
uint32_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -349,7 +354,12 @@ struct BOXMaterial
struct BOXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[8];
int8_t NameStart;
int8_t NameEnd;
uint8_t SamplerState;
uint8_t Semantic;
int8_t IsMatureContent;
uint8_t padding[3];
uint32_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -566,7 +576,12 @@ struct BO2XMaterial
struct BO2XMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[8];
int8_t NameStart;
int8_t NameEnd;
uint8_t SamplerState;
uint8_t Semantic;
int8_t IsMatureContent;
uint8_t padding[3];
uint32_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -1304,7 +1319,10 @@ struct MWXMaterial
struct MWXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint32_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -1485,7 +1503,10 @@ struct MW2XMaterial
struct MW2XMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint32_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -1650,7 +1671,10 @@ struct MW3XMaterial
struct MW3XMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint32_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -1840,7 +1864,10 @@ struct GhostsXMaterial
struct GhostsXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint64_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -2097,7 +2124,10 @@ struct AWXMaterial
struct AWXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint64_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -2379,7 +2409,10 @@ struct MWRXMaterial
struct MWRXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint64_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -2626,7 +2659,10 @@ struct IWXMaterial
struct IWXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint64_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -2836,7 +2872,10 @@ struct WWIIXMaterial
struct WWIIXMaterialImage
{
uint32_t SemanticHash;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint64_t ImagePtr;
};
#pragma pack(pop)
Expand Down Expand Up @@ -3421,7 +3460,10 @@ struct MW4XMaterial
struct MW4XMaterialImage
{
uint32_t Type;
uint8_t Padding[4];
int8_t NameStart;
int8_t NameEnd;
uint8_t samplerState;
uint8_t semantic;
uint64_t ImagePtr;
};
#pragma pack(pop)
Expand Down
4 changes: 2 additions & 2 deletions src/WraithXCOD/WraithXCOD/GameAdvancedWarfare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -943,7 +943,7 @@ std::unique_ptr<XImageDDS> GameAdvancedWarfare::ReadXImage(const CoDImage_t* Ima
// Proxy the image off, determine type if need be
auto Usage = (Image->Format == 84) ? ImageUsageType::NormalMap : ImageUsageType::DiffuseMap;
// Proxy off
return LoadXImage(XImage_t(Usage, 0, Image->AssetPointer, Image->AssetName));
return LoadXImage(XImage_t(Usage, 0, 0, 0, Image->AssetPointer, Image->AssetName));
}

const XMaterial_t GameAdvancedWarfare::ReadXMaterial(uint64_t MaterialPointer)
Expand Down Expand Up @@ -981,7 +981,7 @@ const XMaterial_t GameAdvancedWarfare::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.NameStart, ImageInfo.NameEnd, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(AWXMaterialImage);
Expand Down
2 changes: 1 addition & 1 deletion src/WraithXCOD/WraithXCOD/GameBlackOps.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ const XMaterial_t GameBlackOps::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.NameStart, ImageInfo.NameEnd, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(BOXMaterialImage);
Expand Down
2 changes: 1 addition & 1 deletion src/WraithXCOD/WraithXCOD/GameBlackOps2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ const XMaterial_t GameBlackOps2::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.NameStart, ImageInfo.NameEnd, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(BO2XMaterialImage);
Expand Down
4 changes: 2 additions & 2 deletions src/WraithXCOD/WraithXCOD/GameBlackOps3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ std::unique_ptr<XImageDDS> GameBlackOps3::ReadXImage(const CoDImage_t* Image)
}

// Proxy off
return LoadXImage(XImage_t(Usage, 0, Image->AssetPointer, Image->AssetName));
return LoadXImage(XImage_t(Usage, 0, 0, 0, Image->AssetPointer, Image->AssetName));
}

const XMaterial_t GameBlackOps3::ReadXMaterial(uint64_t MaterialPointer)
Expand Down Expand Up @@ -618,7 +618,7 @@ const XMaterial_t GameBlackOps3::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, 0, 0, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(BO3XMaterialImage);
Expand Down
4 changes: 2 additions & 2 deletions src/WraithXCOD/WraithXCOD/GameBlackOps4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1220,7 +1220,7 @@ std::unique_ptr<XModel_t> GameBlackOps4::ReadXModel(const CoDModel_t* Model)
std::unique_ptr<XImageDDS> GameBlackOps4::ReadXImage(const CoDImage_t* Image)
{
// Proxy off
return LoadXImage(XImage_t(ImageUsageType::DiffuseMap, 0, Image->AssetPointer, Image->AssetName));
return LoadXImage(XImage_t(ImageUsageType::DiffuseMap, 0, 0, 0, Image->AssetPointer, Image->AssetName));
}

const XMaterial_t GameBlackOps4::ReadXMaterial(uint64_t MaterialPointer)
Expand Down Expand Up @@ -1272,7 +1272,7 @@ const XMaterial_t GameBlackOps4::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, 0, 0, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(BO4XMaterialImage);
Expand Down
4 changes: 2 additions & 2 deletions src/WraithXCOD/WraithXCOD/GameBlackOpsCW.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -813,7 +813,7 @@ std::unique_ptr<XModel_t> GameBlackOpsCW::ReadXModel(const CoDModel_t* Model)
std::unique_ptr<XImageDDS> GameBlackOpsCW::ReadXImage(const CoDImage_t* Image)
{
// Proxy off
return LoadXImage(XImage_t(ImageUsageType::DiffuseMap, 0, Image->AssetPointer, Image->AssetName));
return LoadXImage(XImage_t(ImageUsageType::DiffuseMap, 0, 0, 0, Image->AssetPointer, Image->AssetName));
}

std::unique_ptr<XSound> GameBlackOpsCW::ReadXSound(const CoDSound_t * Sound)
Expand Down Expand Up @@ -1020,7 +1020,7 @@ const XMaterial_t GameBlackOpsCW::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, 0, 0, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(BOCWXMaterialImage);
Expand Down
4 changes: 2 additions & 2 deletions src/WraithXCOD/WraithXCOD/GameGhosts.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -704,7 +704,7 @@ std::unique_ptr<XImageDDS> GameGhosts::ReadXImage(const CoDImage_t* Image)
// Proxy the image off, determine type if need be
auto Usage = (Image->Format == 84) ? ImageUsageType::NormalMap : ImageUsageType::DiffuseMap;
// Proxy off
return LoadXImage(XImage_t(Usage, 0, Image->AssetPointer, Image->AssetName));
return LoadXImage(XImage_t(Usage, 0, 0, 0, Image->AssetPointer, Image->AssetName));
}

const XMaterial_t GameGhosts::ReadXMaterial(uint64_t MaterialPointer)
Expand Down Expand Up @@ -742,7 +742,7 @@ const XMaterial_t GameGhosts::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.NameStart, ImageInfo.NameEnd, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(GhostsXMaterialImage);
Expand Down
6 changes: 3 additions & 3 deletions src/WraithXCOD/WraithXCOD/GameInfiniteWarfare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -672,9 +672,9 @@ std::unique_ptr<XImageDDS> GameInfiniteWarfare::ReadXImage(const CoDImage_t* Ima
}
// Proxy off
if (ps::state != nullptr)
return LoadXImagePS(XImage_t(Usage, 0, Image->AssetPointer, Image->AssetName));
return LoadXImagePS(XImage_t(Usage, 0, 0, 0, Image->AssetPointer, Image->AssetName));
else
return LoadXImage(XImage_t(Usage, 0, Image->AssetPointer, Image->AssetName));
return LoadXImage(XImage_t(Usage, 0, 0, 0, Image->AssetPointer, Image->AssetName));
}

const XMaterial_t GameInfiniteWarfare::ReadXMaterial(uint64_t MaterialPointer)
Expand Down Expand Up @@ -706,7 +706,7 @@ const XMaterial_t GameInfiniteWarfare::ReadXMaterial(uint64_t MaterialPointer)
}

// Assign the new image
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.ImagePtr, ImageName);
Result.Images.emplace_back(DefaultUsage, ImageInfo.SemanticHash, ImageInfo.NameStart, ImageInfo.NameEnd, ImageInfo.ImagePtr, ImageName);

// Advance
MaterialData.ImageTablePtr += sizeof(IWXMaterialImage);
Expand Down
Loading