private void ReadZDoomAcs(ref BinaryReader reader) { byte[] nameBytes = new byte[4]; while (InputStream.Position < InputStream.Length) { if (reader.ReadInt32() == DirOffset) { // End of file. break; } InputStream.Seek(InputStream.Position - 4, SeekOrigin.Begin); reader.Read(nameBytes, 0, 4); string name = Encoding.ASCII.GetString(nameBytes); int size = reader.ReadInt32(); long pos = InputStream.Position; Console.WriteLine("Chunk " + name + " (" + size + " bytes)"); if (name == "ARAY") { ReadARAY(size, ref reader); } else if (name == "AINI") { ReadAINI(size, ref reader); } else if (name == "AIMP") { ReadAIMP(size, ref reader); } else if (name == "ASTR") { ReadASTR(size, ref reader); } else if (name == "FUNC") { ReadFUNC(size, ref reader); } else if (name == "FNAM") { ReadFNAM(size, ref reader); } else if (name == "MEXP") { ReadMEXP(size, ref reader); } else if (name == "MINI") { ReadMINI(size, ref reader); } else if (name == "MIMP") { ReadMIMP(size, ref reader); } else if (name == "MSTR") { ReadMSTR(size, ref reader); } else if (name == "SPTR") { ReadSPTR(size, ref reader); } else if (name == "SNAM") { ReadSNAM(size, ref reader); } else if (name == "SFLG") { ReadSFLG(size, ref reader); } else if (name == "STRL") { StringTable.AddRange(ReadStringTable(ref reader, false, true)); } else if (name == "STRE") { StringTable.AddRange(ReadStringTable(ref reader, true, true)); } else if (name == "LOAD") { ReadLOAD(size, ref reader); } else { Program.PrintError("Not implemented."); //throw new NotImplementedException(Format + " chunk " + name + " (" + size + ")"); } InputStream.Seek(pos + size, SeekOrigin.Begin); } ReadCode(ref reader); }