diff --git a/PKHeX.Core/Util/Util.cs b/PKHeX.Core/Util/Util.cs
index b1d19d92a..f22064d28 100644
--- a/PKHeX.Core/Util/Util.cs
+++ b/PKHeX.Core/Util/Util.cs
@@ -89,6 +89,38 @@ public static uint GetHexValue(string value)
return result;
}
+ ///
+ /// Parses the hex string into a , skipping all characters except for valid digits.
+ ///
+ /// Hex String to parse
+ /// Parsed value
+ public static ulong GetHexValue64(string value)
+ {
+ ulong result = 0;
+ if (string.IsNullOrEmpty(value))
+ return result;
+
+ foreach (var c in value)
+ {
+ if (IsNum(c))
+ {
+ result <<= 4;
+ result += (uint)(c - '0');
+ }
+ else if (IsHexUpper(c))
+ {
+ result <<= 4;
+ result += (uint)(c - 'A' + 10);
+ }
+ else if (IsHexLower(c))
+ {
+ result <<= 4;
+ result += (uint)(c - 'a' + 10);
+ }
+ }
+ return result;
+ }
+
public static byte[] GetBytesFromHexString(string seed)
{
return Enumerable.Range(0, seed.Length)
diff --git a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs
index cb6812b06..e260d21ed 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/LoadSave.cs
@@ -400,6 +400,7 @@ private void LoadMisc8(PK8 pk8)
Stats.CB_DynamaxLevel.SelectedIndex = pk8.DynamaxLevel;
Stats.CHK_Gigantamax.Checked = pk8.CanGigantamax;
CB_HTLanguage.SelectedValue = pk8.HT_Language;
+ TB_HomeTracker.Text = pk8.Tracker.ToString("X16");
}
private void SaveMisc8(PK8 pk8)
diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs
index 9373e12f7..a78b6bfea 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.Designer.cs
@@ -120,10 +120,15 @@ private void InitializeComponent()
this.CHK_Shadow = new System.Windows.Forms.CheckBox();
this.FLP_ShinyLeaf = new System.Windows.Forms.FlowLayoutPanel();
this.L_ShinyLeaf = new System.Windows.Forms.Label();
+ this.ShinyLeaf = new PKHeX.WinForms.Controls.ShinyLeaf();
this.FLP_CatchRate = new System.Windows.Forms.FlowLayoutPanel();
this.L_CatchRate = new System.Windows.Forms.Label();
+ this.CR_PK1 = new PKHeX.WinForms.Controls.CatchRate();
this.FLP_SizeCP = new System.Windows.Forms.FlowLayoutPanel();
+ this.SizeCP = new PKHeX.WinForms.Controls.SizeCP();
this.Tab_Met = new System.Windows.Forms.TabPage();
+ this.TB_HomeTracker = new System.Windows.Forms.TextBox();
+ this.L_HomeTracker = new System.Windows.Forms.Label();
this.CHK_AsEgg = new System.Windows.Forms.CheckBox();
this.GB_EggConditions = new System.Windows.Forms.GroupBox();
this.CB_EggLocation = new System.Windows.Forms.ComboBox();
@@ -158,6 +163,8 @@ private void InitializeComponent()
this.L_MetTimeOfDay = new System.Windows.Forms.Label();
this.CB_MetTimeOfDay = new System.Windows.Forms.ComboBox();
this.Tab_Stats = new System.Windows.Forms.TabPage();
+ this.Stats = new PKHeX.WinForms.Controls.StatEditor();
+ this.Contest = new PKHeX.WinForms.Controls.ContestStat();
this.Tab_Attacks = new System.Windows.Forms.TabPage();
this.B_Records = new System.Windows.Forms.Button();
this.PB_WarnMove4 = new System.Windows.Forms.PictureBox();
@@ -215,6 +222,7 @@ private void InitializeComponent()
this.TB_ExtraByte = new System.Windows.Forms.MaskedTextBox();
this.CB_ExtraBytes = new System.Windows.Forms.ComboBox();
this.GB_OT = new System.Windows.Forms.GroupBox();
+ this.TID_Trainer = new PKHeX.WinForms.Controls.TrainerID();
this.Label_OTGender = new System.Windows.Forms.Label();
this.TB_OT = new System.Windows.Forms.TextBox();
this.Label_OT = new System.Windows.Forms.Label();
@@ -222,12 +230,6 @@ private void InitializeComponent()
this.SpeciesIDTip = new System.Windows.Forms.ToolTip(this.components);
this.NatureTip = new System.Windows.Forms.ToolTip(this.components);
this.Tip3 = new System.Windows.Forms.ToolTip(this.components);
- this.ShinyLeaf = new PKHeX.WinForms.Controls.ShinyLeaf();
- this.CR_PK1 = new PKHeX.WinForms.Controls.CatchRate();
- this.SizeCP = new PKHeX.WinForms.Controls.SizeCP();
- this.Stats = new PKHeX.WinForms.Controls.StatEditor();
- this.Contest = new PKHeX.WinForms.Controls.ContestStat();
- this.TID_Trainer = new PKHeX.WinForms.Controls.TrainerID();
this.tabMain.SuspendLayout();
this.Tab_Main.SuspendLayout();
this.FLP_Main.SuspendLayout();
@@ -1425,6 +1427,14 @@ private void InitializeComponent()
this.L_ShinyLeaf.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.L_ShinyLeaf.Click += new System.EventHandler(this.ClickShinyLeaf);
//
+ // ShinyLeaf
+ //
+ this.ShinyLeaf.Location = new System.Drawing.Point(110, 0);
+ this.ShinyLeaf.Margin = new System.Windows.Forms.Padding(0);
+ this.ShinyLeaf.Name = "ShinyLeaf";
+ this.ShinyLeaf.Size = new System.Drawing.Size(140, 56);
+ this.ShinyLeaf.TabIndex = 116;
+ //
// FLP_CatchRate
//
this.FLP_CatchRate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
@@ -1446,6 +1456,14 @@ private void InitializeComponent()
this.L_CatchRate.Text = "Catch Rate:";
this.L_CatchRate.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
+ // CR_PK1
+ //
+ this.CR_PK1.Location = new System.Drawing.Point(110, 0);
+ this.CR_PK1.Margin = new System.Windows.Forms.Padding(0);
+ this.CR_PK1.Name = "CR_PK1";
+ this.CR_PK1.Size = new System.Drawing.Size(162, 25);
+ this.CR_PK1.TabIndex = 10;
+ //
// FLP_SizeCP
//
this.FLP_SizeCP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
@@ -1456,9 +1474,20 @@ private void InitializeComponent()
this.FLP_SizeCP.Size = new System.Drawing.Size(272, 72);
this.FLP_SizeCP.TabIndex = 21;
//
+ // SizeCP
+ //
+ this.SizeCP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.SizeCP.Location = new System.Drawing.Point(50, 0);
+ this.SizeCP.Margin = new System.Windows.Forms.Padding(50, 0, 0, 0);
+ this.SizeCP.Name = "SizeCP";
+ this.SizeCP.Size = new System.Drawing.Size(204, 68);
+ this.SizeCP.TabIndex = 0;
+ //
// Tab_Met
//
this.Tab_Met.AllowDrop = true;
+ this.Tab_Met.Controls.Add(this.TB_HomeTracker);
+ this.Tab_Met.Controls.Add(this.L_HomeTracker);
this.Tab_Met.Controls.Add(this.CHK_AsEgg);
this.Tab_Met.Controls.Add(this.GB_EggConditions);
this.Tab_Met.Controls.Add(this.FLP_Met);
@@ -1470,6 +1499,27 @@ private void InitializeComponent()
this.Tab_Met.Text = "Met";
this.Tab_Met.UseVisualStyleBackColor = true;
//
+ // TB_HomeTracker
+ //
+ this.TB_HomeTracker.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.TB_HomeTracker.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+ this.TB_HomeTracker.Location = new System.Drawing.Point(110, 302);
+ this.TB_HomeTracker.MaxLength = 8;
+ this.TB_HomeTracker.Name = "TB_HomeTracker";
+ this.TB_HomeTracker.Size = new System.Drawing.Size(118, 20);
+ this.TB_HomeTracker.TabIndex = 10;
+ this.TB_HomeTracker.Text = "0123456789ABCDEF";
+ this.TB_HomeTracker.Validated += new System.EventHandler(this.Update_ID64);
+ //
+ // L_HomeTracker
+ //
+ this.L_HomeTracker.Location = new System.Drawing.Point(-13, 304);
+ this.L_HomeTracker.Name = "L_HomeTracker";
+ this.L_HomeTracker.Size = new System.Drawing.Size(120, 13);
+ this.L_HomeTracker.TabIndex = 9;
+ this.L_HomeTracker.Text = "HOME Tracker:";
+ this.L_HomeTracker.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
+ //
// CHK_AsEgg
//
this.CHK_AsEgg.AutoSize = true;
@@ -1856,11 +1906,38 @@ private void InitializeComponent()
this.Tab_Stats.Location = new System.Drawing.Point(4, 22);
this.Tab_Stats.Name = "Tab_Stats";
this.Tab_Stats.Padding = new System.Windows.Forms.Padding(3);
- this.Tab_Stats.Size = new System.Drawing.Size(307, 539);
+ this.Tab_Stats.Size = new System.Drawing.Size(192, 74);
this.Tab_Stats.TabIndex = 2;
this.Tab_Stats.Text = "Stats";
this.Tab_Stats.UseVisualStyleBackColor = true;
//
+ // Stats
+ //
+ this.Stats.EVsFishy = System.Drawing.Color.LightYellow;
+ this.Stats.EVsInvalid = System.Drawing.Color.Red;
+ this.Stats.EVsMaxed = System.Drawing.Color.Honeydew;
+ this.Stats.Location = new System.Drawing.Point(0, 0);
+ this.Stats.Name = "Stats";
+ this.Stats.Size = new System.Drawing.Size(270, 264);
+ this.Stats.StatDecreased = System.Drawing.Color.Blue;
+ this.Stats.StatHyperTrained = System.Drawing.Color.LightGreen;
+ this.Stats.StatIncreased = System.Drawing.Color.Red;
+ this.Stats.TabIndex = 1;
+ //
+ // Contest
+ //
+ this.Contest.CNT_Beauty = 0;
+ this.Contest.CNT_Cool = 0;
+ this.Contest.CNT_Cute = 0;
+ this.Contest.CNT_Sheen = 0;
+ this.Contest.CNT_Smart = 0;
+ this.Contest.CNT_Tough = 0;
+ this.Contest.Location = new System.Drawing.Point(21, 265);
+ this.Contest.Margin = new System.Windows.Forms.Padding(0);
+ this.Contest.Name = "Contest";
+ this.Contest.Size = new System.Drawing.Size(230, 50);
+ this.Contest.TabIndex = 2;
+ //
// Tab_Attacks
//
this.Tab_Attacks.AllowDrop = true;
@@ -1874,7 +1951,7 @@ private void InitializeComponent()
this.Tab_Attacks.Location = new System.Drawing.Point(4, 22);
this.Tab_Attacks.Name = "Tab_Attacks";
this.Tab_Attacks.Padding = new System.Windows.Forms.Padding(3);
- this.Tab_Attacks.Size = new System.Drawing.Size(307, 539);
+ this.Tab_Attacks.Size = new System.Drawing.Size(192, 74);
this.Tab_Attacks.TabIndex = 3;
this.Tab_Attacks.Text = "Attacks";
this.Tab_Attacks.UseVisualStyleBackColor = true;
@@ -2273,7 +2350,7 @@ private void InitializeComponent()
this.Tab_OTMisc.Location = new System.Drawing.Point(4, 22);
this.Tab_OTMisc.Name = "Tab_OTMisc";
this.Tab_OTMisc.Padding = new System.Windows.Forms.Padding(3);
- this.Tab_OTMisc.Size = new System.Drawing.Size(307, 539);
+ this.Tab_OTMisc.Size = new System.Drawing.Size(192, 74);
this.Tab_OTMisc.TabIndex = 4;
this.Tab_OTMisc.Text = "OT/Misc";
this.Tab_OTMisc.UseVisualStyleBackColor = true;
@@ -2603,6 +2680,13 @@ private void InitializeComponent()
this.GB_OT.TabStop = false;
this.GB_OT.Text = "Trainer Information";
//
+ // TID_Trainer
+ //
+ this.TID_Trainer.Location = new System.Drawing.Point(13, 18);
+ this.TID_Trainer.Name = "TID_Trainer";
+ this.TID_Trainer.Size = new System.Drawing.Size(178, 27);
+ this.TID_Trainer.TabIndex = 57;
+ //
// Label_OTGender
//
this.Label_OTGender.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
@@ -2643,65 +2727,6 @@ private void InitializeComponent()
this.Label_EncryptionConstant.Text = "Encryption Constant:";
this.Label_EncryptionConstant.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
//
- // ShinyLeaf
- //
- this.ShinyLeaf.Location = new System.Drawing.Point(110, 0);
- this.ShinyLeaf.Margin = new System.Windows.Forms.Padding(0);
- this.ShinyLeaf.Name = "ShinyLeaf";
- this.ShinyLeaf.Size = new System.Drawing.Size(140, 56);
- this.ShinyLeaf.TabIndex = 116;
- //
- // CR_PK1
- //
- this.CR_PK1.Location = new System.Drawing.Point(110, 0);
- this.CR_PK1.Margin = new System.Windows.Forms.Padding(0);
- this.CR_PK1.Name = "CR_PK1";
- this.CR_PK1.Size = new System.Drawing.Size(162, 25);
- this.CR_PK1.TabIndex = 10;
- //
- // SizeCP
- //
- this.SizeCP.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
- this.SizeCP.Location = new System.Drawing.Point(50, 0);
- this.SizeCP.Margin = new System.Windows.Forms.Padding(50, 0, 0, 0);
- this.SizeCP.Name = "SizeCP";
- this.SizeCP.Size = new System.Drawing.Size(204, 68);
- this.SizeCP.TabIndex = 0;
- //
- // Stats
- //
- this.Stats.EVsFishy = System.Drawing.Color.LightYellow;
- this.Stats.EVsInvalid = System.Drawing.Color.Red;
- this.Stats.EVsMaxed = System.Drawing.Color.Honeydew;
- this.Stats.Location = new System.Drawing.Point(0, 0);
- this.Stats.Name = "Stats";
- this.Stats.Size = new System.Drawing.Size(270, 264);
- this.Stats.StatDecreased = System.Drawing.Color.Blue;
- this.Stats.StatHyperTrained = System.Drawing.Color.LightGreen;
- this.Stats.StatIncreased = System.Drawing.Color.Red;
- this.Stats.TabIndex = 1;
- //
- // Contest
- //
- this.Contest.CNT_Beauty = 0;
- this.Contest.CNT_Cool = 0;
- this.Contest.CNT_Cute = 0;
- this.Contest.CNT_Sheen = 0;
- this.Contest.CNT_Smart = 0;
- this.Contest.CNT_Tough = 0;
- this.Contest.Location = new System.Drawing.Point(21, 265);
- this.Contest.Margin = new System.Windows.Forms.Padding(0);
- this.Contest.Name = "Contest";
- this.Contest.Size = new System.Drawing.Size(230, 50);
- this.Contest.TabIndex = 2;
- //
- // TID_Trainer
- //
- this.TID_Trainer.Location = new System.Drawing.Point(13, 18);
- this.TID_Trainer.Name = "TID_Trainer";
- this.TID_Trainer.Size = new System.Drawing.Size(178, 27);
- this.TID_Trainer.TabIndex = 57;
- //
// PKMEditor
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
@@ -3017,5 +3042,7 @@ private void InitializeComponent()
private System.Windows.Forms.ComboBox CB_Form;
private System.Windows.Forms.MaskedTextBox MT_Form;
private System.Windows.Forms.ComboBox CB_FormArgument;
+ private System.Windows.Forms.TextBox TB_HomeTracker;
+ private System.Windows.Forms.Label L_HomeTracker;
}
}
diff --git a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
index 133f2e058..3fa01f1ed 100644
--- a/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
+++ b/PKHeX.WinForms/Controls/PKM Editor/PKMEditor.cs
@@ -1465,6 +1465,19 @@ private void Update_ID(object sender, EventArgs e)
}
}
+ private void Update_ID64(object sender, EventArgs e)
+ {
+ if (!FieldsLoaded)
+ return;
+ // Trim out nonhex characters
+ if (sender == TB_HomeTracker && Entity is PK8 pk8)
+ {
+ var value = Util.GetHexValue64(TB_HomeTracker.Text);
+ pk8.Tracker = value;
+ TB_HomeTracker.Text = value.ToString("X16");
+ }
+ }
+
private void UpdateShadowID(object sender, EventArgs e)
{
if (!FieldsLoaded)