N64: Jabo readiness is now detected and displayed in the plugin config dialog.

This commit is contained in:
pjgat09 2014-07-21 23:46:29 +00:00
parent 7d89765568
commit ae381fc986
3 changed files with 128 additions and 25 deletions

View File

@ -32,6 +32,7 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(N64VideoPluginconfig));
this.N64plugintabcontrol = new System.Windows.Forms.TabControl();
this.N64vpluginglobaltab = new System.Windows.Forms.TabPage();
this.jaboStatusLabel = new System.Windows.Forms.Label();
this.label49 = new System.Windows.Forms.Label();
this.RspTypeDropdown = new System.Windows.Forms.ComboBox();
this.label48 = new System.Windows.Forms.Label();
@ -271,11 +272,12 @@
this.label58 = new System.Windows.Forms.Label();
this.Glide64mk2_filtering = new System.Windows.Forms.ComboBox();
this.Glide64mk2_UseDefaultHacks2 = new System.Windows.Forms.CheckBox();
this.JaboTab = new System.Windows.Forms.TabPage();
this.JaboPropertyGrid = new System.Windows.Forms.PropertyGrid();
this.SaveButton = new System.Windows.Forms.Button();
this.CancelBT = new System.Windows.Forms.Button();
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.JaboTab = new System.Windows.Forms.TabPage();
this.JaboPropertyGrid = new System.Windows.Forms.PropertyGrid();
this.jaboStatusDetailLabel = new System.Windows.Forms.Label();
this.N64plugintabcontrol.SuspendLayout();
this.N64vpluginglobaltab.SuspendLayout();
this.RiceTabPage.SuspendLayout();
@ -317,6 +319,8 @@
//
// N64vpluginglobaltab
//
this.N64vpluginglobaltab.Controls.Add(this.jaboStatusDetailLabel);
this.N64vpluginglobaltab.Controls.Add(this.jaboStatusLabel);
this.N64vpluginglobaltab.Controls.Add(this.label49);
this.N64vpluginglobaltab.Controls.Add(this.RspTypeDropdown);
this.N64vpluginglobaltab.Controls.Add(this.label48);
@ -334,6 +338,15 @@
this.N64vpluginglobaltab.Text = "Global";
this.N64vpluginglobaltab.UseVisualStyleBackColor = true;
//
// jaboStatusLabel
//
this.jaboStatusLabel.AutoSize = true;
this.jaboStatusLabel.Location = new System.Drawing.Point(10, 137);
this.jaboStatusLabel.Name = "jaboStatusLabel";
this.jaboStatusLabel.Size = new System.Drawing.Size(63, 13);
this.jaboStatusLabel.TabIndex = 19;
this.jaboStatusLabel.Text = "Jabo Status";
//
// label49
//
this.label49.AutoSize = true;
@ -390,7 +403,7 @@
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(10, 164);
this.label2.Location = new System.Drawing.Point(10, 201);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(87, 13);
this.label2.TabIndex = 13;
@ -414,7 +427,7 @@
"1600 x 1200",
"1920 x 1440",
"2048 x 1536"});
this.VideoResolutionComboBox.Location = new System.Drawing.Point(13, 180);
this.VideoResolutionComboBox.Location = new System.Drawing.Point(13, 217);
this.VideoResolutionComboBox.Name = "VideoResolutionComboBox";
this.VideoResolutionComboBox.Size = new System.Drawing.Size(136, 21);
this.VideoResolutionComboBox.TabIndex = 10;
@ -432,6 +445,7 @@
this.PluginComboBox.Name = "PluginComboBox";
this.PluginComboBox.Size = new System.Drawing.Size(173, 21);
this.PluginComboBox.TabIndex = 5;
this.PluginComboBox.SelectedIndexChanged += new System.EventHandler(this.PluginComboBox_SelectedIndexChanged);
//
// label1
//
@ -3212,6 +3226,26 @@
this.Glide64mk2_UseDefaultHacks2.UseVisualStyleBackColor = true;
this.Glide64mk2_UseDefaultHacks2.CheckedChanged += new System.EventHandler(this.Glide64mk2_UseDefaultHacks2_CheckedChanged);
//
// JaboTab
//
this.JaboTab.Controls.Add(this.JaboPropertyGrid);
this.JaboTab.Location = new System.Drawing.Point(4, 22);
this.JaboTab.Name = "JaboTab";
this.JaboTab.Size = new System.Drawing.Size(572, 343);
this.JaboTab.TabIndex = 7;
this.JaboTab.Text = "Jabo";
this.JaboTab.UseVisualStyleBackColor = true;
//
// JaboPropertyGrid
//
this.JaboPropertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;
this.JaboPropertyGrid.Location = new System.Drawing.Point(0, 0);
this.JaboPropertyGrid.Name = "JaboPropertyGrid";
this.JaboPropertyGrid.PropertySort = System.Windows.Forms.PropertySort.NoSort;
this.JaboPropertyGrid.Size = new System.Drawing.Size(572, 343);
this.JaboPropertyGrid.TabIndex = 4;
this.JaboPropertyGrid.ToolbarVisible = false;
//
// SaveButton
//
this.SaveButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
@ -3243,25 +3277,14 @@
this.toolTip1.ReshowDelay = 100;
this.toolTip1.ToolTipIcon = System.Windows.Forms.ToolTipIcon.Info;
//
// JaboTab
// jaboStatusDetailLabel
//
this.JaboTab.Controls.Add(this.JaboPropertyGrid);
this.JaboTab.Location = new System.Drawing.Point(4, 22);
this.JaboTab.Name = "JaboTab";
this.JaboTab.Size = new System.Drawing.Size(572, 343);
this.JaboTab.TabIndex = 7;
this.JaboTab.Text = "Jabo";
this.JaboTab.UseVisualStyleBackColor = true;
//
// JaboPropertyGrid
//
this.JaboPropertyGrid.Dock = System.Windows.Forms.DockStyle.Fill;
this.JaboPropertyGrid.Location = new System.Drawing.Point(0, 0);
this.JaboPropertyGrid.Name = "JaboPropertyGrid";
this.JaboPropertyGrid.PropertySort = System.Windows.Forms.PropertySort.NoSort;
this.JaboPropertyGrid.Size = new System.Drawing.Size(572, 343);
this.JaboPropertyGrid.TabIndex = 4;
this.JaboPropertyGrid.ToolbarVisible = false;
this.jaboStatusDetailLabel.AutoSize = true;
this.jaboStatusDetailLabel.Location = new System.Drawing.Point(10, 160);
this.jaboStatusDetailLabel.Name = "jaboStatusDetailLabel";
this.jaboStatusDetailLabel.Size = new System.Drawing.Size(91, 13);
this.jaboStatusDetailLabel.TabIndex = 20;
this.jaboStatusDetailLabel.Text = "Jabo Status detail";
//
// N64VideoPluginconfig
//
@ -3564,5 +3587,7 @@
private System.Windows.Forms.ComboBox RspTypeDropdown;
private System.Windows.Forms.TabPage JaboTab;
private System.Windows.Forms.PropertyGrid JaboPropertyGrid;
private System.Windows.Forms.Label jaboStatusLabel;
private System.Windows.Forms.Label jaboStatusDetailLabel;
}
}

View File

@ -9,6 +9,8 @@ using BizHawk.Common.ReflectionExtensions;
using BizHawk.Emulation.Cores.Nintendo.N64;
using BizHawk.Client.Common;
using BizHawk.Client.EmuHawk.ControlExtensions;
using System.IO;
using System.Security.Cryptography;
namespace BizHawk.Client.EmuHawk
{
@ -17,6 +19,17 @@ namespace BizHawk.Client.EmuHawk
N64Settings s;
N64SyncSettings ss;
enum JaboStatus
{
NotReady,
ReadyToPatch,
Ready,
WrongVersion21,
WrongVersion16
};
JaboStatus currentJaboStatus = JaboStatus.NotReady;
public N64VideoPluginconfig()
{
InitializeComponent();
@ -340,6 +353,41 @@ namespace BizHawk.Client.EmuHawk
PluginComboBox.Items.Remove("Jabo 1.6.1");
}
if (File.Exists("dll\\Jabo_Direct3D8_patched.dll"))
{
byte[] hash = MD5.Create().ComputeHash(File.ReadAllBytes("dll\\Jabo_Direct3D8_patched.dll"));
string hash_string = BitConverter.ToString(hash).Replace("-", "");
if (hash_string == "F4D6E624489CD88C68A5850426D4D70E")
{
// jabo is ready to go
currentJaboStatus = JaboStatus.Ready;
}
}
else if (File.Exists("dll\\Jabo_Direct3D8.dll"))
{
byte[] hash = MD5.Create().ComputeHash(File.ReadAllBytes("dll\\Jabo_Direct3D8.dll"));
string hash_string = BitConverter.ToString(hash).Replace("-", "");
if (hash_string == "4F353AA71E7455B81205D8EC0AA339E1")
{
// jabo will be patched when a rom is loaded. user is ready to go
currentJaboStatus = JaboStatus.ReadyToPatch;
}
else if (hash_string == "4A4173928ED33735157A8D8CD14D4C9C")
{
// wrong jabo installed (2.0)
currentJaboStatus = JaboStatus.WrongVersion21;
}
else if (hash_string == "FF57F60C58EDE6364B980EDCB311873B")
{
// wrong jabo installed (1.6)
currentJaboStatus = JaboStatus.WrongVersion16;
}
else
{
// this is not the right file
}
}
s = GetSettings();
ss = GetSyncSettings();
@ -869,5 +917,38 @@ namespace BizHawk.Client.EmuHawk
UpdateGlide64mk2HacksSection();
}
private void PluginComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (PluginComboBox.Text == "Jabo 1.6.1")
{
if (currentJaboStatus == JaboStatus.Ready || currentJaboStatus == JaboStatus.ReadyToPatch)
{
jaboStatusLabel.Text = "You are ready to use Jabo.";
jaboStatusDetailLabel.Text = "";
}
else
{
jaboStatusDetailLabel.Text = "To use Jabo please copy Jabo_Direct3D8.dll from a Project64 v1.6.1 installation into Bizhawk's dll directory.";
if (currentJaboStatus == JaboStatus.NotReady)
{
jaboStatusLabel.Text = "You are NOT ready to use Jabo.";
}
else if (currentJaboStatus == JaboStatus.WrongVersion16)
{
jaboStatusLabel.Text = "You are NOT ready to use Jabo. Bizhawk requires Jabo Direct3D8 v1.6.1, but found v1.6 instead.";
}
else if (currentJaboStatus == JaboStatus.WrongVersion21)
{
jaboStatusLabel.Text = "You are NOT ready to use Jabo. Bizhawk requires Jabo Direct3D8 v1.6.1, but found v2.0 instead.";
}
}
}
else
{
jaboStatusLabel.Text = "";
jaboStatusDetailLabel.Text = "";
}
}
}
}

View File

@ -120,9 +120,6 @@
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="AnisotropicFiltering_LB.ToolTip" xml:space="preserve">
<value>Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality).
This is uneffective if Mipmapping is 0.