#pragma once //---------------------------------------------------------- #define FS_FILE_MAGIC 0x32414153 // "SAA2" #define FS_BLOCK_SIZE 0x800 // 2kb #define FS_INVALID_FILE 0xFFFFFFFF #define FS_ENCKEY_VAR 37625 #define FS_ENC_CONST1 54825 #define FS_ENC_CONST2 91722 //---------------------------------------------------------- typedef struct _FS_HEADER { DWORD dwSAAV; DWORD dwFileCount; WORD wKey; } FS_HEADER; typedef struct _FS_FILE_ENTRY { DWORD dwOffset; DWORD dwSize; char szName[24]; DWORD dwRealSize; WORD wKey; } FS_FILE_ENTRY; //---------------------------------------------------------- class CFileSystem { private: bool m_bLoaded; DWORD m_dwFileCount; WORD m_wKey; FS_FILE_ENTRY* m_pFileList; BYTE** m_pFileData; public: CFileSystem(); virtual ~CFileSystem(); virtual bool Load(char* szFileName); virtual void Unload(); virtual DWORD GetFileIndex(char* szFileName); virtual DWORD GetFileSize(DWORD dwFileIndex); virtual BYTE* GetFileData(DWORD dwFileIndex); void DecryptData(BYTE* pData, DWORD dwDataLen, WORD wKey); }; //---------------------------------------------------------- // EOF