Files
HeadFrmPatcher/HeadPatcher/HeadsFrmPatcher.cs
T

63 lines
2.0 KiB
C#
Raw Normal View History

2017-04-22 22:02:22 +03:00
using System;
using System.IO;
using System.Windows.Forms;
namespace HeadsPatcher
{
public partial class HeadsFrmPatcher : Form
{
public HeadsFrmPatcher()
{
InitializeComponent();
}
private void bRun_Click(object sender, EventArgs e)
{
if (ofdFrm.ShowDialog() != DialogResult.OK) {
return;
}
byte[] name = new byte[8];
foreach (string s in ofdFrm.FileNames) {
string fname = Path.GetFileNameWithoutExtension(s);
for (int i = 0; i < fname.Length; i++) {
name[i] = (byte)fname[i];
}
for (int i = fname.Length; i < 8; i++) {
name[i] = 0;
}
for (int i = 0; i < 4; i++) {
byte b = name[i * 2];
name[i * 2] = name[i * 2 + 1];
name[i * 2 + 1] = b;
}
if (fname.Length > 8) {
MessageBox.Show("Skipping '" + s + "'; the file name is too long to be supported", "Warning");
continue;
}
BinaryWriter bw = new BinaryWriter(File.Open(s, FileMode.Open, FileAccess.ReadWrite));
bw.BaseStream.Position = 12;
bw.Write((ushort)0xcdab);
for (int i = 0; i < 8; i++) {
bw.Write(name[i]);
}
bw.BaseStream.Position += 2;
bw.Write((short)0);
bw.Write((int)0);
2019-04-22 03:16:52 +03:00
if (cbDisableHighlighting.Checked) {
2017-04-22 22:02:22 +03:00
bw.Write((byte)1);
} else {
bw.Write((byte)0);
}
2019-04-22 03:16:52 +03:00
if (cbIncludesBackground.Checked) {
2017-04-22 22:02:22 +03:00
bw.Write((byte)1);
2019-04-22 03:16:52 +03:00
} else {
bw.Write((byte)0);
2017-04-22 22:02:22 +03:00
}
bw.Close();
}
MessageBox.Show("Done");
}
}
}