예제 #1
0
        public void GetInt_ByteAligned()
        {
            var testBlock = new BitBlock(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 5, 0, 0, 0 });

            Assert.AreEqual(-1, testBlock.GetInt(0, 0, 32));
            Assert.AreEqual(5, testBlock.GetInt(4, 0, 32));
        }
예제 #2
0
 public ExplorersAttack(BitBlock bits)
 {
     IsValid    = bits[0];
     IsLinked   = bits[1];
     IsSwitched = bits[2];
     IsSet      = bits[3];
     ID         = bits.GetInt(0, 4, 10);
     PowerBoost = bits.GetInt(0, 14, 7);
 }
예제 #3
0
 public RBAttack(BitBlock bits)
 {
     IsValid    = bits[0];
     IsLinked   = bits[1];
     IsSwitched = bits[2];
     IsSet      = bits[3];
     ID         = bits.GetInt(0, 4, 9);
     PowerBoost = bits.GetInt(0, 13, 7);
 }
 public SkyQuicksaveAttack(BitBlock bits)
 {
     IsValid    = bits[0];
     IsLinked   = bits[1];
     IsSwitched = bits[2];
     IsSet      = bits[3];
     IsSealed   = bits[4];
     Unknown    = bits.GetRange(5, 11);
     ID         = bits.GetInt(0, 16, 16);
     PP         = bits.GetInt(0, 32, 8);
     PowerBoost = bits.GetInt(0, 40, 8);
 }
예제 #5
0
 public void Initialize(BitBlock bits)
 {
     IsValid   = bits.Bits[0];
     Flag1     = bits.Bits[1];
     Flag2     = bits.Bits[2];
     Flag3     = bits.Bits[3];
     Flag4     = bits.Bits[4];
     Flag5     = bits.Bits[5];
     Flag6     = bits.Bits[6];
     Flag7     = bits.Bits[7];
     Parameter = bits.GetInt(0, 8, 7);
     ID        = bits.GetInt(0, 15, 8);
 }
예제 #6
0
        public TDHeldItem(BitBlock bits)
        {
            bits.Position = 0;
            IsValid       = bits[0];
            Flag1         = bits[1];
            Flag2         = bits[2];
            Flag3         = bits[3];
            Flag4         = bits[4];
            Flag5         = bits[5];
            Flag6         = bits[6];
            Flag7         = bits[7];
            Parameter     = bits.GetInt(0, 8, 10);
            ID            = bits.GetInt(0, 18, 10);

            var heldBy = bits.GetInt(0, 28, 3);

            switch (heldBy)
            {
            case 0:
                Holder = ItemHolder.None;
                break;

            case 1:
                Holder = ItemHolder.TeamMember1;
                break;

            case 2:
                Holder = ItemHolder.TeamMember2;
                break;

            case 3:
                Holder = ItemHolder.TeamMember3;
                break;

            case 4:
                Holder = ItemHolder.TeamMember4;
                break;

            default:
                throw new ArgumentException("Invalid item holder: " + heldBy.ToString());
            }
        }
예제 #7
0
 private void Initialize(BitBlock bits)
 {
     Level     = bits.GetInt(0, 0, 7);
     ID        = bits.GetInt(0, 7, 9);
     MetAt     = bits.GetInt(0, 16, 7);
     Unk1      = bits.GetRange(23, 21);
     IQ        = bits.GetInt(0, 44, 10);
     HP        = bits.GetInt(0, 54, 10);
     Attack    = bits.GetInt(0, 64, 8);
     SpAttack  = bits.GetInt(0, 72, 8);
     Defense   = bits.GetInt(0, 80, 8);
     SpDefense = bits.GetInt(0, 88, 8);
     Exp       = bits.GetInt(0, 96, 24);
     Unk2      = bits.GetRange(120, 43);
     Attack1   = new RBAttack(bits.GetRange(163, RBAttack.BitLength));
     Attack2   = new RBAttack(bits.GetRange(183, RBAttack.BitLength));
     Attack3   = new RBAttack(bits.GetRange(203, RBAttack.BitLength));
     Attack4   = new RBAttack(bits.GetRange(223, RBAttack.BitLength));
     Name      = bits.GetStringPMD(0, 243, 10);
 }
 public void Initialize(BitBlock bits)
 {
     Unk1          = bits.GetRange(0, 80);
     TransformedID = new ExplorersPokemonId(bits.GetInt(0, 80, 16));
     ID            = new ExplorersPokemonId(bits.GetInt(0, 96, 16));
     Unk2          = bits.GetRange(112, 48);
     Level         = bits.GetInt(0, 144, 8);
     Unk3          = bits.GetRange(152, 48);
     CurrentHP     = bits.GetInt(0, 192, 16);
     MaxHP         = bits.GetInt(0, 208, 16);
     HPBoost       = bits.GetInt(0, 224, 16);
     Unk4          = bits.GetRange(240, 32);
     Attack        = bits.GetInt(0, 256, 8);
     Defense       = bits.GetInt(0, 264, 8);
     SpAttack      = bits.GetInt(0, 272, 8);
     SpDefense     = bits.GetInt(0, 280, 8);
     Exp           = bits.GetInt(0, 280, 32);
     Unk5          = bits.GetRange(320, 2408);
     Attack1       = new SkyQuicksaveAttack(bits.GetRange(2696 + 0 * SkyQuicksaveAttack.BitLength, SkyQuicksaveAttack.BitLength));
     Attack2       = new SkyQuicksaveAttack(bits.GetRange(2696 + 1 * SkyQuicksaveAttack.BitLength, SkyQuicksaveAttack.BitLength));
     Attack3       = new SkyQuicksaveAttack(bits.GetRange(2696 + 2 * SkyQuicksaveAttack.BitLength, SkyQuicksaveAttack.BitLength));
     Attack4       = new SkyQuicksaveAttack(bits.GetRange(2696 + 3 * SkyQuicksaveAttack.BitLength, SkyQuicksaveAttack.BitLength));
     Unk6          = bits.GetRange(2840, 592);
 }
