mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-10 22:54:14 +00:00
pk2pk & Import Code
This commit is contained in:
parent
d37838c4d5
commit
691ad75730
8 changed files with 6850 additions and 313 deletions
93
CodeImportPKM.Designer.cs
generated
Normal file
93
CodeImportPKM.Designer.cs
generated
Normal file
|
@ -0,0 +1,93 @@
|
|||
namespace PKHeX
|
||||
{
|
||||
partial class CodeImportPKM
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CodeImportPKM));
|
||||
this.RTB_Code = new System.Windows.Forms.RichTextBox();
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.B_Paste = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// RTB_Code
|
||||
//
|
||||
this.RTB_Code.Location = new System.Drawing.Point(8, 38);
|
||||
this.RTB_Code.Name = "RTB_Code";
|
||||
this.RTB_Code.ReadOnly = true;
|
||||
this.RTB_Code.Size = new System.Drawing.Size(149, 168);
|
||||
this.RTB_Code.TabIndex = 0;
|
||||
this.RTB_Code.Text = "";
|
||||
this.RTB_Code.WordWrap = false;
|
||||
//
|
||||
// button1
|
||||
//
|
||||
this.button1.Location = new System.Drawing.Point(87, 7);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(70, 25);
|
||||
this.button1.TabIndex = 1;
|
||||
this.button1.Text = "Import";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
this.button1.Click += new System.EventHandler(this.B_Import_Click);
|
||||
//
|
||||
// B_Paste
|
||||
//
|
||||
this.B_Paste.Location = new System.Drawing.Point(8, 7);
|
||||
this.B_Paste.Name = "B_Paste";
|
||||
this.B_Paste.Size = new System.Drawing.Size(70, 25);
|
||||
this.B_Paste.TabIndex = 2;
|
||||
this.B_Paste.Text = "Paste";
|
||||
this.B_Paste.UseVisualStyleBackColor = true;
|
||||
this.B_Paste.Click += new System.EventHandler(this.B_Paste_Click);
|
||||
//
|
||||
// CodeImportPKM
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(164, 212);
|
||||
this.Controls.Add(this.B_Paste);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Controls.Add(this.RTB_Code);
|
||||
this.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "CodeImportPKM";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Code Import";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox RTB_Code;
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button B_Paste;
|
||||
}
|
||||
}
|
76
CodeImportPKM.cs
Normal file
76
CodeImportPKM.cs
Normal file
|
@ -0,0 +1,76 @@
|
|||
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;
|
||||
using System.Globalization;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public partial class CodeImportPKM : Form
|
||||
{
|
||||
public CodeImportPKM()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.returnArray = null;
|
||||
}
|
||||
public byte[] returnArray { get; set; }
|
||||
private void B_Paste_Click(object sender, EventArgs e)
|
||||
{
|
||||
RTB_Code.Text = Clipboard.GetText();
|
||||
}
|
||||
|
||||
private void B_Import_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Gotta read in the textbox.
|
||||
if (RTB_Code.Text.Length < 1) return;
|
||||
byte[] data = new Byte[0];
|
||||
// Get Actual Lines
|
||||
for (int i = 0; i < RTB_Code.Lines.Count(); i++)
|
||||
{
|
||||
if (RTB_Code.Lines[i].Length > 0)
|
||||
{
|
||||
if (RTB_Code.Lines[i].Length <= 2 * 8 && RTB_Code.Lines[i].Length > 2 * 8 + 2)
|
||||
{
|
||||
MessageBox.Show("Invalid code pasted (Type)", "Error"); return;
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
// Grab Line Data
|
||||
string line = RTB_Code.Lines[i];
|
||||
string[] rip = Regex.Split(line, " ");
|
||||
Array.Resize(ref data, data.Length + 4);
|
||||
Array.Copy(BitConverter.GetBytes(UInt32.Parse(rip[1], NumberStyles.HexNumber)), 0, data, data.Length - 4, 4);
|
||||
}
|
||||
catch
|
||||
{
|
||||
MessageBox.Show("Invalid code pasted (Content)", "Error"); return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Go over the data
|
||||
if ((data.Length == 232 - 4) || (data.Length == 260 - 4))
|
||||
{
|
||||
Array.Resize(ref data, data.Length + 4);
|
||||
Array.Copy(data, 0, data, 4, data.Length);
|
||||
data[0] = data[1] = data[2] = data[3] = 0;
|
||||
}
|
||||
if ((data.Length == 232) || (data.Length == 260))
|
||||
{
|
||||
this.returnArray = data;
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Invalid code pasted (Length)", "Error"); return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
216
CodeImportPKM.resx
Normal file
216
CodeImportPKM.resx
Normal file
|
@ -0,0 +1,216 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq
|
||||
KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+
|
||||
vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li
|
||||
4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg
|
||||
4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly
|
||||
8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz
|
||||
8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v//
|
||||
//+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P
|
||||
Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA
|
||||
Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK
|
||||
k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF
|
||||
Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P
|
||||
aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N
|
||||
pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT
|
||||
vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV
|
||||
yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ
|
||||
yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq
|
||||
rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
|
||||
AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY
|
||||
GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e
|
||||
HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq
|
||||
quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq
|
||||
quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY
|
||||
2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY
|
||||
2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra
|
||||
2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
|
||||
3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna
|
||||
2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
|
||||
4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ
|
||||
WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li
|
||||
4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA
|
||||
AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk
|
||||
5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb
|
||||
2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl
|
||||
5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh
|
||||
4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm
|
||||
5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk
|
||||
4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn
|
||||
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
|
||||
wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P
|
||||
tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT
|
||||
wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER
|
||||
vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV
|
||||
wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV
|
||||
wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV
|
||||
xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW
|
||||
yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV
|
||||
x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
|
||||
zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl
|
||||
eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX
|
||||
zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA
|
||||
AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ
|
||||
zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws
|
||||
p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb
|
||||
ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB//////
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
10
PKHeX.csproj
10
PKHeX.csproj
|
@ -77,6 +77,12 @@
|
|||
<Compile Include="CodeGenerator.Designer.cs">
|
||||
<DependentUpon>CodeGenerator.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="CodeImportPKM.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CodeImportPKM.Designer.cs">
|
||||
<DependentUpon>CodeImportPKM.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="f1-Main.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
@ -101,6 +107,7 @@
|
|||
<Compile Include="frmReport.Designer.cs">
|
||||
<DependentUpon>frmReport.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="pk2pk.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
|
@ -183,6 +190,9 @@
|
|||
<EmbeddedResource Include="CodeGenerator.resx">
|
||||
<DependentUpon>CodeGenerator.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="CodeImportPKM.resx">
|
||||
<DependentUpon>CodeImportPKM.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="f1-Main.resx">
|
||||
<DependentUpon>f1-Main.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
|
|
25
f1-Main.Designer.cs
generated
25
f1-Main.Designer.cs
generated
|
@ -323,6 +323,7 @@
|
|||
this.GB_SAVtools = new System.Windows.Forms.GroupBox();
|
||||
this.L_SAVINDEX = new System.Windows.Forms.Label();
|
||||
this.notifyIcon1 = new System.Windows.Forms.NotifyIcon(this.components);
|
||||
this.B_ImportCode = new System.Windows.Forms.Button();
|
||||
this.tabMain.SuspendLayout();
|
||||
this.Tab_Main.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.Label_IsShiny)).BeginInit();
|
||||
|
@ -3517,6 +3518,7 @@
|
|||
//
|
||||
// Tab_Tools
|
||||
//
|
||||
this.Tab_Tools.Controls.Add(this.B_ImportCode);
|
||||
this.Tab_Tools.Controls.Add(this.B_BoxIO);
|
||||
this.Tab_Tools.Controls.Add(this.B_JPEG);
|
||||
this.Tab_Tools.Controls.Add(this.B_OUTHallofFame);
|
||||
|
@ -3532,7 +3534,7 @@
|
|||
//
|
||||
// B_BoxIO
|
||||
//
|
||||
this.B_BoxIO.Location = new System.Drawing.Point(9, 12);
|
||||
this.B_BoxIO.Location = new System.Drawing.Point(3, 3);
|
||||
this.B_BoxIO.Name = "B_BoxIO";
|
||||
this.B_BoxIO.Size = new System.Drawing.Size(75, 46);
|
||||
this.B_BoxIO.TabIndex = 6;
|
||||
|
@ -3543,7 +3545,7 @@
|
|||
// B_JPEG
|
||||
//
|
||||
this.B_JPEG.Enabled = false;
|
||||
this.B_JPEG.Location = new System.Drawing.Point(91, 12);
|
||||
this.B_JPEG.Location = new System.Drawing.Point(89, 3);
|
||||
this.B_JPEG.Name = "B_JPEG";
|
||||
this.B_JPEG.Size = new System.Drawing.Size(75, 46);
|
||||
this.B_JPEG.TabIndex = 5;
|
||||
|
@ -3554,7 +3556,7 @@
|
|||
// B_OUTHallofFame
|
||||
//
|
||||
this.B_OUTHallofFame.Enabled = false;
|
||||
this.B_OUTHallofFame.Location = new System.Drawing.Point(173, 12);
|
||||
this.B_OUTHallofFame.Location = new System.Drawing.Point(173, 3);
|
||||
this.B_OUTHallofFame.Name = "B_OUTHallofFame";
|
||||
this.B_OUTHallofFame.Size = new System.Drawing.Size(75, 23);
|
||||
this.B_OUTHallofFame.TabIndex = 4;
|
||||
|
@ -3565,10 +3567,10 @@
|
|||
// RTB_T
|
||||
//
|
||||
this.RTB_T.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.RTB_T.Location = new System.Drawing.Point(1, 68);
|
||||
this.RTB_T.Location = new System.Drawing.Point(1, 78);
|
||||
this.RTB_T.Name = "RTB_T";
|
||||
this.RTB_T.ReadOnly = true;
|
||||
this.RTB_T.Size = new System.Drawing.Size(255, 130);
|
||||
this.RTB_T.Size = new System.Drawing.Size(255, 120);
|
||||
this.RTB_T.TabIndex = 1;
|
||||
this.RTB_T.Text = "";
|
||||
this.RTB_T.WordWrap = false;
|
||||
|
@ -3576,7 +3578,7 @@
|
|||
// B_OUTPasserby
|
||||
//
|
||||
this.B_OUTPasserby.Enabled = false;
|
||||
this.B_OUTPasserby.Location = new System.Drawing.Point(173, 35);
|
||||
this.B_OUTPasserby.Location = new System.Drawing.Point(173, 26);
|
||||
this.B_OUTPasserby.Name = "B_OUTPasserby";
|
||||
this.B_OUTPasserby.Size = new System.Drawing.Size(75, 23);
|
||||
this.B_OUTPasserby.TabIndex = 0;
|
||||
|
@ -3795,6 +3797,16 @@
|
|||
this.notifyIcon1.Text = "notifyIcon1";
|
||||
this.notifyIcon1.Visible = true;
|
||||
//
|
||||
// B_ImportCode
|
||||
//
|
||||
this.B_ImportCode.Location = new System.Drawing.Point(3, 51);
|
||||
this.B_ImportCode.Name = "B_ImportCode";
|
||||
this.B_ImportCode.Size = new System.Drawing.Size(161, 23);
|
||||
this.B_ImportCode.TabIndex = 7;
|
||||
this.B_ImportCode.Text = "Import PK6 from Code";
|
||||
this.B_ImportCode.UseVisualStyleBackColor = true;
|
||||
this.B_ImportCode.Click += new System.EventHandler(this.B_ImportCode_Click);
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AllowDrop = true;
|
||||
|
@ -4214,6 +4226,7 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem codeGeneratorToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem reportToolStripMenuItem;
|
||||
private System.Windows.Forms.NotifyIcon notifyIcon1;
|
||||
private System.Windows.Forms.Button B_ImportCode;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
414
f1-Main.cs
414
f1-Main.cs
|
@ -4014,7 +4014,16 @@ namespace PKHeX
|
|||
|
||||
// Setup Forms
|
||||
getForms(species);
|
||||
CB_Form.SelectedIndex = altforms;
|
||||
try
|
||||
{
|
||||
CB_Form.SelectedIndex = altforms;
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (CB_Form.Items.Count > 1)
|
||||
CB_Form.SelectedIndex = CB_Form.Items.Count-1;
|
||||
else CB_Form.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
// Load Extrabyte Value
|
||||
TB_ExtraByte.Text = buff[Convert.ToInt32(CB_ExtraBytes.Text, 16)].ToString();
|
||||
|
@ -6033,7 +6042,7 @@ namespace PKHeX
|
|||
// Main Menu Subfunctions //
|
||||
private void openfile(byte[] input, string path, string ext)
|
||||
{
|
||||
// Trade Packets
|
||||
#region Trade Packets
|
||||
if ((input.Length == 363) && (input[0x6B] == 0) && (input[0x6C] == 00))
|
||||
{
|
||||
// EAD Packet of 363 length
|
||||
|
@ -6048,6 +6057,8 @@ namespace PKHeX
|
|||
Array.Copy(input, 0x93, c, 0, 260);
|
||||
input = c;
|
||||
}
|
||||
#endregion
|
||||
#region Saves
|
||||
else if ((input.Length == 0x65600) && BitConverter.ToUInt32(input,0x65410) == 0x42454546)
|
||||
{
|
||||
// Load CyberGadget
|
||||
|
@ -6084,8 +6095,7 @@ namespace PKHeX
|
|||
return;
|
||||
}
|
||||
// Verify the Data Input Size is Proper
|
||||
#region SAVE FILE LOADING
|
||||
if (input.Length == 0x100000)
|
||||
else if (input.Length == 0x100000)
|
||||
{
|
||||
B_ExportSAV.Enabled = false;
|
||||
B_SwitchSAV.Enabled = false;
|
||||
|
@ -6141,13 +6151,14 @@ namespace PKHeX
|
|||
B_OUTPasserby.Enabled = B_OUTHallofFame.Enabled = B_JPEG.Enabled = true;
|
||||
}
|
||||
#endregion
|
||||
#region PK6/EK6
|
||||
else if ((input.Length == 260) || (input.Length == 232))
|
||||
{
|
||||
// Check if Input is PKX
|
||||
if ((ext == ".pk6") || (ext == ".ek6") || (ext == ".pkx") || (ext == ".ekx") || (ext == ".bin") || (ext == ""))
|
||||
{
|
||||
// Check if either is encrypted from another program.
|
||||
if ((input[0xC8] == 0) && (input[0xC9] == 0) && (input[0x58] == 0) && (input[0x59] == 0))
|
||||
if (BitConverter.ToUInt16(input,0xC8) == 0 && BitConverter.ToUInt16(input,0x58) == 0)
|
||||
{ // File isn't encrypted.
|
||||
buff = input;
|
||||
populatefields(buff);
|
||||
|
@ -6159,51 +6170,44 @@ namespace PKHeX
|
|||
populatefields(buff);
|
||||
}
|
||||
}
|
||||
else // to convert g5pkm
|
||||
{
|
||||
try
|
||||
{
|
||||
buff = convertPK5toPK6(input);
|
||||
populatefields(buff);
|
||||
string message = "Loaded previous generation PKM. Conversion attempted.";
|
||||
string caption = "Alert";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
catch
|
||||
{
|
||||
string message = "Foreign File Extension.\nOnly .pk* .ek* .bin supported.";
|
||||
string caption = "Error Detected in Input";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
}
|
||||
// End Work
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((input.Length == 136) || (input.Length == 220)) // to convert g5pkm
|
||||
{
|
||||
try // to convert g5pkm
|
||||
{
|
||||
buff = convertPK5toPK6(input);
|
||||
populatefields(buff);
|
||||
string message = "Loaded previous generation PKM. Conversion attempted.";
|
||||
string caption = "Alert";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
catch
|
||||
{
|
||||
string message = "Loaded previous generation PKM. Conversion failed.";
|
||||
string caption = "Alert";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = "Attempted to load an unsupported file type/size.";
|
||||
string caption = "Error";
|
||||
string message = "Foreign File.\nOnly valid .pk* .ek* .bin supported.";
|
||||
string caption = "Error Detected in Input";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region PK3/PK4/PK5
|
||||
else if ((input.Length == 136) || (input.Length == 220) || (input.Length == 236) || (input.Length == 100) || (input.Length == 80)) // to convert g5pkm
|
||||
{
|
||||
var Converter = new PKHeX.pk2pk();
|
||||
if (!Converter.verifychk(input)) MessageBox.Show("Invalid File (Checksum Error)", "Error");
|
||||
try // to convert g5pkm
|
||||
{
|
||||
byte[] data = Converter.ConvertPKM(input,savefile, savindex);
|
||||
Array.Copy(data, buff, 232);
|
||||
populatefields(buff);
|
||||
// string message = "Loaded previous generation PKM. Conversion attempted.";
|
||||
// string caption = "Alert";
|
||||
// MessageBox.Show(message, caption);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Array.Copy(new Byte[232], buff, 232);
|
||||
populatefields(buff);
|
||||
string message = "Attempted to load previous generation PKM.\n\nConversion failed.";
|
||||
string caption = "Alert";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
else
|
||||
{
|
||||
string message = "Attempted to load an unsupported file type/size.";
|
||||
string caption = "Error";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
GC.Collect();
|
||||
}
|
||||
private void opensave(byte[] input, string path, string ext)
|
||||
|
@ -6252,28 +6256,6 @@ namespace PKHeX
|
|||
Array.Copy(savefile, 0x5400 + 0x7F000 * savindex, cyberSAV, 0, cyberSAV.Length);
|
||||
cybergadget = false;
|
||||
}
|
||||
private void openg5pkm()
|
||||
{
|
||||
OpenFileDialog openg5pkm = new OpenFileDialog();
|
||||
openg5pkm.Filter = "PK5 File|*.pkm;*.pk5";
|
||||
if (openg5pkm.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string path = openg5pkm.FileName;
|
||||
string ext = Path.GetExtension(path);
|
||||
byte[] pkm = File.ReadAllBytes(path);
|
||||
if (((pkm.Length == 136) || (pkm.Length == 220)) && ((ext == ".pkm") || (ext == ".pk5")))
|
||||
{
|
||||
buff = convertPK5toPK6(pkm);
|
||||
populatefields(buff);
|
||||
}
|
||||
else
|
||||
{
|
||||
string message = "Did not select a valid PKX";
|
||||
string caption = "Input Error";
|
||||
MessageBox.Show(message, caption);
|
||||
}
|
||||
}
|
||||
}
|
||||
// PID Rerolling Functions //
|
||||
private uint getRandomPID(int gt, int cg)
|
||||
{
|
||||
|
@ -6425,231 +6407,6 @@ namespace PKHeX
|
|||
// Done
|
||||
return ekxdata;
|
||||
}
|
||||
private byte[] convertPK5toPK6(byte[] pkm)
|
||||
{
|
||||
// To transfer, we will go down the pkm offset list and fill it into the PKX list.
|
||||
byte[] pkx = new Byte[232]; // Setup new array to store the new PKX
|
||||
|
||||
// Upon transfer, the PID is also set as the Encryption Key.
|
||||
// Copy intro data, it's the same (Encrypt Key -> EXP)
|
||||
for (int i = 0; i < 0x14; i++) { pkx[i] = pkm[i]; }
|
||||
pkx[0xA] = 0; pkx[0xB] = 0; // Get rid of the item, those aren't transferred.
|
||||
// Set the PID in its new location as well...
|
||||
for (int i = 0; i < 0x4; i++) { pkx[0x18 + i] = pkm[i]; }
|
||||
pkx[0xCA] = pkm[0x14]; // Friendship
|
||||
pkx[0x14] = pkm[0x15]; // Ability
|
||||
// Get Ability Number from the PID (the actual valid one)
|
||||
if ((pkm[0x42] & 1) == 1) // Hidden Ability Flag
|
||||
pkx[0x15] = 4;
|
||||
else if (pkm[0x5F] < 0x10) // Gen 3-4 Origin Method
|
||||
pkx[0x15] = (byte)(pkx[0x0] & 1); // Old Ability Correlation
|
||||
else
|
||||
pkx[0x15] = (byte)(pkx[0x2] & 1); // Gen5 Correlation
|
||||
pkx[0x2A] = pkm[0x16]; // Markings
|
||||
pkx[0xE3] = pkm[0x17]; // OT Language
|
||||
|
||||
// Copy EVs and Contest Stats
|
||||
for (int i = 0; i < 12; i++)
|
||||
pkx[0x1E + i] = pkm[0x18 + i];
|
||||
// Fix EVs (<=252)
|
||||
for (int i = 0; i < 6; i++)
|
||||
if (pkx[0x1E + i] > 252)
|
||||
pkx[0x1E + i] = 252;
|
||||
|
||||
// Copy Moves
|
||||
for (int i = 0; i < 16; i++)
|
||||
pkx[0x5A + i] = pkm[0x28 + i];
|
||||
// Fix PP; some moves have different PP in Gen 6.
|
||||
pkx[0x62] = (byte)(getMovePP(BitConverter.ToInt16(pkx, 0x5A)) * (5 + pkx[0x66]) / 5);
|
||||
pkx[0x63] = (byte)(getMovePP(BitConverter.ToInt16(pkx, 0x5C)) * (5 + pkx[0x67]) / 5);
|
||||
pkx[0x64] = (byte)(getMovePP(BitConverter.ToInt16(pkx, 0x5E)) * (5 + pkx[0x68]) / 5);
|
||||
pkx[0x65] = (byte)(getMovePP(BitConverter.ToInt16(pkx, 0x60)) * (5 + pkx[0x69]) / 5);
|
||||
|
||||
// Copy 32bit IV value.
|
||||
for (int i = 0; i < 4; i++)
|
||||
pkx[0x74 + i] = pkm[0x38 + i];
|
||||
|
||||
pkx[0x1D] = pkm[0x40]; // Copy FE & Gender Flags
|
||||
pkx[0x1C] = pkm[0x41]; // Copy Nature
|
||||
|
||||
// Copy Nickname
|
||||
string nicknamestr = "";
|
||||
for (int i = 0; i < 24; i += 2)
|
||||
{
|
||||
if ((pkm[0x48 + i] == 0xFF) && pkm[0x48 + i + 1] == 0xFF)
|
||||
{ // If given character is a terminator, stop copying. There are no trash bytes or terminators in Gen 6!
|
||||
break;
|
||||
}
|
||||
nicknamestr += (char)(pkm[0x48 + i] + pkm[0x49 + i] * 0x100);
|
||||
}
|
||||
// Decapitalize Logic
|
||||
if ((nicknamestr.Length > 0) && (pkx[0x77] >> 7 == 0))
|
||||
nicknamestr = char.ToUpper(nicknamestr[0]) + nicknamestr.Substring(1).ToLower();
|
||||
byte[] nkb = Encoding.Unicode.GetBytes(nicknamestr);
|
||||
Array.Resize(ref nkb, 24);
|
||||
Array.Copy(nkb, 0, pkx, 0x40, nkb.Length);
|
||||
|
||||
pkx[0xDF] = pkm[0x5F]; // Copy Origin Game
|
||||
|
||||
// Copy OT
|
||||
for (int i = 0; i < 24; i += 2)
|
||||
{
|
||||
if ((pkm[0x68 + i] == 0xFF) && pkm[0x68 + i + 1] == 0xFF)
|
||||
{ // If terminated, stop
|
||||
break;
|
||||
}
|
||||
pkx[0xB0 + i] = pkm[0x68 + i];
|
||||
pkx[0xB0 + i + 1] = pkm[0x68 + i + 1];
|
||||
}
|
||||
// Copy Met Info
|
||||
for (int i = 0; i < 0x6; i++)
|
||||
{ // Dates are kept upon transfer
|
||||
pkx[0xD1 + i] = pkm[0x78 + i];
|
||||
}
|
||||
// pkx[0xD7] has a gap.
|
||||
for (int i = 0; i < 0x4; i++)
|
||||
{ // Locations are kept upon transfer
|
||||
pkx[0xD8 + i] = pkm[0x7E + i];
|
||||
}
|
||||
pkx[0x2B] = pkm[0x82]; // Pokerus
|
||||
pkx[0xDC] = pkm[0x83]; // Ball
|
||||
|
||||
// Get the current level of the specimen to be transferred
|
||||
int species = BitConverter.ToInt16(pkx, 0x08);
|
||||
int exp = BitConverter.ToInt32(pkx, 0x10);
|
||||
int currentlevel = getLevel((species), (exp));
|
||||
|
||||
pkx[0xDD] = (byte)(((pkm[0x84]) & 0x80) + currentlevel); // OT Gender & Encounter Level
|
||||
pkx[0xDE] = pkm[0x85]; // Encounter Type
|
||||
|
||||
// Ribbon Decomposer (Contest & Battle)
|
||||
byte contestribbons = 0;
|
||||
byte battleribbons = 0;
|
||||
|
||||
// Contest Ribbon Counter
|
||||
for (int i = 0; i < 8; i++) // Sinnoh 3, Hoenn 1
|
||||
{
|
||||
if (((pkm[0x60] >> i) & 1) == 1)
|
||||
contestribbons++;
|
||||
if (((pkm[0x61] >> i) & 1) == 1)
|
||||
contestribbons++;
|
||||
if (((pkm[0x3C] >> i) & 1) == 1)
|
||||
contestribbons++;
|
||||
if (((pkm[0x3D] >> i) & 1) == 1)
|
||||
contestribbons++;
|
||||
}
|
||||
for (int i = 0; i < 4; i++) // Sinnoh 4, Hoenn 2
|
||||
{
|
||||
if (((pkm[0x62] >> i) & 1) == 1)
|
||||
contestribbons++;
|
||||
if (((pkm[0x3E] >> i) & 1) == 1)
|
||||
contestribbons++;
|
||||
}
|
||||
|
||||
// Battle Ribbon Counter
|
||||
if ((pkm[0x3E] & 0x20) >> 5 == 1) // Winning Ribbon
|
||||
battleribbons++;
|
||||
if ((pkm[0x3E] & 0x40) >> 6 == 1) // Victory Ribbon
|
||||
battleribbons++;
|
||||
for (int i = 1; i < 7; i++) // Sinnoh Battle Ribbons
|
||||
{
|
||||
if (((pkm[0x24] >> i) & 1) == 1)
|
||||
battleribbons++;
|
||||
}
|
||||
// Fill the Ribbon Counter Bytes
|
||||
pkx[0x38] = contestribbons;
|
||||
pkx[0x39] = battleribbons;
|
||||
|
||||
// Copy Ribbons to their new locations.
|
||||
int bx30 = 0;
|
||||
// bx30 += 0; // //Kalos Champ - New Ribbon
|
||||
bx30 += (((pkm[0x3E] & 0x10) >> 4) << 1); // Hoenn Champion
|
||||
bx30 += (((pkm[0x24] & 0x01) >> 0) << 2); // Sinnoh Champ
|
||||
// bx30 += 0; // //Best Friend - New Ribbon
|
||||
// bx30 += 0; // //Training - New Ribbon
|
||||
// bx30 += 0; // //Skillful - New Ribbon
|
||||
// bx30 += 0; // //Expert - New Ribbon
|
||||
bx30 += (((pkm[0x3F] & 0x01) >> 0) << 7); // Effort Ribbon
|
||||
pkx[0x30] = (byte)bx30;
|
||||
|
||||
int bx31 = 0;
|
||||
bx31 += (((pkm[0x24] & 0x80) >> 7) << 0); // Alert
|
||||
bx31 += (((pkm[0x25] & 0x01) >> 0) << 1); // Shock
|
||||
bx31 += (((pkm[0x25] & 0x02) >> 1) << 2); // Downcast
|
||||
bx31 += (((pkm[0x25] & 0x04) >> 2) << 3); // Careless
|
||||
bx31 += (((pkm[0x25] & 0x08) >> 3) << 4); // Relax
|
||||
bx31 += (((pkm[0x25] & 0x10) >> 4) << 5); // Snooze
|
||||
bx31 += (((pkm[0x25] & 0x20) >> 5) << 6); // Smile
|
||||
bx31 += (((pkm[0x25] & 0x40) >> 6) << 7); // Gorgeous
|
||||
pkx[0x31] = (byte)bx31;
|
||||
|
||||
int bx32 = 0;
|
||||
bx32 += (((pkm[0x25] & 0x80) >> 7) << 0); // Royal
|
||||
bx32 += (((pkm[0x26] & 0x01) >> 0) << 1); // Gorgeous Royal
|
||||
bx32 += (((pkm[0x3E] & 0x80) >> 7) << 2); // Artist
|
||||
bx32 += (((pkm[0x26] & 0x02) >> 1) << 3); // Footprint
|
||||
bx32 += (((pkm[0x26] & 0x04) >> 2) << 4); // Record
|
||||
bx32 += (((pkm[0x26] & 0x10) >> 4) << 5); // Legend
|
||||
bx32 += (((pkm[0x3F] & 0x10) >> 4) << 6); // Country
|
||||
bx32 += (((pkm[0x3F] & 0x20) >> 5) << 7); // National
|
||||
pkx[0x32] = (byte)bx32;
|
||||
|
||||
int bx33 = 0;
|
||||
bx33 += (((pkm[0x3F] & 0x40) >> 6) << 0); // Earth
|
||||
bx33 += (((pkm[0x3F] & 0x80) >> 7) << 1); // World
|
||||
bx33 += (((pkm[0x27] & 0x04) >> 2) << 2); // Classic
|
||||
bx33 += (((pkm[0x27] & 0x08) >> 3) << 3); // Premier
|
||||
bx33 += (((pkm[0x26] & 0x08) >> 3) << 4); // Event
|
||||
bx33 += (((pkm[0x26] & 0x40) >> 6) << 5); // Birthday
|
||||
bx33 += (((pkm[0x26] & 0x80) >> 7) << 6); // Special
|
||||
bx33 += (((pkm[0x27] & 0x01) >> 0) << 7); // Souvenir
|
||||
pkx[0x33] = (byte)bx33;
|
||||
|
||||
int bx34 = 0;
|
||||
bx34 += (((pkm[0x27] & 0x02) >> 1) << 0); // Wishing Ribbon
|
||||
bx34 += (((pkm[0x3F] & 0x02) >> 1) << 1); // Battle Champion
|
||||
bx34 += (((pkm[0x3F] & 0x04) >> 2) << 2); // Regional Champion
|
||||
bx34 += (((pkm[0x3F] & 0x08) >> 3) << 3); // National Champion
|
||||
bx34 += (((pkm[0x26] & 0x20) >> 5) << 4); // World Champion
|
||||
pkx[0x34] = (byte)bx34;
|
||||
|
||||
//
|
||||
// Extra Modifications:
|
||||
// Write the Memories, Friendship, and Origin!
|
||||
//
|
||||
|
||||
// Write latest notOT handler as PKHeX
|
||||
byte[] newOT = Encoding.Unicode.GetBytes("PKHeX");
|
||||
Array.Resize(ref newOT, 24);
|
||||
Array.Copy(newOT, 0, pkx, 0x78, newOT.Length);
|
||||
|
||||
// Write Memories as if it was Transferred: USA|California
|
||||
// 01 - Not handled by OT
|
||||
// 07 - CA
|
||||
// 31 - USA
|
||||
byte[] x90x = new byte[] { 0x00, 0x00, 0x00, 0x01, 0x07, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte)getBaseFriendship(species), 0x00, 0x01, 0x04, (byte)(rnd32() % 10), 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
Array.Copy(x90x, 0, pkx, 0x90, x90x.Length);
|
||||
|
||||
// When transferred, friendship gets reset.
|
||||
pkx[0xCA] = (byte)getBaseFriendship(species);
|
||||
|
||||
// Write Origin (USA California) - location is dependent on 3DS system that transfers.
|
||||
pkx[0xE0] = 0x31; // USA
|
||||
pkx[0xE1] = 0x07; // CA
|
||||
pkx[0xE2] = 0x01; // ENG
|
||||
|
||||
// Fix Checksum
|
||||
uint chk = 0;
|
||||
for (int i = 8; i < 232; i += 2) // Loop through the entire PKX
|
||||
{
|
||||
chk += (uint)(pkx[i] + pkx[i + 1] * 0x100);
|
||||
}
|
||||
|
||||
// Apply New Checksum
|
||||
Array.Copy(BitConverter.GetBytes(chk), 0, pkx, 06, 2);
|
||||
|
||||
return pkx; // Done!
|
||||
}
|
||||
public bool verifiedpkx()
|
||||
{
|
||||
// Make sure the PKX Fields are filled out properly (color check)
|
||||
|
@ -8512,6 +8269,29 @@ namespace PKHeX
|
|||
SAV_HallOfFame halloffame = new PKHeX.SAV_HallOfFame(this);
|
||||
halloffame.ShowDialog();
|
||||
}
|
||||
private void B_ImportCode_Click(object sender, EventArgs e)
|
||||
{
|
||||
// Open Import Code Menu
|
||||
CodeImportPKM textcode = new PKHeX.CodeImportPKM();
|
||||
textcode.ShowDialog();
|
||||
byte[] data = textcode.returnArray;
|
||||
if (data != null)
|
||||
{
|
||||
byte[] decdata = decryptArray(data);
|
||||
Array.Copy(decdata, buff, 232);
|
||||
try
|
||||
{
|
||||
populatefields(buff);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Array.Copy(new Byte[232], buff, 232);
|
||||
populatefields(buff);
|
||||
MessageBox.Show("Imported code did not decrypt properly. Verify that what you imported was correct.", "Error");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void B_SwitchSAV_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult switchsav = MessageBox.Show("Current Savefile is Save" + ((savindex + 1)).ToString() + ". Would you like to switch to Save" + ((savindex + 1) % 2 + 1).ToString() + "?", "Prompt", MessageBoxButtons.YesNo);
|
||||
|
@ -8675,9 +8455,53 @@ namespace PKHeX
|
|||
ReportForm.ShowDialog();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// pk2pk Transfer Tool
|
||||
private int getg3species(int g3index)
|
||||
{
|
||||
int[] newindex = new int[]
|
||||
{
|
||||
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
|
||||
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
|
||||
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,77,79,80,81,82,83,84,85,86,
|
||||
87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,
|
||||
111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,
|
||||
132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
|
||||
153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,
|
||||
174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,
|
||||
195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
|
||||
216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,
|
||||
237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,
|
||||
258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,290,291,292,
|
||||
276,277,285,286,327,278,279,283,284,320,321,300,301,352,343,344,299,324,302,339,340,
|
||||
370,341,342,349,350,318,319,328,329,330,296,297,309,310,322,323,363,364,365,331,332,
|
||||
361,362,337,338,298,325,326,311,312,303,307,308,333,334,360,355,356,315,287,288,289,
|
||||
316,317,357,293,294,295,366,367,368,359,353,354,336,335,369,304,305,306,351,313,314,
|
||||
345,346,347,348,280,281,282,371,372,373,374,375,376,377,378,379,382,383,384,380,381,
|
||||
385,386,358,
|
||||
};
|
||||
int[] oldindex = new int[]
|
||||
{
|
||||
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,
|
||||
31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,
|
||||
59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,
|
||||
87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,
|
||||
111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,
|
||||
132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,
|
||||
153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,
|
||||
174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,
|
||||
195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,
|
||||
216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,
|
||||
237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,277,278,279,280,281,282,
|
||||
283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,
|
||||
304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,
|
||||
325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,
|
||||
346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,
|
||||
367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,
|
||||
388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,
|
||||
409,410,411,
|
||||
};
|
||||
return newindex[Array.IndexOf(oldindex, g3index)];
|
||||
}
|
||||
}
|
||||
#region Structs & Classes
|
||||
public class cbItem
|
||||
|
|
12
f1-Main.resx
12
f1-Main.resx
|
@ -741,21 +741,9 @@
|
|||
<metadata name="L_ReadOnlyOther.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="B_BoxIO.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="B_JPEG.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="B_OUTHallofFame.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="RTB_T.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="B_OUTPasserby.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="Tab_SAV.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
|
Loading…
Reference in a new issue