Пример #1
0
        public WN3Form(SAV3 sav)
        {
            this.sav = sav;

            switch (sav.Version)
            {
            case GameVersion.E:
                Offset = Offset_E + 0x2E80;
                break;

            case GameVersion.FR or GameVersion.LG or GameVersion.FRLG:
                Offset = Offset_FRLG + 0x2E80;
                break;

            default:
                break;
            }

            InitializeComponent();

            if (sav.Language == 0)
            {
                LangJAPButton.Checked = true;
            }
            else
            {
                LangEUButton.Checked = true;
            }
        }
Пример #2
0
        public WN3Form(SAV3 sav)
        {
            this.sav = sav;
            Version  = sav.Version;

            if (Version == GameVersion.E)
            {
                Offset = Offset_E;
            }
            else if (Version == GameVersion.FR || Version == GameVersion.LG || Version == GameVersion.FRLG)
            {
                Offset = Offset_FRLG;
            }

            InitializeComponent();

            if (sav.Language == 0)
            {
                LangJAPButton.Checked = true;
            }
            else
            {
                LangEUButton.Checked = true;
            }
        }
Пример #3
0
        public ECBForm(SAV3 sav)
        {
            this.sav = sav;

            switch (sav.Version)
            {
            case GameVersion.R or GameVersion.S or GameVersion.RS:
                Length = Length_RS + 0x2E80;
                Offset = Offset_RS + 0x2E80;
                break;

            case GameVersion.E:
                Length = Length_FRLGE + 0x2E80;
                Offset = Offset_E + 0x2E80;
                break;

            case GameVersion.FR or GameVersion.LG or GameVersion.FRLG:
                Length = Length_FRLGE + 0x2E80;
                Offset = Offset_FRLG + 0x2E80;
                break;

            default:
                break;
            }

            InitializeComponent();
        }
Пример #4
0
        public SAV_RTC3(SaveFile sav)
        {
            InitializeComponent();
            WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
            SAV = (SAV3)(Origin = sav).Clone();

            ClockInitial = SAV.ClockInitial;
            ClockElapsed = SAV.ClockElapsed;
            LoadData();
        }
Пример #5
0
 public Roamer3(SAV3 sav)
 {
     Data   = (SAV = sav).Large;
     Offset = sav.Version switch
     {
         GameVersion.RS => 0x3144,
         GameVersion.E => 0x31DC,
         _ => 0x30D0, // FRLG
     };
     IsGlitched = sav.Version != GameVersion.E;
 }
Пример #6
0
        public SAV_Misc3(SaveFile sav)
        {
            InitializeComponent();
            WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
            SAV = (SAV3)(Origin = sav).Clone();

            LoadRecords();

            if (SAV is IGen3Joyful j)
            {
                ReadJoyful(j);
            }
            else
            {
                tabControl1.Controls.Remove(TAB_Joyful);
            }

            if (SAV is SAV3E)
            {
                ReadFerry();
                ReadBattleFrontier();
            }
            else
            {
                tabControl1.Controls.Remove(TAB_Ferry);
                tabControl1.Controls.Remove(TAB_BF);
            }

            if (SAV is SAV3FRLG frlg)
            {
                TB_RivalName.Text = frlg.RivalName;

                // Trainer Card Species
                ComboBox[] cba   = { CB_TCM1, CB_TCM2, CB_TCM3, CB_TCM4, CB_TCM5, CB_TCM6 };
                var        legal = GameInfo.FilteredSources.Species.ToList();
                for (int i = 0; i < cba.Length; i++)
                {
                    cba[i].Items.Clear();
                    cba[i].InitializeBinding();
                    cba[i].DataSource = new BindingSource(legal, null);
                    var g3Species = SAV.GetEventConst(0x43 + i);
                    var species   = SpeciesConverter.GetG4Species(g3Species);
                    cba[i].SelectedValue = species;
                }
            }
            else
            {
                TB_RivalName.Visible = L_TrainerName.Visible = GB_TCM.Visible = false;
            }

            NUD_Coins.Value = Math.Min(NUD_Coins.Maximum, SAV.Coin);
        }
        public MirageIslandForm(SAV3 sav)
        {
            InitializeComponent();

            this.sav = sav;

            seed = sav.GetEventConst(0x24);

            cache = new List <SlotCache>(sav.BoxSlotCount + (sav.HasParty ? 6 : 0));
            SlotInfoLoader.AddFromSaveFile(sav, cache);

            MirageIslandSeedBox.Value = seed;
        }
