/// <summary> /// Load the STFS Container's Header /// </summary> public void LoadHeader() { _stfsHeader = new xHeader(); _stfsStream.SeekTo(0x00); _stfsHeader.Magic = _stfsStream.ReadAscii(0x04); _stfsHeader.PackageType = GetPackageType(_stfsHeader.Magic); _stfsStream.SeekTo(0x04); switch (_stfsHeader.PackageType) { case PackageType.CON: _stfsHeader.PublicKeyCertificateSize = _stfsStream.ReadBlock(0x02); _stfsHeader.CertificateOwnerConsoleID = _stfsStream.ReadBlock(0x05); _stfsHeader.CertificateOwnerConsolePartNumber = _stfsStream.ReadAscii(0x14).Trim(); _stfsHeader.CertiicateOwnerConsoleType = (CertOwnerConsoleType)_stfsStream.ReadByte(); _stfsHeader.CertificateDateOfGeneration = _stfsStream.ReadAscii(0x08); _stfsHeader.PublicExponent = _stfsStream.ReadBlock(0x04); _stfsHeader.PublicModulus = _stfsStream.ReadBlock(0x80); _stfsHeader.CertificateSignature = _stfsStream.ReadBlock(0x100); _stfsHeader.Signature = _stfsStream.ReadBlock(0x80); break; case PackageType.PIRS: case PackageType.LIVE: _stfsHeader.PackageSignature = _stfsStream.ReadBlock(0x100); break; } }
/// <summary> /// Load the chunks in the BLF Table /// </summary> public void LoadChunkTable() { _blfChunks = new List <BLFChunk>(); _blfStream.SeekTo(0x00); bool continueLoading = true; while (continueLoading) { if (_blfStream.Position >= _blfStream.Length) { continueLoading = false; } else { BLFChunk chunk = new BLFChunk(); chunk.ChunkMagic = _blfStream.ReadAscii(0x04); _blfStream.SeekTo(_blfStream.Position - 0x04); chunk.ChunkMagicIdent = _blfStream.ReadInt32(); chunk.ChunkLength = _blfStream.ReadInt32(); chunk.ChunkData = _blfStream.ReadBlock(chunk.ChunkLength - 0x08); _blfChunks.Add(chunk); } } }
private bool isValidBLF() { _blfStream.SeekTo(0x00); string magic = _blfStream.ReadAscii(0x04); if (magic == "_blf") { return(true); } return(false); }
/// <summary> /// Load the Screenshots Header data /// </summary> public void LoadHeader() { _shotHeader = new Header(); _shotStream.SeekTo(0x48); _shotHeader.ScreenshotName = _shotStream.ReadUTF16(); _shotStream.SeekTo(0x67); _shotHeader.ScreenshotDescription = _shotStream.ReadUTF16(); _shotStream.SeekTo(0xE8); _shotHeader.ScreenshotAuthor = _shotStream.ReadAscii(); }
private void ProcessMapHeader() { using (IReader reader = new EndianStream(new MemoryStream(MapHeader), Endian.LittleEndian)) { reader.SeekTo(MapTypeOffset); MapType = (CacheFileType)reader.ReadInt32(); reader.SeekTo(MapNameOffset); MapName = reader.ReadAscii(); reader.SeekTo(ScenarioNameOffset); ScenarioName = reader.ReadAscii(); } }
public bool IsValidGPD() { _gpdStream.SeekTo(0x00); string magic = _gpdStream.ReadAscii(0x04); _gpdStream.SeekTo(0x344A); string gameName = _gpdStream.ReadAscii(0x0D); if (magic != "XDBF" && gameName != "Halo 3: ODST") { return(false); } else { return(true); } }
/// <summary> /// Load the usermap's Header /// </summary> public void LoadHeader() { _forgeHeader = new Header(); _forgeStream.SeekTo(0x42); _forgeHeader.CreationDate = _forgeStream.ReadInt32(); _forgeStream.SeekTo(0x48); _forgeHeader.CreationVarientName = _forgeStream.ReadUTF16(0x1F); _forgeStream.SeekTo(0x68); _forgeHeader.CreationVarientDescription = _forgeStream.ReadAscii(0x80); _forgeStream.SeekTo(0xE8); _forgeHeader.CreationVarientAuthor = _forgeStream.ReadAscii(0x13); _forgeStream.SeekTo(0x114); _forgeHeader.ModificationDate = _forgeStream.ReadInt32(); _forgeStream.SeekTo(0x150); _forgeHeader.VarientName = _forgeStream.ReadUTF16(0x1F); _forgeStream.SeekTo(0x170); _forgeHeader.VarientDescription = _forgeStream.ReadAscii(0x80); _forgeStream.SeekTo(0x1F0); _forgeHeader.VarientAuthor = _forgeStream.ReadAscii(0x13); _forgeStream.SeekTo(0x228); _forgeHeader.MapID = _forgeStream.ReadInt32(); _forgeStream.SeekTo(0x246); _forgeHeader.SpawnedObjectCount = _forgeStream.ReadInt16(); _forgeStream.SeekTo(0x24C); _forgeHeader.WorldBoundsXMin = _forgeStream.ReadFloat(); _forgeHeader.WorldBoundsXMax = _forgeStream.ReadFloat(); _forgeHeader.WorldBoundsYMin = _forgeStream.ReadFloat(); _forgeHeader.WorldBoundsYMax = _forgeStream.ReadFloat(); _forgeHeader.WorldBoundsZMin = _forgeStream.ReadFloat(); _forgeHeader.WorldBoundsZMax = _forgeStream.ReadFloat(); _forgeStream.SeekTo(0x268); _forgeHeader.MaximiumBudget = _forgeStream.ReadFloat(); _forgeHeader.CurrentBudget = _forgeStream.ReadFloat(); }
// TODO: Find a good place to store this public void OpenUserFile(string filePath) { var stream = new EndianStream(new FileStream(filePath, FileMode.Open), Endian.BigEndian); stream.SeekTo(0); switch (stream.ReadAscii(0x04)) { case "CON ": case "PIRS": case "LIVE": break; case "_blf": break; default: throw new InvalidOperationException("The selected file is not a supported file type. Only try to open an Xbox 360 Container file that contains a forge varient (sandbox.map) or the pure sandbox.map extracted from a Xbox 360 Container File."); } }
public void LoadHeader() { _filmHeader = new Header(); _filmStream.SeekTo(0x48); _filmHeader.FilmName = _filmStream.ReadUTF16(0x1F); _filmStream.SeekTo(0x67); _filmHeader.FilmDescription = _filmStream.ReadAscii(0x80); _filmStream.SeekTo(0xE7); _filmHeader.FilmAuthor = _filmStream.ReadAscii(0x80); _filmStream.SeekTo(0x15); _filmHeader.FilmAuthor = _filmStream.ReadAscii(0x2E); _filmStream.SeekTo(0x198); _filmHeader.FilmAuthor = _filmStream.ReadAscii(0x23); _filmStream.SeekTo(0x220); _filmHeader.FilmAuthor = _filmStream.ReadAscii(0x26); _filmStream.SeekTo(0x2C4); _filmHeader.FilmAuthor = _filmStream.ReadAscii(0x2A); }
/// <summary> /// Load the Film Header /// </summary> public void LoadHeader() { _filmHeader = new Header(); #region Creation and Modification // Read Creation Date _filmStream.SeekTo(0x114); _filmHeader.CreationDate = _filmStream.ReadInt32(); // Read Creation Author _filmStream.SeekTo(0xE8); _filmHeader.CreationAuthor = _filmStream.ReadAscii(); #endregion #region Film Info // Read Film Name _filmStream.SeekTo(0x48); _filmHeader.FilmName = _filmStream.ReadUTF16(); // Read Film Description _filmStream.SeekTo(0x67); _filmHeader.FilmDescription = _filmStream.ReadUTF16(); // Read Film Engine Build String 1 _filmStream.SeekTo(0x15C); _filmHeader.EngineBuildString1 = _filmStream.ReadAscii(); // Read Film Engine Build String 2 _filmStream.SeekTo(0x198); _filmHeader.EngineBuildString2 = _filmStream.ReadAscii(); // Read Film InfoString _filmStream.SeekTo(0x220); _filmHeader.InfoString = _filmStream.ReadAscii(); #endregion #region GametypeUsermapInfo // Read Gametype Name _filmStream.SeekTo(0x4DC); _filmHeader.GametypeName = _filmStream.ReadUTF16(); // Read Gametype Description _filmStream.SeekTo(0x4FB); _filmHeader.GametypeDescription = _filmStream.ReadUTF16(); // Read Gametype Author _filmStream.SeekTo(0x57B); _filmHeader.GametypeAuthor = _filmStream.ReadUTF16(); // Read Usermap Name _filmStream.SeekTo(0x738); _filmHeader.GametypeAuthor = _filmStream.ReadUTF16(); // Read Usermap Description _filmStream.SeekTo(0x757); _filmHeader.GametypeAuthor = _filmStream.ReadUTF16(); // Read Usermap Author _filmStream.SeekTo(0x7D7); _filmHeader.GametypeAuthor = _filmStream.ReadUTF16(); #endregion #region RawMapData // Read Map Name _filmStream.SeekTo(0x24C); _filmHeader.MapName = _filmStream.ReadAscii(); #endregion #region Mathcmaking Playlist Info // Read Matchmaking Playlist Name _filmStream.SeekTo(0x472); _filmHeader.MatchmakingPlaylistName = _filmStream.ReadUTF16(); #endregion }
/// <summary> /// Load the Film Header /// </summary> public void LoadHeader() { _filmHeader = new Header(); #region Creation and Modification // Read Creation Date _filmStream.SeekTo(0x7C); _filmHeader.CreationDate = _filmStream.ReadInt32(); // Read Creation Author _filmStream.SeekTo(0x88); _filmHeader.CreationAuthor = _filmStream.ReadAscii(); // Read Modification Date _filmStream.SeekTo(0xA0); _filmHeader.ModifiedDate = _filmStream.ReadInt32(); // Read Modification Author _filmStream.SeekTo(0xAC); _filmHeader.ModifiedAuthor = _filmStream.ReadAscii(); #endregion #region Film Info // Read Film Name _filmStream.SeekTo(0xC0); _filmHeader.FilmName = _filmStream.ReadUTF16(); // Read Film Description _filmStream.SeekTo(0x1C0); _filmHeader.FilmDescription = _filmStream.ReadUTF16(); // Read Info String _filmStream.SeekTo(0x3D8); _filmHeader.InfoString = _filmStream.ReadAscii(); #endregion #region Gametype Info // Read Gametype Name _filmStream.SeekTo(0x998); _filmHeader.GametypeName = _filmStream.ReadUTF16(); // Read Gametype Description _filmStream.SeekTo(0xA98); _filmHeader.GametypeDescription = _filmStream.ReadUTF16(); #endregion #region RawMapData // Read Map Name _filmStream.SeekTo(0x1011C); _filmHeader.MapName = _filmStream.ReadAscii(); // Read Map Rally Point _filmStream.SeekTo(0x10220); _filmHeader.RallyPoint = _filmStream.ReadAscii(); #endregion #region MatchmakingPlaylistInfo // Read Playlist Name _filmStream.SeekTo(0x10342); _filmHeader.MatchmakingPlaylistName = _filmStream.ReadUTF16(); // Read Usermap Name _filmStream.SeekTo(0x10460); _filmHeader.UsermapName = _filmStream.ReadUTF16(); // Read Usermap Description _filmStream.SeekTo(0x10560); _filmHeader.UsermapDescription = _filmStream.ReadUTF16(); #endregion }