示例#1
0
		static void Output(System.IO.StreamWriter s, TI.Block<field_block<TI.LongInteger>> block)
		{
			const string format = "\t{0}\t\t{1}";

			s.WriteLine("{0}\tcache_file_resource_gestalt_1D0_block", block.Count);
			int x = 0;
			foreach (field_block<TI.LongInteger> def in block)
			{
				s.WriteLine(format, (x++).ToString(), def.Value.Value.ToString("X8"));
			}
		}
示例#2
0
			public static void Output(System.IO.StreamWriter s, TI.Block<cache_file_resource_gestalt_64_block> block, string name)
			{
				if (block.Count == 0) return;

				const string format =
					"\t{0}\t\t{1}" + Program.NewLine + // Unknown044
					"\t\t\t{2}\t{3}\t{4}\t{5}\t{6}" // Unknown030-Unknown040
					;

				s.WriteLine("{0}\tcache_file_resource_gestalt_64_block\t({1})", block.Count, name);
				int x = 0;
				foreach (cache_file_resource_gestalt_64_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.Unknown044.ToString(),
						def.Unknown030.Value.ToString("X8"), def.Unknown034.Value.ToString("X8"),
						def.Unknown038.Value.ToString("X8"), def.Unknown03C.Value.ToString("X8"),
						def.Unknown040.Value.ToString("X8"));
					s.WriteLine();
				}
			}
示例#3
0
文件: Bsp.cs 项目: CodeAsm/open-sauce
			public void Render(TI.Block<global_geometry_material_block> materials,
				TI.Block<structure_bsp_instanced_geometry_definition_block> instanced_geometries_definitions
				)
			{
				int index = InstanceDefinition.Value;
				Debug.Assert.If(index != -1);
				instanced_geometries_definitions[index].Render(materials);
			}
示例#4
0
			public static void Output(System.IO.StreamWriter s, TI.Block<cache_file_resource_gestalt_1F4_block> block)
			{
				const string format =
					"\t{0}\t\t{1}\t{2}\t{3}\t{4}"
					;

				s.WriteLine("{0}\tcache_file_resource_gestalt_1F4_block", block.Count);
				int x = 0;
				foreach (cache_file_resource_gestalt_1F4_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.Unknown00.Value.ToString("X4"), def.Unknown02.Value.ToString("X4"), def.Unknown04.Value.ToString("X4"), def.Unknown06.Value.ToString("X4")
						);
				}
			}
示例#5
0
			public static void Output(System.IO.StreamWriter s, TI.Block<cache_file_resource_gestalt_100_block> block)
			{
				const string format =
					"\t{0}\t\t{1}" + Program.NewLine + // Name
					"\t\t\t{2}\t{3}" + Program.NewLine +
					"\t\t\t{4}\t{5}" + Program.NewLine +
					"\t\t\t{6}\t{7}" + Program.NewLine +
					"\t\t\t{8}\t\t{9}"
					;

				s.WriteLine("{0}\tcache_file_resource_gestalt_100_block", block.Count);
				int x = 0;
				foreach (cache_file_resource_gestalt_100_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.Name.ToString(),
						def.Unknown04.Value.ToString("X8"), def.Unknown08.Value.ToString("X8"),
						def.Unknown0C.Value.ToString("X8"), def.Unknown10.Value.ToString("X8"),
						def.Unknown14.Value.ToString("X8"), def.Unknown18.Value.ToString("X8"),
						def.Unknown1C.Value.ToString("X8"), def.PrevZoneSet.Value.ToString());
					s.WriteLine();
				}
			}
示例#6
0
				public static void Output(StreamWriter s, TI.Block<resource_definition_fixup_block> block)
				{
					const string format = "\t\t\t{0}\t\t{1}\t{2}";
					s.WriteLine("\t\t{0}\tresource_definition_fixup_block", block.Count);
					int x = 0;
					foreach (resource_definition_fixup_block def in block)
					{
						s.WriteLine(format, (x++).ToString(), def.Offset.Value.ToString("X8"), def.StructureTypeIndex.Value.ToString());
					}
				}