Пример #8
0
        public SAV_Roamer3(SaveFile sav)
        {
            SAV    = (SAV3)(Origin = sav).Clone();
            Reader = new Roamer3(SAV);
            InitializeComponent();
            WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);

            CB_Species.DisplayMember = "Text";
            CB_Species.ValueMember   = "Value";
            CB_Species.DataSource    = new BindingSource(GameInfo.SpeciesDataSource.Where(id => id.Value <= SAV.MaxSpeciesID).ToList(), null);

            LoadData();
        }
Пример #9
0
        public SAV_Misc3(SaveFile sav)
        {
            InitializeComponent();
            WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
            SAV = (SAV3)(Origin = sav).Clone();

            LoadRecords();

            if (SAV.FRLG || SAV.E)
            {
                ReadJoyful();
            }
            else
            {
                tabControl1.Controls.Remove(TAB_Joyful);
            }

            if (SAV.E)
            {
                ReadFerry();
                ReadBattleFrontier();
            }
            else
            {
                tabControl1.Controls.Remove(TAB_Ferry);
                tabControl1.Controls.Remove(TAB_BF);
            }

            if (SAV.FRLG)
            {
                TB_RivalName.Text = SAV.GetString(SAV.Large, 0x3A4C, 8);

                // Trainer Card Species
                ComboBox[] cba         = { CB_TCM1, CB_TCM2, CB_TCM3, CB_TCM4, CB_TCM5, CB_TCM6 };
                var        legal       = GameInfo.SpeciesDataSource.Where(v => v.Value <= SAV.MaxSpeciesID);
                var        speciesList = legal.Select(v => new ComboItem(v.Text, SpeciesConverter.GetG3Species(v.Value))).ToList();
                for (int i = 0; i < cba.Length; i++)
                {
                    cba[i].Items.Clear();
                    cba[i].InitializeBinding();
                    cba[i].DataSource    = new BindingSource(speciesList, null);
                    cba[i].SelectedValue = SAV.GetEventConst(0x43 + i);
                }
            }
            else
            {
                TB_RivalName.Visible = L_TrainerName.Visible = GB_TCM.Visible = false;
            }

            NUD_Coins.Value = Math.Min(NUD_Coins.Maximum, SAV.Coin);
        }
Пример #10
0
        public WC3Form(SAV3 sav)
        {
            this.sav = sav;
            Version  = sav.Version;

            InitializeComponent();

            if (sav.Language == 0)
            {
                LangJAPButton.Checked = true;
            }
            else
            {
                LangEUButton.Checked = true;
            }
        }
Пример #11
0
        public ME3Form(SAV3 sav)
        {
            this.sav = sav;
            Version  = sav.Version;

            if (Version == GameVersion.R || Version == GameVersion.S || Version == GameVersion.RS)
            {
                Offset = Offset_RS;
            }
            else if (Version == GameVersion.E)
            {
                Offset = Offset_E;
            }

            InitializeComponent();
        }
Пример #12
0
        public ME3Form(SAV3 sav)
        {
            this.sav = sav;

            switch (sav.Version)
            {
            case GameVersion.R or GameVersion.S or GameVersion.RS:
                Offset = Offset_RS + 0x2E80;
                break;

            case GameVersion.E:
                Offset = Offset_E + 0x2E80;
                break;

            default:
                break;
            }

            InitializeComponent();
        }
Пример #13
0
        public ECBForm(SAV3 sav)
        {
            this.sav = sav;
            Version  = sav.Version;

            if (Version == GameVersion.R || Version == GameVersion.S || Version == GameVersion.RS)
            {
                Length = Length_RS;
                Offset = Offset_RS;
            }
            else if (Version == GameVersion.E)
            {
                Length = Length_FRLGE;
                Offset = Offset_E;
            }
            else if (Version == GameVersion.FR || Version == GameVersion.LG || Version == GameVersion.FRLG)
            {
                Length = Length_FRLGE;
                Offset = Offset_FRLG;
            }

            InitializeComponent();
        }
Пример #14
0
        public ECTForm(SAV3 sav)
        {
            this.sav = sav;

            switch (sav.Version)
            {
            case GameVersion.R or GameVersion.S or GameVersion.RS:
                Offset = Offset_RS;
                break;

            case GameVersion.E:
                Offset = Offset_E;
                break;

            case GameVersion.FR or GameVersion.LG or GameVersion.FRLG:
                Offset = Offset_FRLG;
                break;

            default:
                break;
            }

            InitializeComponent();
        }
