public Task DumpDiscardPsAsync(IProgress <int> progress) { return(Task.Run(() => { if (!Directory.Exists("shaderDump")) { Directory.CreateDirectory("shaderDump"); } for (var i = 0; i < _candidateIds.Count; i++) { var id = _candidateIds[i]; var filename = _archive.VfsFilename(id); var outputPath = "shaderDump/" + filename; var binary = _archive.Get(id); var disassembly = D3DCompiler.Disassemble(binary); if (disassembly.Contains("discard_z")) { File.WriteAllBytes(outputPath, binary); File.WriteAllText(outputPath + ".lst", disassembly); } progress.Report(i + 1); } })); }
public Patcher(CrafArchive archive) { _archive = archive; _candidateIds = new List <int>(); for (var i = 0; i < _archive.Count(); i++) { var filename = _archive.VfsFilename(i); if (filename.StartsWith("g_buffer") && filename.EndsWith(".ps.sb")) { _candidateIds.Add(i); } } }