示例#7
0
			public static void Output(StreamWriter s, TI.Block<resource_type_block> block)
			{
				const string format =
					"\t{0}\t\t{1}" + Program.NewLine + // Name
					"\t\t\t{2}\t{3}\t{4}\t{5}" + Program.NewLine + // 010,012,014,016
					"\t\t\t{6}" // Guid
					;

				s.WriteLine("{0}\tresource_type_block", block.Count);
				int x = 0;
				foreach (resource_type_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.Name.ToString(),
						def.Unknown010.Value.ToString("X4"), def.Unknown012.Value.ToString("X4"), def.Unknown014.Value.ToString("X4"), def.Unknown016.Value.ToString("X4"),
						Util.ByteArrayToString(def.Guid.Data));
				}
			}
示例#8
0
			public static void Output(StreamWriter s, TI.Block<cache_file_resource_layout_table_24_block> block)
			{
				s.WriteLine("{0}\tcache_file_resource_layout_table_24_block", block.Count);
				int x = 0;
				foreach (cache_file_resource_layout_table_24_block def in block)
				{
					s.WriteLine("\t{0}\t\t{1}", (x++).ToString(),
						def.Size.Value.ToString("X8"));
					block_4.Output(s, def.Unknown04);
					s.WriteLine();
				}
			}
示例#9
0
			public static void OutputResources(string dir, CacheFileGen3 cf, TI.Block<pages_block> block)
			{
				uint offset;
				int size;
				uint base_offset = (uint)(cf.Header as CacheHeaderGen3).Interop[CacheSectionType.Resource].CacheOffset;
				string path = string.Format(@"{0}\\{1}_resources\\", dir, cf.Header.Name);
				if (!System.IO.Directory.Exists(path))
					System.IO.Directory.CreateDirectory(path);

				int x = -1;
				foreach (pages_block def in block)
				{
					x++;
					if (def.SharedCache.Value != -1) continue;
					size = def.BlockSizeUncompressed.Value;
					if (size <= 0) continue;

					offset = base_offset + (uint)def.BlockOffset.Value;
					cf.InputStream.Seek(offset);
					byte[] data;
					if (def.CompressionCodec.Value != -1)
					{
						using (var deflate = new System.IO.Compression.DeflateStream(cf.InputStream.BaseStream, System.IO.Compression.CompressionMode.Decompress, true))
						{
							data = new byte[size];
							deflate.Read(data, 0, data.Length);
						}
					}
					else
						data = cf.InputStream.ReadBytes(size);

					using(var fs = new FileStream(string.Format("{0}\\{1:X8}.bin", path, x), System.IO.FileMode.Create, System.IO.FileAccess.Write))
					{
						fs.Write(data, 0, data.Length);
					}
				}
			}
示例#10
0
		public static void Output(CacheFileBase c, System.IO.StreamWriter s, sound_cache_file_gestalt_group owner, TI.Block<sound_gestalt_pitch_ranges_block> block)
		{
			const string format = "\t{0}\t\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}";

			s.WriteLine("{0}\tsound_gestalt_pitch_ranges_block", block.Count);
			int x = 0;
			foreach (sound_gestalt_pitch_ranges_block def in block)
			{
				int name_index = def.Name.Value;
				Blam.StringId name = name_index >= 0 ? owner.ImportNames[name_index].ImportName.Handle : Blam.StringId.Null;

				s.WriteLine(format, (x++).ToString(),
					def.Parameters.Value.ToString(), def.Unknown04.Value.ToString(),
					def.EncodedPermutationData.Value.ToString("X4"), def.FirstPermutation.Value.ToString(),
					def.GetPermutationCount().ToString(),
					c.StringIds.GetStringIdValue(name));
			}
		}
