diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..bdb0cab
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,17 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+# Custom for Visual Studio
+*.cs diff=csharp
+
+# Standard to msysgit
+*.doc diff=astextplain
+*.DOC diff=astextplain
+*.docx diff=astextplain
+*.DOCX diff=astextplain
+*.dot diff=astextplain
+*.DOT diff=astextplain
+*.pdf diff=astextplain
+*.PDF diff=astextplain
+*.rtf diff=astextplain
+*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..6046415
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,226 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+build/
+bld/
+[Bb]in/
+[Oo]bj/
+
+# Visual Studio 2015 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# DNX
+project.lock.json
+artifacts/
+
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opensdf
+*.sdf
+*.cachefile
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# TODO: Comment the next line if you want to checkin your web deploy settings
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/packages/*
+# except build/, which is used as an MSBuild target.
+!**/packages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/packages/repositories.config
+
+# Windows Azure Build Output
+csx/
+*.build.csdef
+
+# Windows Store app package directory
+AppPackages/
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+[Ss]tyle[Cc]op.*
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.pfx
+*.publishsettings
+node_modules/
+orleans.codegen.cs
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+
+# SQL Server files
+*.mdf
+*.ldf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+
+# FAKE - F# Make
+.fake/
\ No newline at end of file
diff --git a/XYORAS Pokemon Link Tool.sln b/XYORAS Pokemon Link Tool.sln
new file mode 100644
index 0000000..5a819b7
--- /dev/null
+++ b/XYORAS Pokemon Link Tool.sln
@@ -0,0 +1,18 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+# SharpDevelop 5.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "XYORAS Pokemon Link Tool", "XYORAS Pokemon Link Tool\XYORAS Pokemon Link Tool.csproj", "{8E067B09-FD68-4FD1-AC34-D0A1F77BFEBD}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {8E067B09-FD68-4FD1-AC34-D0A1F77BFEBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8E067B09-FD68-4FD1-AC34-D0A1F77BFEBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8E067B09-FD68-4FD1-AC34-D0A1F77BFEBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8E067B09-FD68-4FD1-AC34-D0A1F77BFEBD}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/XYORAS Pokemon Link Tool/MainForm.Designer.cs b/XYORAS Pokemon Link Tool/MainForm.Designer.cs
new file mode 100644
index 0000000..69b365e
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/MainForm.Designer.cs
@@ -0,0 +1,117 @@
+/*
+ * Created by SharpDevelop.
+ * User: suloku
+ * Date: 18/10/2015
+ * Time: 9:17
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+namespace XYORAS_Pokemon_Link_Tool
+{
+ partial class MainForm
+ {
+ ///
+ /// Designer variable used to keep track of non-visual components.
+ ///
+ private System.ComponentModel.IContainer components = null;
+ private System.Windows.Forms.Button loadsave;
+ private System.Windows.Forms.TextBox savegamename;
+ private System.Windows.Forms.Button dump_but;
+ private System.Windows.Forms.Button inject_but;
+ private System.Windows.Forms.TextBox currgame;
+
+ ///
+ /// Disposes resources used by the form.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing) {
+ if (components != null) {
+ components.Dispose();
+ }
+ }
+ base.Dispose(disposing);
+ }
+
+ ///
+ /// This method is required for Windows Forms designer support.
+ /// Do not change the method contents inside the source code editor. The Forms designer might
+ /// not be able to load this method if it was changed manually.
+ ///
+ private void InitializeComponent()
+ {
+ this.loadsave = new System.Windows.Forms.Button();
+ this.savegamename = new System.Windows.Forms.TextBox();
+ this.dump_but = new System.Windows.Forms.Button();
+ this.inject_but = new System.Windows.Forms.Button();
+ this.currgame = new System.Windows.Forms.TextBox();
+ this.SuspendLayout();
+ //
+ // loadsave
+ //
+ this.loadsave.Location = new System.Drawing.Point(12, 12);
+ this.loadsave.Name = "loadsave";
+ this.loadsave.Size = new System.Drawing.Size(162, 23);
+ this.loadsave.TabIndex = 0;
+ this.loadsave.Text = "Load XY/ORAS Savegame";
+ this.loadsave.UseVisualStyleBackColor = true;
+ this.loadsave.Click += new System.EventHandler(this.Button1Click);
+ //
+ // savegamename
+ //
+ this.savegamename.Location = new System.Drawing.Point(12, 41);
+ this.savegamename.Name = "savegamename";
+ this.savegamename.Size = new System.Drawing.Size(330, 20);
+ this.savegamename.TabIndex = 1;
+ this.savegamename.TextChanged += new System.EventHandler(this.SavegamenameTextChanged);
+ //
+ // dump_but
+ //
+ this.dump_but.Enabled = false;
+ this.dump_but.Location = new System.Drawing.Point(12, 67);
+ this.dump_but.Name = "dump_but";
+ this.dump_but.Size = new System.Drawing.Size(162, 23);
+ this.dump_but.TabIndex = 2;
+ this.dump_but.Text = "Dump Pokémon Link Data";
+ this.dump_but.UseVisualStyleBackColor = true;
+ this.dump_but.Click += new System.EventHandler(this.Dump_butClick);
+ //
+ // inject_but
+ //
+ this.inject_but.Enabled = false;
+ this.inject_but.Location = new System.Drawing.Point(180, 67);
+ this.inject_but.Name = "inject_but";
+ this.inject_but.Size = new System.Drawing.Size(162, 23);
+ this.inject_but.TabIndex = 4;
+ this.inject_but.Text = "Inject Pokémon Link Data";
+ this.inject_but.UseVisualStyleBackColor = true;
+ this.inject_but.Click += new System.EventHandler(this.Inject_butClick);
+ //
+ // currgame
+ //
+ this.currgame.Location = new System.Drawing.Point(180, 14);
+ this.currgame.Name = "currgame";
+ this.currgame.ReadOnly = true;
+ this.currgame.Size = new System.Drawing.Size(73, 20);
+ this.currgame.TabIndex = 5;
+ this.currgame.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(354, 95);
+ this.Controls.Add(this.currgame);
+ this.Controls.Add(this.savegamename);
+ this.Controls.Add(this.dump_but);
+ this.Controls.Add(this.loadsave);
+ this.Controls.Add(this.inject_but);
+ this.Name = "MainForm";
+ this.Text = "XYORAS Pokemon Link Tool 0.1 by suloku";
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+ }
+}
diff --git a/XYORAS Pokemon Link Tool/MainForm.cs b/XYORAS Pokemon Link Tool/MainForm.cs
new file mode 100644
index 0000000..dd5dba3
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/MainForm.cs
@@ -0,0 +1,244 @@
+/*
+ * Created by SharpDevelop.
+ * User: suloku
+ * Date: 18/10/2015
+ * Time: 9:17
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+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.IO;
+
+namespace XYORAS_Pokemon_Link_Tool
+{
+ ///
+ /// Description of MainForm.
+ ///
+ public partial class MainForm : Form
+ {
+ public MainForm()
+ {
+ //
+ // The InitializeComponent() call is required for Windows Forms designer support.
+ //
+ InitializeComponent();
+
+ //
+ // TODO: Add constructor code after the InitializeComponent() call.
+ //
+ }
+ int game = 0; //1 XY, 2 ORAS
+ string linkfile;
+ byte[] savebuffer_XY = new byte[0x65600];
+ byte[] savebuffer_ORAS = new byte[0x76000];
+ byte[] linkbuffer = new byte[2631];
+
+ //adapted from Gocario's PHBank (www.github.com/gocario/phbank)
+ byte[] ccitt16(byte[] data)
+ // --------------------------------------------------
+ {
+ int len = data.Length;
+ UInt16 crc = 0xFFFF;
+
+ for (UInt32 i = 0; i < len; i++)
+ {
+ crc ^= ((UInt16)((data[i] << 8)&0x0000FFFF));
+
+ for (UInt32 j = 0; j < 0x8; j++)
+ {
+ if ((crc & 0x8000) > 0)
+ crc = (UInt16)(((UInt16)((crc << 1)&0x0000FFFF ) ^ 0x1021) &0x0000FFFF);
+ else
+ crc <<= 1;
+ }
+ }
+
+ return BitConverter.GetBytes(crc);
+ }
+
+ ///
+ /// Reads data into a complete array, throwing an EndOfStreamException
+ /// if the stream runs out of data first, or if an IOException
+ /// naturally occurs.
+ ///
+ /// The stream to read data from
+ /// The array to read bytes into. The array
+ /// will be completely filled from the stream, so an appropriate
+ /// size must be given.
+ public static void ReadWholeArray (Stream stream, byte[] data)
+ {
+ int offset=0;
+ int remaining = data.Length;
+ while (remaining > 0)
+ {
+ int read = stream.Read(data, offset, remaining);
+ if (read <= 0)
+ throw new EndOfStreamException
+ (String.Format("End of stream reached with {0} bytes left to read", remaining));
+ remaining -= read;
+ offset += read;
+ }
+ }
+ private void PDR_read_data()
+ {
+ System.IO.FileStream saveFile;
+ saveFile = new FileStream(savegamename.Text, FileMode.Open);
+ if (saveFile.Length != 0x65600 && saveFile.Length != 0x76000 ){
+ savegamename.Text = "";
+ MessageBox.Show("Invalid file length", "Error");
+ return;
+ }
+ if (saveFile.Length == 0x65600){
+ game = 1;
+ currgame.Text = "X/Y";
+ ReadWholeArray(saveFile, savebuffer_XY);
+ saveFile.Close();
+ }else if (saveFile.Length == 0x76000){
+ game = 2;
+ currgame.Text = "OR/AS";
+ ReadWholeArray(saveFile, savebuffer_ORAS);
+ saveFile.Close();
+ }
+ }
+ private void PDR_get_data()
+ {
+ OpenFileDialog openFD = new OpenFileDialog();
+ //openFD.InitialDirectory = "c:\\";
+ openFD.Filter = "VI gen save data|main|All Files (*.*)|*.*";
+ if (openFD.ShowDialog() == DialogResult.OK)
+ {
+ #region filename
+ savegamename.Text = openFD.FileName;
+ #endregion
+ PDR_read_data();
+ }
+
+ }
+ private void PDR_save_data()
+ { if (savegamename.Text.Length < 1) return;
+ SaveFileDialog saveFD = new SaveFileDialog();
+ //saveFD.InitialDirectory = "c:\\";
+ saveFD.Filter = "VI gen save data|main|All Files (*.*)|*.*";
+ if (saveFD.ShowDialog() == DialogResult.OK)
+ {
+ System.IO.FileStream saveFile;
+ saveFile = new FileStream(saveFD.FileName, FileMode.Create);
+ //Write file
+ if (game == 1){
+ saveFile.Write(savebuffer_XY, 0, savebuffer_XY.Length);
+ }else if (game == 2){
+ saveFile.Write(savebuffer_ORAS, 0, savebuffer_ORAS.Length);
+ }
+ saveFile.Close();
+ MessageBox.Show("File Saved.", "Save file");
+ }
+ }
+ private void PDR_dump_forest_data()
+ { if (savegamename.Text.Length < 1) return;
+ SaveFileDialog saveFD = new SaveFileDialog();
+ //saveFD.InitialDirectory = "c:\\";
+ saveFD.Filter = "Pokémon Link Data|*.bin|All Files (*.*)|*.*";
+ if (saveFD.ShowDialog() == DialogResult.OK)
+ {
+ System.IO.FileStream saveFile;
+ saveFile = new FileStream(saveFD.FileName, FileMode.Create);
+ //Write file
+ if (game == 1){
+ saveFile.Write(savebuffer_XY, 0x1FFFF, 0xA47);
+ }else if (game == 2) {
+ saveFile.Write(savebuffer_ORAS, 0x20FFF, 0xA47);
+ }
+
+ saveFile.Close();
+ MessageBox.Show("Pokémon Link data dumped to:\r"+saveFD.FileName+".", "Dump Entralink Forest Data");
+ }
+ }
+ private void PDR_read_forest_data()
+ {
+ System.IO.FileStream saveFile;
+ saveFile = new FileStream(linkfile, FileMode.Open);
+ if (saveFile.Length != 0xA47){
+ //linkfile = "";
+ MessageBox.Show("Invalid file length", "Error");
+ return;
+ }
+ ReadWholeArray(saveFile, linkbuffer);
+ saveFile.Close();
+ PDR_injectNsave();
+ }
+ private void PDR_get_forest_data()
+ {
+ OpenFileDialog openFD = new OpenFileDialog();
+ //openFD.InitialDirectory = "c:\\";
+ openFD.Filter = "Pokémon Link Data|*.bin|All Files (*.*)|*.*";
+ if (openFD.ShowDialog() == DialogResult.OK)
+ {
+ #region filename
+ linkfile = openFD.FileName;
+ #endregion
+ PDR_read_forest_data();
+ }
+
+ }
+ private void PDR_injectNsave()
+ {
+
+ if (game == 1){
+ //Put link data in save
+ Array.Copy(linkbuffer, 0, savebuffer_XY, 0x1FFFF, 0xA47);
+ //Get full block for checksum calculation
+ byte[] giftblockbuffer = new byte[0xC48];
+ Array.Copy(savebuffer_XY, 0x1FE00, giftblockbuffer, 0, 0xC48);
+ byte[] tablecrcsum = new byte[2];
+ tablecrcsum = ccitt16(giftblockbuffer);
+ //Put new checksum in savefile
+ Array.Copy(tablecrcsum, 0, savebuffer_XY, 0x6559A, 2);
+ }
+ else if (game == 2){
+ //Put link data in save
+ Array.Copy(linkbuffer, 0, savebuffer_ORAS, 0x20FFF, 0xA47);
+ //Get full block for checksum calculation
+ byte[] giftblockbuffer = new byte[0xC48];
+ Array.Copy(savebuffer_ORAS, 0x20E00, giftblockbuffer, 0, 0xC48);
+ byte[] tablecrcsum = new byte[2];
+ tablecrcsum = ccitt16(giftblockbuffer);
+ //Put new checksum in savefile
+ Array.Copy(tablecrcsum, 0, savebuffer_ORAS, 0x75F9A, 2);
+ }
+ //Write Data
+ PDR_save_data();
+ }
+ void Button1Click(object sender, EventArgs e)
+ {
+ PDR_get_data();
+ }
+ void Dump_butClick(object sender, EventArgs e)
+ {
+ if (savegamename.Text.Length < 1) return;
+ PDR_dump_forest_data();
+ }
+ void SavegamenameTextChanged(object sender, EventArgs e)
+ {
+ if (savegamename.Text.Length > 0){
+ dump_but.Enabled = true;
+ inject_but.Enabled = true;
+ }else{
+ dump_but.Enabled = false;
+ inject_but.Enabled = false;
+ }
+
+ }
+ void Inject_butClick(object sender, EventArgs e)
+ {
+ PDR_get_forest_data();
+ }
+
+ }
+}
diff --git a/XYORAS Pokemon Link Tool/MainForm.resx b/XYORAS Pokemon Link Tool/MainForm.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/MainForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/XYORAS Pokemon Link Tool/Program.cs b/XYORAS Pokemon Link Tool/Program.cs
new file mode 100644
index 0000000..0b09d15
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/Program.cs
@@ -0,0 +1,31 @@
+/*
+ * Created by SharpDevelop.
+ * User: suloku
+ * Date: 18/10/2015
+ * Time: 9:17
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using System.Windows.Forms;
+
+namespace XYORAS_Pokemon_Link_Tool
+{
+ ///
+ /// Class with program entry point.
+ ///
+ internal sealed class Program
+ {
+ ///
+ /// Program entry point.
+ ///
+ [STAThread]
+ private static void Main(string[] args)
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+
+ }
+}
diff --git a/XYORAS Pokemon Link Tool/Properties/AssemblyInfo.cs b/XYORAS Pokemon Link Tool/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..ce4b545
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/Properties/AssemblyInfo.cs
@@ -0,0 +1,31 @@
+#region Using directives
+
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+#endregion
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("XYORAS Pokemon Link Tool")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("XYORAS Pokemon Link Tool")]
+[assembly: AssemblyCopyright("Copyright 2015")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// This sets the default COM visibility of types in the assembly to invisible.
+// If you need to expose a type to COM, use [ComVisible(true)] on that type.
+[assembly: ComVisible(false)]
+
+// The assembly version has following format :
+//
+// Major.Minor.Build.Revision
+//
+// You can specify all the values or you can use the default the Revision and
+// Build Numbers by using the '*' as shown below:
+[assembly: AssemblyVersion("1.0.*")]
diff --git a/XYORAS Pokemon Link Tool/XYORAS Pokemon Link Tool.csproj b/XYORAS Pokemon Link Tool/XYORAS Pokemon Link Tool.csproj
new file mode 100644
index 0000000..270fd36
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/XYORAS Pokemon Link Tool.csproj
@@ -0,0 +1,69 @@
+
+
+
+ {8E067B09-FD68-4FD1-AC34-D0A1F77BFEBD}
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ Debug
+ AnyCPU
+ WinExe
+ XYORAS_Pokemon_Link_Tool
+ XYORAS Pokemon Link Tool
+ v4.0
+ Properties
+
+
+ x86
+
+
+ bin\Debug\
+ True
+ Full
+ False
+ True
+ DEBUG;TRACE
+
+
+ bin\Release\
+ False
+ None
+ True
+ False
+ TRACE
+
+
+
+ 4.0
+
+
+
+ 3.5
+
+
+
+ 3.5
+
+
+
+
+
+ 3.5
+
+
+
+
+
+ MainForm.cs
+
+
+
+
+
+
+
+
+
+ MainForm.Designer.cs
+
+
+
+
\ No newline at end of file
diff --git a/XYORAS Pokemon Link Tool/app.config b/XYORAS Pokemon Link Tool/app.config
new file mode 100644
index 0000000..970c80b
--- /dev/null
+++ b/XYORAS Pokemon Link Tool/app.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file