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(); } }
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)); } }
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); } }
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 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); } }
public GCData(GCGameSave gameSave, byte[] data, GCSaveData parent) { this.raw = data; this.parent = parent; this.gameSave = gameSave; }
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) { }