示例#11
0
		public static void Output(System.IO.StreamWriter s, TI.Block<sound_permutation_chunk_block> block)
		{
			const string format = "\t{0}\t\t{1}\t{2}" + "\t{3}\t{4}\t{5}";

			s.WriteLine("{0}\tsound_permutation_chunk_block", block.Count);
			int x = 0;
			foreach (sound_permutation_chunk_block def in block)
			{
				s.WriteLine(format, (x++).ToString(),
					def.FileOffset.Value.ToString("X8"), def.GetSize().ToString("X7"), 
					def.GetFlags().ToString("X2"), def.Unknown0C.Value.ToString("X4"), def.Unknown10.Value.ToString("X8"));
			}
		}
示例#12
0
			/// <summary>
			/// Update this segment with the size the page calculated it to be
			/// </summary>
			/// <param name="pages"></param>
			internal void UpdateSegmentData(TI.Block<pages_block> pages)
			{
				if(RequiredPageIndex.Value > 0)		requiredSize = pages[RequiredPageIndex.Value].GetSegmentSize(RequiredSegmentOffset.Value);
				if(OptionalSegmentOffset.Value > 0)	optionalSize = pages[OptionalSegmentOffset.Value].GetSegmentSize(OptionalSegmentOffset.Value);
			}
示例#13
0
			/// <summary>
			/// Update the page with this segment's offsets
			/// </summary>
			/// <param name="pages"></param>
			internal void UpdatePageData(TI.Block<pages_block> pages)
			{
				if(RequiredPageIndex.Value > 0)		pages[RequiredPageIndex.Value].AddSegment(RequiredSegmentOffset.Value);
				if(OptionalSegmentOffset.Value > 0)	pages[OptionalSegmentOffset.Value].AddSegment(OptionalSegmentOffset.Value);
			}
示例#14
0
        public void ShouldNotIncludeSystemDrawing()
        {
            StringBuilder output = new StringBuilder();
            int           result = Driver.RunCommand("/Library/Frameworks/Mono.framework/Versions/Current/Commands/monop", new [] { "--refs", $"-r:{TI.FindRootDirectory ()}/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/4.5/System.ServiceModel.dll" }, output);

            Assert.That(result, Is.EqualTo(0));
            Assert.That(output.ToString(), !Contains.Substring("System.Drawing"));
        }
示例#15
0
文件: Bsp.cs 项目: CodeAsm/open-sauce
		public void Render(TI.Block<global_geometry_material_block> materials)
		{
			if (RenderData.Count != 1) return;

			RenderData[0].Render(SectionInfo.Value, materials);
		}
示例#16
0
        public void ShouldIncludeSystemServiceModel()
        {
            StringBuilder output = new StringBuilder();
            int           result = Driver.RunCommand("/Library/Frameworks/Mono.framework/Versions/Current/Commands/monop", new [] { "--refs", $"-r:{TI.FindRootDirectory ()}/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/4.5/System.ServiceModel.dll" }, output);

            Assert.That(result, Is.EqualTo(0));
            Assert.That(output.ToString(), Contains.Substring("System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"));
        }
示例#17
0
		public static void Output(CacheFileBase c, System.IO.StreamWriter s, sound_cache_file_gestalt_group owner, TI.Block<sound_gestalt_permutations_block> block)
		{
			const string format = "\t{0}\t\t{1}\t{2}\t{3}\t{4}\t{5}";

			s.WriteLine("{0}\tsound_gestalt_permutations_block", block.Count);
			int x = 0;
			foreach (sound_gestalt_permutations_block def in block)
			{
				int name_index = def.Name.Value;
				Blam.StringId name = name_index >= 0 ? owner.ImportNames[name_index].ImportName.Handle : Blam.StringId.Null;

				s.WriteLine(format, (x++).ToString(),
					def.PermutationInfoIndex.ToString(), def.FirstChunk.Value.ToString(), def.ChunkCount.Value.ToString(), def.GetPermutationIndex().ToString(), 
					c.StringIds.GetStringIdValue(name));
			}
		}
