コード例 #1
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(X);
     s.Write(Y);
     s.Write(Z);
     s.Write(W);
 }
コード例 #2
0
ファイル: CacheFile.cs プロジェクト: yumiris/OpenSauce
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(0);
     s.Write(size);
     s.Write(0);
     s.Write(nameHash);
     offset.Write(s);
 }
コード例 #3
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(ulong.MinValue);
     Count.Write(s);
     Size.Write(s);
     OffsetReferences.Write(s);
     OffsetStrings.Write(s);
     s.Write(uint.MinValue);
 }
コード例 #4
0
ファイル: CacheFile.cs プロジェクト: yumiris/OpenSauce
 public void Write(BlamLib.IO.EndianWriter s)
 {
     MiscGroups.crdb.Write(s);
     s.Write(kVersion);
     s.Write(items.Count);
     for (int x = 0; x < items.Count; x++)
     {
         items[x].Write(s);
     }
 }
コード例 #5
0
        public void Write(BlamLib.IO.EndianWriter s)
        {
            s.WriteTag(Ext);
            int count = Names.Count;

            s.Write(count);
            for (int x = 0; x < count; x++)
            {
                s.Write(Names[x]);
                s.Write(Scenarios[x]);
            }
        }
コード例 #6
0
            public void Write(BlamLib.IO.EndianWriter s)
            {
                s.Write(ResourceBaseAddress);
                s.Write(DebugSectionSize);
                s.Write(RuntimeBaseAddress);
                s.Write(UnknownBaseAddress);

                foreach (var sec in sections)
                {
                    sec.Write(s);
                }
            }
コード例 #7
0
ファイル: DelimitorFile.cs プロジェクト: CodeAsm/open-sauce
		private MemoryStream PrepareStrings()
		{
			MemoryStream ms = new MemoryStream(StringPoolSize + ((MaxCount * 2) * sizeof(int)));
			IO.EndianWriter s = new BlamLib.IO.EndianWriter(ms);
			//int offset = 0;

			//NameOffsets = new List<int>(Names.Count);
			//foreach (string str in Names)
			//{
			//    offset = (int)ms.Position;
			//    NameOffsets.Add(offset);
			//    s.Write(str, true);
			//}

			//ScenarioOffsets = new List<int>(Scenarios.Count);
			//foreach (string str in Scenarios)
			//{
			//    offset = (int)ms.Position;
			//    ScenarioOffsets.Add(offset);
			//    s.Write(str, true);
			//}

			foreach (string str in Scenarios)
				s.Write(str, true);
			int len = StringPoolSize - (int)ms.Position;
			if (len > 0)
				for (int x = 0; x < len; x++)
					s.Write(byte.MinValue);

			len = MaxCount - ScenarioOffsets.Count;

			foreach (int i in ScenarioOffsets)
				s.Write(i);

			if(len > 0)
				for (int x = 0; x < len; x++)
					s.Write(0);

			foreach (int i in NameOffsets)
				s.Write(i);

			if (len > 0)
				for (int x = 0; x < len; x++)
					s.Write(0);

			return ms;
		}
コード例 #8
0
 public virtual void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(m_entries.Count);
     foreach (var entry in m_entries)
     {
         entry.Write(s);
     }
 }
コード例 #9
0
            public void Write(BlamLib.IO.EndianWriter s)
            {
                if (nullBuffer == null)
                {
                    nullBuffer = new byte[ByteCount];
                }

                s.Write(nullBuffer);
            }
コード例 #10
0
        public void Build(string path)
        {
            IO.EndianWriter file = new BlamLib.IO.EndianWriter(path, BlamLib.IO.EndianState.Little, this, true);

            MemoryStream ms = PrepareStrings();

            file.Write(Names.Count);
            //file.Write(ms.GetBuffer().Length);

            //foreach (int offset in NameOffsets)
            //    file.Write(offset);

            //foreach (int offset in ScenarioOffsets)
            //    file.Write(offset);

            file.Write(ms.GetBuffer());

            ms.Close();
            file.Close();
        }
コード例 #11
0
ファイル: CacheFile.cs プロジェクト: yumiris/OpenSauce
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(Entries.Count);
     foreach (var entry in Entries)
     {
         entry.Write(s);
     }
     foreach (var datum in Dependencies)
     {
         datum.Write(s);
     }
 }
コード例 #12
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(DataOffset);
     s.Write(DataSize);
     s.Write(Name.Length);
     if (Name.Length > 0)
     {
         s.Write(Name.ToCharArray());
     }
     s.Write((int)Type);
     s.Write(unknown1);
     s.Write(unknown2);
 }
コード例 #13
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     NameId.Write(s);
     s.Write(Offset);
 }
コード例 #14
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(Value);
 }
コード例 #15
0
ファイル: CacheFile.cs プロジェクト: yumiris/OpenSauce
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(Start);
     s.Write(Count);
 }