Пример #15
0
        public SAV_Misc3(SaveFile sav)
        {
            InitializeComponent();
            WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
            SAV = (SAV3)(Origin = sav).Clone();

            if (SAV.FRLG || SAV.E)
            {
                ReadJoyful();
            }
            else
            {
                tabControl1.Controls.Remove(TAB_Joyful);
            }

            if (SAV.E)
            {
                ReadFerry();
                ReadBattleFrontier();
            }
            else
            {
                tabControl1.Controls.Remove(TAB_Ferry);
                tabControl1.Controls.Remove(TAB_BF);
            }

            if (SAV.FRLG)
            {
                TB_OTName.Text = SAV.GetString(SAV.GetBlockOffset(4) + 0xBCC, 8);
                ComboBox[] cba            = { CB_TCM1, CB_TCM2, CB_TCM3, CB_TCM4, CB_TCM5, CB_TCM6 };
                int[]      HoennListMixed =
                {
                    277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300,
                    304, 305, 309, 310, 392, 393, 394, 311, 312, 306, 307, 364, 365, 366, 301, 302, 303, 370, 371, 372, 335, 336, 350, 320, 315, 316,
                    322, 355, 382, 383, 384, 356, 357, 337, 338, 353, 354, 386, 387, 363, 367, 368, 330, 331, 313, 314,
                    339, 340, 321, 351, 352, 308, 332, 333, 334, 344, 345, 358, 359, 380, 379, 348, 349, 323, 324,
                    326, 327, 318, 319, 388, 389, 390, 391, 328, 329, 385, 317, 377, 378, 361, 362, 369, 411, 376, 360,
                    346, 347, 341, 342, 343, 373, 374, 375, 381, 325, 395, 396, 397, 398, 399, 400,
                    401, 402, 403, 407, 408, 404, 405, 406, 409, 410
                };
                var speciesList = GameInfo.SpeciesDataSource.Where(v => v.Value <= SAV.MaxSpeciesID).Select(v => new ComboItem {
                    Text  = v.Text,
                    Value = v.Value < 252 ? v.Value : HoennListMixed[v.Value - 252],
                }).ToList();
                int ofsTCM = SAV.GetBlockOffset(2) + 0x106;
                for (int i = 0; i < cba.Length; i++)
                {
                    cba[i].Items.Clear();
                    cba[i].InitializeBinding();
                    cba[i].DataSource    = new BindingSource(speciesList, null);
                    cba[i].SelectedValue = (int)BitConverter.ToUInt16(SAV.Data, ofsTCM + (i << 1));
                }
            }
            else
            {
                TB_OTName.Visible = L_TrainerName.Visible = GB_TCM.Visible = false;
            }

            NUD_BP.Value    = Math.Min(NUD_BP.Maximum, SAV.BP);
            NUD_Coins.Value = Math.Min(NUD_Coins.Maximum, SAV.Coin);
        }
Пример #16
0
 public Record3(SAV3 sav) => SAV = sav;