示例#18
0
				public static void Output(StreamWriter s, TI.Block<block_4> block)
				{
					const string format = "\t\t\t{0}\t\t{1}\t{2}\t{3}\t{4}";
					s.WriteLine("\t\t{0}\tblock_4", block.Count);
					int x = 0;
					foreach (block_4 def in block)
					{
						s.WriteLine(format, (x++).ToString(), def.Unknown00.Value.ToString("X8"), def.Unknown04.Value.ToString("X8"), def.Unknown08.Value.ToString("X8"), def.Unknown0C.Value.ToString("X8"));
					}
				}
示例#19
0
			static void Output(System.IO.StreamWriter s, TI.Block<field_block<TI.ShortInteger>> block)
			{
				const string format = "\t\t\t{0}\t\t{1}";

				s.WriteLine("\t\t{0}\tblock_4", block.Count);
				int x = 0;
				foreach (field_block<TI.ShortInteger> def in block)
				{
					s.WriteLine(format, (x++).ToString(), def.Value.Value.ToString("X4"));
				}
			}
示例#20
0
			public static void Output(StreamWriter s, TI.Block<page_segment_block> block)
			{
				s.WriteLine("{0}\tpage_segment_block", block.Count);
				int x = 0;
				foreach (page_segment_block def in block)
				{
					s.WriteLine("\t{0}\t\t{1}\t{2}\t{3}\t{4}\t{5}", (x++).ToString(),
						(def.RequiredPageIndex.Value & 0xFFFF).ToString("X4"),
						(def.OptionalPageIndex.Value & 0xFFFF).ToString("X4"),
						def.RequiredSegmentOffset.Value.ToString("X8"),
						def.OptionalSegmentOffset.Value.ToString("X8"),
						DatumIndex.ToIndex(def.DatumIndexBlock24.Value).ToString("X4"));
				}
				s.WriteLine();
			}
示例#21
0
				public static void Output(System.IO.StreamWriter s, TI.Block<block_10> block)
				{
					const string format = "\t\t\t{0}\t\t{1}\t{2}";

					s.WriteLine("\t\t{0}\tblock_10", block.Count);
					int x = 0;
					foreach (block_10 def in block)
					{
						s.WriteLine(format, (x++).ToString(), def.Start.Value.ToString("X4"), def.Length.Value.ToString("X4"));
					}
				}
示例#22
0
			public static void Output(StreamWriter s, TI.Block<resource_structure_type_block> block)
			{
				const string format =
					"\t{0}\t\t{1}" + Program.NewLine + // Name
					"\t\t\t{2}" // Guid
					;

				s.WriteLine("{0}\tresource_structure_type_block", block.Count);
				int x = 0;
				foreach (resource_structure_type_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.Name.ToString(),
						Util.ByteArrayToString(def.Guid.Data));
				}
			}
示例#23
0
			public static void Output(System.IO.StreamWriter s, TI.Block<sound_gestalt_60_block> block)
			{
				const string format = "\t{0}\t\t{1}";

				s.WriteLine("{0}\tsound_gestalt_60_block", block.Count);
				int x = 0;
				foreach (sound_gestalt_60_block def in block)
				{
					s.WriteLine(format, (x++).ToString(), def.Unknown00.Value.ToString("X8"));

					Output(s, def.Unknown04);
					block_10.Output(s, def.Unknown10);
				}
			}
示例#24
0
			public static void Output(StreamWriter s, TI.Block<cache_file_resource_gestalt_tag_resource_block> block)
			{
				const string format =
					"\t{0}\t\t{1}\t{2}\t{3}\t{4}.{5}" + Program.NewLine + // Header,Type,Flags,Reference,ReferenceTagGroup
					"\t\t\t{6:X8}\t{7:X8}\t{8:X8}" + Program.NewLine + // Offset, Size, ?Offset
					"\t\t\t{9:X4}\t{10:X4}\t{11:X8}" // 020, SegmentIndex, DefinitionOffset
					;

				s.WriteLine("{0}\ttag_resource_block", block.Count);
				int x = 0;
				foreach (cache_file_resource_gestalt_tag_resource_block def in block)
				{
					if (def.Reference.Datum != DatumIndex.Null)
					{
						s.WriteLine(format, x.ToString(),
							def.Header.Value.ToString("X4"), def.ResourceType.Value.ToString("X2"), def.Flags.Value.ToString("X2"), def.Reference.ToString(), def.Reference.GroupTag.Name,
							def.BlockOffset.Value.ToString("X8"), def.BlockSize.Value.ToString("X8"), def.UnknownOffset.Value.ToString("X8"),
							def.Unknown020.Value.ToString("X4"), def.SegmentIndex.Value.ToString("X4"), def.DefinitionOffset.Value.ToString("X8")
						);
						s.WriteLine();
						resource_fixup_block.Output(s, def.ResourceFixups);
						s.WriteLine();
						resource_definition_fixup_block.Output(s, def.ResourceDefinitionFixups);
					}
					else
						s.WriteLine("\t{0}\t\tNULL", x.ToString());
					x++;

					s.WriteLine();
				}
			}