예제 #9
0
 private void Initialize(BitBlock bits)
 {
     IsValid      = bits[0];
     Unk1         = bits.GetRange(1, 4);
     Level        = bits.GetInt(0, 5, 7);
     MetAt        = bits.GetInt(0, 12, 8);
     MetFloor     = bits.GetInt(0, 20, 7);
     Unk2         = bits[27];
     IQ           = bits.GetInt(0, 28, 10);
     RosterNumber = bits.GetInt(0, 38, 10);
     Unk3         = bits.GetRange(48, 22);
     ID           = new ExplorersPokemonId(bits.GetInt(0, 70, 11));
     CurrentHP    = bits.GetInt(0, 81, 10);
     MaxHP        = bits.GetInt(0, 81, 10);
     Attack       = bits.GetInt(0, 101, 8);
     SpAttack     = bits.GetInt(0, 109, 8);
     Defense      = bits.GetInt(0, 117, 8);
     SpDefense    = bits.GetInt(0, 125, 8);
     Exp          = bits.GetInt(0, 133, 24);
     Attack1      = new ExplorersActiveAttack(bits.GetRange(157, ExplorersActiveAttack.BitLength));
     Attack2      = new ExplorersActiveAttack(bits.GetRange(186, ExplorersActiveAttack.BitLength));
     Attack3      = new ExplorersActiveAttack(bits.GetRange(215, ExplorersActiveAttack.BitLength));
     Attack4      = new ExplorersActiveAttack(bits.GetRange(244, ExplorersActiveAttack.BitLength));
     Unk4         = bits.GetRange(273, 105);
     IQMap        = bits.GetRange(378, 69);
     Tactic       = bits.GetInt(0, 447, 4);
     Unk5         = bits.GetRange(451, 15);
     Name         = bits.GetStringPMD(0, 466, 10);
 }
 private void Initialize(BitBlock bits)
 {
     IsValid         = bits[0];
     Level           = bits.GetInt(0, 1, 7);
     ID              = new ExplorersPokemonId(bits.GetInt(0, 8, 11));
     MetAt           = bits.GetInt(0, 19, 8);
     MetFloor        = bits.GetInt(0, 27, 7);
     Unk1            = bits[34];
     EvolvedAtLevel1 = bits.GetInt(0, 35, 7);
     EvolvedAtLevel2 = bits.GetInt(0, 42, 7);
     IQ              = bits.GetInt(0, 49, 10);
     HP              = bits.GetInt(0, 59, 10);
     Attack          = bits.GetInt(0, 69, 8);
     SpAttack        = bits.GetInt(0, 77, 8);
     Defense         = bits.GetInt(0, 85, 8);
     SpDefense       = bits.GetInt(0, 93, 8);
     Exp             = bits.GetInt(0, 101, 24);
     IQMap           = bits.GetRange(125, 69);
     Tactic          = bits.GetInt(0, 194, 4);
     Attack1         = new ExplorersAttack(bits.GetRange(198, ExplorersAttack.BitLength));
     Attack2         = new ExplorersAttack(bits.GetRange(219, ExplorersAttack.BitLength));
     Attack3         = new ExplorersAttack(bits.GetRange(240, ExplorersAttack.BitLength));
     Attack4         = new ExplorersAttack(bits.GetRange(261, ExplorersAttack.BitLength));
     Name            = bits.GetStringPMD(0, 282, 10);
 }
 private void Initialize(BitBlock bits)
 {
     // Bit 0 is always 1 for some reason
     Level           = bits.GetInt(0, 1, 7);
     ID              = new ExplorersPokemonId(bits.GetInt(0, 8, 11));
     MetAt           = bits.GetInt(0, 19, 8);
     MetFloor        = bits.GetInt(0, 27, 7);
     Unk1            = bits[34];
     EvolvedAtLevel1 = bits.GetInt(0, 35, 7);
     EvolvedAtLevel2 = bits.GetInt(0, 42, 7);
     IQ              = bits.GetInt(0, 49, 10);
     HP              = bits.GetInt(0, 59, 10);
     Attack          = bits.GetInt(0, 69, 8);
     SpAttack        = bits.GetInt(0, 77, 8);
     Defense         = bits.GetInt(0, 85, 8);
     SpDefense       = bits.GetInt(0, 93, 8);
     Exp             = bits.GetInt(0, 101, 24);
     IQMap           = bits.GetRange(125, 92);
     Tactic          = bits.GetInt(0, 217, 4);
     Attack1         = new ExplorersAttack(bits.GetRange(221, ExplorersAttack.BitLength));
     Attack2         = new ExplorersAttack(bits.GetRange(242, ExplorersAttack.BitLength));
     Attack3         = new ExplorersAttack(bits.GetRange(263, ExplorersAttack.BitLength));
     Attack4         = new ExplorersAttack(bits.GetRange(284, ExplorersAttack.BitLength));
     Name            = bits.GetStringPMD(0, 305, 10);
     Unk2            = bits.GetRange(385, 3);
 }