Пример #17
0
        public SAV_SimpleTrainer(SaveFile sav)
        {
            SAV     = (Origin = sav).Clone();
            Loading = true;
            InitializeComponent();
            WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);

            cba = new[] { CHK_1, CHK_2, CHK_3, CHK_4, CHK_5, CHK_6, CHK_7, CHK_8 };
            TB_OTName.MaxLength = SAV.OTLength;
            B_MaxCash.Click    += (sender, e) => MT_Money.Text = SAV.MaxMoney.ToString();
            B_MaxCoins.Click   += (sender, e) => MT_Coins.Text = SAV.MaxCoins.ToString();
            MT_Money.Mask       = "00000000000".Substring(0, SAV.MaxMoney.ToString().Length);
            MT_Coins.Mask       = "00000000000".Substring(0, SAV.MaxCoins.ToString().Length);

            CB_Gender.Items.Clear();
            CB_Gender.Items.AddRange(Main.GenderSymbols.Take(2).ToArray()); // m/f depending on unicode selection

            L_SID.Visible     = MT_SID.Visible = SAV.Generation > 2;
            L_Coins.Visible   = B_MaxCoins.Visible = MT_Coins.Visible = SAV.Generation < 3;
            CB_Gender.Visible = SAV.Generation > 1;

            L_PikaFriend.Visible = MT_PikaFriend.Visible = SAV.Generation == 1;

            TB_OTName.Text          = SAV.OT;
            CB_Gender.SelectedIndex = SAV.Gender;
            MT_TID.Text             = SAV.TID.ToString("00000");
            MT_SID.Text             = SAV.SID.ToString("00000");
            MT_Money.Text           = SAV.Money.ToString();
            MT_Hours.Text           = SAV.PlayedHours.ToString();
            MT_Minutes.Text         = SAV.PlayedMinutes.ToString();
            MT_Seconds.Text         = SAV.PlayedSeconds.ToString();

            int badgeval = 0;

            if (SAV is SAV1 sav1)
            {
                MT_Coins.Text = sav1.Coin.ToString();
                badgeval      = sav1.Badges;

                L_Started.Visible = L_Fame.Visible = false;
                CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false;
                CAL_AdventureStartTime.Visible = CAL_HoFTime.Visible = false;
                GB_Map.Visible     = false;
                GB_Options.Visible = true;
                CB_BattleStyle.Items.AddRange(new[] { "Switch", "Set" });
                CB_SoundType.Items.AddRange(new[] { "Mono", "Stereo", "Earphone2", "Earphone3" });
                CB_TextSpeed.Items.AddRange(new[] { "0 (Instant)", "1 (Fast)", "2", "3 (Normal)", "4", "5 (Slow)", "6", "7" });

                CHK_BattleEffects.Checked    = sav1.BattleEffects;
                CB_BattleStyle.SelectedIndex = sav1.BattleStyleSwitch ? 0 : 1;
                CB_SoundType.SelectedIndex   = sav1.Sound;
                CB_TextSpeed.SelectedIndex   = sav1.TextSpeed;

                MT_PikaFriend.Text = sav1.PikaFriendship.ToString();
            }

            if (SAV is SAV2 sav2)
            {
                MT_Coins.Text = sav2.Coin.ToString();

                L_Started.Visible = L_Fame.Visible = false;
                CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false;
                CAL_AdventureStartTime.Visible = CAL_HoFTime.Visible = false;
                GB_Map.Visible     = false;
                GB_Options.Visible = true;
                CB_BattleStyle.Items.AddRange(new[] { "Switch", "Set" });
                CB_SoundType.Items.AddRange(new[] { "Mono", "Stereo" });
                CB_TextSpeed.Items.AddRange(new[] { "0 (Instant)", "1 (Fast)", "2", "3 (Normal)", "4", "5 (Slow)", "6", "7" });

                CHK_BattleEffects.Checked    = sav2.BattleEffects;
                CB_BattleStyle.SelectedIndex = sav2.BattleStyleSwitch ? 0 : 1;
                CB_SoundType.SelectedIndex   = sav2.Sound > 0 ? 1 : 0;
                CB_TextSpeed.SelectedIndex   = sav2.TextSpeed;
                badgeval = sav2.Badges;
                cba      = new[] { CHK_1, CHK_2, CHK_3, CHK_4, CHK_6, CHK_5, CHK_7, CHK_8, CHK_H1, CHK_H2, CHK_H3, CHK_H4, CHK_H5, CHK_H6, CHK_H7, CHK_H8 };
            }

            if (SAV is SAV3)
            {
                GB_Map.Visible = false;
                SAV3 sav3 = (SAV3)SAV;
                switch (sav3.Version)
                {
                case GameVersion.E: badgeval = sav3.Badges; break;

                case GameVersion.FRLG: badgeval = sav3.Badges; break;

                default: GB_Badges.Visible = false; break;     // RS
                }

                L_Started.Visible = L_Fame.Visible = false;
                CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false;
                CAL_AdventureStartTime.Visible = CAL_HoFTime.Visible = false;
            }
            if (SAV is SAV3Colosseum || SAV is SAV3XD)
            {
                GB_Map.Visible    = false;
                GB_Badges.Visible = false;
                L_Started.Visible = L_Fame.Visible = false;
                CAL_AdventureStartDate.Visible = CAL_HoFDate.Visible = false;
                CAL_AdventureStartTime.Visible = CAL_HoFTime.Visible = false;
                GB_Adventure.Visible           = false;
                return;
            }

            if (SAV is SAV4 sav4)
            {
                NUD_M.Value = sav4.M;
                NUD_X.Value = sav4.X;
                NUD_Z.Value = sav4.Z;
                NUD_Y.Value = sav4.Y;

                badgeval = sav4.Badges;
                if (sav4.Version == GameVersion.HGSS)
                {
                    badgeval |= sav4.Badges16 << 8;
                    cba       = cba.Concat(new[] { CHK_H1, CHK_H2, CHK_H3, CHK_H4, CHK_H5, CHK_H6, CHK_H7, CHK_H8 }).ToArray();
                }
            }
            else if (SAV is SAV5 s)
            {
                NUD_M.Value = s.M;
                NUD_X.Value = s.X;
                NUD_Z.Value = s.Z;
                NUD_Y.Value = s.Y;

                badgeval = s.Badges;
            }

            for (int i = 0; i < cba.Length; i++)
            {
                cba[i].Visible = true;
                cba[i].Checked = (badgeval & 1 << i) != 0;
            }

            CAL_HoFDate.Value            = new DateTime(2000, 1, 1).AddSeconds(SAV.SecondsToFame);
            CAL_HoFTime.Value            = new DateTime(2000, 1, 1).AddSeconds(SAV.SecondsToFame % 86400);
            CAL_AdventureStartDate.Value = new DateTime(2000, 1, 1).AddSeconds(SAV.SecondsToStart);
            CAL_AdventureStartTime.Value = new DateTime(2000, 1, 1).AddSeconds(SAV.SecondsToStart % 86400);

            Loading = false;
        }