示例#25
0
		public static void Output(System.IO.StreamWriter s, TI.Block<sound_gestalt_platform_codec_block> block)
		{
			const string format = "\t{0}\t\t{1}\t{2}\t{3}";

			s.WriteLine("{0}\tsound_gestalt_platform_codec_block", block.Count);
			int x = 0;
			foreach (sound_gestalt_platform_codec_block def in block)
			{
				s.WriteLine(format, (x++).ToString(), 
					def.Unknown00.Value.ToString(), def.Type.ToString(), def.Flags.ToString());
			}
		}
示例#26
0
			public static void Output(System.IO.StreamWriter s, TI.Block<cache_file_resource_gestalt_1DC_block> block)
			{
				const string format =
					"\t{0}\t\t{1}\t{2}\t{3}"
					;

				s.WriteLine("{0}\tcache_file_resource_gestalt_1DC_block", block.Count);
				int x = 0;
				foreach (cache_file_resource_gestalt_1DC_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.ThisIndex.Value.ToString("X4"), def.ElementCount.Value.ToString("X4"), def.BlockIndex.Value.ToString("X8")
						);
				}
			}
示例#27
0
			public static void Output(StreamWriter s, TI.Block<compression_codec_block> block)
			{
				s.WriteLine("{0}\tcompression_codec_block", block.Count);
				int x = 0;
				foreach (compression_codec_block def in block)
				{
					s.WriteLine("\t{0}\t\t{1}", (x++).ToString(),
						Util.ByteArrayToString(def.Guid.Data));
				}
				s.WriteLine();
			}
示例#28
0
			public static void Output(Blam.Halo3.CacheFileBase c, System.IO.StreamWriter s, TI.Block<cache_file_resource_gestalt_200_block> block)
			{
				const string format =
					"\t{0}\t\t{1}\t{2}\t{3}"
					;

				s.WriteLine("{0}\tcache_file_resource_gestalt_200_block", block.Count);
				int x = 0;
				foreach (cache_file_resource_gestalt_200_block def in block)
				{
					if (def.TagIndex.Value != -1)
						s.WriteLine(format, x.ToString(),
							def.Unknown08.Value.ToString("X8"), def.Unknown0C.Value.ToString("X8"), 
							c.GetTagIndexName((DatumIndex)def.TagIndex.Value, true)
							);
					else
						s.WriteLine("NULL");
					x++;
				}
			}
示例#29
0
			public static void Output(StreamWriter s, TI.Block<shared_cache_block> block)
			{
				s.WriteLine("{0}\tshared_cache_block", block.Count);
				int x = 0;
				foreach (shared_cache_block def in block)
				{
					s.WriteLine("\t{0}\t\t{1}\t{2}\t{3}\t{4}", (x++).ToString(),
						def.Unknown100.Value.ToString("X4"), def.Flags.Value.ToString("X4"), def.Unknown104.Value.ToString("X8"), def.CachePath.Value);
				}
				s.WriteLine();
			}
示例#30
0
文件: Bsp.cs 项目: CodeAsm/open-sauce
		public void Render(global_geometry_section_info_struct section_info,
					TI.Block<global_geometry_material_block> materials)
		{
			Section.Value.Render(section_info, materials);
		}
