// Methods public static List <VifPacket> EvaluateBlock(BinaryReader reader, ushort blockSize) { List <VifPacket> results = new List <VifPacket>(); long blockEnd = reader.BaseStream.Position + (blockSize << 4); while (reader.BaseStream.Position < blockEnd) { VifTag vt = ReadVifTagHeader(reader); // Check if it's an unpack first if ((vt.Command & 0xF0) == 0x60 || (vt.Command & 0xF0) == 0x70) { results.Add(new VifUnpack(vt, reader)); } else { results.Add(new VifPacket(vt)); } } return(results); }
// Constructors public VifUnpack(VifTag vt, BinaryReader reader) : base(vt) { ReadElements(reader); }