Initial commit: Complete open-source Decal rebuild

All 5 phases of the open-source Decal rebuild:

Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil)
Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs
  - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters
  - Decal.Core, DecalControls, DecalRender, D3DService
Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL
Phase 4: DenAgent WinForms tray application
Phase 5: WiX installer and build script

25 C# projects building with 0 errors.
Native C++ projects require VS 2022 + Windows SDK (x86).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
erik 2026-02-08 18:27:56 +01:00
commit d1442e3747
1382 changed files with 170725 additions and 0 deletions

76
Native/DecalDat/DatFile.h Normal file
View file

@ -0,0 +1,76 @@
// DatFile.h
// Declaration of class cDatFile
// Class for extracting data from portal.dat and cell.dat
#ifndef __ACFILE_H
#define __ACFILE_H
#define FILE_COUNT 62
class cDatFile
{
// The AC File is created as a memory mapped file
// so we let the memory manager cache manage - it's also quite a bit nicer than
// code to seek/read everything
HANDLE m_hFile,
m_hMapping;
BYTE *m_pData;
DWORD m_dwSectorSize;
public:
class cFile
{
BYTE *m_pFirstSector,
*m_pCurrentSector,
*m_pCurrentByte;
DWORD m_dwSize,
m_dwOffset;
cDatFile *m_pSource;
public:
// Locate the file in a directory
cFile( cDatFile *pSource, BYTE *pFirstSector, DWORD dwSize );
DWORD getSize() const
{
return m_dwSize;
}
DWORD tell() const
{
return m_dwOffset;
}
void reset();
DWORD read( BYTE *pbBuffer, DWORD dwSize );
DWORD skip( DWORD dwSize );
};
cDatFile( LPCTSTR szFilename, DWORD dwSectorSize = 256 );
~cDatFile();
cFile getFile( DWORD dwFileNumber );
// Structures
#pragma pack( push, 1 )
struct cFileEntry
{
DWORD m_dwID,
m_dwOffset,
m_dwSize;
};
struct cDirectory
{
DWORD m_subdirs[ FILE_COUNT ];
DWORD m_dwFiles;
cFileEntry m_files[ FILE_COUNT ];
};
#pragma pack( pop )
friend cFile;
};
#endif