Skip to content

Commit

Permalink
Fix compressed DRM files
Browse files Browse the repository at this point in the history
Changes from upstream TRAE-Menu-Hook repro
  • Loading branch information
TheIndra55 committed Mar 16, 2024
1 parent dc7c299 commit d3caf0b
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 28 deletions.
10 changes: 6 additions & 4 deletions src/game/filesystem.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ namespace cdc
class FileSystem
{
public:
virtual void *RequestRead(void *receiver, const char *name, unsigned int startOffset) = 0;
virtual void *OpenFile(char const *fileName) = 0;
virtual bool FileExists(char const *fileName) = 0;
virtual unsigned int GetFileSize(char const *fileName) = 0;
virtual void* RequestRead(void *receiver, const char* name, unsigned int startOffset) = 0;
virtual void* OpenFile(char const* fileName) = 0;
virtual bool FileExists(char const* fileName) = 0;
virtual unsigned int GetFileSize(char const* fileName) = 0;
virtual void SetSpecialisationMask(unsigned int specMask) = 0;
virtual unsigned int GetSpecialisationMask() = 0;
virtual int GetStatus() = 0;
Expand All @@ -18,6 +18,8 @@ namespace cdc
virtual void Suspend() = 0;
virtual bool Resume() = 0;
virtual bool IsSuspended() = 0;
virtual char* GetBufferPointer(void* request, unsigned int* bytesLocked) = 0;
virtual void ResetBufferPointer(int value) = 0;
};

class MultiFileSystem
Expand Down
10 changes: 10 additions & 0 deletions src/loader/hookfilesystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,14 @@ namespace modloader
{
return m_pDiskFS->IsSuspended();
}

char* HookFileSystem::GetBufferPointer(void* request, unsigned int* bytesLocked)
{
return m_pDiskFS->GetBufferPointer(request, bytesLocked);
}

void HookFileSystem::ResetBufferPointer(int value)
{
return m_pDiskFS->ResetBufferPointer(value);
}
}
26 changes: 14 additions & 12 deletions src/loader/hookfilesystem.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,20 @@ namespace modloader
public:
HookFileSystem(cdc::FileSystem* pDiskFS);

virtual void* RequestRead(void* receiver, const char* fileName, unsigned int startOffset);
virtual void* OpenFile(char const* fileName);
virtual bool FileExists(char const* fileName);
virtual unsigned int GetFileSize(char const* fileName);
virtual void SetSpecialisationMask(unsigned int specMask);
virtual unsigned int GetSpecialisationMask();
virtual int GetStatus();
virtual void Update();
virtual void Synchronize();
void* RequestRead(void* receiver, const char* fileName, unsigned int startOffset);
void* OpenFile(char const* fileName);
bool FileExists(char const* fileName);
unsigned int GetFileSize(char const* fileName);
void SetSpecialisationMask(unsigned int specMask);
unsigned int GetSpecialisationMask();
int GetStatus();
void Update();
void Synchronize();

virtual void Suspend();
virtual bool Resume();
virtual bool IsSuspended();
void Suspend();
bool Resume();
bool IsSuspended();
char* GetBufferPointer(void* request, unsigned int* bytesLocked);
void ResetBufferPointer(int value);
};
}
26 changes: 14 additions & 12 deletions src/loader/multifilesystem.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,19 +17,21 @@ namespace modloader
public:
MultiFileSystem(cdc::FileSystem* pFS, cdc::FileSystem* pHookFS);

virtual void* RequestRead(void* receiver, const char* fileName, unsigned int startOffset);
virtual void* OpenFile(char const* fileName);
virtual bool FileExists(char const* fileName);
virtual unsigned int GetFileSize(char const* fileName);
virtual void SetSpecialisationMask(unsigned int specMask);
virtual unsigned int GetSpecialisationMask();
virtual int GetStatus();
virtual void Update();
virtual void Synchronize();
void* RequestRead(void* receiver, const char* fileName, unsigned int startOffset);
void* OpenFile(char const* fileName);
bool FileExists(char const* fileName);
unsigned int GetFileSize(char const* fileName);
void SetSpecialisationMask(unsigned int specMask);
unsigned int GetSpecialisationMask();
int GetStatus();
void Update();
void Synchronize();

// unused since this filesystem will never run in TR8
virtual void Suspend() { }
virtual bool Resume() { return false; }
virtual bool IsSuspended() { return false; }
void Suspend() { }
bool Resume() { return false; }
bool IsSuspended() { return false; }
char* GetBufferPointer(void* request, unsigned int* bytesLocked) { return nullptr; }
void ResetBufferPointer(int value) { }
};
}

0 comments on commit d3caf0b

Please sign in to comment.