public void ImportCodes(string AFileName, bool AQuiet = false) { if (File.Exists(AFileName)) { XmlDocument lXml = new XmlDocument(); XmlNodeList lCodes = null; XmlNode lCodeNode = null; XmlAttribute lAttribute = null; lXml.Load(AFileName); lCodes = lXml.SelectNodes("//genie/.."); FModified = true; XmlNode lDeleteNode = GameNode.FirstChild; while (lDeleteNode != null) { GameNode.RemoveChild(GameNode.FirstChild); lDeleteNode = GameNode.FirstChild; } GameCodes.Clear(); string lGameFileName = Path.Combine(Path.Combine(Path.Combine(Program.BaseDirectoryExternal, "games"), FGame.Code), FGame.Code + ".nes"); foreach (XmlNode lCurCode in lCodes) { NesFile lGame = new NesFile(lGameFileName); try { lGame.PRG = GameGeniePatcherNes.Patch(lGame.PRG, lCurCode["genie"].InnerText); lCodeNode = FXml.CreateElement("gamegenie"); GameNode.AppendChild(lCodeNode); lAttribute = FXml.CreateAttribute("code"); lAttribute.Value = lCurCode["genie"].InnerText.ToUpper().Trim(); lCodeNode.Attributes.Append(lAttribute); lAttribute = FXml.CreateAttribute("description"); lAttribute.Value = lCurCode["description"].InnerText; lCodeNode.Attributes.Append(lAttribute); GameCodes.Add(new GameGenieCode(lCurCode["genie"].InnerText.ToUpper().Trim(), lCurCode["description"].InnerText)); } catch (GameGenieFormatException) { if (!AQuiet) { Tasks.MessageForm.Show(Resources.Error, string.Format(Resources.GameGenieFormatError, lCurCode["genie"].InnerText, FGame.Name), Resources.sign_error); } } catch (GameGenieNotFoundException) { if (!AQuiet) { Tasks.MessageForm.Show(Resources.Error, string.Format(Resources.GameGenieNotFound, lCurCode["genie"].InnerText, FGame.Name), Resources.sign_error); } } } } }
public GBADaycare(IPokePC pokePC, byte[] data, GameCodes gameCode) { this.gameCode = gameCode; this.pokePC = pokePC; this.raw = data; if (gameCode == GameCodes.FireRedLeafGreen) { originalPokemon = new GBAPokemon[3]; finalPokemon = new GBAPokemon[3]; GBAPokemon pkm = new GBAPokemon(ByteHelper.SubByteArray(0, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[0] = pkm; } else { originalPokemon[0] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(0); } pkm = new GBAPokemon(ByteHelper.SubByteArray(140, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[1] = pkm; } else { originalPokemon[1] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(1); } pkm = new GBAPokemon(ByteHelper.SubByteArray(3352, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[2] = pkm; } else { originalPokemon[2] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(2); } } else if (gameCode == GameCodes.Emerald) { originalPokemon = new GBAPokemon[2]; finalPokemon = new GBAPokemon[2]; GBAPokemon pkm = new GBAPokemon(ByteHelper.SubByteArray(0, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[0] = pkm; } else { originalPokemon[0] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(0); } pkm = new GBAPokemon(ByteHelper.SubByteArray(140, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[1] = pkm; } else { originalPokemon[1] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(1); } } else if (gameCode == GameCodes.RubySapphire) { originalPokemon = new GBAPokemon[2]; finalPokemon = new GBAPokemon[2]; GBAPokemon pkm = new GBAPokemon(ByteHelper.SubByteArray(0, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[0] = pkm; } else { originalPokemon[0] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(0); } pkm = new GBAPokemon(ByteHelper.SubByteArray(80, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) { originalPokemon[1] = pkm; } else { originalPokemon[1] = GBAPokemon.CreateInvalidPokemon(pkm); } SetFinalPokemon(1); } } }
public void AddDaycare(byte[] data, GameCodes gameCode) { this.daycare = new GBADaycare(this, data, gameCode); }
public GBADaycare(IPokePC pokePC, byte[] data, GameCodes gameCode) { this.gameCode = gameCode; this.pokePC = pokePC; this.raw = data; if (gameCode == GameCodes.FireRedLeafGreen) { originalPokemon = new GBAPokemon[3]; finalPokemon = new GBAPokemon[3]; GBAPokemon pkm = new GBAPokemon(ByteHelper.SubByteArray(0, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[0] = pkm; else originalPokemon[0] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(0); } pkm = new GBAPokemon(ByteHelper.SubByteArray(140, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[1] = pkm; else originalPokemon[1] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(1); } pkm = new GBAPokemon(ByteHelper.SubByteArray(3352, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[2] = pkm; else originalPokemon[2] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(2); } } else if (gameCode == GameCodes.Emerald) { originalPokemon = new GBAPokemon[2]; finalPokemon = new GBAPokemon[2]; GBAPokemon pkm = new GBAPokemon(ByteHelper.SubByteArray(0, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[0] = pkm; else originalPokemon[0] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(0); } pkm = new GBAPokemon(ByteHelper.SubByteArray(140, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[1] = pkm; else originalPokemon[1] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(1); } } else if (gameCode == GameCodes.RubySapphire) { originalPokemon = new GBAPokemon[2]; finalPokemon = new GBAPokemon[2]; GBAPokemon pkm = new GBAPokemon(ByteHelper.SubByteArray(0, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[0] = pkm; else originalPokemon[0] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(0); } pkm = new GBAPokemon(ByteHelper.SubByteArray(80, raw, 80)); if (pkm.DexID != 0 && pkm.Checksum != 0 && pkm.Experience != 0) { if (pkm.IsValid) originalPokemon[1] = pkm; else originalPokemon[1] = GBAPokemon.CreateInvalidPokemon(pkm); SetFinalPokemon(1); } } }