private void populateFields(byte[] data)
{
// Store all loaded data in a persistent buffer for easy access.
Array.Resize(ref buff, data.Length);
Array.Copy(data, buff, data.Length);
init = false;
CAL_EggDate.Value = new DateTime(2000, 01, 01);
Tab_Main.Focus();
// Encryption Constant
TB_EC.Text = BitConverter.ToUInt32(buff, 0).ToString("X8");
// Block A
int species = BitConverter.ToInt16(buff, 0x08);
int helditem = BitConverter.ToUInt16(buff, 0x0A);
uint TID = BitConverter.ToUInt16(buff, 0x0C);
uint SID = BitConverter.ToUInt16(buff, 0x0E);
uint exp = BitConverter.ToUInt32(buff, 0x10);
int ability = buff[0x14];
int abilitynum = buff[0x15];
// 0x16, 0x17 - Training Bags handled by the Ribbon Editor
uint PID = BitConverter.ToUInt32(buff, 0x18);
int nature = buff[0x1C];
int feflag = buff[0x1D] % 2;
int genderflag = (buff[0x1D] >> 1) & 0x3;
int altforms = (buff[0x1D] >> 3);
int HP_EV = buff[0x1E];
int ATK_EV = buff[0x1F];
int DEF_EV = buff[0x20];
int SPA_EV = buff[0x22];
int SPD_EV = buff[0x23];
int SPE_EV = buff[0x21];
int cnt_cool = buff[0x24];
int cnt_beauty = buff[0x25];
int cnt_cute = buff[0x26];
int cnt_smart = buff[0x27];
int cnt_tough = buff[0x28];
int cnt_sheen = buff[0x29];
int markings = buff[0x2A];
int PKRS_Strain = buff[0x2B] >> 4;
int PKRS_Duration = buff[0x2B] % 0x10;
// Medals and Ribbons, passed with buff to new form
// 0x2C, 0x2D, 0x2E, 0x2F
// 0x33, 0x34, 0x35, 0x36
// 0x34, 0x35, 0x36, 0x37
// 0x38, 0x39, 0x3A
// 0x3B, 0x3C, 0x3D, 0x3E, 0x3F - Unused/Unknown
// Block B
string nicknamestr = Util.TrimFromZero(Encoding.Unicode.GetString(buff, 0x40, 24));
// 0x58, 0x59 - unused
int move1 = BitConverter.ToInt16(buff, 0x5A);
int move2 = BitConverter.ToInt16(buff, 0x5C);
int move3 = BitConverter.ToInt16(buff, 0x5E);
int move4 = BitConverter.ToInt16(buff, 0x60);
int move1_pp = buff[0x62];
int move2_pp = buff[0x63];
int move3_pp = buff[0x64];
int move4_pp = buff[0x65];
int move1_ppu = buff[0x66];
int move2_ppu = buff[0x67];
int move3_ppu = buff[0x68];
int move4_ppu = buff[0x69];
int eggmove1 = BitConverter.ToInt16(buff, 0x6A);
int eggmove2 = BitConverter.ToInt16(buff, 0x6C);
int eggmove3 = BitConverter.ToInt16(buff, 0x6E);
int eggmove4 = BitConverter.ToInt16(buff, 0x70);
// 0x72 - Super Training Flag - Passed with buff to new form
// 0x73 - Unused/Unknown
uint IV32 = BitConverter.ToUInt32(buff, 0x74);
uint HP_IV = IV32 & 0x1F;
uint ATK_IV = (IV32 >> 5) & 0x1F;
uint DEF_IV = (IV32 >> 10) & 0x1F;
uint SPE_IV = (IV32 >> 15) & 0x1F;
uint SPA_IV = (IV32 >> 20) & 0x1F;
uint SPD_IV = (IV32 >> 25) & 0x1F;
uint isegg = (IV32 >> 30) & 1;
uint isnick = (IV32 >> 31);
// Block C
string notOT = Util.TrimFromZero(Encoding.Unicode.GetString(buff, 0x78, 24));
bool notOTG = Convert.ToBoolean(buff[0x92]);
// Memory Editor edits everything else with buff in a new form
// Block D
string ot = Util.TrimFromZero(Encoding.Unicode.GetString(buff, 0xB0, 24));
// 0xC8, 0xC9 - unused
int OTfriendship = buff[0xCA];
// int OTaffection = buff[0xCB]; // Handled by Memory Editor
// 0xCC, 0xCD, 0xCE, 0xCF, 0xD0
int egg_year = buff[0xD1];
int egg_month = buff[0xD2];
int egg_day = buff[0xD3];
int met_year = buff[0xD4];
int met_month = buff[0xD5];
int met_day = buff[0xD6];
// 0xD7 - unused
int eggloc = BitConverter.ToUInt16(buff, 0xD8);
int metloc = BitConverter.ToUInt16(buff, 0xDA);
int ball = buff[0xDC];
int metlevel = buff[0xDD] & 0x7F;
int otgender = (buff[0xDD]) >> 7;
int encountertype = buff[0xDE];
int gamevers = buff[0xDF];
int countryID = buff[0xE0];
int regionID = buff[0xE1];
int dsregID = buff[0xE2];
int otlang = buff[0xE3];
// 0xE4, 0xE5, 0xE6, 0xE7 - unused
//
// Populate Fields
//
CHK_Fateful.Checked = Convert.ToBoolean(feflag);
CHK_IsEgg.Checked = Convert.ToBoolean(isegg);
CHK_Nicknamed.Checked = Convert.ToBoolean(isnick);
Label_OTGender.Text = gendersymbols[otgender];
Label_OTGender.ForeColor = ((otgender == 1) ? Color.Red : Color.Blue);
// Private Use Character Fixing Text
{
nicknamestr = nicknamestr.Replace("\uE08F", "\u2640");
nicknamestr = nicknamestr.Replace("\uE08E", "\u2642");
}
// Set Markings
CHK_Circle.Checked = ((markings >> 0) & 1) == 1;
CHK_Triangle.Checked = ((markings >> 1) & 1) == 1;
CHK_Square.Checked = ((markings >> 2) & 1) == 1;
CHK_Heart.Checked = ((markings >> 3) & 1) == 1;
CHK_Star.Checked = ((markings >> 4) & 1) == 1;
CHK_Diamond.Checked = ((markings >> 5) & 1) == 1;
// Set Generic Identification Data
TB_PID.Text = PID.ToString("X8");
CB_Species.SelectedValue = species;
CB_HeldItem.SelectedValue = helditem;
setAbilityList(TB_AbilityNumber, species, CB_Ability, CB_Form);
TB_AbilityNumber.Text = abilitynum.ToString();
CB_Ability.SelectedIndex = (abilitynum < 6) ? abilitynum >> 1 : 0; // with some simple error handling
CB_Nature.SelectedValue = nature;
TB_EXP.Text = exp.ToString();
TB_TID.Text = TID.ToString("00000");
TB_SID.Text = SID.ToString("00000");
TB_OT.Text = ot;
TB_Nickname.Text = nicknamestr;
TB_OTt2.Text = notOT;
if (buff[0x93] == 1) // = 1
{
TB_Friendship.Text = buff[0xA2].ToString();
GB_nOT.BackgroundImage = mixedHighlight;
GB_OT.BackgroundImage = null;
}
else // = 0
{
TB_Friendship.Text = OTfriendship.ToString();
GB_OT.BackgroundImage = mixedHighlight;
GB_nOT.BackgroundImage = null;
}
CB_Language.SelectedValue = otlang;
CB_Country.SelectedValue = countryID;
CB_SubRegion.SelectedValue = regionID;
CB_3DSReg.SelectedValue = dsregID;
CB_GameOrigin.SelectedValue = gamevers;
CB_EncounterType.SelectedValue = encountertype;
CB_Ball.SelectedValue = ball;
if (met_month == 0) { met_month = 1; }
if (met_day == 0) { met_day = 1; }
try { CAL_MetDate.Value = new DateTime(met_year + 2000, met_month, met_day); }
catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); }
if (eggloc != 0)
{
// Was obtained initially as an egg.
CHK_AsEgg.Checked = true;
GB_EggConditions.Enabled = true;
CB_EggLocation.SelectedValue = eggloc;
try { CAL_EggDate.Value = new DateTime(egg_year + 2000, egg_month, egg_day); }
catch { CAL_MetDate.Value = new DateTime(2000, 1, 1); }
}
else { CHK_AsEgg.Checked = GB_EggConditions.Enabled = false; CB_EggLocation.SelectedValue = 0; }
CB_MetLocation.SelectedValue = metloc;
// Set CT Gender to None if no CT, else set to gender symbol.
Label_CTGender.Text = ((TB_OTt2.Text == "") || (notOT == "")) ? "" : (notOTG) ? gendersymbols[1] : gendersymbols[0];
Label_CTGender.ForeColor = ((notOTG) ? Color.Red : Color.Blue);
TB_MetLevel.Text = metlevel.ToString();
// Reset Label and ComboBox visibility, as well as non-data checked status.
Label_PKRS.Visible = CB_PKRSStrain.Visible = CHK_Infected.Checked = PKRS_Strain != 0;
Label_PKRSdays.Visible = CB_PKRSDays.Visible = PKRS_Duration != 0;
// Set SelectedIndexes for PKRS
CB_PKRSStrain.SelectedIndex = PKRS_Strain;
CHK_Cured.Checked = (PKRS_Strain > 0 && PKRS_Duration == 0);
CB_PKRSDays.SelectedIndex = Math.Min(CB_PKRSDays.Items.Count - 1, PKRS_Duration); // to strip out bad hacked 'rus
TB_Cool.Text = cnt_cool.ToString();
TB_Beauty.Text = cnt_beauty.ToString();
TB_Cute.Text = cnt_cute.ToString();
TB_Smart.Text = cnt_smart.ToString();
TB_Tough.Text = cnt_tough.ToString();
TB_Sheen.Text = cnt_sheen.ToString();
TB_HPIV.Text = HP_IV.ToString();
TB_ATKIV.Text = ATK_IV.ToString();
TB_DEFIV.Text = DEF_IV.ToString();
TB_SPAIV.Text = SPA_IV.ToString();
TB_SPDIV.Text = SPD_IV.ToString();
TB_SPEIV.Text = SPE_IV.ToString();
TB_HPEV.Text = HP_EV.ToString();
TB_ATKEV.Text = ATK_EV.ToString();
TB_DEFEV.Text = DEF_EV.ToString();
TB_SPAEV.Text = SPA_EV.ToString();
TB_SPDEV.Text = SPD_EV.ToString();
TB_SPEEV.Text = SPE_EV.ToString();
CB_Move1.SelectedValue = move1;
CB_Move2.SelectedValue = move2;
CB_Move3.SelectedValue = move3;
CB_Move4.SelectedValue = move4;
CB_RelearnMove1.SelectedValue = eggmove1;
CB_RelearnMove2.SelectedValue = eggmove2;
CB_RelearnMove3.SelectedValue = eggmove3;
CB_RelearnMove4.SelectedValue = eggmove4;
CB_PPu1.SelectedIndex = move1_ppu;
CB_PPu2.SelectedIndex = move2_ppu;
CB_PPu3.SelectedIndex = move3_ppu;
CB_PPu4.SelectedIndex = move4_ppu;
TB_PP1.Text = move1_pp.ToString();
TB_PP2.Text = move2_pp.ToString();
TB_PP3.Text = move3_pp.ToString();
TB_PP4.Text = move4_pp.ToString();
int level = PKX.getLevel(species, ref exp);
TB_Level.Text = level.ToString();
// Set Form if count is enough, else if count is more than 1 set equal to max else zero.
CB_Form.SelectedIndex = (CB_Form.Items.Count > altforms) ? altforms : (CB_Form.Items.Count > 1) ? CB_Form.Items.Count - 1 : 0;
// Load Extrabyte Value
TB_ExtraByte.Text = buff[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString();
// Load Gender Flag
Label_Gender.Text = gendersymbols[genderflag];
Label_Gender.ForeColor = (genderflag == 2) ? Label_Species.ForeColor : ((genderflag == 1) ? Color.Red : Color.Blue);
updateStats();
setIsShiny();
CB_EncounterType.Visible = Label_EncounterType.Visible = !(gamevers > 12 || gamevers < 7);
if (gamevers > 12 || gamevers < 7)
CB_EncounterType.SelectedValue = 0;
init = true;
updatePKRSInfected(null, null);
updatePKRSCured(null, null);
if (HaX) // DEV Illegality
{
DEV_Ability.SelectedValue = ability;
MT_Level.Text = level.ToString();
MT_Form.Text = altforms.ToString();
}
// Set the Preview Box
getQuickFiller(dragout);
// Highlight the Current Handler
clickGT((buff[0x93] == 1) ? GB_nOT : GB_OT, null);
if (!PKX.verifychk(buff))
Util.Alert("PKX File has an invalid checksum.");
}
// General Use Functions shared by other Forms //