fpPS4/third_party_gui/fpPS4Fro/Form1.cs
2022-12-23 11:54:50 +03:00

443 lines
13 KiB
C#

using Ini;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Reflection.Metadata.Ecma335;
using System.Text;
namespace fpPS4Fro
{
public partial class Form1 : Form
{
string emp = "";
string gap = "";
string sadi = "";
string inipath = System.IO.Directory.GetCurrentDirectory();
delegate void VoidDelegate();
public Form1()
{
InitializeComponent();
}
private void dateiToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
string befehl = "";
string arg = "";
int m = 0;
if (checkBox7.Checked == true)
m = 2;
else
m = 1;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string path = openFileDialog1.FileName;
befehl = @"e:\emu\fpps4\fpps4.exe";
arg = " -e "+ "\""+ path + "\"";
rungame(befehl, arg, m);
}
}
private void Form1_Load(object sender, EventArgs e)
{
string emu = "";
string games = "";
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
emu = ini.IniReadValue("DIR", "emu");
games = ini.IniReadValue("DIR", "games");
sadi = ini.IniReadValue("DIR", "savedata");
if (emu.Length < 1)
MessageBox.Show("Please set the directories under OPTIONS");
if (ini.IniReadValue("HACKS", "H1") == "1")
checkBox1.Checked = true;
else
checkBox1.Checked = false;
if (ini.IniReadValue("HACKS", "H2") == "1")
checkBox2.Checked = true;
else
checkBox2.Checked = false;
if (ini.IniReadValue("HACKS", "H3") == "1")
checkBox3.Checked = true;
else
checkBox3.Checked = false;
if (ini.IniReadValue("HACKS", "H4") == "1")
checkBox4.Checked = true;
else
checkBox4.Checked = false;
if (ini.IniReadValue("HACKS", "H5") == "1")
checkBox5.Checked = true;
else
checkBox5.Checked = false;
if (ini.IniReadValue("HACKS", "H6") == "1")
checkBox6.Checked = true;
else
checkBox6.Checked = false;
if (ini.IniReadValue("ETC", "W1") == "1")
{
checkBox7.Checked = true;
panel2.Visible = true;
button1.Visible= true;
}
else
checkBox7.Checked = false;
if (ini.IniReadValue("ETC", "SD") == "1")
{
checkBox8.Checked = true;
}
else
checkBox8.Checked = false;
emp = emu;
gap = games;
if(games.Length> 0)
spiele(games);
}
void spiele (string pfad)
{
string pfad1="";
int i = 0;
listView1.Items.Clear();
DirectoryInfo ParentDirectory = new System.IO.DirectoryInfo(pfad);
foreach (DirectoryInfo d in ParentDirectory.GetDirectories())
{
ListViewItem directories = new ListViewItem();
directories.Text = d.Name;
directories.SubItems.Add("Games");
pfad1 = pfad + @"\" + directories.Text + @"\pict.jpg";
if(File.Exists(pfad1))
{
imageList1.Images.Add(Image.FromFile(pfad1));
directories.ImageIndex= i;
i ++;
}
listView1.Items.Add(directories);
}
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
if (frm.DialogResult == DialogResult.OK)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
emp = ini.IniReadValue("DIR", "emu");
gap = ini.IniReadValue("DIR", "games");
sadi = ini.IniReadValue("DIR", "savedata");
spiele(gap);
}
}
private void loadGameToolStripMenuItem_Click(object sender, EventArgs e)
{
string befehl = "";
string arg = "";
string emu = "";
int m = 0;
if (checkBox7.Checked == true)
m = 2;
else
m = 1;
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
befehl = ini.IniReadValue("DIR", "emu");
emu = befehl +@"\";
befehl = befehl + @"\fpps4.exe";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
string path = openFileDialog1.FileName;
arg = " -e " + "\"" + path + "\"";
arg = argm(arg);
rungame(befehl, arg, m);
}
}
string argm(string arg)
{
return arg;
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
AboutBox1 frm = new AboutBox1();
frm.ShowDialog();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
Close();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox1.Checked == true )
{
ini.IniWriteValue("HACKS", "H1", "1");
}
else
{
ini.IniWriteValue("HACKS", "H1", "0");
}
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox2.Checked == true)
{
ini.IniWriteValue("HACKS", "H2", "1");
}
else
{
ini.IniWriteValue("HACKS", "H2", "0");
}
}
private void checkBox3_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox3.Checked == true)
{
ini.IniWriteValue("HACKS", "H3", "1");
}
else
{
ini.IniWriteValue("HACKS", "H3", "0");
}
}
private void checkBox4_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox4.Checked == true)
{
ini.IniWriteValue("HACKS", "H4", "1");
}
else
{
ini.IniWriteValue("HACKS", "H4", "0");
}
}
private void checkBox5_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox5.Checked == true)
{
ini.IniWriteValue("HACKS", "H5", "1");
}
else
{
ini.IniWriteValue("HACKS", "H5", "0");
}
}
private void checkBox6_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox6.Checked == true)
{
ini.IniWriteValue("HACKS", "H6", "1");
}
else
{
ini.IniWriteValue("HACKS", "H6", "0");
}
}
private void checkBox7_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox7.Checked == true)
{
ini.IniWriteValue("ETC", "W1", "1");
panel2.Visible = true;
button1.Visible = true;
}
else
{
ini.IniWriteValue("ETC", "W1", "0");
panel2.Visible = false;
button1.Visible = false;
}
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void listView1_MouseDoubleClick(object sender, MouseEventArgs e)
{
string befehl = "";
string arg = "";
string path = "";
int m = 0;
if (this.listView1.SelectedItems.Count == 0)
return;
string namn = this.listView1.SelectedItems[0].Text;
befehl = emp + @"\fpps4.exe";
path = gap + @"\" + namn + @"\eboot.bin";
arg = " -e " + "\"" + path + "\"";
if (checkBox7.Checked == true)
m = 2;
else
m = 1;
rungame(befehl, arg, m);
}
void rungame(string command,string arg,int m)
{
StringBuilder output = new StringBuilder();
int lineCount = 0;
if (checkBox8.Checked == true)
arg = arg + " -s " + sadi;
if (checkBox1.Checked == true)
arg = arg + " -h " + "DEPTH_DISABLE_HACK";
if (checkBox2.Checked == true)
arg = arg + " -h " + "COMPUTE_DISABLE_HACK";
if (checkBox3.Checked == true)
arg = arg + " -h " + "MEMORY_BOUND_HACK";
if (checkBox4.Checked == true)
arg = arg + " -h " + "IMAGE_TEST_HACK";
if (checkBox5.Checked == true)
arg = arg + " -h " + "IMAGE_LOAD_HACK";
if (checkBox6.Checked == true)
arg = arg + " -h " + "DISABLE_SRGB_HACK";
Directory.SetCurrentDirectory(emp + @"\");
toolStripStatusLabel1.Text = command + " " + arg;
textBox1.Text = command + " " + arg;
if (m == 1)
{
Process P = new Process();
P.StartInfo.FileName = command;
P.StartInfo.Arguments = arg;
P.Start();
}
if (m == 2)
{
richTextBox1.Text = "";
Proc(command, arg);
}
}
private void Proc(string command, string arg)
{
BackgroundWorker bgw = new BackgroundWorker();
bgw.DoWork += (sender, args) => {
Process process = new Process();
process.StartInfo.FileName = command;
process.StartInfo.Arguments = arg;
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.CreateNoWindow = true;
process.Start();
if (process != null)
{
process.OutputDataReceived += ((s, ev) =>
{
string sData = ev.Data;
sData += "\r\n";
ControlInvoke(richTextBox1, () => richTextBox1.Text += sData);
});
process.BeginOutputReadLine();
}
};
bgw.RunWorkerAsync();
}
public static void ControlInvoke(Control control, Action function)
{
if (control.IsDisposed || control.Disposing)
return;
if (control.InvokeRequired)
{
control.Invoke(new VoidDelegate(() => ControlInvoke(control, function)));
return;
}
function();
}
private void checkBox8_CheckedChanged(object sender, EventArgs e)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
if (checkBox8.Checked == true)
{
ini.IniWriteValue("ETC", "SD", "1");
}
else
{
ini.IniWriteValue("ETC", "SD", "0");
}
}
private void button1_Click(object sender, EventArgs e)
{
Clipboard.SetText(richTextBox1.Text.ToString());
}
private void optionsToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
if (frm.DialogResult == DialogResult.OK)
{
IniFile ini = new IniFile(inipath + @"\fpps4fro.ini");
emp = ini.IniReadValue("DIR", "emu");
gap = ini.IniReadValue("DIR", "games");
sadi = ini.IniReadValue("DIR", "savedata");
}
}
}
}