コード例 #16
0
ファイル: DelimitorFile.cs プロジェクト: CodeAsm/open-sauce
		public void Build(string path)
		{
			IO.EndianWriter file = new BlamLib.IO.EndianWriter(path, BlamLib.IO.EndianState.Little, this, true);

			MemoryStream ms = PrepareStrings();

			file.Write(Names.Count);
			//file.Write(ms.GetBuffer().Length);

			//foreach (int offset in NameOffsets)
			//    file.Write(offset);

			//foreach (int offset in ScenarioOffsets)
			//    file.Write(offset);

			file.Write(ms.GetBuffer());

			ms.Close();
			file.Close();
		}
コード例 #17
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write(VirtualAddress);
     s.Write(Size);
 }
コード例 #18
0
ファイル: CacheFile.cs プロジェクト: yumiris/OpenSauce
        public override void Write(BlamLib.IO.EndianWriter s)
        {
            CacheFile cf = s.Owner as CacheFile;

            if (cf.EngineVersion == BlamVersion.Halo2_PC)
            {
                return;
            }
            if (cf.EngineVersion == BlamVersion.Halo2_Alpha)
            {
                return;
            }

            s.WriteTag((char[])MiscGroups.head);
            s.Write(8);
            s.Write(fileLength);
            s.Write(0);
            s.Write(offsetToIndex);
            s.Write(indexStreamSize);
            s.Write(tagBufferSize);
            s.Write(0);             // needs to be calc'd

            s.Write(new byte[256]);
            s.Write("02.09.27.09809", false);
            s.Write((int)cacheType);
            s.Write(0);             // needs to be calc'd
            s.Write(0);             // needs to be calc'd
            s.Write(0); s.Write(0);

            s.Write(0);             // needs to be calc'd

            s.Write(0);             // needs to be calc'd
            s.Write(0);             // needs to be calc'd

            s.Write(/*stringIdsBufferAlignedOffset*/ 0);
            s.Write(stringIdsCount);

            s.Write(stringIdsBufferSize);
            s.Write(stringIdIndicesOffset);
            s.Write(stringIdsBufferOffset);

            s.Write(0);             // 4 bools

            s.Write(Filetime.dwHighDateTime);                       s.Write(Filetime.dwHighDateTime);

            // mainmenu
            s.Write(SharedFiletimes[0].dwHighDateTime);     s.Write(SharedFiletimes[0].dwHighDateTime);
            // shared
            s.Write(SharedFiletimes[1].dwHighDateTime);     s.Write(SharedFiletimes[1].dwHighDateTime);
            // shared sp
            s.Write(SharedFiletimes[2].dwHighDateTime);     s.Write(SharedFiletimes[2].dwHighDateTime);

            s.Write(name, false);
            s.Write(0);
            s.Write(scenarioPath, 256);
            s.Write(Convert.ToInt32(needsShared));

            s.Write(tagNamesCount);
            s.Write(tagNamesBufferOffset);
            s.Write(tagNamesBufferSize);
            s.Write(tagNameIndicesOffset);

            s.Write(0);             // checksum

            s.Write(new byte[1320]);

            s.WriteTag((char[])MiscGroups.foot);
        }
コード例 #19
0
        private MemoryStream PrepareStrings()
        {
            MemoryStream ms = new MemoryStream(StringPoolSize + ((MaxCount * 2) * sizeof(int)));

            IO.EndianWriter s = new BlamLib.IO.EndianWriter(ms);
            //int offset = 0;

            //NameOffsets = new List<int>(Names.Count);
            //foreach (string str in Names)
            //{
            //    offset = (int)ms.Position;
            //    NameOffsets.Add(offset);
            //    s.Write(str, true);
            //}

            //ScenarioOffsets = new List<int>(Scenarios.Count);
            //foreach (string str in Scenarios)
            //{
            //    offset = (int)ms.Position;
            //    ScenarioOffsets.Add(offset);
            //    s.Write(str, true);
            //}

            foreach (string str in Scenarios)
            {
                s.Write(str, true);
            }
            int len = StringPoolSize - (int)ms.Position;

            if (len > 0)
            {
                for (int x = 0; x < len; x++)
                {
                    s.Write(byte.MinValue);
                }
            }

            len = MaxCount - ScenarioOffsets.Count;

            foreach (int i in ScenarioOffsets)
            {
                s.Write(i);
            }

            if (len > 0)
            {
                for (int x = 0; x < len; x++)
                {
                    s.Write(0);
                }
            }

            foreach (int i in NameOffsets)
            {
                s.Write(i);
            }

            if (len > 0)
            {
                for (int x = 0; x < len; x++)
                {
                    s.Write(0);
                }
            }

            return(ms);
        }
コード例 #20
0
 public void Write(BlamLib.IO.EndianWriter s)
 {
     s.Write((byte)type);
     s.Write(flags);
 }