Beispiel #1
0
        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);
 }
Beispiel #4
0
        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);
                }
            }
        }