Hello i'll show you my c# code for reading *.res files:
Code:
FileStream filestream1 = new FileStream(filePath, System.IO.FileMode.Open);
byte[] array1 = new byte[filestream1.Length];
filestream1.Read(array1, 0, (int)filestream1.Length);
filestream1.Close();
BinaryReader binaryreader1 = new BinaryReader(new System.IO.MemoryStream(array1));
this.encryptionKey = binaryreader1.ReadByte();
this.fileType = binaryreader1.ReadByte();
byte[] array2 = binaryreader1.ReadBytes(binaryreader1.ReadInt32());
for (int num1 = 0; num1 < array2.Length; num1++ )
{
array2[num1] = Decryption(this.encryptionKey, array2[num1]);
}
BinaryReader binaryreader2 = new BinaryReader(new System.IO.MemoryStream(array2));
this.version = binaryreader2.ReadBytes(7);
this.files = new resFile[binaryreader2.ReadInt16() - 1];
for (int num1 = 0; num1 < this.files.Length; num1++ )
{
this.files[num1].m_szFileName = Encoding.ASCII.GetString(binaryreader2.ReadBytes(binaryreader2.ReadInt16()));
this.files[num1].m_nSize = binaryreader2.ReadInt32();
this.files[num1].m_nCrc32 = binaryreader2.ReadInt32();
this.files[num1].m_nOffset = binaryreader2.ReadInt32();
}
binaryreader2.Close();
for (int num1 = 0; num1 < this.files.Length; num1++)
{
binaryreader1.BaseStream.Seek(this.files[num1].m_nOffset, System.IO.SeekOrigin.Begin);
this.files[num1].m_bBytes = binaryreader1.ReadBytes(this.files[num1].m_nSize);
if (this.fileType == 1)
{
for (int num2 = 0; num2 < this.files[num1].m_nSize; num2++)
{
this.files[num1].m_bBytes[num2] = Decryption(this.encryptionKey, this.files[num1].m_bBytes[num2]);
}
}
}
binaryreader1.Close();