diff --git a/RNGReporter/DSParametersIVCheck.Designer.cs b/RNGReporter/DSParametersIVCheck.Designer.cs index 5433618..032e581 100644 --- a/RNGReporter/DSParametersIVCheck.Designer.cs +++ b/RNGReporter/DSParametersIVCheck.Designer.cs @@ -231,6 +231,7 @@ private void InitializeComponent() this.maskedTextBoxLevel.Name = "maskedTextBoxLevel"; this.maskedTextBoxLevel.Size = new System.Drawing.Size(36, 20); this.maskedTextBoxLevel.TabIndex = 7; + this.maskedTextBoxLevel.Tag = "level"; this.maskedTextBoxLevel.ValidatingType = typeof(int); // // maskedTextBoxDef diff --git a/RNGReporter/DexIVCheck.Designer.cs b/RNGReporter/DexIVCheck.Designer.cs index b6790d2..16e1d8b 100644 --- a/RNGReporter/DexIVCheck.Designer.cs +++ b/RNGReporter/DexIVCheck.Designer.cs @@ -391,6 +391,7 @@ private void InitializeComponent() this.maskedTextBoxLevel.Name = "maskedTextBoxLevel"; this.maskedTextBoxLevel.Size = new System.Drawing.Size(36, 20); this.maskedTextBoxLevel.TabIndex = 7; + this.maskedTextBoxLevel.Tag = "level"; this.maskedTextBoxLevel.ValidatingType = typeof(int); // // maskedTextBoxDef diff --git a/RNGReporter/GameCube.cs b/RNGReporter/GameCube.cs index 745006e..69cacab 100644 --- a/RNGReporter/GameCube.cs +++ b/RNGReporter/GameCube.cs @@ -241,7 +241,6 @@ private void generateGales() private void checkSeedGales(uint hp, uint atk, uint def, uint spa, uint spd, uint spe) { uint x8 = hp | (atk << 5) | (def << 10); - uint x8_2 = x8 ^ 0x8000; uint ex8 = spe | (spa << 5) | (spd << 10); uint ex8_2 = ex8 ^ 0x8000; uint ivs_1b = x8 << 16; @@ -257,12 +256,12 @@ private void checkSeedGales(uint hp, uint atk, uint def, uint spa, uint spd, uin uint pid = (pid1 & 0xFFFF0000) | (pid2 >> 16); uint nature = pid - 25 * (pid / 25); uint galesSeed = reverseXD(seedb); - bool pass = (natureList == null || natureList.Contains(nature)) ? true : false; + bool pass = (natureList == null || natureList.Contains(nature)); uint xorSeed = galesSeed ^ 0x80000000; uint xorPID = pid ^= 0x80008000; uint xorNature = xorPID - 25 * (xorPID / 25); - bool xorPass = (natureList == null || natureList.Contains(xorNature)) ? true : false; + bool xorPass = (natureList == null || natureList.Contains(xorNature)); switch (shadow) { @@ -641,7 +640,6 @@ private void generateColo() private void checkSeed(uint hp, uint atk, uint def, uint spa, uint spd, uint spe) { uint x8 = hp + (atk << 5) + (def << 10); - uint x8_2 = x8 ^ 0x8000; uint ex8 = spe + (spa << 5) + (spd << 10); uint ex8_2 = ex8 ^ 0x8000; uint ivs_1b = x8 << 16; @@ -1248,7 +1246,6 @@ private void generateR() private void checkSeedR(uint hp, uint atk, uint def, uint spa, uint spd, uint spe) { uint x4 = hp | (atk << 5) | (def << 10); - uint x4_2 = x4 ^ 0x8000; uint ex4 = spe | (spa << 5) | (spd << 10); uint ex4_2 = ex4 ^ 0x8000; uint ivs_1b = x4 << 16; diff --git a/RNGReporter/MainForm.Designer.cs b/RNGReporter/MainForm.Designer.cs index 6b749ef..924fb32 100644 --- a/RNGReporter/MainForm.Designer.cs +++ b/RNGReporter/MainForm.Designer.cs @@ -87,6 +87,7 @@ private void InitializeComponent() this.bitSeedToTimeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.jirachiGenerationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.pIDToIVsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.iVsToFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.togamiCalcToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.pokespotToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); @@ -216,7 +217,6 @@ private void InitializeComponent() this.maskedTextBoxMaxFrames = new RNGReporter.Controls.MaskedTextBox2(); this.comboBoxMethod = new RNGReporter.GlassComboBox(); this.checkBoxMemoryLink = new System.Windows.Forms.CheckBox(); - this.iVsToFrameToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStripGrid.SuspendLayout(); this.menuStrip1.SuspendLayout(); this.contextMenuStripTimeFinder.SuspendLayout(); @@ -703,6 +703,13 @@ private void InitializeComponent() this.pIDToIVsToolStripMenuItem.Text = "PID to IVs"; this.pIDToIVsToolStripMenuItem.Click += new System.EventHandler(this.pIDToIVsToolStripMenuItem_Click); // + // iVsToFrameToolStripMenuItem + // + this.iVsToFrameToolStripMenuItem.Name = "iVsToFrameToolStripMenuItem"; + this.iVsToFrameToolStripMenuItem.Size = new System.Drawing.Size(283, 22); + this.iVsToFrameToolStripMenuItem.Text = "IVs to Frame"; + this.iVsToFrameToolStripMenuItem.Click += new System.EventHandler(this.iVsToFrameToolStripMenuItem_Click); + // // togamiCalcToolStripMenuItem // this.togamiCalcToolStripMenuItem.Name = "togamiCalcToolStripMenuItem"; @@ -1979,13 +1986,6 @@ private void InitializeComponent() this.checkBoxMemoryLink.UseVisualStyleBackColor = true; this.checkBoxMemoryLink.Visible = false; // - // iVsToFrameToolStripMenuItem - // - this.iVsToFrameToolStripMenuItem.Name = "iVsToFrameToolStripMenuItem"; - this.iVsToFrameToolStripMenuItem.Size = new System.Drawing.Size(283, 22); - this.iVsToFrameToolStripMenuItem.Text = "IVs to Frame"; - this.iVsToFrameToolStripMenuItem.Click += new System.EventHandler(this.iVsToFrameToolStripMenuItem_Click); - // // MainForm // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); @@ -2054,7 +2054,7 @@ private void InitializeComponent() this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); this.MainMenuStrip = this.menuStrip1; this.Name = "MainForm"; - this.Text = " RNG Reporter 10.1.9 T4"; + this.Text = " RNG Reporter 10.1.9"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); this.Load += new System.EventHandler(this.MainForm_Load); this.contextMenuStripGrid.ResumeLayout(false); diff --git a/RNGReporter/PokeSpot.Designer.cs b/RNGReporter/PokeSpot.Designer.cs index de6a333..fae4786 100644 --- a/RNGReporter/PokeSpot.Designer.cs +++ b/RNGReporter/PokeSpot.Designer.cs @@ -28,9 +28,9 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - RNGReporter.Controls.CheckBoxProperties checkBoxProperties3 = new RNGReporter.Controls.CheckBoxProperties(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); RNGReporter.Controls.CheckBoxProperties checkBoxProperties1 = new RNGReporter.Controls.CheckBoxProperties(); + RNGReporter.Controls.CheckBoxProperties checkBoxProperties2 = new RNGReporter.Controls.CheckBoxProperties(); this.L_mezapa = new System.Windows.Forms.Label(); this.genderType = new System.Windows.Forms.ComboBox(); this.L_sex = new System.Windows.Forms.Label(); @@ -40,7 +40,6 @@ private void InitializeComponent() this.label1 = new System.Windows.Forms.Label(); this.Shiny_Check = new System.Windows.Forms.CheckBox(); this.label3 = new System.Windows.Forms.Label(); - this.status = new System.Windows.Forms.Label(); this.label5 = new System.Windows.Forms.Label(); this.label6 = new System.Windows.Forms.Label(); this.textBoxSeed = new RNGReporter.Controls.MaskedTextBox2(); @@ -61,7 +60,6 @@ private void InitializeComponent() this.anyGender = new RNGReporter.GlassButton(); this.anyAbility = new RNGReporter.GlassButton(); this.search = new RNGReporter.GlassButton(); - this.cancel = new RNGReporter.GlassButton(); this.id = new RNGReporter.Controls.MaskedTextBox2(); this.sid = new RNGReporter.Controls.MaskedTextBox2(); this.maxFrame = new RNGReporter.Controls.MaskedTextBox2(); @@ -168,16 +166,6 @@ private void InitializeComponent() this.label3.Text = "PokeSpot Type"; this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // - // status - // - this.status.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.status.Location = new System.Drawing.Point(9, 472); - this.status.Name = "status"; - this.status.Size = new System.Drawing.Size(279, 20); - this.status.TabIndex = 299; - this.status.Text = "Awaiting command"; - this.status.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; - // // label5 // this.label5.Location = new System.Drawing.Point(27, 156); @@ -239,7 +227,7 @@ private void InitializeComponent() this.dataGridViewResult.ShowCellToolTips = false; this.dataGridViewResult.ShowEditingIcon = false; this.dataGridViewResult.ShowRowErrors = false; - this.dataGridViewResult.Size = new System.Drawing.Size(734, 207); + this.dataGridViewResult.Size = new System.Drawing.Size(734, 227); this.dataGridViewResult.TabIndex = 318; // // dataGridViewTextBoxColumn0 @@ -259,8 +247,8 @@ private void InitializeComponent() // dataGridViewTextBoxColumn1 // this.dataGridViewTextBoxColumn1.DataPropertyName = "PID"; - dataGridViewCellStyle2.Font = new System.Drawing.Font("Consolas", 8.75F); - this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle2; + dataGridViewCellStyle1.Font = new System.Drawing.Font("Consolas", 8.75F); + this.dataGridViewTextBoxColumn1.DefaultCellStyle = dataGridViewCellStyle1; this.dataGridViewTextBoxColumn1.HeaderText = "PID"; this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; this.dataGridViewTextBoxColumn1.ReadOnly = true; @@ -385,28 +373,15 @@ private void InitializeComponent() // this.search.BackColor = System.Drawing.Color.AntiqueWhite; this.search.ForeColor = System.Drawing.Color.Black; - this.search.Location = new System.Drawing.Point(590, 231); + this.search.Location = new System.Drawing.Point(671, 233); this.search.Name = "search"; this.search.OuterBorderColor = System.Drawing.Color.Transparent; this.search.ShineColor = System.Drawing.SystemColors.Window; this.search.Size = new System.Drawing.Size(75, 23); this.search.TabIndex = 328; - this.search.Text = "Search"; + this.search.Text = "Generate"; this.search.Click += new System.EventHandler(this.search_Click); // - // cancel - // - this.cancel.BackColor = System.Drawing.Color.AntiqueWhite; - this.cancel.ForeColor = System.Drawing.Color.Black; - this.cancel.Location = new System.Drawing.Point(671, 231); - this.cancel.Name = "cancel"; - this.cancel.OuterBorderColor = System.Drawing.Color.Transparent; - this.cancel.ShineColor = System.Drawing.SystemColors.Window; - this.cancel.Size = new System.Drawing.Size(75, 23); - this.cancel.TabIndex = 330; - this.cancel.Text = "Cancel"; - this.cancel.Click += new System.EventHandler(this.cancel_Click); - // // id // this.id.Hex = false; @@ -443,8 +418,8 @@ private void InitializeComponent() // comboBoxNature // this.comboBoxNature.BlankText = "Any"; - checkBoxProperties3.ForeColor = System.Drawing.SystemColors.ControlText; - this.comboBoxNature.CheckBoxProperties = checkBoxProperties3; + checkBoxProperties1.ForeColor = System.Drawing.SystemColors.ControlText; + this.comboBoxNature.CheckBoxProperties = checkBoxProperties1; this.comboBoxNature.DisplayMemberSingleItem = ""; this.comboBoxNature.DropDownHeight = 300; this.comboBoxNature.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; @@ -457,8 +432,8 @@ private void InitializeComponent() // comboBoxSpotType // this.comboBoxSpotType.BlankText = "Any"; - checkBoxProperties1.ForeColor = System.Drawing.SystemColors.ControlText; - this.comboBoxSpotType.CheckBoxProperties = checkBoxProperties1; + checkBoxProperties2.ForeColor = System.Drawing.SystemColors.ControlText; + this.comboBoxSpotType.CheckBoxProperties = checkBoxProperties2; this.comboBoxSpotType.DisplayMemberSingleItem = ""; this.comboBoxSpotType.DropDownHeight = 110; this.comboBoxSpotType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; @@ -478,7 +453,6 @@ private void InitializeComponent() this.Controls.Add(this.maxFrame); this.Controls.Add(this.sid); this.Controls.Add(this.id); - this.Controls.Add(this.cancel); this.Controls.Add(this.search); this.Controls.Add(this.anyAbility); this.Controls.Add(this.anyGender); @@ -488,7 +462,6 @@ private void InitializeComponent() this.Controls.Add(this.textBoxSeed); this.Controls.Add(this.label6); this.Controls.Add(this.label5); - this.Controls.Add(this.status); this.Controls.Add(this.label3); this.Controls.Add(this.label2); this.Controls.Add(this.label1); @@ -500,7 +473,6 @@ private void InitializeComponent() this.Controls.Add(this.abilityType); this.Name = "PokeSpot"; this.Text = "PokeSpot"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.PokeSpot_FormClosing); this.Load += new System.EventHandler(this.PokeSpot_Load); ((System.ComponentModel.ISupportInitialize)(this.dataGridViewResult)).EndInit(); this.ResumeLayout(false); @@ -518,7 +490,6 @@ private void InitializeComponent() private System.Windows.Forms.Label label1; private System.Windows.Forms.CheckBox Shiny_Check; private System.Windows.Forms.Label label3; - private System.Windows.Forms.Label status; private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label6; private Controls.MaskedTextBox2 textBoxSeed; @@ -539,7 +510,6 @@ private void InitializeComponent() private GlassButton anyGender; private GlassButton anyAbility; private GlassButton search; - private GlassButton cancel; private Controls.MaskedTextBox2 id; private Controls.MaskedTextBox2 sid; private Controls.MaskedTextBox2 maxFrame; diff --git a/RNGReporter/PokeSpot.cs b/RNGReporter/PokeSpot.cs index b792246..188d062 100644 --- a/RNGReporter/PokeSpot.cs +++ b/RNGReporter/PokeSpot.cs @@ -1,14 +1,8 @@ using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; using System.Linq; -using System.Text; using System.Threading; -using System.Threading.Tasks; using System.Windows.Forms; -using RNGReporter.Objects; using System.Globalization; namespace RNGReporter.Objects @@ -16,17 +10,12 @@ namespace RNGReporter.Objects public partial class PokeSpot : Form { private readonly String[] Natures = { "Hardy", "Lonely", "Brave", "Adamant", "Naughty", "Bold", "Docile", "Relaxed", "Impish", "Lax", "Timid", "Hasty", "Serious", "Jolly", "Naive", "Modest", "Mild", "Quiet", "Bashful", "Rash", "Calm", "Gentle", "Sassy", "Careful", "Quirky" }; - private Thread searchThread; - private bool refresh; private List displayList; - private ThreadDelegate gridUpdate; - private BindingSource binding = new BindingSource(); - private bool isSearching = false; - private uint shinyval; - private bool abort = false; - private List natureList; - private List spotList; - private List rngList; + private List natureList, spotList; + private uint[] rngList; + private uint genderFilter, abilityFilter, shinyNum, shinyval; + private int j; + private bool shinyCheck; public PokeSpot() { @@ -41,7 +30,7 @@ public PokeSpot(int TID, int SID) id.Text = TID.ToString(); sid.Text = SID.ToString(); dataGridViewResult.AutoGenerateColumns = false; - abort = false; + rngList = new uint[6]; } private void PokeSpot_Load(object sender, EventArgs e) @@ -59,28 +48,9 @@ private void setComboBox() comboBoxSpotType.CheckBoxItems[0].Checked = false; } - private void PokeSpot_FormClosing(object sender, FormClosingEventArgs e) - { - if (searchThread != null) - searchThread.Abort(); - abort = true; - } - private void search_Click(object sender, EventArgs e) { - if (isSearching) - { - status.Text = "Previous search is still running"; - return; - } - - dataGridViewResult.Rows.Clear(); - - isSearching = true; displayList = new List(); - binding = new BindingSource { DataSource = displayList }; - dataGridViewResult.DataSource = binding; - status.Text = "Searching"; try { shinyval = (uint.Parse(id.Text) ^ uint.Parse(sid.Text)) >> 3; @@ -108,115 +78,112 @@ private void search_Click(object sender, EventArgs e) if (temp.Count != 0) spotList = temp; - uint gender = (uint)genderType.SelectedIndex; - uint ability = (uint)abilityType.SelectedIndex; - bool shinyCheck = Shiny_Check.Checked; - rngList = new List(); + genderFilter = (uint)genderType.SelectedIndex; + abilityFilter = (uint)abilityType.SelectedIndex; + shinyCheck = Shiny_Check.Checked; - searchThread = new Thread(() => searchPokeSpot(seed, frame, gender, ability, shinyCheck)); - searchThread.Start(); - - var update = new Thread(updateGUI); - update.Start(); + searchPokeSpot(seed, frame); + dataGridViewResult.DataSource = displayList; + dataGridViewResult.AutoResizeColumns(); } - private void searchPokeSpot(uint seed, uint frame, uint gender, uint ability, bool shinyCheck) + private void searchPokeSpot(uint seed, uint frame) { var rng = new XdRng(seed); - rngList.Add(seed); + rngList[0] = seed; + + for (int x = 1; x < 6; x++) + rngList[x] = rng.GetNext32BitNumber(); - for (int x = 0; x < 5; x++) - rngList.Add(rng.GetNext32BitNumber()); + j = 5; - for (uint x = 1; x < frame + 1; x++, rngList.RemoveAt(0), rngList.Add(rng.GetNext32BitNumber())) + for (uint x = 1; x < frame + 1; x++, rngList[j] = rng.GetNext32BitNumber()) { - filterPokeSpot(rngList[0], x, gender, ability, shinyCheck); - if ((x & 0xFF) == 0) - refresh = true; + if (++j > 5) + j = 0; + filterPokeSpot(x); } - isSearching = false; - status.Invoke((MethodInvoker)(() => status.Text = "Done. - Awaiting Command")); } - private void filterPokeSpot(uint seed, uint frame, uint gender, uint ability, bool shinyCheck) + private void filterPokeSpot(uint frame) { - uint pid1 = rngList[4] >> 16; - uint pid2 = rngList[5] >> 16; + uint pid1 = rngList[j >= 2 ? j - 2 : j + 4] >> 16; + uint pid2 = rngList[j >= 1 ? j - 1 : j + 5] >> 16; uint pid = (pid1 << 16) | pid2; uint nature = pid - 25 * (pid / 25); if (natureList != null && !natureList.Contains(nature)) return; + shinyNum = (pid1 ^ pid2) >> 3; String shiny = ""; if (shinyCheck) { - uint shinyNum = (pid1 ^ pid2) >> 3; if (shinyNum != shinyval) return; shiny = "!!!"; } - if (ability != 0) + uint ability = pid & 1; + if (abilityFilter != 0) { - uint actualAbility = pid & 1; - if (actualAbility != (ability - 1)) + if (ability != (abilityFilter - 1)) return; } - switch (gender) + uint gender = pid & 255; + switch (genderFilter) { case 1: - if ((pid & 255) < 127) + if (gender < 127) return; break; case 2: - if ((pid & 255) > 126) + if (gender > 126) return; break; case 3: - if ((pid & 255) < 191) + if (gender < 191) return; break; case 4: - if ((pid & 255) > 190) + if (gender > 190) return; break; case 5: - if ((pid & 255) < 64) + if (gender < 64) return; break; case 6: - if ((pid & 255) > 63) + if (gender > 63) return; break; case 7: - if ((pid & 255) < 31) + if (gender < 31) return; break; case 8: - if ((pid & 255) > 30) + if (gender > 30) return; break; } - calcPokeSpot(seed, pid, frame, nature, gender, ability, shiny); + calcPokeSpot(pid, frame, nature, gender, ability, shiny); } - private void calcPokeSpot(uint seed, uint pid, uint frame, uint nature, uint gender, uint ability, String shiny) + private void calcPokeSpot(uint pid, uint frame, uint nature, uint gender, uint ability, String shiny) { - uint call1 = rngList[1] >> 16; + uint call1 = rngList[j >= 5 ? j -5 : j + 1] >> 16; uint currentCall = call1 - 3 * (call1 / 3); if (currentCall == 0) { String spotType = ""; - uint call2 = rngList[3] >> 16; - uint call3 = rngList[4] >> 16; + uint call2 = rngList[j >= 3 ? j - 3 : j + 3] >> 16; + uint call3 = rngList[j >= 2 ? j - 2 : j + 4] >> 16; if (shiny == "") { - uint shinyNum = ((pid >> 16) ^ (pid & 0xFFFF)) >> 3; if (shinyNum == shinyval) shiny = "!!!"; } @@ -267,12 +234,10 @@ private void calcPokeSpot(uint seed, uint pid, uint frame, uint nature, uint gen } String stringNature = Natures[nature]; - gender = pid & 255; char gender1; char gender2; char gender3; char gender4; - ability = pid & 1; gender1 = gender < 31 ? 'F' : 'M'; gender2 = gender < 64 ? 'F' : 'M'; @@ -281,7 +246,7 @@ private void calcPokeSpot(uint seed, uint pid, uint frame, uint nature, uint gen displayList.Add(new PokeSpotDisplay { - Seed = seed.ToString("x").ToUpper(), + Seed = rngList[j].ToString("x").ToUpper(), Frame = (int)frame, PID = pid.ToString("x").ToUpper(), Shiny = shiny, @@ -297,60 +262,6 @@ private void calcPokeSpot(uint seed, uint pid, uint frame, uint nature, uint gen } } - private void cancel_Click(object sender, EventArgs e) - { - if (isSearching) - { - isSearching = false; - status.Text = "Cancelled. - Awaiting Command"; - searchThread.Abort(); - } - } - - private void updateGUI() - { - gridUpdate = dataGridUpdate; - ThreadDelegate resizeGrid = dataGridViewResult.AutoResizeColumns; - try - { - bool alive = true; - while (alive) - { - if (refresh) - { - Invoke(gridUpdate); - refresh = false; - } - if (searchThread == null || !searchThread.IsAlive) - { - alive = false; - } - - Thread.Sleep(500); - } - } - finally - { - if (!abort) - { - Invoke(gridUpdate); - Invoke(resizeGrid); - } - } - } - - - #region Nested type: ThreadDelegate - - private delegate void ThreadDelegate(); - - #endregion - - private void dataGridUpdate() - { - binding.ResetBindings(true); - } - private void anyPokeSpot_Click(object sender, EventArgs e) { comboBoxSpotType.ClearSelection(); diff --git a/RNGReporter/PokeSpot.resx b/RNGReporter/PokeSpot.resx index 3a68887..e1f1890 100644 --- a/RNGReporter/PokeSpot.resx +++ b/RNGReporter/PokeSpot.resx @@ -141,28 +141,4 @@ True - - True - - - True - - - True - - - True - - - True - - - True - - - True - - - True - \ No newline at end of file diff --git a/RNGReporter/Properties/AssemblyInfo.cs b/RNGReporter/Properties/AssemblyInfo.cs index 02b038a..65756b7 100644 --- a/RNGReporter/Properties/AssemblyInfo.cs +++ b/RNGReporter/Properties/AssemblyInfo.cs @@ -35,5 +35,5 @@ // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("10.1.8")] -[assembly: AssemblyFileVersion("10.1.8")] \ No newline at end of file +[assembly: AssemblyVersion("10.1.9")] +[assembly: AssemblyFileVersion("10.1.9")] \ No newline at end of file diff --git a/RNGReporter/TimeFinder3rd.cs b/RNGReporter/TimeFinder3rd.cs index 4b72c02..b77775a 100644 --- a/RNGReporter/TimeFinder3rd.cs +++ b/RNGReporter/TimeFinder3rd.cs @@ -1636,70 +1636,61 @@ private void methodH1IV(uint[] ivsLower, uint[] ivsUpper, int method) private void checkSeed1(uint hp, uint atk, uint def, uint spa, uint spd, uint spe, uint ability, uint gender, int method) { - uint x4 = hp + (atk << 5) + (def << 10); + uint x4 = hp | (atk << 5) | (def << 10); uint x4_2 = x4 ^ 0x8000; - uint ex4 = spe + (spa << 5) + (spd << 10); + uint ex4 = spe | (spa << 5) | (spd << 10); uint ex4_2 = ex4 ^ 0x8000; - uint ivs_1a = x4_2 << 16; uint ivs_1b = x4 << 16; - for (uint cnt = 0; cnt <= 0xFFFF; cnt += 2) + for (uint cnt = 0; cnt <= 0xFFFF; cnt++) { - uint seeda = ivs_1a + cnt; uint seedb = ivs_1b + cnt; - uint[] seedList = { seeda, seedb, seeda + 1, seedb + 1 }; - for (int x = 0; x < 4; x++) + uint ivs_2 = forward(seedb) >> 16; + if (ivs_2 == ex4 || ivs_2 == ex4_2) { - uint ivs_2 = forward(seedList[x]) >> 16; - if (ivs_2 == ex4 || ivs_2 == ex4_2) + uint pid2 = reverse(seedb); + uint pid1 = reverse(pid2); + uint seed = reverse(pid1); + uint pid = (pid2 & 0xFFFF0000) | (pid1 >> 16); + uint nature = pid - 25 * (pid / 25); + + uint xorSeed = seed ^ 0x80000000; + uint xorPID = pid ^ 0x80008000; + uint xorNature = xorPID - 25 * (xorPID / 25); + + if (method == 0) { - uint pid2 = reverse(seedList[x]); - uint pid1 = reverse(pid2); - uint seed = reverse(pid1); - pid1 >>= 16; - pid2 >>= 16; - uint pid = (pid2 << 16) | pid1; - uint nature = pid == 0 ? 0 : pid - 25 * (pid / 25); - if (Check1(ivs_2, nature, spd, spa, spe)) + if (natureList == null || natureList.Contains(nature)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, 0); + if (natureList == null || natureList.Contains(xorNature)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, xorPID, xorNature, xorSeed, method, 0); + } + else + { + if (natureList == null || natureList.Contains(nature)) { - if (method == 0 || method == 1 || method == 2) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, 0); - else + getEncounterSlot(seed, pid, out int slot, out seed); + if (validatePID(seed) == pid) { - int slot; - getEncounterSlot(seed, pid, out slot, out seed); - if (validatePID(seed) == pid) - { - if (slotsList == null) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); - else if (slotsList.Contains((uint)slot)) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); - } + if (slotsList == null || slotsList.Contains((uint)slot)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); + } + } + if (natureList == null || natureList.Contains(xorNature)) + { + getEncounterSlot(xorSeed, xorPID, out int slot, out xorSeed); + if (validatePID(xorSeed) == xorPID) + { + if (slotsList == null || slotsList.Contains((uint)slot)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, xorPID, xorNature, xorSeed, method, slot); } } } + } + } } - - private bool Check1(uint iv, uint nature, uint hp, uint atk, uint def) - { - uint test_hp = (iv & 0x7C00) >> 10; - uint test_atk = (iv & 0x3E0) >> 5; - uint test_def = iv & 0x1f; - - if (test_hp == hp && test_atk == atk && test_def == def) - { - - if (natureList == null) - return true; - else - if (natureList.Contains(nature)) - return true; - } - - return false; - } #endregion #region Method H124 Frame @@ -1726,7 +1717,7 @@ private void methodH124Frame(uint[] ivsLower, uint[] ivsUpper, int method) { uint pid = 0; uint nature = (sisterSeed == 0 ? slist[(int)n + 3] : slist[(int)n + 3] ^ 0x80000000) >> 16; - nature = nature < 25 ? nature : nature - 25 * (nature / 25); + nature = nature - 25 * (nature / 25); if (natureList == null || natureList.Contains(nature)) { int count = 3; @@ -1737,7 +1728,7 @@ private void methodH124Frame(uint[] ivsLower, uint[] ivsUpper, int method) pid1 = sisterSeed == 0 ? rlist[(int)(n + 1 + count)] : rlist[(int)(n + 1 + count)] ^ 0x8000; pid2 = sisterSeed == 0 ? rlist[(int)(n + 2 + count)] : rlist[(int)(n + 2 + count)] ^ 0x8000; pid = (pid2 << 16) | pid1; - if ((pid < 25 ? pid : pid - 25 * (pid / 25)) == nature) + if ((pid - 25 * (pid / 25)) == nature) flag = false; else count += 2; @@ -1749,7 +1740,7 @@ private void methodH124Frame(uint[] ivsLower, uint[] ivsUpper, int method) ivs = createIVs(sisterSeed == 0 ? rlist[(int)(n + 4 + count)] : rlist[(int)(n + 4 + count)] ^ 0x8000, sisterSeed == 0 ? rlist[(int)(n + 5 + count)] : rlist[(int)(n + 5 + count)] ^ 0x8000, ivsLower, ivsUpper); else ivs = createIVs(sisterSeed == 0 ? rlist[(int)(n + 3 + count)] : rlist[(int)(n + 3 + count)] ^ 0x8000, sisterSeed == 0 ? rlist[(int)(n + 5 + count)] : rlist[(int)(n + 4 + count)] ^ 0x8000, ivsLower, ivsUpper); - if (ivs.Length != 1) + if (ivs != null) { filterSeed(ivs[0], ivs[1], ivs[2], ivs[3], ivs[4], ivs[5], ability, gender, pid, nature, sisterSeed == 0 ? slist[(int)n] : slist[(int)n] ^ 0x80000000, method, slot); } @@ -1792,70 +1783,59 @@ private void methodH2IV(uint[] ivsLower, uint[] ivsUpper, int method) private void checkSeed2(uint hp, uint atk, uint def, uint spa, uint spd, uint spe, uint ability, uint gender, int method) { - uint x4 = hp + (atk << 5) + (def << 10); - uint x4_2 = x4 ^ 0x8000; - uint ex4 = spe + (spa << 5) + (spd << 10); + uint x4 = hp | (atk << 5) | (def << 10); + uint ex4 = spe | (spa << 5) | (spd << 10); uint ex4_2 = ex4 ^ 0x8000; - uint ivs_1a = x4_2 << 16; uint ivs_1b = x4 << 16; - for (uint cnt = 0; cnt <= 0xFFFF; cnt += 2) + for (uint cnt = 0; cnt <= 0xFFFF; cnt++) { - uint seeda = ivs_1a + cnt; uint seedb = ivs_1b + cnt; - uint[] seedList = { seeda, seedb, seeda + 1, seedb + 1 }; - for (int x = 0; x < 4; x++) + uint ivs_2 = forward(seedb) >> 16; + if (ivs_2 == ex4 || ivs_2 == ex4_2) { - uint ivs_2 = forward(seedList[x]) >> 16; - if (ivs_2 == ex4 || ivs_2 == ex4_2) + uint pid2 = reverse(reverse(seedb)); + uint pid1 = reverse(pid2); + uint seed = reverse(pid1); + uint pid = (pid2 & 0xFFFF0000) | (pid1 >> 16); + uint nature = pid - 25 * (pid / 25); + + uint xorSeed = seed ^ 0x80000000; + uint xorPID = pid ^ 0x80008000; + uint xorNature = xorPID - 25 * (xorPID / 25); + + if (method == 1) { - uint pid2 = reverse(reverse(seedList[x])); - uint pid1 = reverse(pid2); - uint seed = reverse(pid1); - pid1 >>= 16; - pid2 >>= 16; - uint pid = (pid2 << 16) | pid1; - uint nature = pid == 0 ? 0 : pid - 25 * (pid / 25); - if (Check2(ivs_2, nature, spd, spa, spe)) + if (natureList == null || natureList.Contains(nature)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, 0); + if (natureList == null || natureList.Contains(xorNature)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, xorPID, xorNature, xorSeed, method, 0); + } + else + { + if (natureList == null || natureList.Contains(nature)) { - if (method == 0 || method == 1 || method == 2) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, 0); - else + getEncounterSlot(seed, pid, out int slot, out seed); + if (validatePID(seed) == pid) { - int slot; - getEncounterSlot(seed, pid, out slot, out seed); - if (validatePID(seed) == pid) - { - if (slotsList == null) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); - else if (slotsList.Contains((uint)slot)) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); - } + if (slotsList == null || slotsList.Contains((uint)slot)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); + } + } + if (natureList == null || natureList.Contains(xorNature)) + { + getEncounterSlot(xorSeed, xorPID, out int slot, out xorSeed); + if (validatePID(xorSeed) == xorPID) + { + if (slotsList == null || slotsList.Contains((uint)slot)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, xorPID, xorNature, xorSeed, method, slot); } } } + } } } - - private bool Check2(uint iv, uint nature, uint hp, uint atk, uint def) - { - uint test_hp = iv & 0x1f; - uint test_atk = (iv & 0x3E0) >> 5; - uint test_def = (iv & 0x7C00) >> 10; - - if (test_hp == hp && test_atk == atk && test_def == def) - { - - if (natureList == null) - return true; - else - if (natureList.Contains(nature)) - return true; - } - - return false; - } #endregion #region Method 4 IV @@ -1882,70 +1862,58 @@ private void methodH4IV(uint[] ivsLower, uint[] ivsUpper, int method) private void checkSeed4(uint hp, uint atk, uint def, uint spa, uint spd, uint spe, uint ability, uint gender, int method) { - uint x4 = hp + (atk << 5) + (def << 10); - uint x4_2 = x4 ^ 0x8000; - uint ex4 = spe + (spa << 5) + (spd << 10); + uint x4 = hp | (atk << 5) | (def << 10); + uint ex4 = spe | (spa << 5) | (spd << 10); uint ex4_2 = ex4 ^ 0x8000; - uint ivs_1a = x4_2 << 16; uint ivs_1b = x4 << 16; - for (uint cnt = 0; cnt <= 0xFFFF; cnt += 2) + for (uint cnt = 0; cnt <= 0xFFFF; cnt++) { - uint seeda = ivs_1a + cnt; uint seedb = ivs_1b + cnt; - uint[] seedList = { seeda, seedb, seeda + 1, seedb + 1 }; - for (int x = 0; x < 4; x++) + uint ivs_2 = forward(forward(seedb)) >> 16; + if (ivs_2 == ex4 || ivs_2 == ex4_2) { - uint ivs_2 = forward(forward(seedList[x])) >> 16; - if (ivs_2 == ex4 || ivs_2 == ex4_2) + uint pid2 = reverse(seedb); + uint pid1 = reverse(pid2); + uint seed = reverse(pid1); + uint pid = (pid2 & 0xFFFF0000) | (pid1 >> 16); + uint nature = pid - 25 * (pid / 25); + + uint xorSeed = seed ^ 0x80000000; + uint xorPID = pid ^ 0x80008000; + uint xorNature = xorPID - 25 * (xorPID / 25); + + if (method == 2) { - uint pid2 = reverse(seedList[x]); - uint pid1 = reverse(pid2); - uint seed = reverse(pid1); - pid1 >>= 16; - pid2 >>= 16; - uint pid = (pid2 << 16) | pid1; - uint nature = pid == 0 ? 0 : pid - 25 * (pid / 25); - if (Check4(ivs_2, nature, spd, spa, spe)) + if (natureList == null || natureList.Contains(nature)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, 0); + if (natureList == null || natureList.Contains(xorNature)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, xorPID, xorNature, xorSeed, method, 0); + } + else + { + if (natureList == null || natureList.Contains(nature)) { - if (method == 0 || method == 1 || method == 2) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, 0); - else + getEncounterSlot(seed, pid, out int slot, out seed); + if (validatePID(seed) == pid) { - int slot; - getEncounterSlot(seed, pid, out slot, out seed); - if (validatePID(seed) == pid) - { - if (slotsList == null) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); - else if (slotsList.Contains((uint)slot)) - filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); - } + if (slotsList == null || slotsList.Contains((uint)slot)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, pid, nature, seed, method, slot); + } + } + if (natureList == null || natureList.Contains(xorNature)) + { + getEncounterSlot(xorSeed, xorPID, out int slot, out xorSeed); + if (validatePID(xorSeed) == xorPID) + { + if (slotsList == null || slotsList.Contains((uint)slot)) + filterSeed(hp, atk, def, spa, spd, spe, ability, gender, xorPID, xorNature, xorSeed, method, slot); } } } } } } - - private bool Check4(uint iv, uint nature, uint hp, uint atk, uint def) - { - uint test_hp = iv & 0x1f; - uint test_atk = (iv & 0x3E0) >> 5; - uint test_def = (iv & 0x7C00) >> 10; - - if (test_hp == hp && test_atk == atk && test_def == def) - { - - if (natureList == null) - return true; - else - if (natureList.Contains(nature)) - return true; - } - - return false; - } #endregion #region Method 124 Frame @@ -1972,17 +1940,17 @@ private void method124Frame(uint[] ivsLower, uint[] ivsUpper, int method) ivs = createIVs(rlist[(int)(n + 4)], rlist[(int)(n + 5)], ivsLower, ivsUpper); else ivs = createIVs(rlist[(int)(n + 3)], rlist[(int)(n + 5)], ivsLower, ivsUpper); - if (ivs.Length != 1) + if (ivs != null) { - uint pid = pidChk(n, 0); - uint actualNature = pid < 25 ? pid : pid - 25 * (pid / 25); - if (natureList == null || natureList.Contains(actualNature)) - filterSeed(ivs[0], ivs[1], ivs[2], ivs[3], ivs[4], ivs[5], ability, gender, pid, actualNature, slist[(int)(n)], method, 0); - - pid = pidChk(n, 1); - actualNature = pid < 25 ? pid : pid - 25 * (pid / 25); - if (natureList == null || natureList.Contains(actualNature)) - filterSeed(ivs[0], ivs[1], ivs[2], ivs[3], ivs[4], ivs[5], ability, gender, pid, actualNature, slist[(int)(n)] ^ 0x80000000, method, 0); + uint pid = pidChk(n); + uint nature = pid - 25 * (pid / 25); + if (natureList == null || natureList.Contains(nature)) + filterSeed(ivs[0], ivs[1], ivs[2], ivs[3], ivs[4], ivs[5], ability, gender, pid, nature, slist[(int)(n)], method, 0); + + pid ^= 0x80008000; + nature = pid - 25 * (pid / 25); + if (natureList == null || natureList.Contains(nature)) + filterSeed(ivs[0], ivs[1], ivs[2], ivs[3], ivs[4], ivs[5], ability, gender, pid, nature, slist[(int)(n)] ^ 0x80000000, method, 0); } } refresh = true; @@ -2005,55 +1973,40 @@ private uint[] createIVs(uint iv1, uint ivs2, uint[] ivsLower, uint[] ivsUpper) if (iv >= ivsLower[x] && iv <= ivsUpper[x]) ivs[x] = iv; else - { - ivs = new uint[1]; - return ivs; - } + return null; } uint iV = (ivs2 >> 5) & 31; if (iV >= ivsLower[3] && iV <= ivsUpper[3]) ivs[3] = iV; else - { - ivs = new uint[1]; - return ivs; - } + return null; iV = (ivs2 >> 10) & 31; if (iV >= ivsLower[4] && iV <= ivsUpper[4]) ivs[4] = iV; else - { - ivs = new uint[1]; - return ivs; - } + return null; iV = ivs2 & 31; if (iV >= ivsLower[5] && iV <= ivsUpper[5]) ivs[5] = iV; else - { - ivs = new uint[1]; - return ivs; - } + return null; return ivs; } - private uint pidChk(uint frame, uint xor_val) + private uint pidChk(uint frame) { - uint pid = (rlist[(int)(frame + 2)] << 16) | rlist[(int)(frame + 1)]; - if (xor_val == 1) - pid = pid ^ 0x80008000; - return pid; + return (rlist[(int)(frame + 2)] << 16) | rlist[(int)(frame + 1)]; } #endregion private void filterSeed(uint hp, uint atk, uint def, uint spa, uint spd, uint spe, uint ability, uint gender, uint pid, uint nature, uint seed, int method, int slot) { String shiny = ""; - if (checkBoxShiny.Checked == true) + if (checkBoxShiny.Checked) { if (!isShiny(pid)) return; @@ -2128,8 +2081,8 @@ private void addSeed(uint hp, uint atk, uint def, uint spa, uint spd, uint spe, char gender4; if (shiny == "") - if (isShiny(pid)) - shiny = "!!!"; + if (isShiny(pid)) + shiny = "!!!"; gender1 = gender < 31 ? 'F' : 'M'; gender2 = gender < 64 ? 'F' : 'M'; @@ -2189,14 +2142,14 @@ private void getEncounterSlot(uint initialSeed, uint pid, out int slot, out uint bool flag = true; uint searchNature; - uint nature = pid < 25 ? pid : pid - 25 * (pid / 25); + uint nature = pid - 25 * (pid / 25); var rng = new PokeRngR(initialSeed); while (flag) { rng.GetNext32BitNumber(); searchNature = rng.GetNext16BitNumber(); - searchNature = searchNature < 25 ? searchNature : searchNature - 25 * (searchNature / 25); + searchNature = searchNature - 25 * (searchNature / 25); if (searchNature == nature) flag = false; } @@ -2214,14 +2167,14 @@ private uint validatePID(uint seed) rng.GetNext32BitNumber(); rng.GetNext32BitNumber(); uint nature = rng.GetNext16BitNumber(); - nature = nature < 25 ? nature : nature - 25 * (nature / 25); + nature = nature - 25 * (nature / 25); bool flag = true; while(flag) { pid1 = rng.GetNext16BitNumber(); pid2 = rng.GetNext16BitNumber(); pid = (pid2 << 16) | pid1; - if ((pid < 25 ? pid : pid - 25 * (pid / 25)) == nature) + if ((pid - 25 * (pid / 25)) == nature) flag = false; } return pid; diff --git a/RNGReporter/TogamiCalc.cs b/RNGReporter/TogamiCalc.cs index 39ae020..1271801 100644 --- a/RNGReporter/TogamiCalc.cs +++ b/RNGReporter/TogamiCalc.cs @@ -16,28 +16,21 @@ namespace RNGReporter public partial class TogamiCalc : Form { private Thread searchThread; - private bool refresh; - private ThreadDelegate gridUpdate; - private BindingSource binding = new BindingSource(); private List seedTime; DateTime date = new DateTime(2000, 1, 1, 0, 0, 0); TimeSpan addTime; - private bool isSearching = false; - private bool abort = false; + private bool isSearching; public TogamiCalc() { InitializeComponent(); - dataGridViewValues.DataSource = binding; dataGridViewValues.AutoGenerateColumns = false; - abort = false; } private void TogamiCalc_FormClosing(object sender, FormClosingEventArgs e) { if (searchThread != null) searchThread.Abort(); - abort = true; } private void buttonSearch_Click(object sender, EventArgs e) @@ -74,17 +67,9 @@ private void buttonSearch_Click(object sender, EventArgs e) int max = int.Parse(maxFrame.Text); seedTime = new List(); - binding = new BindingSource { DataSource = seedTime }; - dataGridViewValues.DataSource = binding; - searchThread = - new Thread( - () => - calcRTC(initial, target, min, max)); + searchThread = new Thread(() => calcRTC(initial, target, min, max)); searchThread.Start(); - - var update = new Thread(updateGUI); - update.Start(); } private void calcRTC(uint initialSeed, uint targetSeed, int minFrame, int maxFrame) @@ -121,6 +106,8 @@ private void calcRTC(uint initialSeed, uint targetSeed, int minFrame, int maxFra seedTime.Add(new RTCTime { Time = result, Frame = framesAway + 1 + minFrame}); isSearching = false; searchText.Invoke((MethodInvoker)(() => searchText.Text = "Finish. Awaiting command")); + dataGridViewValues.Invoke((MethodInvoker)(() => dataGridViewValues.DataSource = seedTime)); + dataGridViewValues.Invoke((MethodInvoker)(() => dataGridViewValues.AutoResizeColumns())); return; } } @@ -139,64 +126,17 @@ private void calcRTC(uint initialSeed, uint targetSeed, int minFrame, int maxFra private uint forward(uint seed) { - return ((seed * 0x000343FD + 0x00269EC3) & 0xFFFFFFFF); + return seed * 0x000343FD + 0x00269EC3; } private uint reverse(uint seed) { - return ((seed * 0xB9B33155 + 0xA170F641) & 0xFFFFFFFF); + return seed * 0xB9B33155 + 0xA170F641; } private uint nextSeed(uint seed) { - seed += 40500000; - if (seed > 0xFFFFFFFF) - seed &= 0xFFFFFFFF; - return seed; - } - - private void updateGUI() - { - gridUpdate = dataGridUpdate; - ThreadDelegate resizeGrid = dataGridViewValues.AutoResizeColumns; - try - { - bool alive = true; - while (alive) - { - if (refresh) - { - Invoke(gridUpdate); - refresh = false; - } - if (searchThread == null || !searchThread.IsAlive) - { - alive = false; - } - - Thread.Sleep(500); - } - } - finally - { - if (!abort) - { - Invoke(gridUpdate); - Invoke(resizeGrid); - } - } - } - - - #region Nested type: ThreadDelegate - - private delegate void ThreadDelegate(); - - #endregion - - private void dataGridUpdate() - { - binding.ResetBindings(false); + return seed + 40500000; } private void cancel_Click(object sender, EventArgs e) diff --git a/appveyor.yml b/appveyor.yml index 8c4d524..8c217b4 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,4 +1,4 @@ -version: 10.1.8.{build} +version: 10.1.9.{build} os: Visual Studio 2017 environment: solution_path: RNGReporter.sln