mirror of
https://github.com/gwdevhub/gMod.git
synced 2026-07-16 07:29:30 +00:00
a7e36fc965
* remove GUI parts as those will not be updated * move to header/source * add cmakelist to create solution * Change Readme * Implement modlist.txt loading * Setup versioning and CD pipeline * Setup DirectX in pipeline * Make uMod load from uMod.dll directory * Fix file loading * Remove break * Fix CD pipeline (#1) * Test cd pipeline * See what's in Lib directory * See inside lib/x86 * Manually adjust the build environment * Disable CD pipeline in PRs Create CI pipeline * Fix slashes in path * Fix build call * Attempt to fix paths * Copy dx headers inside the /header folder * Use ps * Change cache location * Path changes * Improve CMake to look for lib and header files * Fix missing Lib folder * Move changes to CD pipeline * Disable CI on merge and fix CD (#2) * Fix CD tag (#4) * Hijack existing DirectX calls (#5) * Create a dll without listener (#6) * Fix asset creation in CD pipeline (#7) * Setup file loading * create necessary files * merge latest changes, set output dir * Change main to master in pipelines Add fallback for DX libs in CMakeLists * Setup new generator * formatting * remove listener * Change CD to pick the dll from bin Change release name to gMod * more formatting * add editorconfig * Setup versioning * Remove CODEOWNERS --------- Co-authored-by: Alex Macocian <amacocian@yahoo.com>
41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
#include "uMod_Main.h"
|
|
|
|
/*
|
|
MyTypeHash GetHash(unsigned char *str, int len) // estimate the hash
|
|
{
|
|
MyTypeHash hash = 0;
|
|
for (int i=0; i<len; i++) hash = str[i] + (hash << 6) + (hash << 16) - hash;
|
|
return hash);
|
|
}
|
|
*/
|
|
|
|
|
|
|
|
|
|
/*
|
|
*
|
|
* BIG THANKS TO RS !!
|
|
*
|
|
* who gave me his hashing algorithm (well or crc32 algorithm^^)
|
|
*
|
|
The hash function is CRC32 using polynomial 0xEDB88320.
|
|
However, the hashed data is calculated incorrectly in TexMod: it's simply BytesPerPixel * Width * Height, from the beginning of the data (that is mapped using LockRect).
|
|
The problem is that it doesn't take the pitch into account and BytesPerPixel may be wrong for some rare formats (not sure about that).
|
|
*/
|
|
|
|
|
|
#define CRC32POLY 0xEDB88320u /* CRC-32 Polynom */
|
|
#define ulCrc_in 0xffffffff
|
|
|
|
unsigned int GetCRC32(char* pcDatabuf, unsigned int ulDatalen)
|
|
{
|
|
unsigned int crc = ulCrc_in;
|
|
for (unsigned int idx = 0u; idx < ulDatalen; idx++) {
|
|
unsigned int data = *pcDatabuf++;
|
|
for (unsigned int bit = 0u; bit < 8u; bit++, data >>= 1) {
|
|
crc = crc >> 1 ^ ((crc ^ data) & 1 ? CRC32POLY : 0);
|
|
}
|
|
}
|
|
return crc;
|
|
}
|