Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }