diff --git a/.vs/Taz trainer/v14/.suo b/.vs/Taz trainer/v14/.suo new file mode 100644 index 0000000..3877bf7 Binary files /dev/null and b/.vs/Taz trainer/v14/.suo differ diff --git a/Taz trainer.sln b/Taz trainer.sln new file mode 100644 index 0000000..8d326af --- /dev/null +++ b/Taz trainer.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Taz trainer", "Taz trainer\Taz trainer.csproj", "{319655B7-FA36-4819-8B10-78F85147CABA}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {319655B7-FA36-4819-8B10-78F85147CABA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {319655B7-FA36-4819-8B10-78F85147CABA}.Debug|Any CPU.Build.0 = Debug|Any CPU + {319655B7-FA36-4819-8B10-78F85147CABA}.Release|Any CPU.ActiveCfg = Release|Any CPU + {319655B7-FA36-4819-8B10-78F85147CABA}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Taz trainer/App.config b/Taz trainer/App.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/Taz trainer/App.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Taz trainer/Form1.Designer.cs b/Taz trainer/Form1.Designer.cs new file mode 100644 index 0000000..64d3a77 --- /dev/null +++ b/Taz trainer/Form1.Designer.cs @@ -0,0 +1,812 @@ +namespace Taz_trainer +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.drawDistance = new System.Windows.Forms.CheckBox(); + this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.statusField = new System.Windows.Forms.ToolStripStatusLabel(); + this.numericJump = new System.Windows.Forms.NumericUpDown(); + this.jumpLabel = new System.Windows.Forms.Label(); + this.numericSpeed = new System.Windows.Forms.NumericUpDown(); + this.speedLabel = new System.Windows.Forms.Label(); + this.superBelchCan = new System.Windows.Forms.CheckBox(); + this.flyMode = new System.Windows.Forms.CheckBox(); + this.timer = new System.Windows.Forms.Timer(this.components); + this.smoothLight = new System.Windows.Forms.CheckBox(); + this.invisibility = new System.Windows.Forms.CheckBox(); + this.tableLayoutPanel1Trainer = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel2Trainer = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel4Trainer = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel3Trainer = new System.Windows.Forms.TableLayoutPanel(); + this.freezeLevelTimer = new System.Windows.Forms.CheckBox(); + this.pictureTaz = new System.Windows.Forms.PictureBox(); + this.tabs = new System.Windows.Forms.TabControl(); + this.trainerTab = new System.Windows.Forms.TabPage(); + this.patcherTab = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel1Patcher = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel4Patcher = new System.Windows.Forms.TableLayoutPanel(); + this.patch = new System.Windows.Forms.Button(); + this.restore = new System.Windows.Forms.Button(); + this.restoreBackup = new System.Windows.Forms.Button(); + this.tableLayoutPanel3Patcher = new System.Windows.Forms.TableLayoutPanel(); + this.aspect2 = new System.Windows.Forms.TextBox(); + this.aspect1 = new System.Windows.Forms.TextBox(); + this.aspectRatio = new System.Windows.Forms.CheckBox(); + this.pointsLabel = new System.Windows.Forms.Label(); + this.tableLayoutPanel2Patcher = new System.Windows.Forms.TableLayoutPanel(); + this.changeResolution = new System.Windows.Forms.CheckBox(); + this.height = new System.Windows.Forms.TextBox(); + this.xLabel = new System.Windows.Forms.Label(); + this.windowed = new System.Windows.Forms.CheckBox(); + this.width = new System.Windows.Forms.TextBox(); + this.trainerTitle = new System.Windows.Forms.Label(); + this.disableVideos = new System.Windows.Forms.CheckBox(); + this.disableDrawDistance = new System.Windows.Forms.CheckBox(); + this.noCD = new System.Windows.Forms.CheckBox(); + this.infoTab = new System.Windows.Forms.TabPage(); + this.tableLayoutPanel1Info = new System.Windows.Forms.TableLayoutPanel(); + this.infoText = new System.Windows.Forms.Label(); + this.tableLayoutPanel2Info = new System.Windows.Forms.TableLayoutPanel(); + this.gitHub = new System.Windows.Forms.Button(); + this.statusStrip.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericJump)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericSpeed)).BeginInit(); + this.tableLayoutPanel1Trainer.SuspendLayout(); + this.tableLayoutPanel2Trainer.SuspendLayout(); + this.tableLayoutPanel4Trainer.SuspendLayout(); + this.tableLayoutPanel3Trainer.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureTaz)).BeginInit(); + this.tabs.SuspendLayout(); + this.trainerTab.SuspendLayout(); + this.patcherTab.SuspendLayout(); + this.tableLayoutPanel1Patcher.SuspendLayout(); + this.tableLayoutPanel4Patcher.SuspendLayout(); + this.tableLayoutPanel3Patcher.SuspendLayout(); + this.tableLayoutPanel2Patcher.SuspendLayout(); + this.infoTab.SuspendLayout(); + this.tableLayoutPanel1Info.SuspendLayout(); + this.tableLayoutPanel2Info.SuspendLayout(); + this.SuspendLayout(); + // + // drawDistance + // + this.drawDistance.AutoSize = true; + this.drawDistance.Location = new System.Drawing.Point(3, 124); + this.drawDistance.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.drawDistance.Name = "drawDistance"; + this.drawDistance.Size = new System.Drawing.Size(195, 22); + this.drawDistance.TabIndex = 1; + this.drawDistance.Text = "Infinity draw distance (F5)"; + this.drawDistance.UseVisualStyleBackColor = true; + this.drawDistance.CheckedChanged += new System.EventHandler(this.drawDistance_CheckedChanged); + // + // statusStrip + // + this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusField}); + this.statusStrip.Location = new System.Drawing.Point(0, 333); + this.statusStrip.Name = "statusStrip"; + this.statusStrip.Padding = new System.Windows.Forms.Padding(1, 0, 18, 0); + this.statusStrip.Size = new System.Drawing.Size(468, 22); + this.statusStrip.SizingGrip = false; + this.statusStrip.TabIndex = 2; + // + // statusField + // + this.statusField.ForeColor = System.Drawing.SystemColors.ControlText; + this.statusField.Name = "statusField"; + this.statusField.Size = new System.Drawing.Size(137, 17); + this.statusField.Text = "Welcome to Taz Hacked!"; + // + // numericJump + // + this.numericJump.Dock = System.Windows.Forms.DockStyle.Fill; + this.numericJump.Location = new System.Drawing.Point(1, 1); + this.numericJump.Margin = new System.Windows.Forms.Padding(1); + this.numericJump.Maximum = new decimal(new int[] { + 8, + 0, + 0, + 0}); + this.numericJump.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericJump.Name = "numericJump"; + this.numericJump.Size = new System.Drawing.Size(48, 26); + this.numericJump.TabIndex = 3; + this.numericJump.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.numericJump.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; + this.numericJump.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericJump.ValueChanged += new System.EventHandler(this.numericJump_ValueChanged); + // + // jumpLabel + // + this.jumpLabel.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.jumpLabel.AutoSize = true; + this.jumpLabel.Location = new System.Drawing.Point(53, 6); + this.jumpLabel.Name = "jumpLabel"; + this.jumpLabel.Size = new System.Drawing.Size(170, 18); + this.jumpLabel.TabIndex = 4; + this.jumpLabel.Text = "x jump force (Num+/Num-)"; + // + // numericSpeed + // + this.numericSpeed.DecimalPlaces = 1; + this.numericSpeed.Dock = System.Windows.Forms.DockStyle.Fill; + this.numericSpeed.Increment = new decimal(new int[] { + 5, + 0, + 0, + 65536}); + this.numericSpeed.Location = new System.Drawing.Point(1, 1); + this.numericSpeed.Margin = new System.Windows.Forms.Padding(1); + this.numericSpeed.Maximum = new decimal(new int[] { + 4, + 0, + 0, + 0}); + this.numericSpeed.Name = "numericSpeed"; + this.numericSpeed.Size = new System.Drawing.Size(48, 26); + this.numericSpeed.TabIndex = 5; + this.numericSpeed.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.numericSpeed.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; + this.numericSpeed.Value = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.numericSpeed.ValueChanged += new System.EventHandler(this.numericSpeed_ValueChanged); + // + // speedLabel + // + this.speedLabel.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.speedLabel.AutoSize = true; + this.speedLabel.Location = new System.Drawing.Point(53, 6); + this.speedLabel.Name = "speedLabel"; + this.speedLabel.Size = new System.Drawing.Size(171, 18); + this.speedLabel.TabIndex = 4; + this.speedLabel.Text = "x game speed (PgUp/PgDn)"; + // + // superBelchCan + // + this.superBelchCan.AutoSize = true; + this.superBelchCan.Location = new System.Drawing.Point(3, 34); + this.superBelchCan.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.superBelchCan.Name = "superBelchCan"; + this.superBelchCan.Size = new System.Drawing.Size(150, 22); + this.superBelchCan.TabIndex = 1; + this.superBelchCan.Text = "Super burp can (F2)"; + this.superBelchCan.UseVisualStyleBackColor = true; + this.superBelchCan.CheckedChanged += new System.EventHandler(this.superBelchCan_CheckedChanged); + // + // flyMode + // + this.flyMode.AutoSize = true; + this.flyMode.Location = new System.Drawing.Point(3, 64); + this.flyMode.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.flyMode.Name = "flyMode"; + this.flyMode.Size = new System.Drawing.Size(261, 22); + this.flyMode.TabIndex = 1; + this.flyMode.Text = "Fly mode (F3/Num5 and NumPad keys)"; + this.flyMode.UseVisualStyleBackColor = true; + this.flyMode.CheckedChanged += new System.EventHandler(this.flyMode_CheckedChanged); + // + // timer + // + this.timer.Interval = 3000; + this.timer.Tick += new System.EventHandler(this.timer_Tick); + // + // smoothLight + // + this.smoothLight.AutoSize = true; + this.smoothLight.Location = new System.Drawing.Point(3, 154); + this.smoothLight.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.smoothLight.Name = "smoothLight"; + this.smoothLight.Size = new System.Drawing.Size(150, 22); + this.smoothLight.TabIndex = 1; + this.smoothLight.Text = "Smooth lighting (F6)"; + this.smoothLight.UseVisualStyleBackColor = true; + this.smoothLight.CheckedChanged += new System.EventHandler(this.smoothLight_CheckedChanged); + // + // invisibility + // + this.invisibility.AutoSize = true; + this.invisibility.Location = new System.Drawing.Point(3, 4); + this.invisibility.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.invisibility.Name = "invisibility"; + this.invisibility.Size = new System.Drawing.Size(121, 22); + this.invisibility.TabIndex = 1; + this.invisibility.Text = "Invisibility (F1)"; + this.invisibility.UseVisualStyleBackColor = true; + this.invisibility.CheckedChanged += new System.EventHandler(this.invisibility_CheckedChanged); + // + // tableLayoutPanel1Trainer + // + this.tableLayoutPanel1Trainer.ColumnCount = 2; + this.tableLayoutPanel1Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 165F)); + this.tableLayoutPanel1Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1Trainer.Controls.Add(this.tableLayoutPanel2Trainer, 1, 0); + this.tableLayoutPanel1Trainer.Controls.Add(this.pictureTaz, 0, 0); + this.tableLayoutPanel1Trainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1Trainer.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1Trainer.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1Trainer.Name = "tableLayoutPanel1Trainer"; + this.tableLayoutPanel1Trainer.RowCount = 1; + this.tableLayoutPanel1Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1Trainer.Size = new System.Drawing.Size(460, 302); + this.tableLayoutPanel1Trainer.TabIndex = 7; + // + // tableLayoutPanel2Trainer + // + this.tableLayoutPanel2Trainer.ColumnCount = 1; + this.tableLayoutPanel2Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2Trainer.Controls.Add(this.superBelchCan, 0, 1); + this.tableLayoutPanel2Trainer.Controls.Add(this.invisibility, 0, 0); + this.tableLayoutPanel2Trainer.Controls.Add(this.flyMode, 0, 2); + this.tableLayoutPanel2Trainer.Controls.Add(this.tableLayoutPanel4Trainer, 0, 7); + this.tableLayoutPanel2Trainer.Controls.Add(this.tableLayoutPanel3Trainer, 0, 6); + this.tableLayoutPanel2Trainer.Controls.Add(this.smoothLight, 0, 5); + this.tableLayoutPanel2Trainer.Controls.Add(this.drawDistance, 0, 4); + this.tableLayoutPanel2Trainer.Controls.Add(this.freezeLevelTimer, 0, 3); + this.tableLayoutPanel2Trainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2Trainer.Location = new System.Drawing.Point(165, 0); + this.tableLayoutPanel2Trainer.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2Trainer.Name = "tableLayoutPanel2Trainer"; + this.tableLayoutPanel2Trainer.RowCount = 9; + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel2Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2Trainer.Size = new System.Drawing.Size(295, 302); + this.tableLayoutPanel2Trainer.TabIndex = 0; + // + // tableLayoutPanel4Trainer + // + this.tableLayoutPanel4Trainer.ColumnCount = 2; + this.tableLayoutPanel4Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel4Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 324F)); + this.tableLayoutPanel4Trainer.Controls.Add(this.numericSpeed, 0, 0); + this.tableLayoutPanel4Trainer.Controls.Add(this.speedLabel, 1, 0); + this.tableLayoutPanel4Trainer.Location = new System.Drawing.Point(0, 210); + this.tableLayoutPanel4Trainer.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel4Trainer.Name = "tableLayoutPanel4Trainer"; + this.tableLayoutPanel4Trainer.RowCount = 1; + this.tableLayoutPanel4Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4Trainer.Size = new System.Drawing.Size(295, 30); + this.tableLayoutPanel4Trainer.TabIndex = 7; + // + // tableLayoutPanel3Trainer + // + this.tableLayoutPanel3Trainer.ColumnCount = 2; + this.tableLayoutPanel3Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel3Trainer.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 324F)); + this.tableLayoutPanel3Trainer.Controls.Add(this.jumpLabel, 1, 0); + this.tableLayoutPanel3Trainer.Controls.Add(this.numericJump, 0, 0); + this.tableLayoutPanel3Trainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3Trainer.Location = new System.Drawing.Point(0, 180); + this.tableLayoutPanel3Trainer.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3Trainer.Name = "tableLayoutPanel3Trainer"; + this.tableLayoutPanel3Trainer.RowCount = 1; + this.tableLayoutPanel3Trainer.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3Trainer.Size = new System.Drawing.Size(295, 30); + this.tableLayoutPanel3Trainer.TabIndex = 6; + // + // freezeLevelTimer + // + this.freezeLevelTimer.AutoSize = true; + this.freezeLevelTimer.Location = new System.Drawing.Point(3, 94); + this.freezeLevelTimer.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.freezeLevelTimer.Name = "freezeLevelTimer"; + this.freezeLevelTimer.Size = new System.Drawing.Size(166, 22); + this.freezeLevelTimer.TabIndex = 8; + this.freezeLevelTimer.Text = "Freeze level timer (F4)"; + this.freezeLevelTimer.UseVisualStyleBackColor = true; + this.freezeLevelTimer.CheckedChanged += new System.EventHandler(this.freezeLevelTimer_CheckedChanged); + // + // pictureTaz + // + this.pictureTaz.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureTaz.Image = global::Taz_trainer.Properties.Resources.TAZ; + this.pictureTaz.Location = new System.Drawing.Point(0, 0); + this.pictureTaz.Margin = new System.Windows.Forms.Padding(0); + this.pictureTaz.Name = "pictureTaz"; + this.pictureTaz.Size = new System.Drawing.Size(165, 302); + this.pictureTaz.TabIndex = 1; + this.pictureTaz.TabStop = false; + // + // tabs + // + this.tabs.Controls.Add(this.trainerTab); + this.tabs.Controls.Add(this.patcherTab); + this.tabs.Controls.Add(this.infoTab); + this.tabs.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabs.Location = new System.Drawing.Point(0, 0); + this.tabs.Margin = new System.Windows.Forms.Padding(0); + this.tabs.Name = "tabs"; + this.tabs.Padding = new System.Drawing.Point(0, 0); + this.tabs.SelectedIndex = 0; + this.tabs.Size = new System.Drawing.Size(468, 333); + this.tabs.TabIndex = 8; + // + // trainerTab + // + this.trainerTab.Controls.Add(this.tableLayoutPanel1Trainer); + this.trainerTab.Location = new System.Drawing.Point(4, 27); + this.trainerTab.Margin = new System.Windows.Forms.Padding(0); + this.trainerTab.Name = "trainerTab"; + this.trainerTab.Size = new System.Drawing.Size(460, 302); + this.trainerTab.TabIndex = 0; + this.trainerTab.Text = "Trainer"; + this.trainerTab.UseVisualStyleBackColor = true; + // + // patcherTab + // + this.patcherTab.Controls.Add(this.tableLayoutPanel1Patcher); + this.patcherTab.Location = new System.Drawing.Point(4, 22); + this.patcherTab.Margin = new System.Windows.Forms.Padding(0); + this.patcherTab.Name = "patcherTab"; + this.patcherTab.Size = new System.Drawing.Size(460, 307); + this.patcherTab.TabIndex = 1; + this.patcherTab.Text = "Patcher"; + this.patcherTab.UseVisualStyleBackColor = true; + // + // tableLayoutPanel1Patcher + // + this.tableLayoutPanel1Patcher.ColumnCount = 1; + this.tableLayoutPanel1Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1Patcher.Controls.Add(this.tableLayoutPanel4Patcher, 0, 7); + this.tableLayoutPanel1Patcher.Controls.Add(this.tableLayoutPanel3Patcher, 0, 5); + this.tableLayoutPanel1Patcher.Controls.Add(this.tableLayoutPanel2Patcher, 0, 4); + this.tableLayoutPanel1Patcher.Controls.Add(this.trainerTitle, 0, 0); + this.tableLayoutPanel1Patcher.Controls.Add(this.disableVideos, 0, 3); + this.tableLayoutPanel1Patcher.Controls.Add(this.disableDrawDistance, 0, 2); + this.tableLayoutPanel1Patcher.Controls.Add(this.noCD, 0, 1); + this.tableLayoutPanel1Patcher.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1Patcher.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1Patcher.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1Patcher.Name = "tableLayoutPanel1Patcher"; + this.tableLayoutPanel1Patcher.RowCount = 8; + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F)); + this.tableLayoutPanel1Patcher.Size = new System.Drawing.Size(460, 307); + this.tableLayoutPanel1Patcher.TabIndex = 4; + // + // tableLayoutPanel4Patcher + // + this.tableLayoutPanel4Patcher.ColumnCount = 3; + this.tableLayoutPanel4Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel4Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel4Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel4Patcher.Controls.Add(this.patch, 0, 0); + this.tableLayoutPanel4Patcher.Controls.Add(this.restore, 2, 0); + this.tableLayoutPanel4Patcher.Controls.Add(this.restoreBackup, 1, 0); + this.tableLayoutPanel4Patcher.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4Patcher.Location = new System.Drawing.Point(0, 267); + this.tableLayoutPanel4Patcher.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel4Patcher.Name = "tableLayoutPanel4Patcher"; + this.tableLayoutPanel4Patcher.RowCount = 1; + this.tableLayoutPanel4Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel4Patcher.Size = new System.Drawing.Size(460, 40); + this.tableLayoutPanel4Patcher.TabIndex = 6; + // + // patch + // + this.patch.Dock = System.Windows.Forms.DockStyle.Fill; + this.patch.Location = new System.Drawing.Point(3, 3); + this.patch.Name = "patch"; + this.patch.Size = new System.Drawing.Size(147, 34); + this.patch.TabIndex = 3; + this.patch.Text = "Patch!"; + this.patch.UseVisualStyleBackColor = true; + this.patch.Click += new System.EventHandler(this.patch_Click); + // + // restore + // + this.restore.Dock = System.Windows.Forms.DockStyle.Fill; + this.restore.Location = new System.Drawing.Point(309, 3); + this.restore.Name = "restore"; + this.restore.Size = new System.Drawing.Size(148, 34); + this.restore.TabIndex = 3; + this.restore.Text = "Restore to original"; + this.restore.UseVisualStyleBackColor = true; + this.restore.Click += new System.EventHandler(this.restore_Click); + // + // restoreBackup + // + this.restoreBackup.Dock = System.Windows.Forms.DockStyle.Fill; + this.restoreBackup.Location = new System.Drawing.Point(156, 3); + this.restoreBackup.Name = "restoreBackup"; + this.restoreBackup.Size = new System.Drawing.Size(147, 34); + this.restoreBackup.TabIndex = 3; + this.restoreBackup.Text = "Restore from backup"; + this.restoreBackup.UseVisualStyleBackColor = true; + this.restoreBackup.Click += new System.EventHandler(this.restoreBackup_Click); + // + // tableLayoutPanel3Patcher + // + this.tableLayoutPanel3Patcher.ColumnCount = 5; + this.tableLayoutPanel3Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 155F)); + this.tableLayoutPanel3Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 35F)); + this.tableLayoutPanel3Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 15F)); + this.tableLayoutPanel3Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 35F)); + this.tableLayoutPanel3Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3Patcher.Controls.Add(this.aspect2, 3, 0); + this.tableLayoutPanel3Patcher.Controls.Add(this.aspect1, 1, 0); + this.tableLayoutPanel3Patcher.Controls.Add(this.aspectRatio, 0, 0); + this.tableLayoutPanel3Patcher.Controls.Add(this.pointsLabel, 2, 0); + this.tableLayoutPanel3Patcher.Location = new System.Drawing.Point(0, 150); + this.tableLayoutPanel3Patcher.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel3Patcher.Name = "tableLayoutPanel3Patcher"; + this.tableLayoutPanel3Patcher.RowCount = 1; + this.tableLayoutPanel3Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel3Patcher.Size = new System.Drawing.Size(413, 30); + this.tableLayoutPanel3Patcher.TabIndex = 5; + // + // aspect2 + // + this.aspect2.Dock = System.Windows.Forms.DockStyle.Fill; + this.aspect2.Location = new System.Drawing.Point(208, 3); + this.aspect2.Name = "aspect2"; + this.aspect2.Size = new System.Drawing.Size(29, 26); + this.aspect2.TabIndex = 6; + // + // aspect1 + // + this.aspect1.Dock = System.Windows.Forms.DockStyle.Fill; + this.aspect1.Location = new System.Drawing.Point(158, 3); + this.aspect1.Name = "aspect1"; + this.aspect1.Size = new System.Drawing.Size(29, 26); + this.aspect1.TabIndex = 4; + // + // aspectRatio + // + this.aspectRatio.AutoSize = true; + this.aspectRatio.Checked = true; + this.aspectRatio.CheckState = System.Windows.Forms.CheckState.Checked; + this.aspectRatio.Location = new System.Drawing.Point(3, 4); + this.aspectRatio.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.aspectRatio.Name = "aspectRatio"; + this.aspectRatio.Size = new System.Drawing.Size(146, 22); + this.aspectRatio.TabIndex = 2; + this.aspectRatio.Text = "Change aspect ratio"; + this.aspectRatio.UseVisualStyleBackColor = true; + this.aspectRatio.CheckedChanged += new System.EventHandler(this.aspectRatio_CheckedChanged); + // + // pointsLabel + // + this.pointsLabel.Anchor = System.Windows.Forms.AnchorStyles.None; + this.pointsLabel.AutoSize = true; + this.pointsLabel.Location = new System.Drawing.Point(193, 6); + this.pointsLabel.Name = "pointsLabel"; + this.pointsLabel.Size = new System.Drawing.Size(9, 18); + this.pointsLabel.TabIndex = 5; + this.pointsLabel.Text = ":"; + // + // tableLayoutPanel2Patcher + // + this.tableLayoutPanel2Patcher.ColumnCount = 6; + this.tableLayoutPanel2Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 155F)); + this.tableLayoutPanel2Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F)); + this.tableLayoutPanel2Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F)); + this.tableLayoutPanel2Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2Patcher.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2Patcher.Controls.Add(this.changeResolution, 0, 0); + this.tableLayoutPanel2Patcher.Controls.Add(this.height, 3, 0); + this.tableLayoutPanel2Patcher.Controls.Add(this.xLabel, 2, 0); + this.tableLayoutPanel2Patcher.Controls.Add(this.windowed, 5, 0); + this.tableLayoutPanel2Patcher.Controls.Add(this.width, 1, 0); + this.tableLayoutPanel2Patcher.Location = new System.Drawing.Point(0, 120); + this.tableLayoutPanel2Patcher.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2Patcher.Name = "tableLayoutPanel2Patcher"; + this.tableLayoutPanel2Patcher.RowCount = 1; + this.tableLayoutPanel2Patcher.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2Patcher.Size = new System.Drawing.Size(413, 30); + this.tableLayoutPanel2Patcher.TabIndex = 4; + // + // changeResolution + // + this.changeResolution.AutoSize = true; + this.changeResolution.Checked = true; + this.changeResolution.CheckState = System.Windows.Forms.CheckState.Checked; + this.changeResolution.Location = new System.Drawing.Point(3, 4); + this.changeResolution.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.changeResolution.Name = "changeResolution"; + this.changeResolution.Size = new System.Drawing.Size(134, 22); + this.changeResolution.TabIndex = 2; + this.changeResolution.Text = "Change resolution"; + this.changeResolution.UseVisualStyleBackColor = true; + this.changeResolution.CheckedChanged += new System.EventHandler(this.changeResolution_CheckedChanged); + // + // height + // + this.height.Dock = System.Windows.Forms.DockStyle.Fill; + this.height.Location = new System.Drawing.Point(238, 3); + this.height.Name = "height"; + this.height.Size = new System.Drawing.Size(54, 26); + this.height.TabIndex = 3; + // + // xLabel + // + this.xLabel.Anchor = System.Windows.Forms.AnchorStyles.None; + this.xLabel.AutoSize = true; + this.xLabel.Location = new System.Drawing.Point(218, 6); + this.xLabel.Name = "xLabel"; + this.xLabel.Size = new System.Drawing.Size(14, 18); + this.xLabel.TabIndex = 5; + this.xLabel.Text = "x"; + // + // windowed + // + this.windowed.AutoSize = true; + this.windowed.Location = new System.Drawing.Point(318, 4); + this.windowed.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.windowed.Name = "windowed"; + this.windowed.Size = new System.Drawing.Size(91, 22); + this.windowed.TabIndex = 2; + this.windowed.Text = "Windowed"; + this.windowed.UseVisualStyleBackColor = true; + this.windowed.CheckedChanged += new System.EventHandler(this.windowed_CheckedChanged); + // + // width + // + this.width.Dock = System.Windows.Forms.DockStyle.Fill; + this.width.Location = new System.Drawing.Point(158, 3); + this.width.Name = "width"; + this.width.Size = new System.Drawing.Size(54, 26); + this.width.TabIndex = 4; + // + // trainerTitle + // + this.trainerTitle.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.trainerTitle.AutoSize = true; + this.trainerTitle.Location = new System.Drawing.Point(3, 6); + this.trainerTitle.Name = "trainerTitle"; + this.trainerTitle.Size = new System.Drawing.Size(162, 18); + this.trainerTitle.TabIndex = 5; + this.trainerTitle.Text = "Choose options for patch:"; + // + // disableVideos + // + this.disableVideos.AutoSize = true; + this.disableVideos.Checked = true; + this.disableVideos.CheckState = System.Windows.Forms.CheckState.Checked; + this.disableVideos.Location = new System.Drawing.Point(3, 94); + this.disableVideos.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.disableVideos.Name = "disableVideos"; + this.disableVideos.Size = new System.Drawing.Size(143, 22); + this.disableVideos.TabIndex = 2; + this.disableVideos.Text = "Disable logo videos"; + this.disableVideos.UseVisualStyleBackColor = true; + // + // disableDrawDistance + // + this.disableDrawDistance.AutoSize = true; + this.disableDrawDistance.Checked = true; + this.disableDrawDistance.CheckState = System.Windows.Forms.CheckState.Checked; + this.disableDrawDistance.Location = new System.Drawing.Point(3, 64); + this.disableDrawDistance.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.disableDrawDistance.Name = "disableDrawDistance"; + this.disableDrawDistance.Size = new System.Drawing.Size(162, 22); + this.disableDrawDistance.TabIndex = 2; + this.disableDrawDistance.Text = "Disable draw distance"; + this.disableDrawDistance.UseVisualStyleBackColor = true; + // + // noCD + // + this.noCD.AutoSize = true; + this.noCD.Checked = true; + this.noCD.CheckState = System.Windows.Forms.CheckState.Checked; + this.noCD.Location = new System.Drawing.Point(3, 34); + this.noCD.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.noCD.Name = "noCD"; + this.noCD.Size = new System.Drawing.Size(98, 22); + this.noCD.TabIndex = 2; + this.noCD.Text = "NoCD patch"; + this.noCD.UseVisualStyleBackColor = true; + // + // infoTab + // + this.infoTab.Controls.Add(this.tableLayoutPanel1Info); + this.infoTab.Location = new System.Drawing.Point(4, 22); + this.infoTab.Name = "infoTab"; + this.infoTab.Padding = new System.Windows.Forms.Padding(3); + this.infoTab.Size = new System.Drawing.Size(460, 307); + this.infoTab.TabIndex = 2; + this.infoTab.Text = "Info"; + this.infoTab.UseVisualStyleBackColor = true; + // + // tableLayoutPanel1Info + // + this.tableLayoutPanel1Info.ColumnCount = 1; + this.tableLayoutPanel1Info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1Info.Controls.Add(this.infoText, 0, 0); + this.tableLayoutPanel1Info.Controls.Add(this.tableLayoutPanel2Info, 0, 1); + this.tableLayoutPanel1Info.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1Info.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel1Info.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1Info.Name = "tableLayoutPanel1Info"; + this.tableLayoutPanel1Info.RowCount = 2; + this.tableLayoutPanel1Info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1Info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 40F)); + this.tableLayoutPanel1Info.Size = new System.Drawing.Size(454, 301); + this.tableLayoutPanel1Info.TabIndex = 0; + // + // infoText + // + this.infoText.Anchor = System.Windows.Forms.AnchorStyles.None; + this.infoText.AutoSize = true; + this.infoText.Location = new System.Drawing.Point(32, 67); + this.infoText.Margin = new System.Windows.Forms.Padding(0); + this.infoText.Name = "infoText"; + this.infoText.Size = new System.Drawing.Size(390, 126); + this.infoText.TabIndex = 8; + this.infoText.Text = resources.GetString("infoText.Text"); + this.infoText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // tableLayoutPanel2Info + // + this.tableLayoutPanel2Info.ColumnCount = 3; + this.tableLayoutPanel2Info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel2Info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel2Info.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel2Info.Controls.Add(this.gitHub, 1, 0); + this.tableLayoutPanel2Info.Location = new System.Drawing.Point(0, 261); + this.tableLayoutPanel2Info.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel2Info.Name = "tableLayoutPanel2Info"; + this.tableLayoutPanel2Info.RowCount = 1; + this.tableLayoutPanel2Info.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2Info.Size = new System.Drawing.Size(454, 40); + this.tableLayoutPanel2Info.TabIndex = 7; + // + // gitHub + // + this.gitHub.Location = new System.Drawing.Point(154, 3); + this.gitHub.Name = "gitHub"; + this.gitHub.Size = new System.Drawing.Size(145, 34); + this.gitHub.TabIndex = 3; + this.gitHub.Text = "GitHub page"; + this.gitHub.UseVisualStyleBackColor = true; + // + // Form1 + // + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(468, 355); + this.Controls.Add(this.tabs); + this.Controls.Add(this.statusStrip); + this.Cursor = System.Windows.Forms.Cursors.Default; + this.Font = new System.Drawing.Font("Comic Sans MS", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204))); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4); + this.MaximizeBox = false; + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Taz Wanted trainer and patcher v1.0"; + this.statusStrip.ResumeLayout(false); + this.statusStrip.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.numericJump)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericSpeed)).EndInit(); + this.tableLayoutPanel1Trainer.ResumeLayout(false); + this.tableLayoutPanel2Trainer.ResumeLayout(false); + this.tableLayoutPanel2Trainer.PerformLayout(); + this.tableLayoutPanel4Trainer.ResumeLayout(false); + this.tableLayoutPanel4Trainer.PerformLayout(); + this.tableLayoutPanel3Trainer.ResumeLayout(false); + this.tableLayoutPanel3Trainer.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureTaz)).EndInit(); + this.tabs.ResumeLayout(false); + this.trainerTab.ResumeLayout(false); + this.patcherTab.ResumeLayout(false); + this.tableLayoutPanel1Patcher.ResumeLayout(false); + this.tableLayoutPanel1Patcher.PerformLayout(); + this.tableLayoutPanel4Patcher.ResumeLayout(false); + this.tableLayoutPanel3Patcher.ResumeLayout(false); + this.tableLayoutPanel3Patcher.PerformLayout(); + this.tableLayoutPanel2Patcher.ResumeLayout(false); + this.tableLayoutPanel2Patcher.PerformLayout(); + this.infoTab.ResumeLayout(false); + this.tableLayoutPanel1Info.ResumeLayout(false); + this.tableLayoutPanel1Info.PerformLayout(); + this.tableLayoutPanel2Info.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.CheckBox drawDistance; + private System.Windows.Forms.NumericUpDown numericJump; + private System.Windows.Forms.Label jumpLabel; + public System.Windows.Forms.ToolStripStatusLabel statusField; + private System.Windows.Forms.Label speedLabel; + private System.Windows.Forms.NumericUpDown numericSpeed; + private System.Windows.Forms.StatusStrip statusStrip; + private System.Windows.Forms.CheckBox superBelchCan; + private System.Windows.Forms.CheckBox flyMode; + private System.Windows.Forms.Timer timer; + private System.Windows.Forms.CheckBox smoothLight; + private System.Windows.Forms.CheckBox invisibility; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1Trainer; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2Trainer; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4Trainer; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3Trainer; + private System.Windows.Forms.PictureBox pictureTaz; + private System.Windows.Forms.TabControl tabs; + private System.Windows.Forms.TabPage trainerTab; + private System.Windows.Forms.TabPage patcherTab; + private System.Windows.Forms.CheckBox noCD; + private System.Windows.Forms.Button restore; + private System.Windows.Forms.Button patch; + private System.Windows.Forms.CheckBox disableDrawDistance; + private System.Windows.Forms.CheckBox disableVideos; + private System.Windows.Forms.CheckBox aspectRatio; + private System.Windows.Forms.CheckBox changeResolution; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1Patcher; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2Patcher; + private System.Windows.Forms.CheckBox windowed; + private System.Windows.Forms.TextBox height; + private System.Windows.Forms.TextBox width; + private System.Windows.Forms.Label xLabel; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3Patcher; + private System.Windows.Forms.TextBox aspect2; + private System.Windows.Forms.TextBox aspect1; + private System.Windows.Forms.Label pointsLabel; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4Patcher; + private System.Windows.Forms.Label trainerTitle; + private System.Windows.Forms.TabPage infoTab; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1Info; + private System.Windows.Forms.Label infoText; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2Info; + private System.Windows.Forms.Button gitHub; + private System.Windows.Forms.Button restoreBackup; + private System.Windows.Forms.CheckBox freezeLevelTimer; + } +} + diff --git a/Taz trainer/Form1.cs b/Taz trainer/Form1.cs new file mode 100644 index 0000000..d3dbb42 --- /dev/null +++ b/Taz trainer/Form1.cs @@ -0,0 +1,1176 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Diagnostics; +using System.Runtime.InteropServices; +using Utilities; +using Microsoft.Win32; +using System.IO; + +namespace Taz_trainer +{ + public partial class Form1 : Form + { + // dll import (pinvoke.net) + [DllImport("kernel32.dll", SetLastError = true)] + public static extern IntPtr OpenProcess(int processAccess, bool bInheritHandle, int processId); + + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool CloseHandle(IntPtr hObject); + + [DllImport("kernel32.dll", SetLastError = true)] + static extern bool WriteProcessMemory(IntPtr hProcess,IntPtr lpBaseAddress,byte[] lpBuffer,int nSize,out IntPtr lpNumberOfBytesWritten); + + [DllImport("kernel32.dll", SetLastError = true)] + static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out IntPtr lpNumberOfBytesRead); + + + public Form1() + { + InitializeComponent(); + + gkh.HookedKeys.Add(Keys.F1); + gkh.HookedKeys.Add(Keys.F2); + gkh.HookedKeys.Add(Keys.F3); + gkh.HookedKeys.Add(Keys.F4); + gkh.HookedKeys.Add(Keys.F5); + gkh.HookedKeys.Add(Keys.F6); + gkh.HookedKeys.Add(Keys.PageDown); + gkh.HookedKeys.Add(Keys.PageUp); + gkh.HookedKeys.Add(Keys.Subtract); + gkh.HookedKeys.Add(Keys.Add); + + gkh.HookedKeys.Add(Keys.NumPad9); + gkh.HookedKeys.Add(Keys.NumPad8); + gkh.HookedKeys.Add(Keys.NumPad7); + gkh.HookedKeys.Add(Keys.NumPad6); + gkh.HookedKeys.Add(Keys.NumPad5); + gkh.HookedKeys.Add(Keys.NumPad4); + gkh.HookedKeys.Add(Keys.NumPad2); + + gkh.KeyDown += new KeyEventHandler(gkh_KeyDown); + gkh.KeyUp += new KeyEventHandler(gkh_KeyUp); + + autoFillVideo(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); + + } + + + //####################################################################################################################### + //Key hooker functions + + globalKeyboardHook gkh = new globalKeyboardHook(); + + + void gkh_KeyUp(object sender, KeyEventArgs e) + { + + e.Handled = true; + } + + + void gkh_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.F1) + { + this.invisibility.Checked = !this.invisibility.Checked; + } + if (e.KeyCode == Keys.F2) + { + this.superBelchCan.Checked = !this.superBelchCan.Checked; + } + if (e.KeyCode == Keys.F3) + { + this.flyMode.Checked = !this.flyMode.Checked; + } + if (e.KeyCode == Keys.F4) + { + this.freezeLevelTimer.Checked = !this.freezeLevelTimer.Checked; + } + if (e.KeyCode == Keys.F5) + { + this.drawDistance.Checked = !this.drawDistance.Checked; + } + if (e.KeyCode == Keys.F6) + { + this.smoothLight.Checked = !this.smoothLight.Checked; + } + if (e.KeyCode == Keys.PageUp) + { + this.numericSpeed.UpButton(); + } + if (e.KeyCode == Keys.PageDown) + { + this.numericSpeed.DownButton(); + } + if (e.KeyCode == Keys.Add) + { + this.numericJump.UpButton(); + } + if (e.KeyCode == Keys.Subtract) + { + this.numericJump.DownButton(); + } + + + if (e.KeyCode == Keys.NumPad5) + { + //if (e.IsRepeat) return; + this.flyMode.Checked = !this.flyMode.Checked; + } + if (e.KeyCode == Keys.NumPad9) + { + if (this.flyMode.Checked == true) + { + movement(0); //Z+ + } + } + if (e.KeyCode == Keys.NumPad8) + { + if (this.flyMode.Checked == true) + { + movement(4); //Y+ + } + } + if (e.KeyCode == Keys.NumPad7) + { + if (this.flyMode.Checked == true) + { + movement(1); //Z- + } + } + if (e.KeyCode == Keys.NumPad6) + { + if (this.flyMode.Checked == true) + { + movement(2); //X+ + } + } + if (e.KeyCode == Keys.NumPad4) + { + if (this.flyMode.Checked == true) + { + movement(3); //X- + } + } + if (e.KeyCode == Keys.NumPad2) + { + if (this.flyMode.Checked == true) + { + movement(5); //Y- + } + } + + e.Handled = true; + } + + //####################################################################################################################### + //Process functions + + public string procName = "Taz"; + + + //Searching process + private int findProcessId(string procName) + { + var procList = Process.GetProcesses(); + + foreach (var proc in procList) + { + if (proc.ProcessName == procName && proc.ProcessName.Length == procName.Length) + { + return proc.Id; + } + } + return 0; + } + + + //Read memory from process + private byte[] checkAndRead(IntPtr adress, byte[] bytes, int size, IntPtr mem) + { + int procId = findProcessId(procName); + if (procId == 0) + { + this.statusField.Text = "Change option failed. " + procName + " process not found!"; + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + return bytes; + } + this.statusField.Text = procName + "process found"; + var handle = OpenProcess(0x001F0FFF, false, procId); + ReadProcessMemory(handle, (IntPtr)adress, bytes, size, out mem); + CloseHandle(handle); + return bytes; + } + + + //Write process in memory + private void checkAndWrite(IntPtr adress, byte[] bytes, int size, IntPtr mem) + { + int procId = findProcessId(procName); + if (procId == 0) + { + this.statusField.Text = "Change option failed. " + procName + " process not found!"; + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + return; + } + var handle = OpenProcess(0x001F0FFF, false, procId); + this.statusField.Text = procName + " process found. Handle = " + handle; + this.statusField.ForeColor = System.Drawing.Color.DarkGreen; + if (WriteProcessMemory(handle, (IntPtr)adress, bytes, size, out mem) == false) { + this.statusField.Text = "WriteProcessMemory failed! Handle = " + handle; + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + }; + CloseHandle(handle); + } + + + //####################################################################################################################### + //Other + + private void autoFillVideo(int width, int height) + { + //fill resolution + this.width.Text = width.ToString(); + this.height.Text = height.ToString(); + + //calculate aspect ratio + int a = width; + int b = height; + while (b != 0) + { + int temp = b; + b = a % b; + a = temp; + } + int aspect1 = width / a; + int aspect2 = height / a; + //if long + while (aspect1 > 255 || aspect2 > 255) + { + aspect1 /= 2; + aspect2 /= 2; + } + //fill aspect + this.aspect1.Text = aspect1.ToString(); + this.aspect2.Text = aspect2.ToString(); + } + + + //####################################################################################################################### + //Cheats + private void memoryEdit(int adress, byte[] bytes) + { + int size = bytes.Length; + var mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + } + + private void drawDistance_CheckedChanged(object sender, EventArgs e) + { + if (this.drawDistance.Checked == true) + { + byte[] bytes = { 0xFF }; + checkAndWrite((IntPtr)0x00474FC4, bytes, bytes.Length, new IntPtr()); + byte[] bytes2 = { 0x74 }; + checkAndWrite((IntPtr)0x00474FD0, bytes2, bytes2.Length, new IntPtr()); + + message("Infinity draw distance: on"); + } + else + { + byte[] bytes = { 0x00 }; + checkAndWrite((IntPtr)0x00474FC4, bytes, bytes.Length, new IntPtr()); + byte[] bytes2 = { 0x75 }; + checkAndWrite((IntPtr)0x00474FD0, bytes2, bytes2.Length, new IntPtr()); + + message("Infinity draw distance: off"); + } + } + + private void numericJump_ValueChanged(object sender, EventArgs e) + { + float impulse = 1750; + impulse *= (float)numericJump.Value; + checkAndWrite((IntPtr)0x0048129F, BitConverter.GetBytes(impulse), BitConverter.GetBytes(impulse).Length, new IntPtr()); + + message("Jump impulse: x" + numericJump.Value.ToString()); + } + + private void numericSpeed_ValueChanged(object sender, EventArgs e) + { + float val = 1; + //correction to 0.1 + if ((float)numericSpeed.Value == 0) + { + val = (float)0.1; + } + else + { + val = (float)numericSpeed.Value; + } + + checkAndWrite((IntPtr)0x006F4A3C, BitConverter.GetBytes(val), BitConverter.GetBytes((float)numericSpeed.Value).Length, new IntPtr()); + message("Game speed: x" + val.ToString()); + } + + private void superBelchCan_CheckedChanged(object sender, EventArgs e) + { + if (this.superBelchCan.Checked == true) + { + byte[] bytes = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; + checkAndWrite((IntPtr)0x00482FE2, bytes, bytes.Length, new IntPtr()); + + message("Always super burp: on"); + } + else + { + byte[] bytes = { 0x0F, 0x85, 0x95, 0x00, 0x00, 0x00 }; + checkAndWrite((IntPtr)0x00482FE2, bytes, bytes.Length, new IntPtr()); + + message("Always super burp: off"); + } + } + + + private void invisibility_CheckedChanged(object sender, EventArgs e) + { + var adress = 0x006C8BC0; //Base adress + byte[] bytes = { 0x00, 0x00, 0x00, 0x00 }; + bytes = checkAndRead((IntPtr)adress, bytes, bytes.Length, new IntPtr()); + adress = BitConverter.ToInt32(bytes, 0); + adress += 0x1CC; + bytes = checkAndRead((IntPtr)adress, bytes, bytes.Length, new IntPtr()); + adress = BitConverter.ToInt32(bytes, 0); + adress += 0x170; + + if (this.invisibility.Checked == true) + { + byte[] bytes2 = { 0x85 }; + checkAndWrite((IntPtr)0x0051F2E7, bytes2, bytes2.Length, new IntPtr()); + bytes2[0] = 0x01; + checkAndWrite((IntPtr)0x0051F47E, bytes2, bytes2.Length, new IntPtr()); + //bytes2[0] = 0x01; + checkAndWrite((IntPtr)adress, bytes2, bytes2.Length, new IntPtr()); + + message("Invisibility: on"); + } + else + { + byte[] bytes2 = { 0x84 }; + checkAndWrite((IntPtr)0x0051F2E7, bytes2, bytes2.Length, new IntPtr()); + bytes2[0] = 0x00; + checkAndWrite((IntPtr)0x0051F47E, bytes2, bytes2.Length, new IntPtr()); + //bytes2[0] = 0x00; + checkAndWrite((IntPtr)adress, bytes2, bytes2.Length, new IntPtr()); + + message("Invisibility: off"); + } + } + + + private void flyMode_CheckedChanged(object sender, EventArgs e) + { + + byte[] bytes = { 0x81, 0xBF, 0xA0, 0x01, 0x00, 0x00, 0x74, 0x61, 0x7A, 0x64, 0x0F, 0x84, 0xC5, 0xBB, 0xE6, 0xFF, 0xD9, 0x44, 0x24, 0x54, 0xD8, 0x63, 0x04, 0xD9, 0x9F, 0xC4, 0x00, 0x00, 0x00, 0xE9, 0xB3, 0xBB, 0xE6, 0xFF }; + checkAndWrite((IntPtr)0x005F6670, bytes, bytes.Length, new IntPtr()); + + /* + //Editing taz state in structure + adress = 0x006C8BC0; //Base adress + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + adress = BitConverter.ToInt32(bytes, 0); + adress += 0x1C8; //Second adress + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + adress = BitConverter.ToInt32(bytes, 0); + adress += 0xB0; //Target adress + + bytes[0] = 0x00; + size = 1; + + if (this.flyMode.Checked == true) + { + bytes[0] = 0x00; // 3C; + } + */ + + //Change instruction for gravity + + + if (this.flyMode.Checked == true) + { + byte[] bytes2 = { 0xE9, 0x33, 0x44, 0x19, 0x00, 0x90, 0x90 }; + checkAndWrite((IntPtr)0x00462238, bytes2, bytes2.Length, new IntPtr()); + + message("Fly mode: on (use numpad)"); + } + else + { + //Z force = 0 + var adress = 0x006C8BC0; //Base adress + byte[] bytes3 = { 0x00, 0x00, 0x00, 0x00 }; + bytes = checkAndRead((IntPtr)adress, bytes3, bytes3.Length, new IntPtr()); + adress = BitConverter.ToInt32(bytes3, 0); + adress += 0x1C0; + bytes = checkAndRead((IntPtr)adress, bytes3, bytes3.Length, new IntPtr()); + adress = BitConverter.ToInt32(bytes3, 0); + adress += 0x98; + checkAndWrite((IntPtr)adress, bytes3, bytes3.Length, new IntPtr()); + + byte[] bytes2 = { 0xD9, 0x44, 0x24, 0x54, 0xD8, 0x63, 0x04 }; + checkAndWrite((IntPtr)0x00462238, bytes2, bytes2.Length, new IntPtr()); + + message("Fly mode: off"); + } + } + + private void movement (byte dir) + { + //Read taz structure coordinates offset + float value; + var adress = 0x006C8BC0; //Base adress + byte[] bytes = { 0x00, 0x00, 0x00, 0x00 }; + int size = bytes.Length; + var mem = new IntPtr(); + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + adress = BitConverter.ToInt32(bytes, 0); + switch (dir) + { + + case (0): //Z+ + //Coordinate + adress += 0xC4; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + /* + //Camera + adress = 0x00708994; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + //Camera point at + adress = 0x007089A4; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + break; + + case (1): //Z- + //Coordinate + adress += 0xC4; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + /* + //Camera + adress = 0x00708994; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + //Camera point at + adress = 0x007089A4; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + break; + + case (2): //X+ + //Coordinate + adress += 0xC0; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + /* + //Camera + adress = 0x00708990; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + //Camera point at + adress = 0x007089A0; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + break; + + case (3): //X- + //Coordinate + adress += 0xC0; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + /* + //Camera + adress = 0x00708990; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + //Camera point at + adress = 0x007089A0; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + break; + + case (4): //Y+ + //Coordinate + adress += 0xC8; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + /* + //Camera + adress = 0x00708998; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + //Camera point at + adress = 0x007089A8; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value += 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + break; + + case (5): //Y- + //Coordinate + adress += 0xC8; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + /* + //Camera + adress = 0x00708998; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + //Camera point at + adress = 0x007089A8; + bytes = checkAndRead((IntPtr)adress, bytes, size, mem); + value = BitConverter.ToSingle(bytes, 0); + value -= 1000; + bytes = BitConverter.GetBytes(value); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + break; + } + } + + + private void freezeLevelTimer_CheckedChanged(object sender, EventArgs e) + { + + if (this.freezeLevelTimer.Checked == true) + { + //bonuscrates + byte[] bytes = { 0x31, 0xDB, 0xEB, 0x10 }; + checkAndWrite((IntPtr)0x004ECF9F, bytes, bytes.Length, new IntPtr()); + + //bonusrace + byte[] bytes2 = { 0xA1, 0x2C, 0xC6, 0x71, 0x00, 0x83, 0xF8, 0x01, 0xEB, 0x10 }; + checkAndWrite((IntPtr)0x004F7305, bytes2, bytes2.Length, new IntPtr()); + + //gladiatoons + byte[] bytes3 = { 0x8A, 0x15, 0x54, 0x4A, 0x6F, 0x00, 0x84, 0xD2, 0xC7, 0x44, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00, 0xEB, 0x10 }; + checkAndWrite((IntPtr)0x00518D88, bytes3, bytes3.Length, new IntPtr()); + + //leveltime + byte[] bytes4 = { 0x0F, 0xBE, 0x0D, 0x30, 0x4C, 0x70, 0x00, 0x51, 0xEB, 0x10 }; + checkAndWrite((IntPtr)0x004A7543, bytes4, bytes4.Length, new IntPtr()); + + message("Freeze level timer: on"); + } + else + { + //bonuscrates + byte[] bytes = { 0xD9, 0x05, 0x88, 0x4B }; + checkAndWrite((IntPtr)0x004ECF9F, bytes, bytes.Length, new IntPtr()); + + //bonusrace + byte[] bytes2 = { 0xD9, 0x05, 0x88, 0x4B, 0x6F, 0x00, 0xA1, 0x2C, 0xC6, 0x71 }; + checkAndWrite((IntPtr)0x004F7305, bytes2, bytes2.Length, new IntPtr()); + + //gladiatoons + byte[] bytes3 = { 0xD9, 0x05, 0x88, 0x4B, 0x6F, 0x00, 0x8A, 0x15, 0x54, 0x4A, 0x6F, 0x00, 0x84, 0xD2, 0xD8, 0x05, 0x84, 0x65 }; + checkAndWrite((IntPtr)0x00518D88, bytes3, bytes3.Length, new IntPtr()); + + //leveltime + byte[] bytes4 = { 0xD9, 0x05, 0xB8, 0x8B, 0x6C, 0x00, 0x0F, 0xBE, 0x0D, 0x30 }; + checkAndWrite((IntPtr)0x004A7543, bytes4, bytes4.Length, new IntPtr()); + + message("Freeze level timer: off"); + } + } + + private void smoothLight_CheckedChanged(object sender, EventArgs e) + { + //Code injection + byte[] bytes = { 0x50, 0xB8, 0x05, 0x00, 0x00, 0x00, 0x89, 0x87, 0x44, 0x01, 0x00, 0x00, 0x58, 0xD8, 0x1D, 0x3C, 0x73, 0x5F, 0x00, 0xE9, 0xA7, 0xBB, 0xE6, 0xFF }; + checkAndWrite((IntPtr)0x005F66A0, bytes, bytes.Length, new IntPtr()); + //Jump to injection + byte[] bytes2 = { 0xE9, 0x42, 0x44, 0x19, 0x00, 0x90 }; + checkAndWrite((IntPtr)0x00462259, bytes2, bytes2.Length, new IntPtr()); + + if (this.smoothLight.Checked == true) + { + + //Lighting mode 5 + byte[] bytes3 = { 0x05 }; + checkAndWrite((IntPtr)0x005F66A2, bytes3, bytes3.Length, new IntPtr()); + + message("Smooth lighting: on"); + } + else + { + //Lighting mode 4 + byte[] bytes3 = { 0x04 }; + checkAndWrite((IntPtr)0x005F66A2, bytes3, bytes3.Length, new IntPtr()); + + message("Smooth lighting: off"); + } + } + + + private void message(string message) + { + //Jmp to show text + var adress = 0x004A9AED; + byte[] bytes = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 }; + int size = 6; + var mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Push text + adress = 0x004A9B0A; + bytes[0] = 0x00; + bytes[1] = 0xC4; + bytes[2] = 0x58; + bytes[3] = 0x00; + size = 4; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Hide additional info 1 + adress = 0x00643030; + bytes[0] = 0x00; + size = 1; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Hide additional info 2 + adress = 0x00643038; + bytes[0] = 0x00; + size = 1; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Text + adress = 0x0058C400; //Cave for text adress + byte[] bytes2 = Encoding.ASCII.GetBytes(message); + size = bytes2.Length + 1; // +1 adds zero at end + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes2, size, mem); + + timer.Stop(); + timer.Start(); + + /* + //Jmp to show text + var adress = 0x004A9D5C; //Base adress + byte[] bytes = { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x68, 0x00, 0xC4, 0x58, 0x00 }; + //byte[] bytes = { 0x0F, 0x85, 0x93, 0x00, 0x00, 0x00, 0x68, 0x24, 0x30, 0x64, 0x00 }; + int size = 11; + var mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Text + adress = 0x0058C400; //Cave for text adress + byte[] bytes2 = Encoding.ASCII.GetBytes(message); + size = bytes2.Length + 1; //Add zero + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes2, size, mem); + + timer.Stop(); + timer.Enabled = true; + */ + } + + private void timer_Tick(object sender, EventArgs e) + { + timer.Stop(); + + //Return original instructions of show text + var adress = 0x004A9AED; + byte[] bytes = { 0x0F, 0x84, 0x56, 0x02, 0x00, 0x00 }; + int size = 6; + var mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Restore to original push + adress = 0x004A9B0A; + bytes[0] = 0x2C; + bytes[1] = 0x12; + bytes[2] = 0x64; + bytes[3] = 0x00; + size = 4; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Restore to original text 1 + adress = 0x00643030; + bytes[0] = 0x25; + size = 1; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + //Restore to original text 2 + adress = 0x00643038; + bytes[0] = 0x28; + size = 1; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + + /* + //Original push + adress = 0x004A9B09; //Base adress + byte[] bytes2 = { 0x68, 0x2C, 0x12, 0x64, 0x00 }; + size = 5; + mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + /* + timer.Enabled = false; + //Return original instructions of show text + var adress = 0x004A9D5C; //Base adress + byte[] bytes = { 0x0F, 0x85, 0x93, 0x00, 0x00, 0x00, 0x68, 0x24, 0x30, 0x64, 0x00 }; + int size = 11; + var mem = new IntPtr(); + checkAndWrite((IntPtr)adress, bytes, size, mem); + */ + } + + + + //####################################################################################################################### + //Patcher + + private void patch_Click(object sender, EventArgs e) + { + try + { + //Check checkboxes + if (this.noCD.Checked == false && this.disableDrawDistance.Checked == false && this.disableVideos.Checked == false && this.changeResolution.Checked == false && this.aspectRatio.Checked == false) + { + MessageBox.Show("Select at least one option", "No options selected", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + //Read path from registry + string TazGameFolder = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Infogrames Interactive\TazWanted\Release", "Location", null); + if (TazGameFolder == null) + { + // Search in x86 registry + TazGameFolder = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Infogrames Interactive\TazWanted\Release", "Location", null); + } + + bool backuped = false; + + //backup taz.exe + if (File.Exists(TazGameFolder + "\\Taz.exe.backup") == false) + { + File.Copy(TazGameFolder + "\\Taz.exe", TazGameFolder + "\\Taz.exe.backup"); + backuped = true; + } + + //noCD + if (this.noCD.Checked == true) + { + using (var file = new FileStream(TazGameFolder + "\\Taz.exe", FileMode.Open, FileAccess.ReadWrite)) + { + + byte[] bytes = new byte[] { 0x33, 0xC0, 0x40, 0xC3 }; + file.Position = 0xA1F10; + file.WriteByte(bytes[0]); + file.WriteByte(bytes[1]); + file.WriteByte(bytes[2]); + file.WriteByte(bytes[3]); + file.Close(); + } + } + + //disable draw distance + if (this.disableDrawDistance.Checked == true) + { + using (var file = new FileStream(TazGameFolder + "\\Taz.exe", FileMode.Open, FileAccess.ReadWrite)) + { + byte[] bytes = new byte[] { 0xFF, 0xFF, 0x74 }; // 00 00 75 + file.Position = 0x74FC4; + file.WriteByte(bytes[0]); + file.WriteByte(bytes[1]); + file.Position = 0x74FD0; + file.WriteByte(bytes[2]); + file.Close(); + } + + using (var file = new FileStream(TazGameFolder + "\\taz.dat", FileMode.Open, FileAccess.ReadWrite)) + { + //max default + file.Position = 0x44; + file.WriteByte(0xFF); + file.WriteByte(0xFF); + file.Close(); + } + } + + //disable videos + if (this.disableVideos.Checked == true) + { + if (Directory.Exists(TazGameFolder + "\\DISABLED Videos") == false) + { + Directory.Move(TazGameFolder + "\\Videos", TazGameFolder + "\\DISABLED Videos"); + } + } + + //resolution + if (this.changeResolution.Checked == true) + { + if (this.windowed.Checked == false) + { + byte[] width = BitConverter.GetBytes(UInt32.Parse(this.width.Text)); + byte[] height = BitConverter.GetBytes(UInt32.Parse(this.height.Text)); + + using (var file = new FileStream(TazGameFolder + "\\taz.dat", FileMode.Open, FileAccess.ReadWrite)) + { + //width + file.Position = 0x24; + file.WriteByte(width[0]); + file.WriteByte(width[1]); + file.WriteByte(width[2]); + file.WriteByte(width[3]); + //height + file.Position = 0x28; + file.WriteByte(height[0]); + file.WriteByte(height[1]); + file.WriteByte(height[2]); + file.WriteByte(height[3]); + //32 bits on color + file.Position = 0x30; + file.WriteByte(0x20); + //fullscreen + file.Position = 0x34; + file.WriteByte(0x00); + //lighting + file.Position = 0x38; + file.WriteByte(0x01); + //outlines + file.Position = 0x3C; + file.WriteByte(0x01); + //no voodoo + file.Position = 0x40; + file.WriteByte(0x00); + file.Close(); + } + } + else + { + using (var file = new FileStream(TazGameFolder + "\\taz.dat", FileMode.Open, FileAccess.ReadWrite)) + { + //windowed + file.Position = 0x34; + file.WriteByte(0x01); + file.Close(); + } + } + } + + //aspect ratio + if (this.aspectRatio.Checked == true) + { + byte aspect1 = Byte.Parse(this.aspect1.Text); + byte aspect2 = Byte.Parse(this.aspect2.Text); + + using (var file = new FileStream(TazGameFolder + "\\Taz.exe", FileMode.Open, FileAccess.ReadWrite)) + { + //windowed + file.Position = 0x8FD76; + file.WriteByte(aspect1); + file.Position = 0x8FD7D; + file.WriteByte(aspect2); + file.Close(); + } + } + + //end + this.statusField.Text = "Patched successfully (" + TazGameFolder + ")"; + if (backuped == true) + { + this.statusField.Text += " and created backup of taz.exe"; + } + this.statusField.ForeColor = System.Drawing.Color.DarkGreen; + MessageBox.Show("Patched successfully", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + this.statusField.Text = ex.Message.ToString(); + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + } + } + + + private void restore_Click(object sender, EventArgs e) + { + try + { + var result = MessageBox.Show("This will restore CD check, draw distance, logo videos and set video mode to 1024x768 (4:3 fullscreen). Continue?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (result == DialogResult.Yes) + { + //Read path from registry + string TazGameFolder = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Infogrames Interactive\TazWanted\Release", "Location", null); + if (TazGameFolder == null) + { + // Search in x86 registry + TazGameFolder = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Infogrames Interactive\TazWanted\Release", "Location", null); + } + + //restore CD check + using (var file = new FileStream(TazGameFolder + "\\Taz.exe", FileMode.Open, FileAccess.ReadWrite)) + { + byte[] bytes = new byte[] { 0x81, 0xEC, 0x38, 0x01 }; + file.Position = 0xA1F10; + file.WriteByte(bytes[0]); + file.WriteByte(bytes[1]); + file.WriteByte(bytes[2]); + file.WriteByte(bytes[3]); + file.Close(); + } + //restore draw distace + using (var file = new FileStream(TazGameFolder + "\\Taz.exe", FileMode.Open, FileAccess.ReadWrite)) + { + byte[] bytes = new byte[] { 0x00, 0x00, 0x75 }; + file.Position = 0x74FC4; + file.WriteByte(bytes[0]); + file.WriteByte(bytes[1]); + file.Position = 0x74FD0; + file.WriteByte(bytes[2]); + file.Close(); + } + using (var file = new FileStream(TazGameFolder + "\\taz.dat", FileMode.Open, FileAccess.ReadWrite)) + { + //max default + file.Position = 0x44; + file.WriteByte(0x30); + file.WriteByte(0x02); + file.Close(); + } + //restore videos + if (Directory.Exists(TazGameFolder + "\\Videos") == false) + { + Directory.Move(TazGameFolder + "\\DISABLED Videos", TazGameFolder + "/Videos"); + } + //restore resolution + using (var file = new FileStream(TazGameFolder + "\\taz.dat", FileMode.Open, FileAccess.ReadWrite)) + { + //width + file.Position = 0x24; + file.WriteByte(0x00); + file.WriteByte(0x04); + file.WriteByte(0x00); + file.WriteByte(0x00); + //height + file.Position = 0x28; + file.WriteByte(0x00); + file.WriteByte(0x03); + file.WriteByte(0x00); + file.WriteByte(0x00); + //32 bits on color + file.Position = 0x30; + file.WriteByte(0x20); + //fullscreen + file.Position = 0x34; + file.WriteByte(0x00); + //lighting + file.Position = 0x38; + file.WriteByte(0x01); + //outlines + file.Position = 0x3C; + file.WriteByte(0x01); + //no voodoo + file.Position = 0x40; + file.WriteByte(0x00); + file.Close(); + } + //restore aspect ratio + using (var file = new FileStream(TazGameFolder + "\\Taz.exe", FileMode.Open, FileAccess.ReadWrite)) + { + //windowed + file.Position = 0x8FD76; + file.WriteByte(0x04); + file.Position = 0x8FD7D; + file.WriteByte(0x03); + file.Close(); + } + //restore end + this.statusField.Text = "Restored successfully (" + TazGameFolder + ")"; + this.statusField.ForeColor = System.Drawing.Color.DarkGreen; + MessageBox.Show("Restored successfully", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + catch (Exception ex) + { + this.statusField.Text = ex.Message.ToString(); + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + } + + } + + + private void restoreBackup_Click(object sender, EventArgs e) + { + try + { + var result = MessageBox.Show("This will restore previously created backup of taz.exe file. Continue?", "Are you sure?", MessageBoxButtons.YesNo, MessageBoxIcon.Question); + if (result == DialogResult.Yes) + { + //Read path from registry + string TazGameFolder = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Infogrames Interactive\TazWanted\Release", "Location", null); + if (TazGameFolder == null) + { + // Search in x86 registry + TazGameFolder = (string)Registry.GetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Infogrames Interactive\TazWanted\Release", "Location", null); + } + + //Check backup + if (File.Exists(TazGameFolder + "\\Taz.exe.backup") == true) + { + //Replace + File.Delete(TazGameFolder + "\\Taz.exe"); + File.Copy(TazGameFolder + "\\Taz.exe.backup", TazGameFolder + "\\Taz.exe"); + } + else + { + this.statusField.Text = "Taz.exe.backup not found!"; + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + return; + } + //restore end + this.statusField.Text = "Restored successfully (" + TazGameFolder + ")"; + this.statusField.ForeColor = System.Drawing.Color.DarkGreen; + MessageBox.Show("Restored successfully", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + catch (Exception ex) + { + this.statusField.Text = ex.Message.ToString(); + this.statusField.ForeColor = System.Drawing.Color.DarkRed; + } + } + + //####################################################################################################################### + //GUI + + private void aspectRatio_CheckedChanged(object sender, EventArgs e) + { + if (this.aspectRatio.Checked == true) + { + this.aspect1.Enabled = true; + this.pointsLabel.Enabled = true; + this.aspect2.Enabled = true; + } + else + { + this.aspect1.Enabled = false; + this.pointsLabel.Enabled = false; + this.aspect2.Enabled = false; + } + } + + private void changeResolution_CheckedChanged(object sender, EventArgs e) + { + if (this.changeResolution.Checked == true) + { + this.windowed.Enabled = true; + if (this.windowed.Checked == false) + { + this.height.Enabled = true; + this.xLabel.Enabled = true; + this.width.Enabled = true; + } + this.aspectRatio.Checked = true; + } + else + { + this.windowed.Enabled = false; + this.height.Enabled = false; + this.xLabel.Enabled = false; + this.width.Enabled = false; + this.aspectRatio.Checked = false; + } + } + + private void windowed_CheckedChanged(object sender, EventArgs e) + { + if (this.windowed.Checked == true) + { + this.height.Enabled = false; + this.xLabel.Enabled = false; + this.width.Enabled = false; + autoFillVideo(640, 480); + this.aspectRatio.Checked = true; + } + else + { + this.height.Enabled = true; + this.xLabel.Enabled = true; + this.width.Enabled = true; + autoFillVideo(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); + this.aspectRatio.Checked = true; + } + } + } +} diff --git a/Taz trainer/Form1.resx b/Taz trainer/Form1.resx new file mode 100644 index 0000000..9c4ba6f --- /dev/null +++ b/Taz trainer/Form1.resx @@ -0,0 +1,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 115, 18 + + + Taz Wanted trainer and patcher v1.0 + +Trainer usage: launch game and use keys to activate cheats. +Patcher usage: select necessary patches and click "Patch!". +Apply pathes after configuring options in native game launcher! + +Source code available on GitHub. + + + + + AAABAAEAcnIAAAEACADwPgAAFgAAACgAAAByAAAA5AAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAwEBAAEBAwARAQEAAQMDAAMDAwAEBAUABwUFAAMFCAAZBAQACQcGAAYHCwAIChEAEA0NAAEO + EQAKDhcADRAYABoSEgAMFCAAFxoeABQZKwACHiQANCAgAA8fMAAQIDIAISMoADEoKAATKD4AFShCAD0v + MAAoMj0AMS5vAF87OwAgO1QANTJ5ADhASgBYREUASUZLAEJGUAAvOIkAMjyTAGJMTQA0SG0AQz+ZADRA + nQA1QaAAOE52AENUZwA5RKYAOVaOAFVdbgAyXIQAaGNrAEdjlQBadI8AbHeMAHp+hQB/g4oAeYqlAHKM + pgCQlJoAlpeaAK6krQB7pcgAfqfJAICpygCrra8Aia7OAIuwzgCFqfMAibPVALW5vgC1vcYA0sG/AI3B + 5QCQw+YAkcPmAMTL0gDK0dcA1NTUAN7e3wDo5uYA0uj8AOzs7QDx8fEA9vPyAPn29gD6+fkA+/v9AP39 + +wD//f0A+/3/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFxcAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEIAAAAAAAAABwAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAPGR4ZEwQAAAAXAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAABMhOkpKSkpKPzIZAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXFyEIABMqP0pKSkpKSkpKSkoyEwAAEgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAOAAAAAAYeOkpKSkpKSkpKSkpKSko/IQsADgAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAcAAALHiEqKjpKSkpKSkpKSkpKSkpKSkpKMhIABAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHAAAHj9KSkpKPzI6SkpKSkpKSkpKSkpKSkpKNhkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAACFKSkpKSkpKSjo2SkpKSkpKSkpKSkpKSkpKOh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAZ + SkpKSkpKSkpKSj8yP0pKSkpKSkpKSkpKSkpKOh4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABjpKSkpK + SkpKSkpKSko2NkpKSkpKSkpKSkpKSkpKNh4AAAQhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAeSkpKSkpKSkpK + SkpKSkpKNjpKSkpKSkpKSkpKSko6KhkTCwAAIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + RThaNkVFRUU/QlY4RUVFOlpaWlo2NlMyLSpKSkpKHgAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHjJKSkpKNi0tH0VFRUVFRThXWjpFRUVFPzY/ + RUVFRUU2OEVFRUU2WlpaWzZFMictKkpKSko/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwQyP0pKSkoqLS0fRUVFRUVFSjhaOkVFRUVFRUVFRUVF + RUVFRUVFRTpQWlo+P0U/Jy0fSkpKSkohABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAITZKSkpKSiotLR9FRUVFRUVFP0c6RUVFRUVFRUVFRUVFRUVF + RUVFRT1aUTZFRT8nLSc2SkpKSj8PAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAADgsySkpKSko/Hy0tH0VFRUVFRUVFOjZFRUVFRUVFRUVFRUVFRUVFRUVF + Pz02RUVFOictLSpKSkpKSioADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAITpKSkpKSjYtLS0fP0VFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVF + RUU2Jy0tKkpKSkpKPw8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADgYySkpKSkpKMS0tLSc2RUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRTEt + LS0fSkpKSkpKIQAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAHj9KSkpKSkoqLS0tLSpFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFMS0tLSc2 + SkpKSko/DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + DgQySkpKSkpKSh8tLS0tKkVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUUqLS0tLSpKSkpK + SkohAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj9K + SkpKSko/Jy0tLS0fRUVFRUVFRUVFRUVFRUVFRUVFRT9FRUVFRUVFRUVFRUVFRR8tLS0tKkpKSkpKSj8L + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAqSkpKSkpK + SjYtLS0tLS0xRUVFRUVFRUVFRUVFRUVFRUVFP0VFRUVFRUVFRUVFRUU/Hy0tLS0fSkpKSkpKSh4AFwAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADzZKSkpKSkpKMS0t + LS0tLSpFRUVFRUVFRUVFRUVFRUVFRUU6RUVFRUVFRUVFRUVFRTEtLS0tLR8/SkpKSkpKNgQAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeSkpKSkpKSkoxLS0tLS0t + Hz9FRUVFRUVFRUVFRUVFRUVFRTpFRUVFRUVFRUVFRUVFKi0tLS0tLTZKSkpKSkpKEwAhAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOADJKSkpKSkpKSiotLS0tLS0tKkVF + RUVFRUVFRUVFRUVFRUVFNkVFRUVFRUVFRUVFRT8fLS0tLS0tKkpKSkpKSkoqAAgAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATOkpKSkpKSkpKKi0tLS0tLS0fP0VFRUVF + RUVFRUVFRUVFRUU2RUVFRUVFRUVFRUVFKi0tLS0tLS0qSkpKSkpKSj8MAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhAB5KSkpKSkpKSj8qLS0tLS0tLS0hRUVFRUVFRUVF + RUVFRUVFRTZFRUVFRUVFRUVFRUUfLS0tLS0tLR9KSkpKSkpKSh4AFwAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AKkpKSkpKSkpKPyctLS0tLS0tHws/RUVFRUVFRUVFRUVF + RUVFKkVFRUVFRUVFRUVFKi0tLS0tLS0tH0pKSkpKSkpKMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg2SkpKSkpKSko6Jy0tLS0tLS0cAB5FRUVFRUVFRUVFRUVFRT8S + MUVFRUVFRUVFRT8cLS0tLS0tLS0nOkpKSkpKSko/DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAEz9KSkpKSkpKSjYtLS0tLS0tLRcAAjZFRUVFRUVFRUVFRUVFNgAcOkVF + RUVFRUVFHhwtLS0tLS0tLS02SkpKSkpKSkoeABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAIQAeSkpKSkpKSkpKNi0tLS0tLS0tEgAAD0VFRUVFRUVFRUVFRUUeAAAZP0VFRUVF + RSoGFyctLS0tLS0tLTFKSkpKSkpKSioAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAYACFKSkpKSkpKSkoxLS0tLS0tLS0PAAAAHkVFRUVFRUVFRUVFRQ8AAAAcRUVFRUUxDAAM + Hy0tLS0tLS0tKkpKSkpKSkpKPwYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAABQAKkpKSkpKSkpKSjEtLS0tLS0tLQwAAAAAKkVFRUVFRUVFRUUxAAAAAAAXP0VFIQsAAAAhLS0t + LS0tLS0qSkpKSkpKSkpKGQAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAUySkpKSkpKSkpKMS0tLS0tLS0tCwAAAAAAKkVFRUVFRUVFPw8AAAAAAAAIEgwAAAAAABwtLS0tLS0t + LSpKSkpKSkpKSkohAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzpK + SkpKSkpKSkoqLS0tLS0tLS0IAAAAAAAAGT9FRUVFRUUTAAAAAAAAAAAAAAAAAAAAFy0tLS0tLS0tH0pK + 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 + AAAABwAAAC0tLS0tHxAfLS0tLS0tLS0tLS0fHCEnLScfFwwXHxctJxctLS0fFwAAFxchAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj + AAAALS0tLS0AAAwtLS0tLS0tLScnIRwcIRwcHx8nLS0cHyEXHC0tLRIcAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYAAAAt + LS0tLQAACRctHyctLS0tLS0tLS0tLS0tLS0tHxcXHyEfLS0tDwwEACEAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAB8tLS0f + AAAACB8tEictLS0tLS0tLS0tLS0tLR8SHy0nDC0tLS0PAAgAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwcAAC0tLQAAAAAJ + CB8cDCctLS0tLS0tLS0tLS0nJy0tJwsAHC0tLQ8IBAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHy0tAAAjABoACBwM + DyctLS0tLS0tLS0tLS0tLRcIAAAPLS0fDAIAABcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAALS0AAC8AABUAAggMDBwt + LS0tLS0tLS0tHxILAAAAAAwtLRcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzAAAWLQAAMwAAABwAAAQABA8fLS0t + JyESEgICAAAADhcADC0cDwAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAfAAAzAAAAAAAOAAAAAAgPHB8tLS0t + LRIACAAAAAALFw8AACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAAAAAAFxwAAAAACw8SEhIPDAAX + AAAhAAwSAAAXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMAAAAAJgAAAAAAAAAAAAAADgAAAAAAAAAAAAAAABwA + BgAAFwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8AAAAzAAAAAAAAAAAAAAAAAAAhFxcOAA4AAAAAAAAAABcA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAADMmMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////////////////AAP////////////////// + wAD////////5/////////8AA////////gB/////////AAP///////gAH////////wAD///////gAA/// + /////8AA//////+AAAD////////AAP/////+AAAAf///////wAD/////+AAAAD///////8AA//////AA + AAAf///////AAP/////wAAAAD///////wAD/////4AAAAAf//////8AA/////+AAAAAA///////AAP// + ///AAAAAAD//////wAD/////wAAAAAAf/////8AA/////8AAAAAAH//////AAP/////AAAAAAA////// + wAD/////gAAAAAAP/////8AA/////4AAAAAAB//////AAP////8AAAAAAAf/////wAD/////AAAAAAAH + /////8AA/////gAAAAAAA//////AAP////wAAAAAAAP/////wAD////8AAAAAAAB/////8AA////+AAA + AAAAAP/////AAP////gAAAAAAAD/////wAD////wAAAAAAAAf////8AA////8AAAAAAAAH/////AAP// + /+AAAAAAAAA/////wAD////gAAAAAAAAH////8AA////wAAAAAAAAB/////AAP///4AAAAAAAAAP//// + wAD///+AAAAAAAAAD////8AA////AAAAAAAAAAf////AAP///wAAAAAAAAAH////wAD///4AAAAAAAAA + A////8AA///+AAAAAAAAAAP////AAP///AAAAAAAAAAB////wAD///wAAAAAAAAAAf///8AA///4AAAA + AAAAAAD////AAP//+AAAAAAAAAAA////wAD///gAAAAAAAAAAH///8AA///wAAAAAAAAAAB////AAP// + 8AAAAAAAAAAAf///wAD//+AAAAAAAAAAAD///8AA///gAAAAAAAAAAA////AAP//4AAAAAAAAAAAP/// + wAD//+AAAAAAAAAAAB///8AA///AAAAAAAAAAAAf///AAP//wAAAAAAAAAAAH///wAD//8AAAAAAAAAA + AA///8AA///AAAAAAAAAAAAP///AAP//wAAAAAAAAAAAD///wAD//8AAAAAAAAAAAA///8AA//+AAAAA + AAAAAAAH///AAP//gAAAAAAAAAAAB///wAD//4AAAAAAAAAAAAf//8AA//+AAAAAAAAAAAAH///AAP// + gAAAAAAAAAAAB///wAD//4AAAAAAAAAAAAf//8AA//+AAAAAAAAAAAAH///AAP//gAAAAAAAAAAAA/// + wAD//4AAAAAAAAAAAAP//8AA//+AAAAAAAAAAAAD///AAP//gAAAAAAAAAAAA///wAD//4AAAAAAAAAA + AAH//8AA//+AAAAAAAAAAAAA///AAP//wAAAAAAAAAAAAP//wAD//8AAAAAAAAAAAAD//8AA///AAAAA + AAAAAAAB///AAP//wAAAAAAAAAAAAf//wAD//8AAAAAAAAAAAAH//8AA///AAAAAAAAAAAAB///AAP// + 4AAAAAAAAAAAA///wAD//+AAAAAAAAAAAAP//8AA///gAAAAAAAAAAAD///AAP//4AAAAAAAAAAAB/// + wAD///AAAAAAAAAAAAf//8AA///wAAAAAAAAAAAD///AAP//8AAAAAAAAAAAB///wAD///gAAAAAAAAA + AAf//8AA///4AAAAAAAAAAAP///AAP///AAAAAAAAAAAD///wAD///4AAAAAAAAAAB///8AA////AAAA + AAAAAAA////AAP///4AAAAAAAAAAf///wAD////gAAAAAAAAAP///8AA////4AAAAAAAAAP////AAP// + /+AAAAAAAAAH////wAD////wAAAAAAAAD////8AA////+AAAAAAAAB/////AAP////gAAAAAAAAf//// + wAD////4AAAAAAAAH////8AA////+AAAAAAAAA/////AAP////wAAAAAAAAP////wAD////8AAAAAAAA + H////8AA/////gAAAAAAAB/////AAP////+AAAAAAAAf////wAD/////gAAAAAAAP////8AA/////4AA + AAAAAH/////AAP////+AAAAAAAP/////wAD/////gAAAAAAB/////8AA/////4AAAAAAAf/////AAP// + ///AAAAAAAH/////wAD/////8AgAAAAB/////8AA//////AMAAAAA//////AAP/////wDgAAAAf///// + wAD/////+A+AADgP/////8AA//////wP4AAwH//////AAP/////8D/4AcD//////wAD//////g//wPh/ + /////8AA//////8f///9///////AAP//////////////////wAD//////////////////8AA + + + \ No newline at end of file diff --git a/Taz trainer/Program.cs b/Taz trainer/Program.cs new file mode 100644 index 0000000..d9060fd --- /dev/null +++ b/Taz trainer/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Taz_trainer +{ + static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Taz trainer/Properties/AssemblyInfo.cs b/Taz trainer/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..18b8d92 --- /dev/null +++ b/Taz trainer/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 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("Taz trainer")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Taz trainer")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2016")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("319655b7-fa36-4819-8b10-78f85147caba")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Taz trainer/Properties/Resources.Designer.cs b/Taz trainer/Properties/Resources.Designer.cs new file mode 100644 index 0000000..6b9a194 --- /dev/null +++ b/Taz trainer/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Taz_trainer.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Taz_trainer.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TAZ { + get { + object obj = ResourceManager.GetObject("TAZ", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Taz trainer/Properties/Resources.resx b/Taz trainer/Properties/Resources.resx new file mode 100644 index 0000000..00b1c75 --- /dev/null +++ b/Taz trainer/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\TAZ.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Taz trainer/Properties/Settings.Designer.cs b/Taz trainer/Properties/Settings.Designer.cs new file mode 100644 index 0000000..7c7c54e --- /dev/null +++ b/Taz trainer/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Taz_trainer.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Taz trainer/Properties/Settings.settings b/Taz trainer/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Taz trainer/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Taz trainer/Resources/TAZ.png b/Taz trainer/Resources/TAZ.png new file mode 100644 index 0000000..78b8848 Binary files /dev/null and b/Taz trainer/Resources/TAZ.png differ diff --git a/Taz trainer/TAZLOGO.ico b/Taz trainer/TAZLOGO.ico new file mode 100644 index 0000000..008ac15 Binary files /dev/null and b/Taz trainer/TAZLOGO.ico differ diff --git a/Taz trainer/Taz trainer.csproj b/Taz trainer/Taz trainer.csproj new file mode 100644 index 0000000..111acac --- /dev/null +++ b/Taz trainer/Taz trainer.csproj @@ -0,0 +1,102 @@ + + + + + Debug + AnyCPU + {319655B7-FA36-4819-8B10-78F85147CABA} + WinExe + Properties + Taz_trainer + Taz trainer + v4.0 + 512 + true + + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + TAZLOGO.ico + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Taz trainer/bin/Debug/Taz trainer.exe b/Taz trainer/bin/Debug/Taz trainer.exe new file mode 100644 index 0000000..d0cfa91 Binary files /dev/null and b/Taz trainer/bin/Debug/Taz trainer.exe differ diff --git a/Taz trainer/bin/Debug/Taz trainer.exe.config b/Taz trainer/bin/Debug/Taz trainer.exe.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/Taz trainer/bin/Debug/Taz trainer.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Taz trainer/bin/Debug/Taz trainer.pdb b/Taz trainer/bin/Debug/Taz trainer.pdb new file mode 100644 index 0000000..2eb91fb Binary files /dev/null and b/Taz trainer/bin/Debug/Taz trainer.pdb differ diff --git a/Taz trainer/bin/Debug/Taz trainer.vshost.exe b/Taz trainer/bin/Debug/Taz trainer.vshost.exe new file mode 100644 index 0000000..8f90da4 Binary files /dev/null and b/Taz trainer/bin/Debug/Taz trainer.vshost.exe differ diff --git a/Taz trainer/bin/Debug/Taz trainer.vshost.exe.config b/Taz trainer/bin/Debug/Taz trainer.vshost.exe.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/Taz trainer/bin/Debug/Taz trainer.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Taz trainer/bin/Debug/Taz trainer.vshost.exe.manifest b/Taz trainer/bin/Debug/Taz trainer.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/Taz trainer/bin/Debug/Taz trainer.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Taz trainer/bin/Release/Taz trainer.exe.config b/Taz trainer/bin/Release/Taz trainer.exe.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/Taz trainer/bin/Release/Taz trainer.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Taz trainer/bin/Release/Taz trainer.vshost.exe b/Taz trainer/bin/Release/Taz trainer.vshost.exe new file mode 100644 index 0000000..8f90da4 Binary files /dev/null and b/Taz trainer/bin/Release/Taz trainer.vshost.exe differ diff --git a/Taz trainer/bin/Release/Taz trainer.vshost.exe.config b/Taz trainer/bin/Release/Taz trainer.vshost.exe.config new file mode 100644 index 0000000..74ade9d --- /dev/null +++ b/Taz trainer/bin/Release/Taz trainer.vshost.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/Taz trainer/bin/Release/Taz trainer.vshost.exe.manifest b/Taz trainer/bin/Release/Taz trainer.vshost.exe.manifest new file mode 100644 index 0000000..061c9ca --- /dev/null +++ b/Taz trainer/bin/Release/Taz trainer.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/Taz trainer/globalKeyboardHook.cs b/Taz trainer/globalKeyboardHook.cs new file mode 100644 index 0000000..c3e4106 --- /dev/null +++ b/Taz trainer/globalKeyboardHook.cs @@ -0,0 +1,155 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Runtime.InteropServices; +using System.Windows.Forms; + +namespace Utilities { + /// + /// A class that manages a global low level keyboard hook + /// + class globalKeyboardHook { + #region Constant, Structure and Delegate Definitions + /// + /// defines the callback type for the hook + /// + public delegate int keyboardHookProc(int code, int wParam, ref keyboardHookStruct lParam); + + public struct keyboardHookStruct { + public int vkCode; + public int scanCode; + public int flags; + public int time; + public int dwExtraInfo; + } + + const int WH_KEYBOARD_LL = 13; + const int WM_KEYDOWN = 0x100; + const int WM_KEYUP = 0x101; + const int WM_SYSKEYDOWN = 0x104; + const int WM_SYSKEYUP = 0x105; + #endregion + + #region Instance Variables + /// + /// The collections of keys to watch for + /// + public List HookedKeys = new List(); + /// + /// Handle to the hook, need this to unhook and call the next hook + /// + IntPtr hhook = IntPtr.Zero; + private keyboardHookProc hookProcDelegate; + #endregion + + #region Events + /// + /// Occurs when one of the hooked keys is pressed + /// + public event KeyEventHandler KeyDown; + /// + /// Occurs when one of the hooked keys is released + /// + public event KeyEventHandler KeyUp; + #endregion + + #region Constructors and Destructors + /// + /// Initializes a new instance of the class and installs the keyboard hook. + /// + public globalKeyboardHook() { + hookProcDelegate = hookProc; + hook(); + } + + /// + /// Releases unmanaged resources and performs other cleanup operations before the + /// is reclaimed by garbage collection and uninstalls the keyboard hook. + /// + ~globalKeyboardHook() { + unhook(); + } + #endregion + + #region Public Methods + /// + /// Installs the global hook + /// + public void hook() { + IntPtr hInstance = LoadLibrary("User32"); + hhook = SetWindowsHookEx(WH_KEYBOARD_LL, hookProcDelegate, hInstance, 0); + } + + /// + /// Uninstalls the global hook + /// + public void unhook() { + UnhookWindowsHookEx(hhook); + } + + /// + /// The callback for the keyboard hook + /// + /// The hook code, if it isn't >= 0, the function shouldn't do anyting + /// The event type + /// The keyhook event information + /// + public int hookProc(int code, int wParam, ref keyboardHookStruct lParam) { + if (code >= 0) { + Keys key = (Keys)lParam.vkCode; + if (HookedKeys.Contains(key)) { + KeyEventArgs kea = new KeyEventArgs(key); + if ((wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN) && (KeyDown != null)) { + KeyDown(this, kea) ; + } else if ((wParam == WM_KEYUP || wParam == WM_SYSKEYUP) && (KeyUp != null)) { + KeyUp(this, kea); + } + if (kea.Handled) + return 1; + } + } + return CallNextHookEx(hhook, code, wParam, ref lParam); + } + #endregion + + #region DLL imports + /// + /// Sets the windows hook, do the desired event, one of hInstance or threadId must be non-null + /// + /// The id of the event you want to hook + /// The callback. + /// The handle you want to attach the event to, can be null + /// The thread you want to attach the event to, can be null + /// a handle to the desired hook + [DllImport("user32.dll")] + static extern IntPtr SetWindowsHookEx(int idHook, keyboardHookProc callback, IntPtr hInstance, uint threadId); + + /// + /// Unhooks the windows hook. + /// + /// The hook handle that was returned from SetWindowsHookEx + /// True if successful, false otherwise + [DllImport("user32.dll")] + static extern bool UnhookWindowsHookEx(IntPtr hInstance); + + /// + /// Calls the next hook. + /// + /// The hook id + /// The hook code + /// The wparam. + /// The lparam. + /// + [DllImport("user32.dll")] + static extern int CallNextHookEx(IntPtr idHook, int nCode, int wParam, ref keyboardHookStruct lParam); + + /// + /// Loads the library. + /// + /// Name of the library + /// A handle to the library + [DllImport("kernel32.dll")] + static extern IntPtr LoadLibrary(string lpFileName); + #endregion + } +} diff --git a/Taz trainer/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Taz trainer/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..74ef20c Binary files /dev/null and b/Taz trainer/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/Taz trainer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Taz trainer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..324eefb Binary files /dev/null and b/Taz trainer/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Taz trainer/obj/Debug/Taz trainer.csproj.FileListAbsolute.txt b/Taz trainer/obj/Debug/Taz trainer.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..aaf6d83 --- /dev/null +++ b/Taz trainer/obj/Debug/Taz trainer.csproj.FileListAbsolute.txt @@ -0,0 +1,18 @@ +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\bin\Debug\Taz trainer.exe.config +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\bin\Debug\Taz trainer.exe +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\bin\Debug\Taz trainer.pdb +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\obj\Debug\Taz trainer.csprojResolveAssemblyReference.cache +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\obj\Debug\Taz_trainer.Form1.resources +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\obj\Debug\Taz_trainer.Properties.Resources.resources +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\obj\Debug\Taz trainer.csproj.GenerateResource.Cache +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\obj\Debug\Taz trainer.exe +c:\users\muxajlbl4\documents\visual studio 2015\Projects\Taz trainer\Taz trainer\obj\Debug\Taz trainer.pdb +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\bin\Debug\Taz trainer.exe.config +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\obj\Debug\Taz trainer.exe +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\obj\Debug\Taz trainer.pdb +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\bin\Debug\Taz trainer.exe +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\bin\Debug\Taz trainer.pdb +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\obj\Debug\Taz trainer.csprojResolveAssemblyReference.cache +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\obj\Debug\Taz_trainer.Form1.resources +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\obj\Debug\Taz_trainer.Properties.Resources.resources +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz_Wanted_trainer_and_patcher\Taz trainer\obj\Debug\Taz trainer.csproj.GenerateResource.Cache diff --git a/Taz trainer/obj/Debug/Taz trainer.csproj.GenerateResource.Cache b/Taz trainer/obj/Debug/Taz trainer.csproj.GenerateResource.Cache new file mode 100644 index 0000000..a6b4959 Binary files /dev/null and b/Taz trainer/obj/Debug/Taz trainer.csproj.GenerateResource.Cache differ diff --git a/Taz trainer/obj/Debug/Taz trainer.csprojResolveAssemblyReference.cache b/Taz trainer/obj/Debug/Taz trainer.csprojResolveAssemblyReference.cache new file mode 100644 index 0000000..45dbc62 Binary files /dev/null and b/Taz trainer/obj/Debug/Taz trainer.csprojResolveAssemblyReference.cache differ diff --git a/Taz trainer/obj/Debug/Taz trainer.exe b/Taz trainer/obj/Debug/Taz trainer.exe new file mode 100644 index 0000000..d0cfa91 Binary files /dev/null and b/Taz trainer/obj/Debug/Taz trainer.exe differ diff --git a/Taz trainer/obj/Debug/Taz trainer.pdb b/Taz trainer/obj/Debug/Taz trainer.pdb new file mode 100644 index 0000000..2eb91fb Binary files /dev/null and b/Taz trainer/obj/Debug/Taz trainer.pdb differ diff --git a/Taz trainer/obj/Debug/Taz_trainer.Form1.resources b/Taz trainer/obj/Debug/Taz_trainer.Form1.resources new file mode 100644 index 0000000..5a6d2a4 Binary files /dev/null and b/Taz trainer/obj/Debug/Taz_trainer.Form1.resources differ diff --git a/Taz trainer/obj/Debug/Taz_trainer.Properties.Resources.resources b/Taz trainer/obj/Debug/Taz_trainer.Properties.Resources.resources new file mode 100644 index 0000000..5e24b90 Binary files /dev/null and b/Taz trainer/obj/Debug/Taz_trainer.Properties.Resources.resources differ diff --git a/Taz trainer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Taz trainer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..67d73a0 Binary files /dev/null and b/Taz trainer/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ diff --git a/Taz trainer/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/Taz trainer/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/Taz trainer/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/Taz trainer/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/Taz trainer/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/Taz trainer/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/Taz trainer/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache b/Taz trainer/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..9eaf019 Binary files /dev/null and b/Taz trainer/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/Taz trainer/obj/Release/Taz trainer.csproj.FileListAbsolute.txt b/Taz trainer/obj/Release/Taz trainer.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..c60cfa2 --- /dev/null +++ b/Taz trainer/obj/Release/Taz trainer.csproj.FileListAbsolute.txt @@ -0,0 +1 @@ +C:\Users\MuxaJlbl4\Documents\Visual Studio 2015\Projects\Taz trainer\Taz trainer\bin\Release\Taz trainer.exe.config diff --git a/Taz trainer/obj/Release/TempPE/Properties.Resources.Designer.cs.dll b/Taz trainer/obj/Release/TempPE/Properties.Resources.Designer.cs.dll new file mode 100644 index 0000000..c2e33e9 Binary files /dev/null and b/Taz trainer/obj/Release/TempPE/Properties.Resources.Designer.cs.dll differ