Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace RNGPID
- {
- public partial class cardMain : Form
- {
- private static bool open;
- private readonly char[] accepted = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
- public cardMain()
- {
- InitializeComponent();
- open = true;
- hpText.MaxLength = 2;
- atkText.MaxLength = 2;
- defText.MaxLength = 2;
- spaText.MaxLength = 2;
- spdText.MaxLength = 2;
- speText.MaxLength = 2;
- pidText.MaxLength = 10;
- }
- public static bool isOpen()
- {
- return open;
- }
- private void cardMain_KeyPress(object sender, KeyPressEventArgs e)//stop all keystrokes but the allowed list for tid/sid/pid
- {
- if (char.IsControl(e.KeyChar))
- return;
- for (int i = 0; i < accepted.Length; i++)
- {
- if (e.KeyChar == accepted[i])
- {
- return;
- }
- }
- e.Handled = true;
- }
- private void cardMain_Load(object sender, EventArgs e)
- {
- }
- private void cardMain_FormClosed(object sender, FormClosedEventArgs e)
- {
- open = false;
- }
- private void cardRun_Click(object sender, EventArgs e)
- {
- byte hp, atk, def, spa, spd, spe;
- uint pid, seed;
- ulong fullseed;
- byte[] ivs;
- byte.TryParse(hpText.Text, System.Globalization.NumberStyles.Number, null, out hp);
- byte.TryParse(atkText.Text, System.Globalization.NumberStyles.Number, null, out atk);
- byte.TryParse(defText.Text, System.Globalization.NumberStyles.Number, null, out def);
- byte.TryParse(spaText.Text, System.Globalization.NumberStyles.Number, null, out spa);
- byte.TryParse(spdText.Text, System.Globalization.NumberStyles.Number, null, out spd);
- byte.TryParse(speText.Text, System.Globalization.NumberStyles.Number, null, out spe);
- uint.TryParse(pidText.Text, System.Globalization.NumberStyles.Number, null, out pid);
- seed = pid ^ 0x00010000;
- for (uint i = 0; i <= 0xFFFFFFFF; i++)
- {
- fullseed = (ulong)((seed << 32) + i);
- wondercheck card = new wondercheck(fullseed);
- ivs = card.getMysteryIVs();
- if (ivs[5] == hp && ivs[4] == atk && ivs[3] == def && ivs[2] == spa && ivs[1] == spd && ivs[0] == spe)
- {
- fullseedText.Text = fullseed.ToString("X16");
- legalText.Text = "Legal wondercard";
- break;
- }
- else if (i == 0xFFFFFFFF)
- {
- fullseedText.Text = "No match";
- legalText.Text = "Illegal wondercard";
- break;
- }
- }
- }
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace RNGPID
- {
- class wondercheck
- {
- private ulong seed;
- //constructor for one ulong argument
- public wondercheck(ulong seed)
- {
- this.seed = seed;
- }
- //reverses seed
- public void reverse5()
- {
- seed = ((seed * 0xDEDCEDAE9638806D) + 0x9B1AE6E9A384E6F9) << 64 >> 64;
- }
- //shows seed on -frames from seed input
- public ulong previewReverse(ulong startSeed, int frames)
- {
- for (int i = 0; i < frames; i++)
- {
- startSeed = ((startSeed * 0xDEDCEDAE9638806D) + 0x9B1AE6E9A384E6F9) << 64 >> 64;
- }
- return startSeed;
- }
- //MG IVs
- public byte[] getMysteryIVs()
- {
- byte[] ivs = new byte[6];
- for (int i = 0; i < 3; i++)
- reverse5();
- for (int i = 0; i < 6; i++)
- {
- ivs[i] = (byte)((seed >> 32) >> 27);
- reverse5();
- }
- return ivs;
- }
- }
- }
Advertisement