/// <summary> /// Get the EndianState used for cache files in a specific engine /// </summary> /// <param name="version"></param> /// <returns></returns> public static IO.EndianState GetCacheEndianState(this BlamVersion version) { if (version.IsXbox360()) { // TODO: Do we need to use Big for Halo Mac too? Stubbs Mac appears to be Little... return(BlamLib.IO.EndianState.Big); } return(BlamLib.IO.EndianState.Little); }
void DetermineEndianState(bool in_cache) { if (!in_cache) // for tag files { // NOTE: We store Halo3, etc in big-endian because we don't know their entire formats // yet and don't want to f**k up any data if we extract // Also, the only platform for the game is the 360, so hell, why not? if ((engine & BlamVersion.Halo1) != 0) { this.endianState = IO.EndianState.Big; } else if ((engine & BlamVersion.Halo2) != 0) { this.endianState = IO.EndianState.Little; } else if ((engine & BlamVersion.Halo3) != 0) { this.endianState = IO.EndianState.Big; } else if ((engine & BlamVersion.Stubbs) != 0) { this.endianState = IO.EndianState.Big; } else if ((engine & BlamVersion.HaloOdst) != 0) { this.endianState = IO.EndianState.Big; } else if ((engine & BlamVersion.HaloReach) != 0) { this.endianState = IO.EndianState.Big; } else { this.endianState = IO.EndianState.Big; } } else // for cache files { if (engine.IsXbox360()) { this.endianState = IO.EndianState.Big; } else { this.endianState = IO.EndianState.Little; } } }