// Configuration public override SaveFile Clone() { byte[] data = Write(DSV: false, GCI: true).Skip(Header.Length).ToArray(); var sav = new SAV3XD(data) { Header = (byte[])Header.Clone() }; return(sav); }
/// <summary>Creates an instance of a SaveFile using the given save data.</summary> /// <param name="data">Save data from which to create a SaveFile.</param> /// <returns>An appropriate type of save file for the given data, or null if the save data is invalid.</returns> public static SaveFile getVariantSAV(byte[] data) { // Pre-check for header/footer signatures SaveFile sav; byte[] header = new byte[0], footer = new byte[0]; CheckHeaderFooter(ref data, ref header, ref footer); switch (getSAVGeneration(data)) { // Main Games case GameVersion.Gen1: sav = new SAV1(data); break; case GameVersion.Gen2: sav = new SAV2(data); break; case GameVersion.Gen3: sav = new SAV3(data); break; case GameVersion.Gen4: sav = new SAV4(data); break; case GameVersion.Gen5: sav = new SAV5(data); break; case GameVersion.Gen6: sav = new SAV6(data); break; case GameVersion.Gen7: sav = new SAV7(data); break; // Side Games case GameVersion.COLO: sav = new SAV3Colosseum(data); break; case GameVersion.XD: sav = new SAV3XD(data); break; case GameVersion.RSBOX: sav = new SAV3RSBox(data); break; case GameVersion.BATREV: sav = new SAV4BR(data); break; // No pattern matched default: return(null); } sav.Header = header; sav.Footer = footer; return(sav); }
public static SaveFile? GetVariantSAV(SAV3GCMemoryCard MC) { // Pre-check for header/footer signatures SaveFile sav; byte[] data = MC.SelectedSaveData; CheckHeaderFooter(ref data, out var header, out var footer); switch (MC.SelectedGameVersion) { // Side Games case COLO: sav = new SAV3Colosseum(data, MC); break; case XD: sav = new SAV3XD(data, MC); break; case RSBOX: sav = new SAV3RSBox(data, MC); break; // No pattern matched default: return null; } sav.Header = header; sav.Footer = footer; return sav; }