Example #1
0
        public VifPacketList Convert(BinaryFormat binary)
        {
            VifPacketList packetList = new VifPacketList();
            DataReader    reader     = new DataReader(binary.Stream);

            // Start reading tags until EOF
            while (!binary.Stream.EndOfStream)
            {
                // Read VIFcode
                VifPacket packet = new VifPacket();
                packet.Immediate = reader.ReadUInt16();
                packet.Num       = reader.ReadByte();
                packet.Command   = (VifCommands)reader.ReadByte();
                ReadPacketDataFromCommand(packet, binary.Stream);
                packetList.AddPacket(packet);
            }

            return(packetList);
        }
Example #2
0
        void ReadPacketDataFromCommand(VifPacket packet, DataStream stream)
        {
            DataReader reader = new DataReader(stream);

            switch (packet.Command)
            {
            case VifCommands.Nop:
            case VifCommands.StCycl:
            case VifCommands.Offset:
            case VifCommands.Base:
            case VifCommands.Itops:
            case VifCommands.StMod:
            case VifCommands.MskPath3:
            case VifCommands.Mark:
            case VifCommands.FlushE:
            case VifCommands.Flush:
            case VifCommands.FlushA:
            case VifCommands.MsCal:
            case VifCommands.MsCnt:
            case VifCommands.MsCalf:
                break;

            case VifCommands.StMask:
                packet.Data = reader.ReadBytes(4);
                break;

            case VifCommands.StRow:
            case VifCommands.StCol:
                packet.Data = reader.ReadBytes(4 * 4);
                break;

            case VifCommands.Direct:
            case VifCommands.DirectHl:
                packet.Data = reader.ReadBytes(packet.Immediate * 4 * 4);
                break;

            default:
                throw new NotSupportedException("Unsupported command: " + packet.Command);
            }
        }
Example #3
0
 public void AddPacket(VifPacket packet)
 {
     packets.Add(packet);
 }