示例#31
0
			public static void Output(StreamWriter s, TI.Block<pages_block> block)
			{
				const string format =
					"\t{0}\t\t{1}\t{2}\t{3}\t{4}\t{5}" + Program.NewLine +
					"\t\t\t{6}\t{7}\t{8}" + Program.NewLine +
					"\t\t\t{9}" + Program.NewLine +
					"\t\t\t{10}" + Program.NewLine +
					"\t\t\t{11}" + Program.NewLine +
					"\t\t\t{12}" + Program.NewLine +
					"\t\t\t{13}\t{14}"
					;

				const string format_minmax =
					"\t\t\t{0:X4},{1:X4}\t{2},{3}" + Program.NewLine +		// Unknown006 short
					"\t\t\t{4:X4},{5:X4}\t{6},{7}" + Program.NewLine +		// Unknown054 short
					"\t\t\t{8:X4},{9:X4}\t{10},{11}"						// Unknown056 short
					;

				short Unknown006_Min = short.MaxValue, Unknown006_Max = 0; int Unknown006_MinIndex = -1, Unknown006_MaxIndex = -1;
				short Unknown054_Min = short.MaxValue, Unknown054_Max = 0; int Unknown054_MinIndex = -1, Unknown054_MaxIndex = -1;
				short Unknown056_Min = short.MaxValue, Unknown056_Max = 0; int Unknown056_MinIndex = -1, Unknown056_MaxIndex = -1;

				short s_val;

				s.WriteLine("{0}\tpages_block", block.Count);
				int x = 0;
				foreach (pages_block def in block)
				{
					s.WriteLine(format, (x++).ToString(),
						def.Header.Value.ToString("X4"), def.Flags.Value.ToString("X2"), def.CompressionCodec.Value.ToString(), def.SharedCache.Value.ToString("X4"), def.Unknown006.Value.ToString("X4"),
						def.BlockOffset.Value.ToString("X8"), def.BlockSizeCompressed.Value.ToString("X8"), def.BlockSizeUncompressed.Value.ToString("X8"),
						def.Crc.Value.ToString("X8"),
						Util.ByteArrayToString(def.EntireBufferHash.Data), Util.ByteArrayToString(def.FirstChunkHash.Data), Util.ByteArrayToString(def.LastChunkHash.Data),
						def.Unknown054.Value.ToString("X4"), def.Unknown056.Value.ToString("X4"));


					s_val = def.Unknown006.Value;
					if (s_val < Unknown006_Min) { Unknown006_Min = s_val; Unknown006_MinIndex = x; }
					if (s_val > Unknown006_Max) { Unknown006_Max = s_val; Unknown006_MaxIndex = x; }

					s_val = def.Unknown054.Value;
					if (s_val < Unknown054_Min) { Unknown054_Min = s_val; Unknown054_MinIndex = x; }
					if (s_val > Unknown054_Max) { Unknown054_Max = s_val; Unknown054_MaxIndex = x; }

					s_val = def.Unknown056.Value;
					if (s_val < Unknown056_Min) { Unknown056_Min = s_val; Unknown056_MinIndex = x; }
					if (s_val > Unknown056_Max) { Unknown056_Max = s_val; Unknown056_MaxIndex = x; }
				}
				s.WriteLine();

				s.WriteLine("Min\\Max");
				s.WriteLine(format_minmax,
					Unknown006_Min, Unknown006_Max, Unknown006_MinIndex, Unknown006_MaxIndex,
					Unknown054_Min, Unknown054_Max, Unknown054_MinIndex, Unknown054_MaxIndex,
					Unknown056_Min, Unknown056_Max, Unknown056_MinIndex, Unknown056_MaxIndex
					);

				s.WriteLine();
			}
示例#32
0
文件: Bsp.cs 项目: CodeAsm/open-sauce
			public void Render(TI.Block<global_geometry_material_block> materials)
			{
				RenderInfo.Value.Render(materials);
			}
示例#33
0
 static void UpdateVersion()
 {
     //Debug.Log ("update here");
     TI.ClickRate();
 }