87 lines
1.8 KiB
C#
87 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace LibDgf.Ps2.Vif
|
|
{
|
|
public struct VifCodeUnpack
|
|
{
|
|
private uint Value;
|
|
|
|
public bool Interrupt
|
|
{
|
|
get
|
|
{
|
|
return (Value & 0x80000000) != 0;
|
|
}
|
|
}
|
|
|
|
public bool Mask
|
|
{
|
|
get
|
|
{
|
|
return (Value & 0x10000000) != 0;
|
|
}
|
|
}
|
|
|
|
public VifUnpackVnType Vn
|
|
{
|
|
get
|
|
{
|
|
return (VifUnpackVnType)((Value >> 26) & 0x3);
|
|
}
|
|
}
|
|
|
|
public VifUnpackVlType Vl
|
|
{
|
|
get
|
|
{
|
|
return (VifUnpackVlType)((Value >> 24) & 0x3);
|
|
}
|
|
}
|
|
|
|
public byte Num
|
|
{
|
|
get
|
|
{
|
|
return (byte)(Value >> 16);
|
|
}
|
|
}
|
|
|
|
public bool Flag
|
|
{
|
|
get
|
|
{
|
|
return (Value & 0x8000) != 0;
|
|
}
|
|
}
|
|
|
|
public bool Unsigned
|
|
{
|
|
get
|
|
{
|
|
return (Value & 0x4000) != 0;
|
|
}
|
|
}
|
|
|
|
public ushort Address
|
|
{
|
|
get
|
|
{
|
|
return (ushort)(Value & 0x3ff);
|
|
}
|
|
}
|
|
|
|
public static implicit operator VifCode(VifCodeUnpack v)
|
|
{
|
|
return new VifCode { Value = v.Value | ((uint)VifCodeCmd.Unpack << 24) };
|
|
}
|
|
|
|
public static explicit operator VifCodeUnpack(VifCode v)
|
|
{
|
|
if ((v.Cmd & VifCodeCmd.Unpack) != VifCodeCmd.Unpack)
|
|
throw new ArgumentException("Not an UNPACK code", nameof(v));
|
|
return new VifCodeUnpack { Value = v.Value };
|
|
}
|
|
}
|
|
}
|