Beispiel #1
0
        public GCSaveData(GCGameSave gameSave, byte[] data)
        {
            this.raw       = data;
            this.gameSave  = gameSave;
            this.inventory = new Inventory(gameSave);

            if (gameSave.GameType == GameTypes.Colosseum)
            {
                this.pokePC = new ColosseumPokePC(gameSave);

                DecryptColosseum(this.raw, ByteHelper.SubByteArray(0x1DFEC, raw, 20));

                LoadColosseum();
            }
            else
            {
                this.pokePC = new XDPokePC(gameSave);

                this.encryptionKeys = new ushort[4];
                BigEndian.LoadArray(encryptionKeys, data, 8);
                DecryptXD(this.raw, encryptionKeys);

                LoadXD();
            }
        }
Beispiel #2
0
        public PlayerData(GCGameSave gameSave, byte[] data, GCSaveData parent)
            : base(gameSave, data, parent)
        {
            if (parent.Inventory.Items == null)
            {
                parent.Inventory.AddItemInventory();
            }

            if (gameSave.GameType == GameTypes.Colosseum)
            {
                AddPocket(ItemTypes.Items, 1920, 20, 999, true, false);
                AddPocket(ItemTypes.KeyItems, 2000, 43, 999, true, false);
                AddPocket(ItemTypes.PokeBalls, 2172, 16, 999, true, false);
                AddPocket(ItemTypes.TMCase, 2236, 64, 999, false, true);
                AddPocket(ItemTypes.Berries, 2492, 46, 999, false, true);
                AddPocket(ItemTypes.CologneCase, 2676, 3, 999, false, true);
                ((ColosseumPokePC)parent.PokePC).AddParty(ByteHelper.SubByteArray(48, data, 1872));
            }
            else
            {
                AddPocket(ItemTypes.Items, 1224, 30, 999, true, false);
                AddPocket(ItemTypes.KeyItems, 1344, 43, 999, true, false);
                AddPocket(ItemTypes.PokeBalls, 1516, 16, 999, true, false);
                AddPocket(ItemTypes.TMCase, 1580, 64, 999, false, true);
                AddPocket(ItemTypes.Berries, 1836, 46, 999, false, true);
                AddPocket(ItemTypes.CologneCase, 2020, 3, 999, false, true);
                AddPocket(ItemTypes.DiscCase, 2032, 60, 999, false, true);
                ((XDPokePC)parent.PokePC).AddParty(ByteHelper.SubByteArray(48, data, 1176));
            }
        }
 public ShadowPokemonData(GCGameSave gameSave, byte[] data, GCSaveData parent)
     : base(gameSave, data, parent)
 {
     this.raw = data;
     this.shadowInfoMap = new Dictionary<uint, XDShadowPokemonInfo>();
     this.shadowInfo = new XDShadowPokemonInfo[data.Length / 72];
     for (int i = 0; i < shadowInfo.Length; i++) {
         shadowInfo[i] = new XDShadowPokemonInfo(ByteHelper.SubByteArray(i * 72, data, 72));
         if (!this.shadowInfoMap.ContainsKey(shadowInfo[i].Personality))
             this.shadowInfoMap.Add(shadowInfo[i].Personality, shadowInfo[i]);
     }
 }
        public StrategyMemoData(GCGameSave gameSave, byte[] data, GCSaveData parent)
            : base(gameSave, data, parent)
        {
            this.entries = new List<StrategyMemoEntry>();
            ushort numEntries = Math.Min((ushort)500, BigEndian.ToUInt16(data, 0));
            //numEntries = 500;
            for (int i = 0; i < numEntries; i++) {
                entries.Add(new StrategyMemoEntry(ByteHelper.SubByteArray(4 + i * 12, data, 12), gameSave.GameType == GameTypes.XD));

                // Remove invalid entries caused by Trigger's PC corruption.
                if (entries[entries.Count - 1].SpeciesID == 0)
                    entries.RemoveAt(entries.Count - 1);
            }
        }
 public ShadowPokemonData(GCGameSave gameSave, byte[] data, GCSaveData parent)
     : base(gameSave, data, parent)
 {
     this.raw           = data;
     this.shadowInfoMap = new Dictionary <uint, XDShadowPokemonInfo>();
     this.shadowInfo    = new XDShadowPokemonInfo[data.Length / 72];
     for (int i = 0; i < shadowInfo.Length; i++)
     {
         shadowInfo[i] = new XDShadowPokemonInfo(ByteHelper.SubByteArray(i * 72, data, 72));
         if (!this.shadowInfoMap.ContainsKey(shadowInfo[i].Personality))
         {
             this.shadowInfoMap.Add(shadowInfo[i].Personality, shadowInfo[i]);
         }
     }
 }
        public DaycareData(GCGameSave gameSave, byte[] data, GCSaveData parent)
            : base(gameSave, data, parent)
        {
            if (parent.Inventory.Items == null)
            {
                parent.Inventory.AddItemInventory();
            }

            if (gameSave.GameType == GameTypes.Colosseum)
            {
                ((ColosseumPokePC)parent.PokePC).AddDaycare(ByteHelper.SubByteArray(0, data, 0x140));
            }
            else
            {
                ((XDPokePC)parent.PokePC).AddDaycare(ByteHelper.SubByteArray(0, data, 0xCC));
            }
        }
