public byte[] GetRawData() { int newHeaderDataSize = 28; if (this.transparencybit) { newHeaderDataSize += 4; } if (this.extra2) { newHeaderDataSize += 8; } byte[] newHeaderData = new byte[newHeaderDataSize]; int flags = 0; //set extra bit value CGeneric.SetBitInInt(ref flags, 22, this.transparencybit); CGeneric.SetBitInInt(ref flags, 26, this.extra2); //set unknown bit values CGeneric.SetBitInInt(ref flags, 19, this.bit19); CGeneric.SetBitInInt(ref flags, 20, this.bit20); CGeneric.SetBitInInt(ref flags, 21, this.bit21); CGeneric.SetBitInInt(ref flags, 23, this.bit23); CGeneric.SetBitInInt(ref flags, 24, this.bit24); CGeneric.SetBitInInt(ref flags, 25, this.bit25); CGeneric.SetBitInInt(ref flags, 27, this.bit27); CGeneric.SetBitInInt(ref flags, 28, this.bit28); CGeneric.SetBitInInt(ref flags, 29, this.bit29); CGeneric.SetBitInInt(ref flags, 30, this.bit30); CGeneric.SetBitInInt(ref flags, 31, this.bit31); CGeneric.SetBitInInt(ref flags, 32, this.bit32); Array.Copy(CGeneric.ConvertIntToByteArray(flags), 0, newHeaderData, 0, 4); Array.Copy(CGeneric.ConvertIntToByteArray(posX), 0, newHeaderData, 4, 4); Array.Copy(CGeneric.ConvertIntToByteArray(posY), 0, newHeaderData, 8, 4); //copy unknown data Array.Copy(rawData, 12, newHeaderData, 12, 16); newHeaderData[27] = this.textureIndex; if (transparencybit) { newHeaderData[31] = transparency; } return(newHeaderData); }