Пример #18
0
        private void B_Save_Click(object sender, EventArgs e)
        {
            SAV.OT     = TB_OTName.Text;
            SAV.Gender = (byte)CB_Gender.SelectedIndex;

            SAV.TID   = (ushort)Util.ToUInt32(MT_TID.Text);
            SAV.SID   = (ushort)Util.ToUInt32(MT_SID.Text);
            SAV.Money = Util.ToUInt32(MT_Money.Text);

            SAV.PlayedHours   = ushort.Parse(MT_Hours.Text);
            SAV.PlayedMinutes = ushort.Parse(MT_Minutes.Text) % 60;
            SAV.PlayedSeconds = ushort.Parse(MT_Seconds.Text) % 60;

            // Copy Badges
            int badgeval = 0;

            for (int i = 0; i < cba.Length; i++)
            {
                badgeval |= (cba[i].Checked ? 1 : 0) << i;
            }

            if (SAV is SAV1)
            {
                SAV1 sav1 = (SAV1)SAV;
                sav1.Coin   = (ushort)Math.Min(Util.ToUInt32(MT_Coins.Text), SAV.MaxCoins);
                sav1.Badges = badgeval & 0xFF;

                var pf = Util.ToUInt32(MT_PikaFriend.Text);
                if (pf > 255)
                {
                    pf = 255;
                }
                sav1.PikaFriendship = (byte)pf;

                sav1.BattleEffects     = CHK_BattleEffects.Checked;
                sav1.BattleStyleSwitch = CB_BattleStyle.SelectedIndex == 0;
                sav1.Sound             = CB_SoundType.SelectedIndex;
                sav1.TextSpeed         = CB_TextSpeed.SelectedIndex;
            }

            if (SAV is SAV2)
            {
                SAV2 sav2 = (SAV2)SAV;
                sav2.Coin   = (ushort)Math.Min(Util.ToUInt32(MT_Coins.Text), SAV.MaxCoins);
                sav2.Badges = badgeval & 0xFFFF;

                sav2.BattleEffects     = CHK_BattleEffects.Checked;
                sav2.BattleStyleSwitch = CB_BattleStyle.SelectedIndex == 0;
                sav2.Sound             = CB_SoundType.SelectedIndex > 0 ? 2 : 0;
                sav2.TextSpeed         = CB_TextSpeed.SelectedIndex;
            }

            if (SAV is SAV3)
            {
                SAV3 sav3 = (SAV3)SAV;
                sav3.Badges = badgeval & 0xFF;
            }

            if (SAV is SAV4)
            {
                SAV4 s = (SAV4)SAV;
                if (MapUpdated)
                {
                    s.M = (int)NUD_M.Value;
                    s.X = (int)NUD_X.Value;
                    s.Z = (int)NUD_Z.Value;
                    s.Y = (int)NUD_Y.Value;
                }
                s.Badges = badgeval & 0xFF;
                if (s.Version == GameVersion.HGSS)
                {
                    s.Badges16 = badgeval >> 8;
                }
            }
            else if (SAV is SAV5)
            {
                SAV5 s = (SAV5)SAV;
                if (MapUpdated)
                {
                    s.M = (int)NUD_M.Value;
                    s.X = (int)NUD_X.Value;
                    s.Z = (int)NUD_Z.Value;
                    s.Y = (int)NUD_Y.Value;
                }
                s.Badges = badgeval & 0xFF;
            }

            SAV.SecondsToStart = getSeconds(CAL_AdventureStartDate, CAL_AdventureStartTime);
            SAV.SecondsToFame  = getSeconds(CAL_HoFDate, CAL_HoFTime);

            SAV.Data.CopyTo(Main.SAV.Data, 0);
            Main.SAV.Edited = true;
            Close();
        }