Beispiel #7
0
        public PCData(GCGameSave gameSave, byte[] data, GCSaveData parent)
            : base(gameSave, data, parent)
        {
            if (parent.Inventory.Items == null)
                parent.Inventory.AddItemInventory();

            if (gameSave.GameType == GameTypes.Colosseum) {
                ((ColosseumPokePC)parent.PokePC).Load(ByteHelper.SubByteArray(0, data, 9380 * 3));

                AddPCPocket(28140, 235, 999, true, false);
            }
            else {
                ((XDPokePC)parent.PokePC).Load(ByteHelper.SubByteArray(0, data, 5900 * 8));

                AddPCPocket(47200, 235, 999, true, false);
            }
        }
Beispiel #8
0
        public StrategyMemoData(GCGameSave gameSave, byte[] data, GCSaveData parent)
            : base(gameSave, data, parent)
        {
            this.entries = new List <StrategyMemoEntry>();
            ushort numEntries = Math.Min((ushort)500, BigEndian.ToUInt16(data, 0));

            //numEntries = 500;
            for (int i = 0; i < numEntries; i++)
            {
                entries.Add(new StrategyMemoEntry(ByteHelper.SubByteArray(4 + i * 12, data, 12), gameSave.GameType == GameTypes.XD));

                // Remove invalid entries caused by Trigger's PC corruption.
                if (entries[entries.Count - 1].SpeciesID == 0)
                {
                    entries.RemoveAt(entries.Count - 1);
                }
            }
        }
Beispiel #9
0
        public PCData(GCGameSave gameSave, byte[] data, GCSaveData parent)
            : base(gameSave, data, parent)
        {
            if (parent.Inventory.Items == null)
            {
                parent.Inventory.AddItemInventory();
            }

            if (gameSave.GameType == GameTypes.Colosseum)
            {
                ((ColosseumPokePC)parent.PokePC).Load(ByteHelper.SubByteArray(0, data, 9380 * 3));

                AddPCPocket(28140, 235, 999, true, false);
            }
            else
            {
                ((XDPokePC)parent.PokePC).Load(ByteHelper.SubByteArray(0, data, 5900 * 8));

                AddPCPocket(47200, 235, 999, true, false);
            }
        }
Beispiel #10
0
        public GCSaveData(GCGameSave gameSave, byte[] data)
        {
            this.raw = data;
            this.gameSave = gameSave;
            this.inventory = new Inventory(gameSave);

            if (gameSave.GameType == GameTypes.Colosseum) {
                this.pokePC = new ColosseumPokePC(gameSave);

                DecryptColosseum(this.raw, ByteHelper.SubByteArray(0x1DFEC, raw, 20));

                LoadColosseum();
            }
            else {
                this.pokePC = new XDPokePC(gameSave);

                this.encryptionKeys = new ushort[4];
                BigEndian.LoadArray(encryptionKeys, data, 8);
                DecryptXD(this.raw, encryptionKeys);

                LoadXD();
            }
        }
Beispiel #11
0
 public GCData(GCGameSave gameSave, byte[] data, GCSaveData parent)
 {
     this.raw = data;
     this.parent = parent;
     this.gameSave = gameSave;
 }
Beispiel #12
0
 public PurifierData(GCGameSave gameSave, byte[] data, GCSaveData parent)
     : base(gameSave, data, parent)
 {
     ((XDPokePC)parent.PokePC).AddPurifier((byte[])data.Clone());
 }
 public GameConfigData(GCGameSave gameSave, byte[] data, GCSaveData parent)
     : base(gameSave, data, parent)
 {
 }
Beispiel #14
0
 public GCData(GCGameSave gameSave, byte[] data, GCSaveData parent)
 {
     this.raw      = data;
     this.parent   = parent;
     this.gameSave = gameSave;
 }