From f303f26c75afd97bcb85ce99007146573fc08882 Mon Sep 17 00:00:00 2001 From: avan Date: Sat, 10 Feb 2024 18:20:10 +0800 Subject: [PATCH] Now supports loading all Cheat Trainer/GoldHEN formats (*.json, *.shn, *.mc4), with MC4 formats supporting reading only. Added display interface languages: Korean, Italian. --- PS4CheaterNeo/Main.cs | 412 +++++++++++++----- PS4CheaterNeo/NewAddress.Designer.cs | 95 ++-- PS4CheaterNeo/NewAddress.cs | 83 ++-- PS4CheaterNeo/PS4CheaterNeo.csproj | 8 + PS4CheaterNeo/Properties/AssemblyInfo.cs | 4 +- PS4CheaterNeo/Query.cs | 9 +- PS4CheaterNeo/common/CheatTrainer.cs | 176 ++++++++ PS4CheaterNeo/common/Constant.cs | 2 + PS4CheaterNeo/common/SectionTool.cs | 29 +- .../languages/LanguageFile_Italian.json | 338 ++++++++++++++ .../languages/LanguageFile_Korean.json | 339 ++++++++++++++ README.md | 24 +- assets/add.webp | Bin 7674 -> 13218 bytes assets/cheat_1.webp | Bin 7808 -> 13328 bytes assets/cheat_2.webp | Bin 7864 -> 13782 bytes assets/experimental1.webp | Bin 60214 -> 77250 bytes 16 files changed, 1302 insertions(+), 217 deletions(-) create mode 100644 PS4CheaterNeo/common/CheatTrainer.cs create mode 100644 PS4CheaterNeo/languages/LanguageFile_Italian.json create mode 100644 PS4CheaterNeo/languages/LanguageFile_Korean.json diff --git a/PS4CheaterNeo/Main.cs b/PS4CheaterNeo/Main.cs index 1901e86..d45952a 100644 --- a/PS4CheaterNeo/Main.cs +++ b/PS4CheaterNeo/Main.cs @@ -6,11 +6,15 @@ using System.IO; using System.Linq; using System.Runtime.Serialization.Json; +using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; +using System.Web; using System.Windows.Forms; +using System.Xml; +using System.Xml.Serialization; namespace PS4CheaterNeo { @@ -19,6 +23,7 @@ public partial class Main : Form private Option option; private SendPayload sendPayload; private CheatJson cheatJson = null; + private CheatTrainer cheatTrainer = null; private Brush cheatGridViewRowIndexForeBrush; private bool VerifySectionWhenLock; private bool VerifySectionWhenRefresh; @@ -44,6 +49,7 @@ public class CheatRow public string GameVer { get; private set; } public Dictionary LocalHiddenSections { get; private set; } public string ProcessName; + public string ProcessContentid; public int ProcessPid; public Main() { @@ -68,6 +74,21 @@ public Main() CheatGridView.RowCount = 0; } + public void ParseLanguageJson() + { + string codes = Properties.Settings.Default.UILanguage.Value.ToString(); + string path = "languages\\LanguageFile_" + codes + ".json"; + + if (!File.Exists(path)) return; + + using (StreamReader sr = new StreamReader(path)) + using (Stream stream = sr.BaseStream) + { + DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(LanguageJson)); + langJson = (LanguageJson)deseralizer.ReadObject(stream); + } + } + public void ApplyUI() { try @@ -201,11 +222,13 @@ private void ToolStripSend_Click(object sender, EventArgs e) } #region ToolStripOpenAndSave + private const string dialogFilter = "Cheat (*.cht)|*.cht|Cheat Relative (*.chtr)|*.chtr|Cheat Json (*.json)|*.json|Cheat Shn (*.shn)|*.shn"; private void ToolStripOpen_Click(object sender, EventArgs e) { try { - OpenCheatDialog.Filter = "Cheat files(*.cht;*.chtr;*.json;eboot.bin)|*.cht;*.chtr;*.json;eboot.bin|Cheat (*.cht)|*.cht|Cheat Relative (*.chtr)|*.chtr|Cheat Json (*.json)|*.json|eboot.bin (eboot.bin)|*.bin"; + OpenCheatDialog.Filter = + "Cheat files(*.cht;*.chtr;*.json;*.shn;*.mc4;eboot.bin)|*.cht;*.chtr;*.json;*.shn;*.mc4;eboot.bin|" + dialogFilter + "|Cheat MC4 (*.mc4)|*.mc4|eboot.bin (eboot.bin)|*.bin"; OpenCheatDialog.AddExtension = true; OpenCheatDialog.RestoreDirectory = true; @@ -216,6 +239,8 @@ private void ToolStripOpen_Click(object sender, EventArgs e) using (StreamReader sr = new StreamReader(OpenCheatDialog.FileName)) { if (OpenCheatDialog.FileName.ToUpper().EndsWith("JSON")) count = ParseCheatJson(sr.BaseStream); + else if (OpenCheatDialog.FileName.ToUpper().EndsWith("SHN")) count = ParseCheatSHN(sr.ReadToEnd()); + else if (OpenCheatDialog.FileName.ToUpper().EndsWith("MC4")) count = ParseCheatMC4(sr); else if (OpenCheatDialog.FileName.ToUpper().EndsWith("BIN")) count = ParseExecutableBIN(sr.BaseStream); else { @@ -250,12 +275,7 @@ private void ToolStripOpen_Click(object sender, EventArgs e) string PS4FWVersion = Properties.Settings.Default.PS4FWVersion.Value ?? ""; string FWVer = PS4FWVersion != "" ? PS4FWVersion : Constant.Versions[0]; - InitGameInfo(); - - if (GameID != cheatGameID && MessageBox.Show(string.Format("Your Game ID({0}) is different with cheat file({1}), still load?", GameID, cheatGameID), - "GameID", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return; - if (GameVer != cheatGameVer && MessageBox.Show(string.Format("Your Game version({0}) is different with cheat file({1}), still load?", GameVer, cheatGameVer), - "GameVer", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return; + if (!LoadCheatGameValid(cheatGameID, cheatGameVer)) return; if (FWVer != cheatFWVer && MessageBox.Show(string.Format("Your Firmware version({0}) is different with cheat file({1}), still load?", FWVer, cheatFWVer), "FWVer", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return; #endregion @@ -268,7 +288,7 @@ private void ToolStripOpen_Click(object sender, EventArgs e) if (string.IsNullOrWhiteSpace(cheatStr)) continue; - string[] cheatElements = cheatStr.Split('|'); + string[] cheatElements = cheatStr.Split(new Char[] { '|' }, 10); if (cheatElements.Length < 5) continue; @@ -276,6 +296,7 @@ private void ToolStripOpen_Click(object sender, EventArgs e) bool isRelativeV1a = cheatElements[5].StartsWith("++"); if (isRelativeV1a) cheatElements[5] = cheatElements[5].Substring(1); bool isPointer = !cheatElements[5].Contains("[") && Regex.IsMatch(cheatElements[5], "[0-9A-F]+_", RegexOptions.IgnoreCase); + int relativeOffset = isRelative ? int.Parse(cheatElements[5].Substring(1), NumberStyles.HexNumber) : -1; uint sid = isRelative ? preData.sid : uint.Parse(cheatElements[0]); string name = isRelative ? preData.name : cheatElements[2]; uint prot = isRelative ? preData.prot : uint.Parse(cheatElements[3], NumberStyles.HexNumber); @@ -283,7 +304,14 @@ private void ToolStripOpen_Click(object sender, EventArgs e) bool cheatLock = bool.Parse(cheatElements[7]); string cheatValue = cheatElements[8]; string cheatDesc = cheatElements[9]; - int relativeOffset = isRelative ? int.Parse(cheatElements[5].Substring(1), NumberStyles.HexNumber) : -1; + string onValue = null; + string offValue = null; + if (Regex.Match(cheatDesc, @"(.*)\|([0-9A-Fa-f]+)\|([0-9A-Fa-f]+)") is Match m1 && m1.Success) + { + cheatDesc = m1.Groups[1].Value; + onValue = m1.Groups[2].Value; + offValue = m1.Groups[3].Value; + } Section section = isSIDv1 ? sectionTool.GetSectionBySIDv1(sid, name, prot) : sectionTool.GetSection(sid, name, prot); if (section == null && (ToolStripLockEnable.Checked || ToolStripAutoRefresh.Checked)) @@ -313,7 +341,7 @@ private void ToolStripOpen_Click(object sender, EventArgs e) } else offsetAddr = uint.Parse(cheatElements[5], NumberStyles.HexNumber); - CheatRow row = AddToCheatGrid(section, offsetAddr, cheatScanType, cheatValue, cheatLock, cheatDesc, pointerOffsets, pointerCaches, isRelative ? (int)preData.offsetAddr : -1, false); + CheatRow row = AddToCheatGrid(section, offsetAddr, cheatScanType, cheatValue, cheatLock, cheatDesc, pointerOffsets, pointerCaches, isRelative ? (int)preData.offsetAddr : -1, false, onValue, offValue); if (row.Cells == null || row.Cells.Count == 0) { preData = (0, "", 0, 0, 0); @@ -335,8 +363,7 @@ private void ToolStripOpen_Click(object sender, EventArgs e) if (cheatGridRowList.Count < CheatGridGroupRefreshThreshold && CheatGridView.GroupByEnabled) CheatGridView.GroupRefresh(); CheatGridView.ResumeLayout(); SaveCheatDialog.FileName = OpenCheatDialog.FileName; - SaveCheatDialog.FilterIndex = OpenCheatDialog.FilterIndex; - + if (OpenCheatDialog.FilterIndex < 6) SaveCheatDialog.FilterIndex = OpenCheatDialog.FilterIndex; ToolStripMsg.Text = string.Format("Successfully loaded {0} cheat items.", count); } catch (Exception ex) @@ -345,6 +372,7 @@ private void ToolStripOpen_Click(object sender, EventArgs e) } } + #region ParseLoadCheat /// /// PS4 Cheat Files Example: /// 1.5|eboot.bin|ID:CUSA99999|VER:09.99|FM:672 @@ -381,13 +409,13 @@ private void ParseCheatFiles(ref string[] cheatStrArr) { if (cheatElements[1] != "data") continue; - sequence = int.Parse(cheatElements[2]); - offsetAddrStr = cheatElements[3]; - section = sequence < sections.Length ? sections[sequence] : null; + sequence = int.Parse(cheatElements[2]); + offsetAddrStr = cheatElements[3]; + section = sequence < sections.Length ? sections[sequence] : null; string cheatCode = cheatElements[6]; - cheatLockStr = cheatElements[7]; - cheatDesc = cheatElements[8]; - string[] datas = cheatCode.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); + cheatLockStr = cheatElements[7]; + cheatDesc = cheatElements[8]; + string[] datas = cheatCode.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); sectionStr = string.Format("{0}|{1}|{2}|{3}|{4}", section.SID, @@ -424,26 +452,26 @@ private void ParseCheatFiles(ref string[] cheatStrArr) } if (isPointer) { - string[] pointerList = cheatElements[3].Split('+'); + string[] pointerList = cheatElements[3].Split('+'); string[] addressElements = pointerList[0].Split('_'); - sequence = int.Parse(addressElements[1]); - offsetAddrStr = addressElements[2]; - section = sequence < sections.Length ? sections[sequence] : null; - for (int offsetIdx = 1; offsetIdx < pointerList.Length; ++offsetIdx) offsetAddrStr += "_" + pointerList[offsetIdx]; - scanTypeStr = cheatElements[5]; - cheatValue = cheatElements[6]; - cheatLockStr = cheatElements[7]; - cheatDesc = cheatElements[8]; + sequence = int.Parse(addressElements[1]); + offsetAddrStr = addressElements[2]; + section = sequence < sections.Length ? sections[sequence] : null; + for (int offsetIdx = 1; offsetIdx < pointerList.Length; ++offsetIdx) offsetAddrStr += "_" + pointerList[offsetIdx]; + scanTypeStr = cheatElements[5]; + cheatValue = cheatElements[6]; + cheatLockStr = cheatElements[7]; + cheatDesc = cheatElements[8]; } else { - sequence = int.Parse(cheatElements[1]); + sequence = int.Parse(cheatElements[1]); offsetAddrStr = cheatElements[2]; - section = sequence < sections.Length ? sections[sequence] : null; - scanTypeStr = cheatElements[3]; - cheatValue = cheatElements[4]; - cheatLockStr = cheatElements[5]; - cheatDesc = cheatElements[6]; + section = sequence < sections.Length ? sections[sequence] : null; + scanTypeStr = cheatElements[3]; + cheatValue = cheatElements[4]; + cheatLockStr = cheatElements[5]; + cheatDesc = cheatElements[6]; } sectionStr = string.Format("{0}|{1}|{2}|{3}|{4}", section.SID, @@ -517,25 +545,9 @@ private void ParseCheatFiles(ref string[] cheatStrArr) return code; } - public void ParseLanguageJson() - { - string codes = Properties.Settings.Default.UILanguage.Value.ToString(); - string path = "languages\\LanguageFile_" + codes + ".json"; - - if (!File.Exists(path)) return; - - using (StreamReader sr = new StreamReader(path)) - using (Stream stream = sr.BaseStream) - { - DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(LanguageJson)); - langJson = (LanguageJson)deseralizer.ReadObject(stream); - } - } - /// /// Load a Cheat file in JSON format. /// - /// /// private int ParseCheatJson(Stream stream) { @@ -547,18 +559,7 @@ private int ParseCheatJson(Stream stream) ProcessName = cheatJson.Process; if (!InitSections(ProcessName)) return 0; - - #region cheatHeaderItems Check - string cheatGameID = cheatJson.Id; - string cheatGameVer = cheatJson.Version; - - InitGameInfo(); - - if (GameID != cheatGameID && MessageBox.Show(string.Format("Your Game ID({0}) is different with cheat file({1}), still load?", GameID, cheatGameID), - "GameID", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return 0; - if (GameVer != cheatGameVer && MessageBox.Show(string.Format("Your Game version({0}) is different with cheat file({1}), still load?", GameVer, cheatGameVer), - "GameVer", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return 0; - #endregion + if (!LoadCheatGameValid(cheatJson.Id, cheatJson.Version)) return 0; Section section; Section sectionFirst = sectionTool.GetSectionSortByAddr()[0]; @@ -566,11 +567,14 @@ private int ParseCheatJson(Stream stream) foreach (CheatJson.Mod cheatMod in cheatJson.Mods) { bool cheatLock = false; - string cheatDesc = cheatMod.Name; ScanType cheatScanType = ScanType.Hex; section = sectionFirst; - foreach (CheatJson.Memory memory in cheatMod.Memory) + for (int idx = 0; idx < cheatMod.Memory.Count; idx++) { + CheatJson.Memory memory = cheatMod.Memory[idx]; + string cheatDesc = cheatMod.Name; + if (cheatMod.Memory.Count > 1) cheatDesc += string.Format("_{0:00}", idx); + string cheatValue = memory.On; ulong offsetAddr = ulong.Parse(memory.Offset, NumberStyles.HexNumber); if (offsetAddr >= (ulong)sectionFirst.Length) @@ -594,6 +598,76 @@ private int ParseCheatJson(Stream stream) return count; } + private int ParseCheatSHN(string shnXML) + { + int count = 0; + using (StringReader readerXml = new StringReader(shnXML)) + { + XmlSerializer serializer = new XmlSerializer(typeof(CheatTrainer)); + cheatTrainer = (CheatTrainer)serializer.Deserialize(readerXml); + + ProcessName = cheatTrainer.Process; + if (!InitSections(ProcessName)) return 0; + if (!LoadCheatGameValid(cheatTrainer.Cusa, cheatTrainer.Version)) return 0; + + Section[] sections = sectionTool.GetSectionSortByAddr(); + CheatGridViewRowCountUpdate(false); + foreach (CheatTrainer.Cheat startUP in cheatTrainer.StartUPs) + { + ParseCheatline(startUP.Text, startUP.Description, startUP.Cheatlines, sections); + count++; + } + foreach (CheatTrainer.Cheat cheat in cheatTrainer.Cheats) + { + ParseCheatline(cheat.Text, cheat.Description, cheat.Cheatlines, sections); + count++; + } + CheatGridViewRowCountUpdate(); + } + void ParseCheatline(string text, string desc, List cheatlines, Section[] sections) + { + bool cheatLock = false; + ScanType cheatScanType = ScanType.Hex; + for (int idx = 0; idx < cheatlines.Count; idx++) + { + CheatTrainer.Cheatline cheatline = cheatlines[idx]; + Section section = sections[cheatline.SectionId]; + string onValue = cheatline.ValueOn.Replace("-", ""); + string offValue = cheatline.ValueOff.Replace("-", ""); + ulong offsetAddr = ulong.Parse(cheatline.Offset, NumberStyles.HexNumber); + + string cheatDesc = text; + if (cheatlines.Count > 1) cheatDesc += string.Format("_{0:00}", idx); + + AddToCheatGrid(section, (uint)offsetAddr, cheatScanType, onValue, cheatLock, cheatDesc, null, null, -1, false, onValue, offValue); + } + } + return count; + } + + private int ParseCheatMC4(StreamReader reader) + { + /// Decrypted by bucanero/save-decrypters. + /// https://github.com/bucanero/save-decrypters + byte[] aes256cbcKey = Encoding.ASCII.GetBytes("304c6528f659c766110239a51cl5dd9c"); + byte[] aes256cbcIv = Encoding.ASCII.GetBytes("u@}kzW2u[u(8DWar"); + + int count = 0; + using (AesCryptoServiceProvider aes = new AesCryptoServiceProvider()) + { + string raw = reader.ReadToEnd(); + byte[] rawData = Convert.FromBase64String(raw); + var decryptor = aes.CreateDecryptor(aes256cbcKey, aes256cbcIv); + byte[] decBytes = decryptor.TransformFinalBlock(rawData, 0, rawData.Length); + string decXml = Encoding.UTF8.GetString(decBytes); + decXml = HttpUtility.HtmlDecode(decXml); + decXml = Regex.Unescape(decXml); + Console.WriteLine(decXml); + count = ParseCheatSHN(decXml); + } + return count; + } + private int ParseExecutableBIN(Stream stream) { if (!InitSections(Properties.Settings.Default.DefaultProcess.Value)) return 0; @@ -623,7 +697,7 @@ private int ParseExecutableBIN(Stream stream) if (seEntry0.props >> 20 == 0) break; } - if (seEntry0.fileSz == 0 && seEntry0.props >> 20 != 0 && MessageBox.Show("The information of Segment00 in the loaded \"eboot.bin\" file cannot be parsed.", "Load eboot.bin", MessageBoxButtons.OK, MessageBoxIcon.Warning) == DialogResult.OK) return 0; + if (seEntry0.fileSz == 0 && seEntry0.props >> 20 != 0 && MessageBox.Show("The information of Segment00 in the loaded \"eboot.bin\" file cannot be parsed.", "Load eboot.bin", MessageBoxButtons.OK, MessageBoxIcon.Warning) == DialogResult.OK) return 0; Section section = sectionTool.GetSection("executable", 5); byte[] checkBytes = PS4Tool.ReadMemory(ProcessPid, section.Start, 48); @@ -682,71 +756,48 @@ private int ParseExecutableBIN(Stream stream) return count; } + private bool LoadCheatGameValid(string cheatGameID, string cheatGameVer) + { + InitGameInfo(); + + if (GameID != cheatGameID && MessageBox.Show(string.Format("Your Game ID({0}) is different with cheat file({1}), still load?", GameID, cheatGameID), + "GameID", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return false; + if (GameVer != cheatGameVer && MessageBox.Show(string.Format("Your Game version({0}) is different with cheat file({1}), still load?", GameVer, cheatGameVer), + "GameVer", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) != DialogResult.Yes) return false; + + return true; + } + #endregion + private void ToolStripSave_Click(object sender, EventArgs e) { if (cheatGridRowList.Count == 0) return; string FWVer = Properties.Settings.Default.PS4FWVersion.Value; InitGameInfo(); - SaveCheatDialog.Filter = "Cheat (*.cht)|*.cht|Cheat Relative (*.chtr)|*.chtr|Cheat Json (*.json)|*.json"; + SaveCheatDialog.Filter = "Cheat files(*.cht;*.chtr;*.json;*.shn)|*.cht;*.chtr;*.json;*.shn|" + dialogFilter; SaveCheatDialog.AddExtension = true; SaveCheatDialog.RestoreDirectory = true; - if (string.IsNullOrWhiteSpace(SaveCheatDialog.FileName)) SaveCheatDialog.FileName = GameID; - - if (SaveCheatDialog.ShowDialog() != DialogResult.OK) return; - if (!InitSections(ProcessName)) return; - - if (SaveCheatDialog.FileName.ToUpper().EndsWith("JSON")) + if (string.IsNullOrWhiteSpace(SaveCheatDialog.FileName)) { - if (cheatJson == null || cheatJson.Id != GameID) cheatJson = new CheatJson(GameID, GameID, GameVer, ProcessName); - else cheatJson.Mods = new List(); - - CheatJson.Mod modBak = null; - Section sectionFirst = sectionTool.GetSectionSortByAddr()[0]; - for (int cIdx = 0; cIdx < cheatGridRowList.Count; cIdx++) + if (string.IsNullOrWhiteSpace(ProcessContentid)) { - CheatRow row = cheatGridRowList[cIdx]; - - (Section section, ulong offsetAddr) = (row.Section_, row.OffsetAddr); - if (section.SID != sectionFirst.SID) offsetAddr += section.Start - sectionFirst.Start; - - string cheatDesc = row.Cells[(int)ChertCol.CheatListDesc].ToString(); - ScanType scanType = this.ParseFromDescription(row.Cells[(int)ChertCol.CheatListType].ToString()); - string on = row.Cells[(int)ChertCol.CheatListValue].ToString(); - if (scanType != ScanType.Hex) - { - byte[] bytes = ScanTool.ValueStringToByte(scanType, on); - on = ScanTool.BytesToString(scanType, bytes, true, on.StartsWith("-")); - on = ScanTool.ReverseHexString(on); - } - string off = on; - if (Regex.Match(cheatDesc, @"(.*) *__ *\[ *on: *([0-9a-zA-Z]+) *off: *([0-9a-zA-Z]+)") is Match m1 && m1.Success) - { //Attempt to restore off value from desc - cheatDesc = m1.Groups[1].Value; - off = m1.Groups[3].Value; - } - - if (modBak != null && modBak.Name == cheatDesc) cheatJson.Mods[cheatJson.Mods.Count - 1].Memory.Add(new CheatJson.Memory(offsetAddr.ToString("X"), on, off)); - else + try { - CheatJson.Mod mod = new CheatJson.Mod(cheatDesc, "checkbox"); - mod.Memory.Add(new CheatJson.Memory(offsetAddr.ToString("X"), on, off)); - - cheatJson.Mods.Add(mod); - modBak = mod; + var processInfo = PS4Tool.GetProcessInfo(ProcessName); + ProcessPid = processInfo.pid; + ProcessContentid = processInfo.contentid; } - - } - - DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(CheatJson)); - using (var msObj = new MemoryStream()) - { - serializer.WriteObject(msObj, cheatJson); - var bytes = msObj.ToArray(); - string json = Encoding.UTF8.GetString(bytes, 0, bytes.Length); - using (var myStream = new StreamWriter(SaveCheatDialog.FileName)) myStream.Write(json); + catch {} } + SaveCheatDialog.FileName = string.IsNullOrWhiteSpace(ProcessContentid) ? GameID : ProcessContentid; } + + if (SaveCheatDialog.ShowDialog() != DialogResult.OK) return; + if (!InitSections(ProcessName)) return; + + if (SaveCheatDialog.FileName.ToUpper().EndsWith("JSON")) SaveCheatJson(); + else if (SaveCheatDialog.FileName.ToUpper().EndsWith("SHN")) SaveCheatShn(); else { string processName = ProcessName; @@ -770,8 +821,8 @@ private void ToolStripSave_Click(object sender, EventArgs e) newSection = sectionTool.GetSection(sid, sectionArr[1], uint.Parse(sectionArr[2])); addressStr = sectionArr[sectionArr.Length - 1]; } - else if (SaveCheatDialog.FilterIndex == 2 && isRelative) - { + else if (SaveCheatDialog.FilterIndex == 3 && isRelative) + { //Cheat Relative (*.chtr) addressStr = "+" + (offsetAddr - preAddr).ToString("X"); sectionStr = "||||"; } @@ -783,7 +834,7 @@ private void ToolStripSave_Click(object sender, EventArgs e) newSection.Prot.ToString("X"), newSection.Offset.ToString("X")); - saveBuf.AppendLine(string.Format("{0}|{1}|{2}|{3}|{4}|{5}", + saveBuf.Append(string.Format("{0}|{1}|{2}|{3}|{4}|{5}", sectionStr, addressStr, row.Cells[(int)ChertCol.CheatListType], @@ -791,7 +842,13 @@ private void ToolStripSave_Click(object sender, EventArgs e) row.Cells[(int)ChertCol.CheatListValue], row.Cells[(int)ChertCol.CheatListDesc] )); - if (SaveCheatDialog.FilterIndex == 2 && !isRelative) preAddr = offsetAddr; + if (!string.IsNullOrWhiteSpace((string)row.Cells[(int)ChertCol.CheatListOn])) + saveBuf.AppendLine(string.Format("|{0}|{1}", + row.Cells[(int)ChertCol.CheatListOn], + row.Cells[(int)ChertCol.CheatListOff] + )); + else saveBuf.AppendLine(); + if (SaveCheatDialog.FilterIndex == 3 && !isRelative) preAddr = offsetAddr; //Cheat Relative (*.chtr) } using (var myStream = new StreamWriter(SaveCheatDialog.FileName)) myStream.Write(saveBuf.ToString()); @@ -800,6 +857,120 @@ private void ToolStripSave_Click(object sender, EventArgs e) OpenCheatDialog.FileName = SaveCheatDialog.FileName; OpenCheatDialog.FilterIndex = SaveCheatDialog.FilterIndex; } + + private void SaveCheatJson() + { + if (cheatJson == null || cheatJson.Id != GameID) cheatJson = new CheatJson(ProcessContentid, GameID, GameVer, ProcessName); + else cheatJson.Mods = new List(); + + CheatJson.Mod modBak = null; + Section sectionFirst = sectionTool.GetSectionSortByAddr()[0]; + for (int cIdx = 0; cIdx < cheatGridRowList.Count; cIdx++) + { + CheatRow row = cheatGridRowList[cIdx]; + + (Section section, ulong offsetAddr) = (row.Section_, row.OffsetAddr); + if (section.SID != sectionFirst.SID) offsetAddr += section.Start - sectionFirst.Start; + + string cheatDesc = row.Cells[(int)ChertCol.CheatListDesc].ToString(); + ScanType scanType = this.ParseFromDescription(row.Cells[(int)ChertCol.CheatListType].ToString()); + string on = row.Cells[(int)ChertCol.CheatListValue].ToString(); + if (scanType != ScanType.Hex) + { + byte[] bytes = ScanTool.ValueStringToByte(scanType, on); + on = ScanTool.BytesToString(scanType, bytes, true, on.StartsWith("-")); + on = ScanTool.ReverseHexString(on); + } + string off = row.Cells[(int)ChertCol.CheatListOff].ToString(); + if (Regex.Match(cheatDesc, @"(.*) *__ *\[ *on: *([0-9a-zA-Z]+) *off: *([0-9a-zA-Z]+)") is Match m1 && m1.Success) + { //Attempt to restore off value from desc + cheatDesc = m1.Groups[1].Value; + off = m1.Groups[3].Value; + } + cheatDesc = Regex.Replace(cheatDesc, @"_\d+$", ""); + + if (modBak != null && modBak.Name == cheatDesc) cheatJson.Mods[cheatJson.Mods.Count - 1].Memory.Add(new CheatJson.Memory(offsetAddr.ToString("X"), on, off)); + else + { + CheatJson.Mod mod = new CheatJson.Mod(cheatDesc, "checkbox"); + mod.Memory.Add(new CheatJson.Memory(offsetAddr.ToString("X"), on, off)); + + cheatJson.Mods.Add(mod); + modBak = mod; + } + } + + using (var myStream = new FileStream(SaveCheatDialog.FileName, FileMode.Create)) + using (var writer = JsonReaderWriterFactory.CreateJsonWriter(myStream, Encoding.UTF8, true, true, " ")) + { + var serializer = new DataContractJsonSerializer(typeof(CheatJson)); + serializer.WriteObject(writer, cheatJson); + writer.Flush(); + } + } + + private void SaveCheatShn() + { + if (cheatTrainer == null || cheatTrainer.Cusa != GameID) cheatTrainer = new CheatTrainer(ProcessContentid, GameID, GameVer, ProcessName); + else + { + cheatTrainer.StartUPs = new List(); + cheatTrainer.Cheats = new List(); + cheatTrainer.Genress = new List(); + } + + + CheatTrainer.Cheat cheatBak = null; + Section[] sections = sectionTool.GetSectionSortByAddr(); + for (int idx = 0; idx < sections.Length; idx++) + { + Section section = sections[idx]; + section.SN = idx; + } + for (int cIdx = 0; cIdx < cheatGridRowList.Count; cIdx++) + { + CheatRow row = cheatGridRowList[cIdx]; + + (Section section, ulong offsetAddr) = (row.Section_, row.OffsetAddr); + + string cheatDesc = row.Cells[(int)ChertCol.CheatListDesc].ToString(); + ScanType scanType = this.ParseFromDescription(row.Cells[(int)ChertCol.CheatListType].ToString()); + string on = row.Cells[(int)ChertCol.CheatListValue].ToString(); + if (scanType != ScanType.Hex) + { + byte[] bytes = ScanTool.ValueStringToByte(scanType, on); + on = ScanTool.BytesToString(scanType, bytes, true, on.StartsWith("-")); + on = ScanTool.ReverseHexString(on); + } + string off = row.Cells[(int)ChertCol.CheatListOff].ToString(); + if (Regex.Match(cheatDesc, @"(.*) *__ *\[ *on: *([0-9a-zA-Z]+) *off: *([0-9a-zA-Z]+)") is Match m1 && m1.Success) + { //Attempt to restore off value from desc + cheatDesc = m1.Groups[1].Value; + off = m1.Groups[3].Value; + } + on = Regex.Replace(on, @"(\w\w)(?=\w)", @"$1-"); + off = Regex.Replace(off, @"(\w\w)(?=\w)", @"$1-"); + cheatDesc = Regex.Replace(cheatDesc, @"_\d+$", ""); + + if (cheatBak != null && cheatBak.Text == cheatDesc) cheatTrainer.Cheats[cheatTrainer.Cheats.Count - 1].Cheatlines.Add(new CheatTrainer.Cheatline(offsetAddr.ToString("X"), section.SN, on, off)); + else + { + CheatTrainer.Cheat cheat = new CheatTrainer.Cheat(cheatDesc); + cheat.Cheatlines.Add(new CheatTrainer.Cheatline(offsetAddr.ToString("X"), section.SN, on, off)); + + cheatTrainer.Cheats.Add(cheat); + cheatBak = cheat; + } + } + XmlSerializer serializer = new XmlSerializer(typeof(CheatTrainer)); + using (var myStream = new StreamWriter(SaveCheatDialog.FileName)) + using (XmlTextWriter xmlWriter = new XmlTextWriter(myStream)) + { + xmlWriter.Formatting = Formatting.Indented; + xmlWriter.Indentation = 2; + serializer.Serialize(xmlWriter, cheatTrainer); + } + } #endregion private void ToolStripNewQuery_Click(object sender, EventArgs e) @@ -1491,7 +1662,7 @@ private void CheatGridMenu_Opening(object sender, System.ComponentModel.CancelEv if (rows == null || rows.Count == 0) return; DataGridViewRow row = rows[0]; - bool isOnOffVisible = row.Cells[(int)ChertCol.CheatListOn] != null && row.Cells[(int)ChertCol.CheatListOn].ToString().Trim() != ""; + bool isOnOffVisible = !string.IsNullOrWhiteSpace((string)row.Cells[(int)ChertCol.CheatListOn].Value); CheatGridMenuOnValue.Visible = isOnOffVisible; CheatGridMenuOffValue.Visible = isOnOffVisible; } @@ -1904,6 +2075,7 @@ public bool InitSections(string processName, bool force = false) ProcessPid = processInfo.pid; ProcessName = processInfo.name; + ProcessContentid = processInfo.contentid; if (pMap == null) sectionTool.InitSections(processInfo.pid, ProcessName); else sectionTool.InitSections(pMap, processInfo.pid, ProcessName); diff --git a/PS4CheaterNeo/NewAddress.Designer.cs b/PS4CheaterNeo/NewAddress.Designer.cs index 9a108ea..2f3b817 100644 --- a/PS4CheaterNeo/NewAddress.Designer.cs +++ b/PS4CheaterNeo/NewAddress.Designer.cs @@ -57,60 +57,63 @@ private void InitializeComponent() this.AddressBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(36)))), ((int)(((byte)(36)))), ((int)(((byte)(36))))); this.AddressBox.Dock = System.Windows.Forms.DockStyle.Fill; this.AddressBox.ForeColor = System.Drawing.Color.White; - this.AddressBox.Location = new System.Drawing.Point(62, 3); + this.AddressBox.Location = new System.Drawing.Point(65, 3); this.AddressBox.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); this.AddressBox.Name = "AddressBox"; - this.AddressBox.Size = new System.Drawing.Size(121, 22); + this.AddressBox.Size = new System.Drawing.Size(114, 22); this.AddressBox.TabIndex = 0; this.AddressBox.Leave += new System.EventHandler(this.AddressBox_Leave); // // AddressLabel // - this.AddressLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.AddressLabel.AutoSize = true; + this.AddressLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.AddressLabel.ForeColor = System.Drawing.Color.White; - this.AddressLabel.Location = new System.Drawing.Point(19, 5); - this.AddressLabel.Margin = new System.Windows.Forms.Padding(3, 5, 1, 0); + this.AddressLabel.Location = new System.Drawing.Point(8, 3); + this.AddressLabel.Margin = new System.Windows.Forms.Padding(3); this.AddressLabel.Name = "AddressLabel"; - this.AddressLabel.Size = new System.Drawing.Size(42, 12); + this.AddressLabel.Size = new System.Drawing.Size(54, 19); this.AddressLabel.TabIndex = 1; this.AddressLabel.Text = "Address"; + this.AddressLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // ValueLabel // this.ValueLabel.AutoSize = true; - this.ValueLabel.Dock = System.Windows.Forms.DockStyle.Right; + this.ValueLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.ValueLabel.ForeColor = System.Drawing.Color.White; - this.ValueLabel.Location = new System.Drawing.Point(194, 5); - this.ValueLabel.Margin = new System.Windows.Forms.Padding(11, 5, 1, 0); + this.ValueLabel.Location = new System.Drawing.Point(182, 3); + this.ValueLabel.Margin = new System.Windows.Forms.Padding(3); this.ValueLabel.Name = "ValueLabel"; - this.ValueLabel.Size = new System.Drawing.Size(32, 20); + this.ValueLabel.Size = new System.Drawing.Size(44, 19); this.ValueLabel.TabIndex = 3; this.ValueLabel.Text = "Value"; + this.ValueLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // ValueBox // this.ValueBox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(36)))), ((int)(((byte)(36)))), ((int)(((byte)(36))))); this.ValueBox.Dock = System.Windows.Forms.DockStyle.Fill; this.ValueBox.ForeColor = System.Drawing.Color.White; - this.ValueBox.Location = new System.Drawing.Point(227, 3); + this.ValueBox.Location = new System.Drawing.Point(229, 3); this.ValueBox.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); this.ValueBox.Name = "ValueBox"; - this.ValueBox.Size = new System.Drawing.Size(121, 22); + this.ValueBox.Size = new System.Drawing.Size(115, 22); this.ValueBox.TabIndex = 2; this.ValueBox.Text = "0"; // // TypeLabel // - this.TypeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.TypeLabel.AutoSize = true; + this.TypeLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.TypeLabel.ForeColor = System.Drawing.Color.White; - this.TypeLabel.Location = new System.Drawing.Point(32, 30); - this.TypeLabel.Margin = new System.Windows.Forms.Padding(3, 5, 1, 0); + this.TypeLabel.Location = new System.Drawing.Point(8, 28); + this.TypeLabel.Margin = new System.Windows.Forms.Padding(3); this.TypeLabel.Name = "TypeLabel"; - this.TypeLabel.Size = new System.Drawing.Size(29, 12); + this.TypeLabel.Size = new System.Drawing.Size(54, 17); this.TypeLabel.TabIndex = 4; this.TypeLabel.Text = "Type"; + this.TypeLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // ScanTypeBox // @@ -119,10 +122,10 @@ private void InitializeComponent() this.ScanTypeBox.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.ScanTypeBox.ForeColor = System.Drawing.Color.White; this.ScanTypeBox.FormattingEnabled = true; - this.ScanTypeBox.Location = new System.Drawing.Point(62, 28); + this.ScanTypeBox.Location = new System.Drawing.Point(65, 28); this.ScanTypeBox.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); this.ScanTypeBox.Name = "ScanTypeBox"; - this.ScanTypeBox.Size = new System.Drawing.Size(121, 20); + this.ScanTypeBox.Size = new System.Drawing.Size(114, 20); this.ScanTypeBox.TabIndex = 5; this.ScanTypeBox.SelectedIndexChanged += new System.EventHandler(this.ScanTypeBox_SelectedIndexChanged); // @@ -131,7 +134,7 @@ private void InitializeComponent() this.LockBox.AutoSize = true; this.LockBox.Dock = System.Windows.Forms.DockStyle.Left; this.LockBox.ForeColor = System.Drawing.Color.White; - this.LockBox.Location = new System.Drawing.Point(227, 28); + this.LockBox.Location = new System.Drawing.Point(229, 28); this.LockBox.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); this.LockBox.Name = "LockBox"; this.LockBox.Size = new System.Drawing.Size(48, 20); @@ -142,14 +145,15 @@ private void InitializeComponent() // DescriptionLabel // this.DescriptionLabel.AutoSize = true; - this.DescriptionLabel.Dock = System.Windows.Forms.DockStyle.Right; + this.DescriptionLabel.Dock = System.Windows.Forms.DockStyle.Fill; this.DescriptionLabel.ForeColor = System.Drawing.Color.White; - this.DescriptionLabel.Location = new System.Drawing.Point(3, 53); - this.DescriptionLabel.Margin = new System.Windows.Forms.Padding(3, 5, 1, 0); + this.DescriptionLabel.Location = new System.Drawing.Point(5, 51); + this.DescriptionLabel.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3); this.DescriptionLabel.Name = "DescriptionLabel"; - this.DescriptionLabel.Size = new System.Drawing.Size(58, 20); + this.DescriptionLabel.Size = new System.Drawing.Size(60, 19); this.DescriptionLabel.TabIndex = 7; this.DescriptionLabel.Text = "Description"; + this.DescriptionLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; // // DescriptionBox // @@ -157,10 +161,10 @@ private void InitializeComponent() this.TableLayoutBase.SetColumnSpan(this.DescriptionBox, 3); this.DescriptionBox.Dock = System.Windows.Forms.DockStyle.Fill; this.DescriptionBox.ForeColor = System.Drawing.Color.White; - this.DescriptionBox.Location = new System.Drawing.Point(62, 51); + this.DescriptionBox.Location = new System.Drawing.Point(65, 51); this.DescriptionBox.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); this.DescriptionBox.Name = "DescriptionBox"; - this.DescriptionBox.Size = new System.Drawing.Size(286, 22); + this.DescriptionBox.Size = new System.Drawing.Size(279, 22); this.DescriptionBox.TabIndex = 8; // // SaveBtn @@ -171,7 +175,7 @@ private void InitializeComponent() this.SaveBtn.ForeColor = System.Drawing.Color.White; this.SaveBtn.Location = new System.Drawing.Point(3, 4); this.SaveBtn.Name = "SaveBtn"; - this.SaveBtn.Size = new System.Drawing.Size(137, 23); + this.SaveBtn.Size = new System.Drawing.Size(133, 23); this.SaveBtn.TabIndex = 13; this.SaveBtn.Text = "Save"; this.SaveBtn.UseVisualStyleBackColor = false; @@ -183,9 +187,9 @@ private void InitializeComponent() this.CloseBtn.Dock = System.Windows.Forms.DockStyle.Top; this.CloseBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat; this.CloseBtn.ForeColor = System.Drawing.Color.White; - this.CloseBtn.Location = new System.Drawing.Point(146, 4); + this.CloseBtn.Location = new System.Drawing.Point(142, 4); this.CloseBtn.Name = "CloseBtn"; - this.CloseBtn.Size = new System.Drawing.Size(137, 23); + this.CloseBtn.Size = new System.Drawing.Size(134, 23); this.CloseBtn.TabIndex = 14; this.CloseBtn.Text = "Close"; this.CloseBtn.UseVisualStyleBackColor = false; @@ -194,10 +198,11 @@ private void InitializeComponent() // PointerBox // this.PointerBox.AutoSize = true; + this.PointerBox.Dock = System.Windows.Forms.DockStyle.Fill; this.PointerBox.ForeColor = System.Drawing.Color.White; - this.PointerBox.Location = new System.Drawing.Point(65, 76); + this.PointerBox.Location = new System.Drawing.Point(68, 76); this.PointerBox.Name = "PointerBox"; - this.PointerBox.Size = new System.Drawing.Size(57, 16); + this.PointerBox.Size = new System.Drawing.Size(108, 16); this.PointerBox.TabIndex = 15; this.PointerBox.Text = "Pointer"; this.PointerBox.UseVisualStyleBackColor = true; @@ -211,12 +216,11 @@ private void InitializeComponent() // // TableLayoutBase // - this.TableLayoutBase.ColumnCount = 5; - this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); - this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.TableLayoutBase.ColumnCount = 4; + this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F)); + this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.TableLayoutBase.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); this.TableLayoutBase.Controls.Add(this.AddressLabel, 0, 0); this.TableLayoutBase.Controls.Add(this.PointerBox, 1, 4); this.TableLayoutBase.Controls.Add(this.AddressBox, 1, 0); @@ -231,8 +235,9 @@ private void InitializeComponent() this.TableLayoutBase.Controls.Add(this.OnOffBox, 3, 4); this.TableLayoutBase.Dock = System.Windows.Forms.DockStyle.Fill; this.TableLayoutBase.Location = new System.Drawing.Point(0, 0); - this.TableLayoutBase.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0); + this.TableLayoutBase.Margin = new System.Windows.Forms.Padding(0); this.TableLayoutBase.Name = "TableLayoutBase"; + this.TableLayoutBase.Padding = new System.Windows.Forms.Padding(5, 0, 20, 0); this.TableLayoutBase.RowCount = 6; this.TableLayoutBase.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.TableLayoutBase.RowStyles.Add(new System.Windows.Forms.RowStyle()); @@ -254,14 +259,14 @@ private void InitializeComponent() this.TableLayoutBottom.Controls.Add(this.CloseBtn, 1, 2); this.TableLayoutBottom.Controls.Add(this.TableLayoutBottomBox, 0, 1); this.TableLayoutBottom.Dock = System.Windows.Forms.DockStyle.Fill; - this.TableLayoutBottom.Location = new System.Drawing.Point(62, 95); + this.TableLayoutBottom.Location = new System.Drawing.Point(65, 95); this.TableLayoutBottom.Margin = new System.Windows.Forms.Padding(0); this.TableLayoutBottom.Name = "TableLayoutBottom"; this.TableLayoutBottom.RowCount = 3; this.TableLayoutBottom.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.TableLayoutBottom.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.TableLayoutBottom.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.TableLayoutBottom.Size = new System.Drawing.Size(286, 41); + this.TableLayoutBottom.Size = new System.Drawing.Size(279, 41); this.TableLayoutBottom.TabIndex = 16; // // TableLayoutBottomLabel @@ -269,12 +274,12 @@ private void InitializeComponent() this.TableLayoutBottomLabel.ColumnCount = 1; this.TableLayoutBottomLabel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); this.TableLayoutBottomLabel.Dock = System.Windows.Forms.DockStyle.Fill; - this.TableLayoutBottomLabel.Location = new System.Drawing.Point(143, 0); + this.TableLayoutBottomLabel.Location = new System.Drawing.Point(139, 0); this.TableLayoutBottomLabel.Margin = new System.Windows.Forms.Padding(0); this.TableLayoutBottomLabel.Name = "TableLayoutBottomLabel"; this.TableLayoutBottomLabel.RowCount = 1; this.TableLayoutBottomLabel.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.TableLayoutBottomLabel.Size = new System.Drawing.Size(143, 1); + this.TableLayoutBottomLabel.Size = new System.Drawing.Size(140, 1); this.TableLayoutBottomLabel.TabIndex = 16; // // TableLayoutBottomBox @@ -287,15 +292,16 @@ private void InitializeComponent() this.TableLayoutBottomBox.Name = "TableLayoutBottomBox"; this.TableLayoutBottomBox.RowCount = 1; this.TableLayoutBottomBox.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.TableLayoutBottomBox.Size = new System.Drawing.Size(143, 1); + this.TableLayoutBottomBox.Size = new System.Drawing.Size(139, 1); this.TableLayoutBottomBox.TabIndex = 15; // // OnOffBox // this.OnOffBox.AutoSize = true; - this.OnOffBox.Location = new System.Drawing.Point(230, 76); + this.OnOffBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.OnOffBox.Location = new System.Drawing.Point(232, 76); this.OnOffBox.Name = "OnOffBox"; - this.OnOffBox.Size = new System.Drawing.Size(81, 16); + this.OnOffBox.Size = new System.Drawing.Size(109, 16); this.OnOffBox.TabIndex = 17; this.OnOffBox.Text = "OnOffValue"; this.OnOffBox.UseVisualStyleBackColor = true; @@ -309,7 +315,6 @@ private void InitializeComponent() this.ClientSize = new System.Drawing.Size(364, 134); this.Controls.Add(this.TableLayoutBase); this.ForeColor = System.Drawing.Color.White; - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Name = "NewAddress"; this.Text = "NewAddress"; this.Load += new System.EventHandler(this.NewAddress_Load); diff --git a/PS4CheaterNeo/NewAddress.cs b/PS4CheaterNeo/NewAddress.cs index e72da20..b413f1a 100644 --- a/PS4CheaterNeo/NewAddress.cs +++ b/PS4CheaterNeo/NewAddress.cs @@ -43,19 +43,21 @@ public NewAddress(Main mainForm, Section addrSection, Section baseSection, ulong OnBox = new TextBox(); OffBox = new TextBox(); - OnLabel.Anchor = AnchorStyles.Top | AnchorStyles.Right; OnLabel.AutoSize = true; + OnLabel.Dock = DockStyle.Fill; OnLabel.Margin = AddressLabel.Margin; OnLabel.Name = "OnLabel"; OnLabel.TabIndex = 1; OnLabel.Text = "On"; + OnLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; OffLabel.AutoSize = true; - OffLabel.Dock = DockStyle.Right; + OffLabel.Dock = DockStyle.Fill; OffLabel.ForeColor = ForeColor; OffLabel.Margin = ValueLabel.Margin; OffLabel.Name = "OffLabel"; OffLabel.Text = "Off"; + OffLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight; OnBox.BackColor = BackColor; OnBox.ForeColor = ForeColor; @@ -160,6 +162,7 @@ public void ApplyUI(LanguageJson langJson) DescriptionLabel.ForeColor = ForeColor; LockBox.ForeColor = ForeColor; PointerBox.ForeColor = ForeColor; + OnOffBox.ForeColor = ForeColor; AddressBox.ForeColor = ForeColor; AddressBox.BackColor = BackColor; @@ -209,12 +212,12 @@ private void SaveBtn_Click(object sender, EventArgs e) CheatType = (ScanType)((ComboItem)(ScanTypeBox.SelectedItem)).Value; ScanTool.ValueStringToULong(CheatType, ValueBox.Text); Value = ValueBox.Text; - OnValue = OnBox.Text; - OffValue = OffBox.Text; + OnValue = string.IsNullOrWhiteSpace(OnBox.Text) ? null : OnBox.Text; + OffValue = string.IsNullOrWhiteSpace(OffBox.Text) ? null : OffBox.Text; IsLock = LockBox.Checked; Descriptioin = DescriptionBox.Text; - if (!AddressBox.ReadOnly) mainForm.AddToCheatGrid(AddrSection, (uint)(Address - AddrSection.Start), CheatType, Value, IsLock, Descriptioin, PointerOffsets); + if (!AddressBox.ReadOnly) mainForm.AddToCheatGrid(AddrSection, (uint)(Address - AddrSection.Start), CheatType, Value, IsLock, Descriptioin, PointerOffsets, null, -1, true, OnValue, OffValue); DialogResult = DialogResult.OK; Close(); @@ -320,24 +323,26 @@ private void SetOffsetBoxs(bool isAdd) { TextBox textBox = new TextBox { - Text = "0", - Location = AddOffsetBtn.Location, + Text = "0", + Location = AddOffsetBtn.Location, ForeColor = ForeColor, BackColor = BackColor, - Dock = DockStyle.Fill, - Margin = new Padding(3) + Dock = DockStyle.Fill, + Margin = new Padding(3) }; - Label label = new Label + TextBox label = new TextBox { - Text = "", - Location = DelOffsetBtn.Location, - ForeColor = ForeColor, - BackColor = BackColor, - Dock = DockStyle.Fill, - Margin = new Padding(3) - }; - + Text = "", + Location = DelOffsetBtn.Location, + ForeColor = ForeColor, + BackColor = BackColor, + Dock = DockStyle.Fill, + Margin = new Padding(3, 6, 3, 3), + ReadOnly = true, + BorderStyle = BorderStyle.None, + }; + PointerOffsets.Add(0); TableLayoutBottomBox.RowCount += 1; TableLayoutBottomBox.RowStyles.Add(new RowStyle(SizeType.Percent, 100F)); TableLayoutBottomBox.Controls.Add(textBox, 0, TableLayoutBottomBox.Controls.Count); @@ -351,6 +356,7 @@ private void SetOffsetBoxs(bool isAdd) { if (TableLayoutBottomBox.Controls.Count == 0) return; + PointerOffsets.RemoveAt(PointerOffsets.Count - 1); Height -= TableLayoutBottomBox.Controls[TableLayoutBottomBox.Controls.Count - 1].Height; TableLayoutBottomBox.Controls.RemoveAt(TableLayoutBottomBox.Controls.Count - 1); TableLayoutBottomBox.RowCount -= 1; @@ -366,27 +372,42 @@ private void ScanTypeBox_SelectedIndexChanged(object sender, EventArgs e) if (IsPointer || PointerOffsets != null) return; var newCheatType = (ScanType)((ComboItem)(ScanTypeBox.SelectedItem)).Value; - if (newCheatType == ScanType.String_) return; - else if (CheatType == ScanType.Hex && ValueBox.Text.Length > 32) + if (CheatType == ScanType.Hex && ValueBox.Text.Length > 16) { ScanTypeBox.SelectedIndex = ScanTypeBox.FindStringExact(CheatType.GetDescription()); return; } + else if (newCheatType == ScanType.String_) return; try { var newValue = ScanTool.ValueStringToULong(CheatType, ValueBox.Text); if (newValue == 0) return; - if (newCheatType == ScanType.Byte_ && newValue > byte.MaxValue) return; - else if (newCheatType == ScanType.Bytes_2 && newValue > UInt16.MaxValue) return; - else if (newCheatType == ScanType.Bytes_4 && newValue > UInt32.MaxValue) return; + if (newCheatType == ScanType.Byte_ && newValue > byte.MaxValue || + newCheatType == ScanType.Bytes_2 && newValue > UInt16.MaxValue || + newCheatType == ScanType.Bytes_4 && newValue > UInt32.MaxValue || + newCheatType == ScanType.Float_ && newValue > float.MaxValue) + { + ScanTypeBox.SelectedIndex = ScanTypeBox.FindStringExact(CheatType.GetDescription()); + return; + } var newText = ScanTool.ULongToString(newCheatType, newValue); if (newText == "0") return; Value = newValue.ToString(); ValueBox.Text = newText; + + //var newOnValue = ScanTool.ValueStringToULong(CheatType, OnBox.Text); + //var newOnText = ScanTool.ULongToString(newCheatType, newOnValue); + //OnValue = newOnValue.ToString(); + //OnBox.Text = newOnText; + + //var newOffValue = ScanTool.ValueStringToULong(CheatType, OffBox.Text); + //var newOffText = ScanTool.ULongToString(newCheatType, newOffValue); + //OffValue = newOffValue.ToString(); + //OffBox.Text = newOffText; } catch (Exception ex) { @@ -417,26 +438,30 @@ private void RefreshPointerChecker_Tick(object sender, EventArgs e) if (BaseSection == null) break; - if (TableLayoutBottomBox.Controls.Count > PointerOffsets.Count) PointerOffsets.Add(address); - else PointerOffsets[idx] = address; + PointerOffsets[idx] = address; if (idx != TableLayoutBottomBox.Controls.Count - 1) { if (AddrSection == null || AddrSection.SID == 0) AddrSection = mainForm.sectionTool.GetSection(mainForm.sectionTool.GetSectionID((ulong)(address + baseAddress))); byte[] nextAddress = PS4Tool.ReadMemory(AddrSection.PID, (ulong)(address + baseAddress), 8); baseAddress = BitConverter.ToInt64(nextAddress, 0); - TableLayoutBottomLabel.Controls[idx].Text = baseAddress.ToString("X"); + TableLayoutBottomLabel.Controls[idx].Text = string.Format("=> {0:X2} +", baseAddress); } else { if (address == 0 && baseAddress == 0) continue; - byte[] data = PS4Tool.ReadMemory(BaseSection.PID, (ulong)(address + baseAddress), ScanTool.ScanTypeLengthDict[CheatType]); - TableLayoutBottomLabel.Controls[idx].Text = ScanTool.BytesToString(CheatType, data); + int length = 0; + if (CheatType != ScanType.Hex) length = ScanTool.ScanTypeLengthDict[CheatType]; + else if (ValueBox.Text.Length > 1) length = ValueBox.Text.Length / 2; + else length = 8; + byte[] data = PS4Tool.ReadMemory(BaseSection.PID, (ulong)(address + baseAddress), length); + string value = ScanTool.BytesToString(CheatType, data); + TableLayoutBottomLabel.Controls[idx].Text = string.Format("=> {0}", value); AddressBox.Text = (address + baseAddress).ToString("X"); if (!ValueBox.Enabled || changedCheatType) { ValueBox.Enabled = true; - ValueBox.Text = TableLayoutBottomLabel.Controls[idx].Text; + ValueBox.Text = value; } } } diff --git a/PS4CheaterNeo/PS4CheaterNeo.csproj b/PS4CheaterNeo/PS4CheaterNeo.csproj index 69985ed..7dddcf8 100644 --- a/PS4CheaterNeo/PS4CheaterNeo.csproj +++ b/PS4CheaterNeo/PS4CheaterNeo.csproj @@ -71,6 +71,7 @@ + @@ -83,6 +84,7 @@ + Component @@ -181,6 +183,12 @@ SendPayload.cs Designer + + Always + + + Always + Always diff --git a/PS4CheaterNeo/Properties/AssemblyInfo.cs b/PS4CheaterNeo/Properties/AssemblyInfo.cs index 551c9cd..9cfb515 100644 --- a/PS4CheaterNeo/Properties/AssemblyInfo.cs +++ b/PS4CheaterNeo/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // 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.2.1")] -[assembly: AssemblyFileVersion("1.0.2.1")] +[assembly: AssemblyVersion("1.0.2.2")] +[assembly: AssemblyFileVersion("1.0.2.2")] diff --git a/PS4CheaterNeo/Query.cs b/PS4CheaterNeo/Query.cs index 8bbdd18..90273d2 100644 --- a/PS4CheaterNeo/Query.cs +++ b/PS4CheaterNeo/Query.cs @@ -298,13 +298,18 @@ private void ProcessesBox_SelectedIndexChanged(object sender, EventArgs e) ComboItem process = (ComboItem)ProcessesBox.SelectedItem; sectionTool.InitSections((int)process.Value, (string)process.Text); - mainForm.ProcessPid = (int)process.Value; - mainForm.ProcessName = (string)process.Text; + if (mainForm.GameID != null) + { + mainForm.ProcessPid = (int)process.Value; + mainForm.ProcessName = (string)process.Text; + } + else mainForm.InitSections((string)process.Text); Section[] sections = sectionTool.GetSectionSortByAddr(); for (int sectionIdx = 0; sectionIdx < sections.Length; sectionIdx++) { Section section = sections[sectionIdx]; + section.SN = sectionIdx; if ((IsFilterBox.Checked && section.IsFilter) || (IsFilterSizeBox.Checked && section.IsFilterSize)) continue; string start = String.Format("{0:X9}", section.Start); diff --git a/PS4CheaterNeo/common/CheatTrainer.cs b/PS4CheaterNeo/common/CheatTrainer.cs new file mode 100644 index 0000000..daaaaac --- /dev/null +++ b/PS4CheaterNeo/common/CheatTrainer.cs @@ -0,0 +1,176 @@ +using System.Collections.Generic; +using System.Xml.Serialization; + +/// XML to C# Online Converter +/// https://json2csharp.com/code-converters/xml-to-csharp +namespace PS4CheaterNeo +{ + [XmlRoot(ElementName = "Trainer")] + public class CheatTrainer + { + public CheatTrainer() { } + public CheatTrainer(string name, string id, string version, string process) + { + Game = name; + Cusa = id; + Version = version; + Process = process; + StartUPs = new List(); + Cheats = new List(); + Moder = "PS4CheaterNeo"; + } + + [XmlAttribute(AttributeName = "Game")] + public string Game { get; set; } + + [XmlAttribute(AttributeName = "Moder")] + public string Moder { get; set; } + + [XmlAttribute(AttributeName = "Cusa")] + public string Cusa { get; set; } + + [XmlAttribute(AttributeName = "Version")] + public string Version { get; set; } + + [XmlAttribute(AttributeName = "Process")] + public string Process { get; set; } + + [XmlElement(ElementName = "StartUP")] + public List StartUPs { get; set; } + + [XmlElement(ElementName = "Cheat")] + public List Cheats { get; set; } + + [XmlElement(ElementName = "Genres")] + public List Genress { get; set; } + + [XmlElement(ElementName = "inventory")] + public Inventory Inventory_ { get; set; } + + [XmlElement(ElementName = "Items")] + public Items Items_ { get; set; } + + [XmlText] + public string TextXml { get; set; } + + #region XmlRoot + [XmlRoot(ElementName = "Genres")] + public class Genres + { + [XmlAttribute(AttributeName = "Name")] + public string Name { get; set; } + } + + public class Cheat + { + public Cheat() { } + public Cheat(string text, string description = "") + { + Text = text; + Description = description; + Cheatlines = new List(); + } + + [XmlElement(ElementName = "Cheatline")] + public List Cheatlines { get; set; } + + [XmlAttribute(AttributeName = "Text")] + public string Text { get; set; } + + [XmlAttribute(AttributeName = "Description")] + public string Description { get; set; } + + [XmlText] + public string TextXml { get; set; } + } + + [XmlRoot(ElementName = "Cheatline")] + public class Cheatline + { + public Cheatline() { } + public Cheatline(string offset, int sectionId, string valueOn, string valueOff, bool absolute = false) + { + Offset = offset; + SectionId = sectionId; + ValueOn = valueOn; + ValueOff = valueOff; + Absolute = absolute ? "True" : null; + } + + [XmlElement(ElementName = "Offset")] + public string Offset { get; set; } + + [XmlElement(ElementName = "Section")] + public int SectionId { get; set; } + + [XmlElement(ElementName = "ValueOn")] + public string ValueOn { get; set; } + + [XmlElement(ElementName = "ValueOff")] + public string ValueOff { get; set; } + + [XmlElement(ElementName = "Absolute")] + public string Absolute { get; set; } + } + + [XmlRoot(ElementName = "inventory")] + public class Inventory + { + [XmlElement(ElementName = "value")] + public List Values { get; set; } + + [XmlAttribute(AttributeName = "section")] + public int Section { get; set; } + + [XmlAttribute(AttributeName = "offset")] + public string Offset { get; set; } + + [XmlAttribute(AttributeName = "step")] + public int Step { get; set; } + + [XmlAttribute(AttributeName = "name")] + public string Name { get; set; } + + [XmlAttribute(AttributeName = "EmptyID")] + public string EmptyID { get; set; } + + [XmlAttribute(AttributeName = "Length")] + public int Length { get; set; } + + [XmlAttribute(AttributeName = "Size")] + public int Size { get; set; } + } + + [XmlRoot(ElementName = "value")] + public class Value + { + [XmlAttribute(AttributeName = "Name")] + public string Name { get; set; } + + [XmlAttribute(AttributeName = "offset")] + public string Offset { get; set; } + + [XmlAttribute(AttributeName = "Type")] + public string Type { get; set; } + } + + [XmlRoot(ElementName = "Items")] + public class Items + { + [XmlElement(ElementName = "item")] + public List Items_ { get; set; } + } + + [XmlRoot(ElementName = "item")] + public class Item + { + [XmlElement(ElementName = "id")] + public string Id { get; set; } + + [XmlElement(ElementName = "name")] + public string Name { get; set; } + } + #endregion + } + +} diff --git a/PS4CheaterNeo/common/Constant.cs b/PS4CheaterNeo/common/Constant.cs index 8ba4da9..f1f95e0 100644 --- a/PS4CheaterNeo/common/Constant.cs +++ b/PS4CheaterNeo/common/Constant.cs @@ -11,6 +11,8 @@ public enum LanguageCodes Russian, French, German, + Korean, + Italian, } public enum SectionCol diff --git a/PS4CheaterNeo/common/SectionTool.cs b/PS4CheaterNeo/common/SectionTool.cs index acccb6d..a70e706 100644 --- a/PS4CheaterNeo/common/SectionTool.cs +++ b/PS4CheaterNeo/common/SectionTool.cs @@ -111,27 +111,32 @@ public class Section /// Whether the length of the section is a filtering target. /// public bool IsFilterSize; + /// + /// The sequence number of the section. + /// + public int SN = -1; public Section Clone() { Section section = new Section { - PID = PID, - SID = SID, - SIDv1 = SIDv1, - Start = Start, - Length = Length, - Name = Name, - Check = Check, - Prot = Prot, - Offset = Offset, - IsFilter = IsFilter, - IsFilterSize = IsFilterSize + PID = PID, + SID = SID, + SIDv1 = SIDv1, + Start = Start, + Length = Length, + Name = Name, + Check = Check, + Prot = Prot, + Offset = Offset, + IsFilter = IsFilter, + IsFilterSize = IsFilterSize, + SN = SN, }; return section; } - public override string ToString() => $"{Start:X},{(float)Length / 1024} KB,{Name},{Prot:X},{Offset:X},{IsFilter},{IsFilterSize},{Check},{PID},{SID}"; + public override string ToString() => $"{Start:X},{(float)Length / 1024} KB,{Name},{Prot:X},{Offset:X},{IsFilter},{IsFilterSize},{Check},{PID},{SID},{SN}"; } /// diff --git a/PS4CheaterNeo/languages/LanguageFile_Italian.json b/PS4CheaterNeo/languages/LanguageFile_Italian.json new file mode 100644 index 0000000..13c4f43 --- /dev/null +++ b/PS4CheaterNeo/languages/LanguageFile_Italian.json @@ -0,0 +1,338 @@ +{ + "MainForm": { + "ToolStripLockEnable": "Abilita Blocco", + "ToolStripAutoRefresh": "Aggiornamento Automatico", + "ToolStripSendToolTipText": "Invia", + "ToolStripOpenToolTipText": "Apri", + "ToolStripSaveToolTipText": "Salva", + "ToolStripNewQueryToolTipText": "Nuova Query", + "ToolStripAddToolTipText": "Aggiungi", + "ToolStripHexViewToolTipText": "Vista Hex", + "ToolStripRefreshCheatToolTipText": "Aggiorna Trucchi", + "ToolStripExpandAllToolTipText": "Espandi Tutto", + "ToolStripCollapseAllToolTipText": "Comprimi Tutto", + "ToolStripLockEnableToolTipText": "Abilita Blocco Trucchi", + "ToolStripAutoRefreshToolTipText": "Abilita Aggiornamento Automatico", + "ToolStripSettingsToolTipText": "Impostazioni", + "ToolStripProcessInfoMsg": "Processo Attuale: ", + + "CheatGridViewDel": "Elimina", + "CheatGridViewAddress": "Indirizzo", + "CheatGridViewType": "Tipo", + "CheatGridViewActive": "Attivo", + "CheatGridViewValue": "Valore", + "CheatGridViewSection": "Sezione", + "CheatGridViewSID": "SID", + "CheatGridViewLock": "Blocca", + "CheatGridViewDescription": "Descrizione", + + "CheatGridMenuHexEditor": "Editor Hex", + "CheatGridMenuLock": "Blocca", + "CheatGridMenuUnlock": "Sblocca", + "CheatGridMenuActive": "Attiva", + "CheatGridMenuEdit": "Modifica", + "CheatGridMenuCopyAddress": "Copia Indirizzo", + "CheatGridMenuFindPointer": "Trova Puntatore", + "CheatGridMenuDelete": "Elimina" + }, + "SendPayloadForm": { + "SendPayloadBtn": "Invia Payload", + "OKBtn": "OK" + }, + "NewAddressForm": { + "AddressLabel": "Indirizzo", + "ValueLabel": "Valore", + "TypeLabel": "Tipo", + "LockBox": "Blocco", + "DescriptionLabel": "Descrizione", + "PointerBox": "Puntatore", + "SaveBtn": "Salva", + "CloseBtn": "Chiudi" + }, + "QueryForm": { + "ResultViewAddress": "Indirizzo", + "ResultViewType": "Tipo", + "ResultViewValue": "Valore", + "ResultViewHex": "Hex", + "ResultViewSection": "Sezione", + + "ResultViewAddToCheatGrid": "Aggiungi alla Griglia Trucchi", + "ResultViewSelectAll": "Seleziona Tutto", + "ResultViewHexEditor": "Editor Hex", + "ResultViewCopyAddress": "Copia Indirizzo", + "ResultViewDump": "Dump", + "ResultViewFindPointer": "Trova Puntatore", + + "GetProcessesBtn": "Aggiorna Lista Processi", + "SectionViewAddress": "Indirizzo", + "SectionViewName": "Nome", + "SectionViewProt": "Prot", + "SectionViewLength": "Lunghezza", + "SectionViewSID": "SID", + "SectionViewOffset": "Offset", + "SectionViewEnd": "Fine", + + "SectionViewHexEditor": "Editor Hex", + "SectionViewCheck": "Seleziona", + "SectionViewCheckAll": "Seleziona Tutto", + "SectionViewUnCheckAll": "Deseleziona Tutto", + "SectionViewInvertChecked": "Inverti Selezione", + "SectionViewCheckContains": "Seleziona Contiene:", + "SectionViewUnCheckContains": "Deseleziona Contiene:", + "SectionViewCheckProt": "Seleziona Prot:", + "SectionViewUnCheckProt": "Deseleziona Non Prot:", + "SectionViewCheckAllHidden": "Seleziona Nascosto", + "SectionViewUnCheckAllHidden": "Deseleziona Non Nascosto", + "SectionViewDump": "Dump", + "SectionViewImport": "Importa", + + "AddrMinLabel": "Minimo:", + "AddrMaxLabel": "Massimo:", + "AddrIsFilterBox": "Filtro", + "SelectAllBox": "Seleziona Tutto", + "AlignmentBox": "Allineamento", + "IsFilterSizeBox": "Filtro Dimensione", + "IsFilterBox": "Filtro", + "CloneScanBtn": "Clona", + "AutoPauseBox": "Pausa Automatica", + "AutoResumeBox": "Riprendi Automaticamente", + "SlowMotionBox": "Movimento Lento", + "SimpleValuesBox": "Valori Semplici", + "NotBox": "Not", + "Value0Label": "Valore:", + "Value1Label": "Valore:", + "ValueAndLabel": "E", + "HexBox": "Hex", + "CompareFirstBox": "Confronta con Prima Scansione", + "NewBtn": "Nuovo", + "RefreshBtn": "Aggiorna", + "ScanBtn": "Scansione Iniziale", + "NextScan": "Prossima Scansione" + }, + "HexEditorForm": { + "PreviousBtn": "Precedente", + "NextBtn": "Successivo", + "AutoRefreshBox": "Aggiorna Automaticamente", + "RefreshBtn": "Aggiorna", + "CommitBtn": "Conferma", + "AddToCheatGridBtn": "Aggiungi alla Griglia Trucchi", + "HexBox": "Hex", + "LittleEndianBox": "Little Endian", + "ForwardBox": "Avanti", + "FindBtn": "Trova", + "SwapBytesBox": "Scambia Byte", + "AssemblerBtn": "Assemblaggio", + "GroupBoxAsm": "Informazioni Assemblaggio", + "HexViewMenuByteGroup": "Gruppo Byte Vista Hex", + "HexViewMenuGroupSize": "Dimensione Gruppo Vista Hex", + "HexViewMenuCopyAddress": "Copia Indirizzo", + "HexViewMenuJumpToAddress": "Vai a Indirizzo", + "HexViewMenuJumpToOffset": "Vai a Offset" + }, + "PointerFinderForm": { + "LevelLabel": "Livello:", + "AddressLabel": "Indirizzo:", + "ScanBtn": "Scansione", + "NewBtn": "Nuovo", + "MaxRangeLabel": "Raggio Massimo:", + "IsInitScan": "Scansione Iniziale", + "FastScanBox": "Scansione Veloce", + "NegativeOffsetBox": "Offset Negativo", + "IsFilterBox": "Filtra", + "FilterRuleBtn": "Regola", + "IsFilterSizeBox": "Filtra Dimensione", + "FilterSizeRuleBtn": "Regola", + "SaveBtn": "Salva", + "LoadBtn": "Carica", + + "PointerListViewAddToCheatGrid": "Aggiungi alla Griglia Trucchi", + "PointerListViewSelectAll": "Seleziona Tutto" + }, + "OptionForm": { + "tree_General": "Generale", + "tree_Cheat": "Trucchi", + "tree_Query": "Query", + "tree_HexEditor": "Editor Hex", + "tree_UI": "Interfaccia Utente", + "group_Connect": "Connessione", + "group_SendPayload": "Invia Payload", + "group_UI": "Interfaccia Utente", + "group_PS4Tool": "Strumento PS4", + "group_Option": "Opzione", + "group_Cheat": "Trucchi", + "group_CheatLock": "Blocco Trucchi", + "group_CheatRefresh": "Aggiornamento Trucchi", + "group_Query": "Query", + "group_Floating": "Fluttuante", + "group_Filter": "Filtro", + "group_Result": "Risultato", + "group_SectionView": "Vista Sezione", + "group_Find": "Trova", + "group_Hex": "Hex", + "group_Color Theme": "Tema Colore", + "group_Color Ui": "Interfaccia Utente Colore", + "group_Color Main": "Colore Principale", + "group_Color Query": "Colore Query", + "group_Color HexEditor": "Colore Editor Hex", + "group_Color PointerFinder": "Colore Ricerca Puntatore", + "group_Color SendPayload": "Colore Invia Payload", + + "PS4IP": "Indirizzo IP PS4", + "PS4Port": "Porta di Connessione PS4", + "PS4FWVersion": "Versione Firmware PS4", + "CollapsibleContainer": "Contenitore Pieghevole", + "UILanguage": "Lingua UI", + "UIFont": "Carattere UI", + "UIOpacity": "Opacità UI", + "CheatGridViewGroupByEnabled": "Gruppo Abilitato Vista Trucchi", + "CheatGridGroupRefreshThreshold": "Soglia Aggiornamento Gruppo Vista Trucchi", + "PS4DBGMutexFactor": "Fattore Mutua Esclusione PS4DBG", + "DisplayChangesListWhenSaving": "Visualizza Elenco Modifiche durante il Salvataggio", + "CheatCellDirtyValueCommit": "Conferma Valore Sporco Cella Trucchi", + "CheatLock": "Blocco Trucchi", + "VerifySectionWhenLock": "Verifica Sezione durante il Blocco", + "CheatAutoRefresh": "Aggiornamento Automatico Trucchi", + "CheatAutoRefreshShowStatus": "Mostra Stato Aggiornamento Automatico Trucchi", + "CheatAutoRefreshTimerInterval": "Intervallo Timer Aggiornamento Automatico Trucchi", + "VerifySectionWhenRefresh": "Verifica Sezione durante l'Aggiornamento", + "AutoPerformGetProcesses": "Esegui Automaticamente Ottenere Processi", + "DefaultProcess": "Processo Predefinito", + "MaxQueryThreads": "Massimo Thread di Query", + "QueryBufferSize": "Dimensione Buffer di Query", + "MinResultAccessFactor": "Fattore di Accesso Minimo ai Risultati", + "MinResultAccessFactorThreshold": "Soglia Fattore di Accesso Minimo ai Risultati", + "UndoScan": "Annulla Scansione", + "ScanAutoPause": "Pausa Automatica Scansione", + "ScanAutoResume": "Ripresa Automatica Scansione", + "ShowSearchSizeFirstScan": "Mostra Dimensione Ricerca Prima Scansione", + "UnknownInitialScanDoNotSkip0": "Scansione Iniziale Sconosciuta, Non Saltare 0", + "FloatingResultExact": "Risultato Fluttuante Esatto", + "FloatingSimpleValueExponents": "Esponenti Valori Semplici Fluttuanti", + "FilterQuery": "Filtro Query", + "SectionFilterKeys": "Chiavi Filtro Sezione", + "FilterSizeQuery": "Filtro Dimensione Query", + "SectionFilterSize": "Filtro Dimensione Sezione", + "MaxResultShow": "Massimo Risultato Mostrato", + "SectionViewFullRowSelect": "Selezione Interfila Vista Sezione", + "SectionViewDetectHiddenSection": "Rileva Sezione Nascosta Vista Sezione", + "LastHiddenSectionLengthHex": "Lunghezza Ultima Sezione Nascosta (Esadecimale)", + "HiddenSectionStartAtPreviousEnd": "Inizio Sezione Nascosta Dalla Fine Precedente", + "WriteHiddenSectionConf": "Scrivi Configurazione Sezione Nascosta", + "AutoRefresh": "Aggiornamento Automatico", + "AutoRefreshTimerInterval": "Intervallo Timer Aggiornamento Automatico", + "HexInfoDash": "Trattino Informazioni Esadecimali", + "AutoFindClosestChangedPosition": "Trova Automaticamente Posizione Cambiata più Vicina", + "InputIsHexFormat": "Input è Formato Esadecimale", + "UsingLittleEndian": "Utilizzo di Little Endian", + "ColorTheme": "Tema Colore", + "UiForeColor": "Colore Testo UI", + "UiBackColor": "Colore Sfondo UI", + "MainForeColor": "Colore Testo Principale", + "MainBackColor": "Colore Sfondo Principale", + "MainToolStrip1BackColor": "Colore Sfondo Barra degli Strumenti Principale 1", + "MainCheatGridViewRowIndexForeColor": "Colore Testo Indice Riga Vista Trucchi Principale", + "MainCheatGridViewBackgroundColor": "Colore Sfondo Vista Trucchi Principale", + "MainCheatGridViewBaseRowColor": "Colore Riga Base Vista Trucchi Principale", + "MainCheatGridViewGridColor": "Colore Griglia Vista Trucchi Principale", + "MainCheatGridCellForeColor": "Colore Testo Cellula Griglia Trucchi Principale", + "MainCheatGridCellBackColor": "Colore Sfondo Cellula Griglia Trucchi Principale", + "QueryStatusStrip1BackColor": "Colore Sfondo Barra di Stato Query 1", + "QueryAlignmentBoxForeColor": "Colore Testo Casella Allineamento Query", + "QueryScanBtnBackColor": "Colore Sfondo Pulsante Scansione Query", + "QuerySectionViewFilterForeColor": "Colore Testo Filtro Vista Sezione Query", + "QuerySectionViewFilterBackColor": "Colore Sfondo Filtro Vista Sezione Query", + "QuerySectionViewFilterSizeForeColor": "Colore Testo Filtro Dimensione Vista Sezione Query", + "QuerySectionViewFilterSizeBackColor": "Colore Sfondo Filtro Dimensione Vista Sezione Query", + "QuerySectionViewExecutableForeColor": "Colore Testo Eseguibile Vista Sezione Query", + "QuerySectionViewNoNameForeColor": "Colore Testo Senza Nome Vista Sezione Query", + "QuerySectionViewNoName2ForeColor": "Colore Testo Senza Nome 2 Vista Sezione Query", + "QuerySectionViewHiddenForeColor": "Colore Testo Nascosto Vista Sezione Query", + "QuerySectionViewItemCheck1BackColor": "Colore Sfondo Controllo Elemento Vista Sezione Query 1", + "QuerySectionViewItemCheck2BackColor": "Colore Sfondo Controllo Elemento Vista Sezione Query 2", + "HexEditorChangedFinishForeColor": "Colore Testo Termine Modifica Editor Esadecimale", + "HexEditorShadowSelectionColor": "Colore Selezione Ombra Editor Esadecimale", + "HexEditorZeroBytesForeColor": "Colore Testo Zero Byte Editor Esadecimale", + "PointerFinderStatusStrip1BackColor": "Colore Sfondo Barra di Stato Ricerca Puntatore 1", + "PointerFinderScanBtnBackColor": "Colore Sfondo Pulsante Scansione Ricerca Puntatore", + "SendPayloadStatusStrip1BackColor": "Colore Sfondo Barra di Stato Invio Payload 1", + + "description_PS4IP": "Inserisci l'indirizzo IP della PS4.", + "description_PS4Port": "Inserisci la porta della PS4.", + "description_PS4FWVersion": "Inserisci la versione del firmware della PS4 (utilizzata solo durante l'esecuzione di SendPayload).", + "description_CollapsibleContainer": "Decide se abilitare i pannelli divisori (SplitContainer) pieghevoli nell'interfaccia utente delle finestre Query, HexEditor e PointerFinder.\nImpostazione predefinita: abilitata.", + "description_UILanguage": "Decide la lingua dell'interfaccia utente.\nImpostazione predefinita: inglese.", + "description_UIFont": "Decide il tipo di carattere dell'interfaccia utente.\nImpostazione predefinita: SystemFonts.DefaultFont.", + "description_UIOpacity": "Determina l'opacità della finestra, con un massimo di 1 (opaco).\nImpostazione predefinita: 0.95.", + "description_CheatGridViewGroupByEnabled": "Decide se abilitare la funzione di raggruppamento (GroupByEnabled) nella CheatGridView.\nQuando abilitata, i trucchi verranno raggruppati.\nSe si caricano un gran numero di trucchi, è consigliabile disabilitare questa opzione per velocizzare il caricamento.\nLe modifiche a questa opzione richiedono il riavvio del programma per essere applicate.\nImpostazione predefinita: abilitata.", + "description_CheatGridGroupRefreshThreshold": "Per evitare tempi di attesa eccessivi durante il refresh dei gruppi nella GridView, il refresh del gruppo verrà eseguito solo se il numero di trucchi caricati è inferiore a questo valore.\nImpostazione predefinita: 10000.", + "description_PS4DBGMutexFactor": "Modificare questo valore non è consigliato e richiede il riavvio del programma per essere applicato.\nIl fattore Mutex determina il numero di connessioni e l'uso delle risorse durante l'inizializzazione di PS4DBG.\nIl numero di connessioni per la lettura della memoria va da 0 a Mutex Factor (escluso).\nIl numero di connessioni per la scrittura della memoria va da Mutex Factor a 2 * Mutex Factor (escluso).\nImpostazione predefinita: 3.", + "description_DisplayChangesListWhenSaving": "Decide se visualizzare l'elenco delle opzioni modificate durante il salvataggio delle impostazioni nell'Opzione.\nImpostazione predefinita: abilitato.", + "description_CheatCellDirtyValueCommit": "Decide se inviare automaticamente i valori modificati dei trucchi alla PS4 quando si utilizza l'UpDown per modificarli.\nImpostazione predefinita: abilitato.", + "description_CheatLock": "Decide se abilitare il blocco dei trucchi nella finestra principale.\nImpostazione predefinita: abilitato.", + "description_VerifySectionWhenLock": "Decide se verificare i valori della sezione quando si bloccano i trucchi.\nImpostazione predefinita: abilitato.", + "description_CheatAutoRefresh": "Decide se abilitare l'aggiornamento automatico nella finestra principale.\nImpostazione predefinita: disabilitato.", + "description_CheatAutoRefreshShowStatus": "Decide se visualizzare lo stato di errore nella finestra principale quando l'aggiornamento automatico dei trucchi è abilitato.\nImpostazione predefinita: disabilitato.", + "description_CheatAutoRefreshTimerInterval": "Quando l'aggiornamento automatico dei trucchi è abilitato, determina l'intervallo di tempo in millisecondi per l'aggiornamento automatico.\nImpostazione predefinita: 2500.", + "description_VerifySectionWhenRefresh": "Determina se verificare i valori della sezione durante l'aggiornamento dell'elenco dei trucchi.\nImpostazione predefinita: abilitato.", + "description_AutoPerformGetProcesses": "Determina se eseguire automaticamente l'acquisizione dell'elenco di tutti i processi quando si apre la finestra di query.\nImpostazione predefinita: abilitato.", + "description_DefaultProcess": "Imposta il nome del processo predefinito da selezionare durante l'acquisizione dell'elenco di tutti i processi.\nImpostazione predefinita: eboot.bin.", + "description_MaxQueryThreads": "Specifica il numero massimo di thread da utilizzare durante la scansione delle query.\nImpostazione predefinita: 3 thread.", + "description_QueryBufferSize": "Imposta la dimensione minima del buffer (in MB) da utilizzare durante la scansione delle query e la ricerca dei puntatori.\nImmettere 0 per disabilitare il buffering. Se il numero di sezioni del gioco è molto basso, inserire 0 potrebbe essere preferibile. Quando il numero di sezioni del gioco supera le mille, impostare una dimensione del buffer potrebbe essere preferibile.\nImpostazione predefinita: 50.", + "description_MinResultAccessFactor": "Quando il numero di risultati di query nella stessa sezione è inferiore a questo fattore, i valori verranno letti direttamente dagli indirizzi. Questo fattore viene utilizzato per determinare se leggere i valori completi della sezione o solo gli indirizzi.\nImpostazione predefinita: 50.", + "description_MinResultAccessFactorThreshold": "Imposta la dimensione minima della sezione (in byte) per il fattore MinResultAccessFactor. Questo fattore avrà effetto solo quando le dimensioni della sezione superano questa soglia.\nImpostazione predefinita: 1048576 (1 MB).", + "description_UndoScan": "Decide se abilitare lo scansionamento di annullamento (ripristino dei risultati della scansione precedente). Se abilitato, l'utilizzo della memoria durante la scansione delle query sarà maggiore.\nImpostazione predefinita: abilitato.", + "description_ScanAutoPause": "Decide se mettere automaticamente in pausa il gioco quando inizia la scansione delle query.\nImpostazione predefinita: disabilitato.", + "description_ScanAutoResume": "Decide se riprendere automaticamente il gioco quando la scansione delle query è completata.\nImpostazione predefinita: disabilitato.", + "description_ShowSearchSizeFirstScan": "Decide se mostrare un messaggio di conferma della dimensione della scansione durante la prima scansione delle query.\nImpostazione predefinita: abilitato.", + "description_UnknownInitialScanDoNotSkip0": "Quando il tipo di confronto nella finestra di query è 'sconosciuto iniziale' (UnknownInitial), decide se abilitare 'non escludere i byte con valore 0' nei risultati.\nNota: abilitare questa opzione aumenterà significativamente il numero di risultati della scansione.\nÈ necessario aprire una nuova finestra di query affinché le modifiche abbiano effetto.\nImpostazione predefinita: disabilitato.", + "description_FloatingResultExact": "Decide se rendere esatti i risultati dei calcoli in virgola mobile (float, double) nella finestra di query.\nSe disabilitato, i risultati dei confronti in virgola mobile inferiori a 0.0001 saranno considerati identici.\nImpostazione predefinita: abilitato.", + "description_FloatingSimpleValueExponents": "Decide gli esponenti dei valori in virgola mobile semplici (SimpleValues).\nCheat Engine è impostato su 11 (2^11 = 2048 positivo o negativo).\nImpostazione predefinita: 11.", + "description_FilterQuery": "Decide se abilitare il filtro delle sezioni quando si apre la finestra di query.\nImpostazione predefinita: abilitato.", + "description_SectionFilterKeys": "Inserire i valori di filtro. Le condizioni di filtro delle sezioni saranno basate su questa impostazione.", + "description_FilterSizeQuery": "Decide se abilitare il filtro per la dimensione delle sezioni quando si apre la finestra di query.\nImpostazione predefinita: disabilitato.", + "description_SectionFilterSize": "Specifica il valore al di sotto del quale le sezioni verranno filtrate (in byte).", + "description_MaxResultShow": "Inserisci il numero massimo di risultati della scansione delle query visualizzabili.\nInfluenza solo il numero di risultati mostrati nella vista risultati.\nImpostazione predefinita: 8192.", + "description_SectionViewFullRowSelect": "Decide se abilitare la selezione completa della riga nella vista sezione nella finestra di query.\nImpostazione predefinita: disabilitato.", + "description_SectionViewDetectHiddenSection": "Decide se abilitare il rilevamento automatico delle sezioni nascoste.\nAttualmente è ancora una funzionalità sperimentale.\nImpostazione predefinita: disabilitato.", + "description_LastHiddenSectionLengthHex": "Specifica la lunghezza in formato esadecimale dell'ultima sezione nascosta.\nQuesta opzione è efficace solo dopo aver abilitato SectionViewDetectHiddenSection.\nValore predefinito: 0x40000000.", + "description_HiddenSectionStartAtPreviousEnd": "Decide se abilitare l'avvio della sezione nascosta dall'indirizzo finale della sezione precedente.\nQuando non è abilitato, l'indirizzo di inizio sarà l'indirizzo finale della sezione precedente più 1.\nImpostazione predefinita: abilitato.", + "description_WriteHiddenSectionConf": "Decide se abilitare la scrittura delle configurazioni della sezione nascosta rilevata nel percorso 'PS4CheaterNeo\\sections\\[GAME_ID].conf'.\nÈ necessario abilitare questa opzione quando si esegue il tipo di scansione 'SCAN for Hidden Sections' nella finestra di query.\nNota: abilitando questa opzione, il tempo di attesa per l'apertura della finestra di query sarà più lungo perché richiede l'accesso alle informazioni [GAME_ID].\nImpostazione predefinita: disabilitato.", + "description_AutoRefresh": "Decide se abilitare il ricaricamento automatico nell'editor esadecimale.\nImpostazione predefinita: disabilitato.", + "description_AutoRefreshTimerInterval": "Quando il ricaricamento automatico è abilitato, decide l'intervallo di tempo in millisecondi per il ricaricamento automatico nell'editor esadecimale.\nDopo aver impostato questo valore, è necessario riavviare l'editor esadecimale per renderlo effettivo.\nValore predefinito: 2500.", + "description_HexInfoDash": "Decide il simbolo del trattino utilizzato per separare i valori esadecimali visualizzati nella parte destra dell'editor esadecimale.\nValore predefinito: \"-\".", + "description_AutoFindClosestChangedPosition": "Decide se abilitare la selezione automatica della posizione più vicina che ha subito una modifica quando non viene inserito un valore di ricerca.\nImpostazione predefinita: abilitato.", + "description_InputIsHexFormat": "Decide se il valore di input nella ricerca dell'editor esadecimale è in formato esadecimale.\nImpostazione predefinita: abilitato.", + "description_UsingLittleEndian": "Decide se il tipo di input nella ricerca dell'editor esadecimale è little-endian.\nSe disabilitato, sarà big-endian.\nImpostazione predefinita: disabilitato.", + "description_ColorTheme": "Decide il tema colore della finestra.", + "description_UiForeColor": "Specifica il colore del testo dell'interfaccia utente.", + "description_UiBackColor": "Specifica il colore di sfondo dell'interfaccia utente.", + "description_MainForeColor": "Specifica il colore del testo principale.", + "description_MainBackColor": "Specifica il colore di sfondo principale.", + "description_MainToolStrip1BackColor": "Specifica il colore di sfondo del ToolStrip1 principale.", + "description_MainCheatGridViewRowIndexForeColor": "Specifica il colore del testo dell'indice riga del Main CheatGridView.", + "description_MainCheatGridViewBackgroundColor": "Specifica il colore di sfondo del Main CheatGridView.", + "description_MainCheatGridViewBaseRowColor": "Specifica il colore della riga di base del Main CheatGridView.", + "description_MainCheatGridViewGridColor": "Specifica il colore della griglia del Main CheatGridView.", + "description_MainCheatGridCellForeColor": "Specifica il colore del testo delle celle del Main CheatGrid.", + "description_MainCheatGridCellBackColor": "Specifica il colore di sfondo delle celle del Main CheatGrid.", + "description_QueryStatusStrip1BackColor": "Specifica il colore di sfondo del StatusStrip1 della query.", + "description_QueryAlignmentBoxForeColor": "Specifica il colore del testo della casella di allineamento della query.", + "description_QueryScanBtnBackColor": "Specifica il colore di sfondo del pulsante di scansione della query.", + "description_QuerySectionViewFilterForeColor": "Specifica il colore del testo del filtro della sezione di visualizzazione della query.", + "description_QuerySectionViewFilterBackColor": "Specifica il colore di sfondo del filtro della sezione di visualizzazione della query.", + "description_QuerySectionViewFilterSizeForeColor": "Specifica il colore del testo del filtro delle dimensioni della sezione di visualizzazione della query.", + "description_QuerySectionViewFilterSizeBackColor": "Specifica il colore di sfondo del filtro delle dimensioni della sezione di visualizzazione della query.", + "description_QuerySectionViewExecutableForeColor": "Specifica il colore del testo dell'eseguibile della sezione di visualizzazione della query.", + "description_QuerySectionViewNoNameForeColor": "Specifica il colore del testo del nome non disponibile della sezione di visualizzazione della query.", + "description_QuerySectionViewNoName2ForeColor": "Specifica il colore del testo del secondo nome non disponibile della sezione di visualizzazione della query.", + "description_QuerySectionViewHiddenForeColor": "Specifica il colore del testo della sezione nascosta della sezione di visualizzazione della query.", + "description_QuerySectionViewItemCheck1BackColor": "Specifica il colore di sfondo dell'elemento di controllo 1 della sezione di visualizzazione della query.", + "description_QuerySectionViewItemCheck2BackColor": "Specifica il colore di sfondo dell'elemento di controllo 2 della sezione di visualizzazione della query.", + "description_HexEditorChangedFinishForeColor": "Specifica il colore del testo di modifica finita dell'editor esadecimale.", + "description_HexEditorShadowSelectionColor": "Specifica il colore di selezione ombra dell'editor esadecimale.", + "description_HexEditorZeroBytesForeColor": "Specifica il colore del testo dei byte zero dell'editor esadecimale.", + "description_PointerFinderStatusStrip1BackColor": "Specifica il colore di sfondo del StatusStrip1 del PointerFinder.", + "description_PointerFinderScanBtnBackColor": "Specifica il colore di sfondo del pulsante di scansione del PointerFinder.", + "description_SendPayloadStatusStrip1BackColor": "Specifica il colore di sfondo del StatusStrip1 dell'invio del payload." + } +} \ No newline at end of file diff --git a/PS4CheaterNeo/languages/LanguageFile_Korean.json b/PS4CheaterNeo/languages/LanguageFile_Korean.json new file mode 100644 index 0000000..0e90797 --- /dev/null +++ b/PS4CheaterNeo/languages/LanguageFile_Korean.json @@ -0,0 +1,339 @@ +{ + "MainForm": { + "ToolStripLockEnable": "잠금 활성화", + "ToolStripAutoRefresh": "자동 새로 고침", + "ToolStripSendToolTipText": "보내기", + "ToolStripOpenToolTipText": "열기", + "ToolStripSaveToolTipText": "저장", + "ToolStripNewQueryToolTipText": "쿼리", + "ToolStripAddToolTipText": "추가", + "ToolStripHexViewToolTipText": "Hex보기", + "ToolStripRefreshCheatToolTipText": "치트 새로 고침", + "ToolStripExpandAllToolTipText": "모두 펼치기", + "ToolStripCollapseAllToolTipText": "모두 축소", + "ToolStripLockEnableToolTipText": "치트 잠금 활성화 여부", + "ToolStripAutoRefreshToolTipText": "자동 새로 고침 활성화 여부", + "ToolStripSettingsToolTipText": "설정", + "ToolStripProcessInfoMsg": "현재 프로세스: ", + + "CheatGridViewDel": "삭제", + "CheatGridViewAddress": "주소", + "CheatGridViewType": "유형", + "CheatGridViewActive": "X", + "CheatGridViewValue": "값", + "CheatGridViewSection": "섹션", + "CheatGridViewSID": "SID", + "CheatGridViewLock": "잠금", + "CheatGridViewDescription": "설명", + + "CheatGridMenuHexEditor": "Hex편집기", + "CheatGridMenuLock": "잠금", + "CheatGridMenuUnlock": "잠금 해제", + "CheatGridMenuActive": "활성화", + "CheatGridMenuEdit": "편집", + "CheatGridMenuCopyAddress": "주소 복사", + "CheatGridMenuFindPointer": "포인터 찾기", + "CheatGridMenuDelete": "삭제" + }, + "SendPayloadForm": { + "SendPayloadBtn": "페이로드 보내기", + "OKBtn": "저장" + }, + "NewAddressForm": { + "AddressLabel": "주소", + "ValueLabel": "값", + "TypeLabel": "유형", + "LockBox": "잠금", + "DescriptionLabel": "설명", + "PointerBox": "포인터", + "SaveBtn": "저장", + "CloseBtn": "닫기" + }, + "QueryForm": { + "ResultViewAddress": "주소", + "ResultViewType": "유형", + "ResultViewValue": "값", + "ResultViewHex": "Hex", + "ResultViewSection": "섹션", + + "ResultViewAddToCheatGrid": "치트 그리드에 추가", + "ResultViewSelectAll": "모두 선택", + "ResultViewHexEditor": "Hex편집기", + "ResultViewCopyAddress": "주소 복사", + "ResultViewDump": "덤프", + "ResultViewFindPointer": "포인터 찾기", + + "GetProcessesBtn": "프로세스 목록 새로고침", + "SectionViewAddress": "주소", + "SectionViewName": "이름", + "SectionViewProt": "Prot", + "SectionViewLength": "길이", + "SectionViewSID": "SID", + "SectionViewOffset": "오프셋", + "SectionViewEnd": "끝", + + "SectionViewHexEditor": "Hex편집기", + "SectionViewCheck": "확인", + "SectionViewCheckAll": "모두 확인", + "SectionViewUnCheckAll": "모두 해제", + "SectionViewInvertChecked": "확인 반전", + "SectionViewCheckContains": "포함된 항목 확인:", + "SectionViewUnCheckContains": "포함되지 않은 항목 확인:", + "SectionViewCheckProt": "Prot확인:", + "SectionViewUnCheckProt": "비Prot확인:", + "SectionViewCheckAllHidden": "숨겨진 모두 확인", + "SectionViewUnCheckAllHidden": "숨겨진 모두 해제", + "SectionViewDump": "덤프", + "SectionViewImport": "가져오기", + + "AddrMinLabel": "최소:", + "AddrMaxLabel": "최대:", + "AddrIsFilterBox": "필터링", + "SelectAllBox": "모두 선택", + "AlignmentBox": "정렬", + "IsFilterSizeBox": "크기 필터링", + "IsFilterBox": "필터링", + "CloneScanBtn": "Clone", + "AutoPauseBox": "자동 일시 중지", + "AutoResumeBox": "자동 재개", + "SlowMotionBox": "슬로우 모션", + "SimpleValuesBox": "간단한 값", + "NotBox": "Not", + "Value0Label": "값:", + "Value1Label": "값:", + "ValueAndLabel": "및", + "HexBox": "Hex", + "CompareFirstBox": "첫 번째 스캔과 비교", + "NewBtn": "새로운", + "RefreshBtn": "새로 고침", + "ScanBtn": "첫 번째 스캔", + "NextScan": "다음 스캔" + }, + "HexEditorForm": { + "PreviousBtn": "이전", + "NextBtn": "다음", + "AutoRefreshBox": "자동", + "RefreshBtn": "새로 고침", + "CommitBtn": "커밋", + "AddToCheatGridBtn": "치트 그리드에 추가", + "HexBox": "Hex", + "LittleEndianBox": "리틀 엔디안", + "ForwardBox": "앞으로", + "FindBtn": "찾기", + "SwapBytesBox": "바이트 교환", + "AssemblerBtn": "어셈블리", + "GroupBoxAsm": "어셈블리 정보", + + "HexViewMenuByteGroup": "Hex뷰 바이트 그룹", + "HexViewMenuGroupSize": "Hex뷰 그룹 크기", + "HexViewMenuCopyAddress": "주소 복사", + "HexViewMenuJumpToAddress": "주소로 이동", + "HexViewMenuJumpToOffset": "오프셋으로 이동" + }, + "PointerFinderForm": { + "LevelLabel": "레벨:", + "AddressLabel": "주소:", + "ScanBtn": "스캔", + "NewBtn": "새로운", + "MaxRangeLabel": "최대 범위:", + "IsInitScan": "초기 스캔", + "FastScanBox": "빠른 스캔", + "NegativeOffsetBox": "음수 오프셋", + "IsFilterBox": "필터링", + "FilterRuleBtn": "규칙", + "IsFilterSizeBox": "크기 필터링", + "FilterSizeRuleBtn": "규칙", + "SaveBtn": "저장", + "LoadBtn": "로드", + + "PointerListViewAddToCheatGrid": "치트 그리드에 추가", + "PointerListViewSelectAll": "모두 선택" + }, + "OptionForm": { + "tree_General": "일반", + "tree_Cheat": "치트", + "tree_Query": "쿼리", + "tree_HexEditor": "Hex편집기", + "tree_UI": "사용자 인터페이스", + "group_Connect": "연결", + "group_SendPayload": "페이로드 보내기", + "group_UI": "사용자 인터페이스", + "group_PS4Tool": "PS4 도구", + "group_Option": "옵션", + "group_Cheat": "치트", + "group_CheatLock": "치트 잠금", + "group_CheatRefresh": "치트 새로 고침", + "group_Query": "쿼리", + "group_Floating": "부동", + "group_Filter": "필터", + "group_Result": "결과", + "group_SectionView": "섹션 뷰", + "group_Find": "찾기", + "group_Hex": "Hex", + "group_Color Theme": "색상 테마", + "group_Color Ui": "UI 색상", + "group_Color Main": "기본 색상", + "group_Color Query": "쿼리 색상", + "group_Color HexEditor": "Hex편집기 색상", + "group_Color PointerFinder": "포인터 찾기기 색상", + "group_Color SendPayload": "페이로드 보내기 색상", + + "PS4IP": "PS4 IP", + "PS4Port": "PS4 포트", + "PS4FWVersion": "PS4 펌웨어 버전", + "CollapsibleContainer": "접을 수 있는 컨테이너", + "UILanguage": "UI 언어", + "UIFont": "UI 글꼴", + "UIOpacity": "UI 불투명도", + "CheatGridViewGroupByEnabled": "치트 뷰 그룹화 활성화", + "CheatGridGroupRefreshThreshold": "치트 그룹 새로 고침 임계 값", + "PS4DBGMutexFactor": "PS4DBG 뮤텍스 팩터", + "DisplayChangesListWhenSaving": "저장할 때 변경 목록 표시", + "CheatCellDirtyValueCommit": "치트 셀 더러운 값 커밋", + "CheatLock": "치트 잠금", + "VerifySectionWhenLock": "잠금 시 섹션 확인", + "CheatAutoRefresh": "치트 자동 새로 고침", + "CheatAutoRefreshShowStatus": "치트 자동 새로 고침 상태 표시", + "CheatAutoRefreshTimerInterval": "치트 자동 새로 고침 타이머 간격", + "VerifySectionWhenRefresh": "새로 고칠 때 섹션 확인", + "AutoPerformGetProcesses": "자동으로 프로세스 가져오기 수행", + "DefaultProcess": "기본 프로세스", + "MaxQueryThreads": "최대 쿼리 스레드", + "QueryBufferSize": "쿼리 버퍼 크기", + "MinResultAccessFactor": "최소 결과 액세스 팩터", + "MinResultAccessFactorThreshold": "최소 결과 액세스 팩터 임계 값", + "UndoScan": "스캔 취소", + "ScanAutoPause": "자동 스캔 일시 중지", + "ScanAutoResume": "자동 스캔 재개", + "ShowSearchSizeFirstScan": "검색 크기 표시 첫 스캔", + "UnknownInitialScanDoNotSkip0": "알 수없는 초기 스캔을 건너 뛰지 마세요.", + "FloatingResultExact": "부동 결과 정확", + "FloatingSimpleValueExponents": "부동 단순 값 지수", + "FilterQuery": "쿼리 필터", + "SectionFilterKeys": "섹션 필터 키", + "FilterSizeQuery": "크기 쿼리 필터", + "SectionFilterSize": "섹션 필터 크기", + "MaxResultShow": "최대 결과 표시", + "SectionViewFullRowSelect": "섹션 뷰 전체 행 선택", + "SectionViewDetectHiddenSection": "숨겨진 섹션 감지 섹션 뷰", + "LastHiddenSectionLengthHex": "마지막 숨겨진 섹션 길이 (Hex)", + "HiddenSectionStartAtPreviousEnd": "이전 끝에서 시작하는 숨겨진 섹션", + "WriteHiddenSectionConf": "숨겨진 섹션 구성 쓰기", + "AutoRefresh": "자동 새로 고침", + "AutoRefreshTimerInterval": "자동 새로 고침 타이머 간격", + "HexInfoDash": "16진수 정보 대시", + "AutoFindClosestChangedPosition": "가장 가까운 변경된 위치 자동 찾기", + "InputIsHexFormat": "입력이 16진수 형식입니다.", + "UsingLittleEndian": "리틀 엔디안 사용", + "ColorTheme": "색상 테마", + "UiForeColor": "UI 전경색", + "UiBackColor": "UI 배경색", + "MainForeColor": "기본 전경색", + "MainBackColor": "기본 배경색", + "MainToolStrip1BackColor": "기본 도구 모음 1 배경색", + "MainCheatGridViewRowIndexForeColor": "기본 치트 그리드 뷰 행 인덱스 전경색", + "MainCheatGridViewBackgroundColor": "기본 치트 그리드 뷰 배경색", + "MainCheatGridViewBaseRowColor": "기본 치트 그리드 뷰 기본 행 색상", + "MainCheatGridViewGridColor": "기본 치트 그리드 뷰 그리드 색상", + "MainCheatGridCellForeColor": "기본 치트 그리드 셀 전경색", + "MainCheatGridCellBackColor": "기본 치트 그리드 셀 배경색", + "QueryStatusStrip1BackColor": "쿼리 상태 표시줄 1 배경색", + "QueryAlignmentBoxForeColor": "쿼리 정렬 상자 전경색", + "QueryScanBtnBackColor": "쿼리 스캔 버튼 배경색", + "QuerySectionViewFilterForeColor": "쿼리 섹션 뷰 필터 전경색", + "QuerySectionViewFilterBackColor": "쿼리 섹션 뷰 필터 배경색", + "QuerySectionViewFilterSizeForeColor": "쿼리 섹션 뷰 필터 크기 전경색", + "QuerySectionViewFilterSizeBackColor": "쿼리 섹션 뷰 필터 크기 배경색", + "QuerySectionViewExecutableForeColor": "쿼리 섹션 뷰 실행 가능 전경색", + "QuerySectionViewNoNameForeColor": "쿼리 섹션 뷰 이름 없음 전경색", + "QuerySectionViewNoName2ForeColor": "쿼리 섹션 뷰 이름 없음 2 전경색", + "QuerySectionViewHiddenForeColor": "쿼리 섹션 뷰 숨겨진 전경색", + "QuerySectionViewItemCheck1BackColor": "쿼리 섹션 뷰 항목 확인 1 배경색", + "QuerySectionViewItemCheck2BackColor": "쿼리 섹션 뷰 항목 확인 2 배경색", + "HexEditorChangedFinishForeColor": "16진수 편집기 변경 완료 전경색", + "HexEditorShadowSelectionColor": "16진수 편집기 그림자 선택 색상", + "HexEditorZeroBytesForeColor": "16진수 편집기 제로 바이트 전경색", + "PointerFinderStatusStrip1BackColor": "포인터 찾기 상태 표시줄 1 배경색", + "PointerFinderScanBtnBackColor": "포인터 찾기 스캔 버튼 배경색", + "SendPayloadStatusStrip1BackColor": "페이로드 보내기 상태 표시줄 1 배경색", + + "description_PS4IP": "PS4의 IP 주소를 입력하세요.", + "description_PS4Port": "PS4의 포트를 입력하세요.", + "description_PS4FWVersion": "PS4의 펌웨어 버전을 입력하세요. (SendPayload를 실행할 때만 사용됨)", + "description_CollapsibleContainer": "Query, HexEditor, PointerFinder 창에서 접기 가능한 분할 패널 (SplitContainer) UI를 활성화할지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_UILanguage": "표시되는 언어를 결정합니다. \n기본값은 영어입니다.", + "description_UIFont": "UI의 글꼴 패밀리를 결정합니다. \n기본값은 SystemFonts.DefaultFont입니다.", + "description_UIOpacity": "창의 불투명도를 결정합니다. 최대값은 1 (불투명)입니다. \n기본값은 0.95입니다.", + "description_CheatGridViewGroupByEnabled": "CheatGridView에서 그룹화 기능을 활성화할지 여부를 결정합니다. \n활성화하면 Cheat이 그룹화됩니다. \n로드된 Cheat 항목이 매우 많은 경우 성능 저하를 고려하여이 기능을 비활성화하는 것이 좋습니다. \n값을 수정한 후에는 프로그램을 다시 시작해야 적용됩니다. \n기본적으로 활성화됩니다.", + "description_CheatGridGroupRefreshThreshold": "그룹화된 그리드의 새로 고침 대기 시간이 너무 길어지는 것을 방지하기 위해 실행됩니다. \n이 값보다 로드된 Cheat 수가 작을 때만 그룹 새로 고침이 수행됩니다. \n기본값은 10000입니다.", + "description_PS4DBGMutexFactor": "이 값을 조정하는 것은 권장되지 않으며, 변경한 후에는 프로그램을 다시 시작해야 합니다. \nMutex 계수는 PS4DBG의 초기화 수량과 점유 연결 수를 결정합니다. \n메모리 읽기의 연결 수는 0에서 Mutex 계수 (제외) 사이입니다. \n메모리 쓰기의 연결 수는 Mutex 계수에서 2 * Mutex 계수 (제외)까지입니다. \n기본값은 3입니다.", + "description_DisplayChangesListWhenSaving": "Option 창에서 저장을 실행할 때 변경된 옵션 목록을 표시할지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_CheatCellDirtyValueCommit": "Cheat 값을 UpDown으로 편집할 때 값을 자동으로 PS4에 쓸지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_CheatLock": "Main 창에서 Cheat 잠금을 활성화할지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_VerifySectionWhenLock": "Cheat 항목을 잠금 상태로 설정할 때 섹션 값을 확인할지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_CheatAutoRefresh": "Main 창에서 자동 새로 고침을 활성화할지 여부를 결정합니다. \n기본적으로 비활성화됩니다.", + "description_CheatAutoRefreshShowStatus": "Cheat이 자동으로 새로 고침되면 Main 창에 오류 상태를 표시할지 여부를 결정합니다. \n기본적으로 비활성화됩니다.", + "description_CheatAutoRefreshTimerInterval": "Cheat이 자동으로 새로 고침되면 자동 새로 고침 간격을 밀리초 단위로 결정합니다. \n기본값은 2500입니다.", + "description_VerifySectionWhenRefresh": "Cheat 목록을 새로 고칠 때 섹션 값을 확인할지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_AutoPerformGetProcesses": "Query 창을 열 때 모든 프로세스 목록을 자동으로 가져올지 여부를 결정합니다. \n기본적으로 활성화됩니다.", + "description_DefaultProcess": "모든 프로세스 목록을 가져올 때 기본 선택된 프로세스 이름을 설정합니다. \n기본값은 eboot.bin입니다.", + "description_MaxQueryThreads": "스캔 쿼리에 사용할 최대 스레드 수를 입력합니다. \n기본값은 3 스레드입니다.", + "description_QueryBufferSize": "스캔 쿼리 및 포인터 검색에 사용할 최소 버퍼 크기를 설정합니다 (단위: MB).\n0을 입력하면 버퍼 설정을 사용하지 않습니다. 게임의 섹션 수가 매우 적은 경우 0을 입력하는 것이 좋습니다.\n게임의 섹션 수가 1000을 초과하는 경우 버퍼 크기를 설정하는 것이 좋습니다.\n기본값은 50입니다.", + "description_MinResultAccessFactor": "동일 섹션의 스캔 쿼리 결과가 이 계수보다 작을 때 값을 읽을 때 직접 주소를 사용할지 여부를 결정합니다.\n이 계수는 전체 섹션 값을 읽을지 아니면 주소의 값을 직접 읽을지를 판단합니다.\n기본값은 50입니다.", + "description_MinResultAccessFactorThreshold": "MinResultAccessFactor 옵션에 대한 섹션 크기의 최소 임계값을 설정합니다 (단위: 바이트).\nMinResultAccessFactor 옵션은 섹션 크기가 임계값을 초과 할 때만 작동합니다.\n기본값은 1048576 (1MB)입니다.", + "description_UndoScan": "스캔을 실행할 때 이전 스캔 결과를 복원할지 여부를 결정합니다.\n활성화하면 스캔 쿼리시 메모리 사용량이 더 많아집니다.\n기본적으로 활성화됩니다.", + "description_ScanAutoPause": "스캔 쿼리를 시작할 때 게임을 자동으로 일시 정지할지 여부를 결정합니다.\n기본적으로 비활성화됩니다.", + "description_ScanAutoResume": "스캔 쿼리가 완료되면 게임을 자동으로 다시 시작할지 여부를 결정합니다.\n기본적으로 비활성화됩니다.", + "description_ShowSearchSizeFirstScan": "첫 번째 스캔 쿼리시 스캔 크기 확인 메시지를 표시할지 여부를 결정합니다.\n기본적으로 활성화됩니다.", + "description_UnknownInitialScanDoNotSkip0": "쿼리 창의 비교 유형이 UnknownInitial 인 경우 '0이 아닌 바이트 값 제외' 옵션을 활성화할지 여부를 결정합니다.\n참고: 이 옵션을 활성화하면 스캔 결과 수가 상당히 증가합니다.\n옵션을 수정한 후에는 새로운 쿼리 창을 열어야 적용됩니다.\n기본적으로 비활성화됩니다.", + "description_FloatingResultExact": "쿼리 창에서 부동 소수점(float, double)의 계산 결과를 완전히 정확하게하는지 여부를 결정합니다.\n비활성화되면 부동 소수점 비교 결과가 0.0001보다 작으면 동일한 것으로 간주됩니다.\n기본적으로 활성화됩니다.", + "description_FloatingSimpleValueExponents": "단순 부동 소수점 값(SimpleValues)의 지수 값을 설정합니다.\nCheat Engine의 기본값은 11입니다 (2의 11승 = 2^11 = 양수 또는 음수 2048).\n기본값은 11입니다.", + "description_FilterQuery": "쿼리 창을 열 때 섹션 필터링을 사용할지 여부를 결정합니다.\n기본적으로 활성화됩니다.", + "description_SectionFilterKeys": "필터 값을 입력하면 섹션의 필터 조건이 이 옵션에 따라 설정됩니다.", + "description_FilterSizeQuery": "Query 창을 열 때 섹션 크기 필터링을 사용할지 여부를 결정합니다.\n기본적으로 비활성화됩니다.", + "description_SectionFilterSize": "섹션 크기가 이 값보다 작을 때 필터링합니다 (단위: 바이트).", + "description_MaxResultShow": "표시할 스캔 쿼리 결과의 최대 수를 입력합니다.\nResultView에서 표시되는 결과 수에만 영향을 줍니다.\n기본값은 8192입니다.", + "description_SectionViewFullRowSelect": "Query 창에서 'SectionView의 FullRowSelect' 기능을 사용할지 여부를 결정합니다.\n기본적으로 비활성화됩니다.", + "description_SectionViewDetectHiddenSection": "자동으로 숨겨진 섹션을 감지할지 여부를 결정합니다.\n현재 실험적인 기능입니다.\n기본적으로 비활성화됩니다.", + "description_LastHiddenSectionLengthHex": "마지막 숨겨진 섹션의 Hex 길이를 지정합니다.\n이 옵션은 'SectionViewDetectHiddenSection'을 활성화한 후에만 작동합니다.\n기본값은 0x40000000입니다.", + "description_HiddenSectionStartAtPreviousEnd": "숨겨진 섹션의 시작 주소를 이전 섹션의 끝 주소로 설정할지 여부를 결정합니다.\n비활성화되면 시작 주소가 이전 섹션의 끝 주소보다 1 큰 값이 됩니다.\n기본적으로 활성화됩니다.", + "description_WriteHiddenSectionConf": "감지된 숨겨진 섹션 설정을 'PS4CheaterNeo\\sections\\[GAME_ID].conf' 경로에 쓸지 여부를 결정합니다.\n'Hidden Sections 검색' 스캔 유형을 Query 창에서 실행할 때 이 옵션을 활성화해야 합니다.\n참고: 이 옵션을 활성화하면 Query 창을 열 때 대기 시간이 더 길어집니다. 왜냐하면 [GAME_ID] 정보를 조회해야 하기 때문입니다.\n기본적으로 비활성화됩니다.", + "description_AutoRefresh": "Hex 에디터에서 자동 새로 고침을 사용할지 여부를 결정합니다.\n기본적으로 비활성화됩니다.", + "description_AutoRefreshTimerInterval": "자동 새로 고침이 활성화된 경우, Hex 에디터의 자동 새로 고침 간격을 밀리초 단위로 설정합니다.\n이 값을 설정한 후에는 Hex 에디터를 다시 시작해야 합니다.\n기본값은 2500입니다.", + "description_HexInfoDash": "Hex 에디터에서 현재 Hex 값의 분리 대시를 표시할지 여부를 결정합니다.\n기본값은 '-'입니다.", + "description_AutoFindClosestChangedPosition": "검색 값이 입력되지 않은 경우 현재 주소와 가장 가까운 변경된 주소를 자동으로 선택할지 여부를 결정합니다.\n기본적으로 활성화됩니다.", + "description_InputIsHexFormat": "Hex 에디터의 쿼리 입력 값이 Hex 형식인지 여부를 결정합니다.\n기본적으로 활성화됩니다.", + "description_UsingLittleEndian": "Hex 에디터의 쿼리 입력 값이 Hex인 경우 입력 값 유형이 Little-Endians인지 여부를 결정합니다. 이 옵션이 비활성화된 경우 Big-Endians로 설정됩니다.\n기본적으로 비활성화됩니다.", + "description_ColorTheme": "창 색상 테마를 결정합니다.", + "description_UiForeColor": "UI의 전경색을 결정합니다.", + "description_UiBackColor": "UI의 배경색을 결정합니다.", + "description_MainForeColor": "Main의 전경색을 결정합니다.", + "description_MainBackColor": "Main의 배경색을 결정합니다.", + "description_MainToolStrip1BackColor": "Main ToolStrip1의 배경색을 결정합니다.", + "description_MainCheatGridViewRowIndexForeColor": "Main CheatGridView의 RowIndex의 전경색을 결정합니다.", + "description_MainCheatGridViewBackgroundColor": "Main CheatGridView의 배경색을 결정합니다.", + "description_MainCheatGridViewBaseRowColor": "Main CheatGridView base row의 색상을 결정합니다.", + "description_MainCheatGridViewGridColor": "Main CheatGridView 그리드의 색상을 결정합니다.", + "description_MainCheatGridCellForeColor": "Main dataGridViewCellStyle의 전경색을 결정합니다.", + "description_MainCheatGridCellBackColor": "Main dataGridViewCellStyle의 배경색을 결정합니다.", + "description_QueryStatusStrip1BackColor": "Query StatusStrip1의 배경색을 결정합니다.", + "description_QueryAlignmentBoxForeColor": "AlignmentBox의 전경색을 결정합니다.", + "description_QueryScanBtnBackColor": "Query ScanBtn의 배경색을 결정합니다.", + "description_QuerySectionViewFilterForeColor": "Query SectionView Filter의 전경색을 결정합니다.", + "description_QuerySectionViewFilterBackColor": "Query SectionView Filter의 배경색을 결정합니다.", + "description_QuerySectionViewFilterSizeForeColor": "Query SectionView FilterSize의 전경색을 결정합니다.", + "description_QuerySectionViewFilterSizeBackColor": "Query SectionView FilterSize의 배경색을 결정합니다.", + "description_QuerySectionViewExecutableForeColor": "Query SectionView executable의 전경색을 결정합니다.", + "description_QuerySectionViewNoNameForeColor": "Query SectionView NoName의 전경색을 결정합니다.", + "description_QuerySectionViewNoName2ForeColor": "Query SectionView NoName2의 전경색을 결정합니다.", + "description_QuerySectionViewHiddenForeColor": "Query SectionView Hidden의 전경색을 결정합니다.", + "description_QuerySectionViewItemCheck1BackColor": "Query SectionView ItemCheck1의 배경색을 결정합니다.", + "description_QuerySectionViewItemCheck2BackColor": "Query SectionView ItemCheck2의 배경색을 결정합니다.", + "description_HexEditorChangedFinishForeColor": "Hex 편집기 ChangedFinish의 전경색을 결정합니다.", + "description_HexEditorShadowSelectionColor": "Hex 편집기 ShadowSelection의 색상을 결정합니다.", + "description_HexEditorZeroBytesForeColor": "Hex 편집기 ZeroBytes의 전경색을 결정합니다.", + "description_PointerFinderStatusStrip1BackColor": "PointerFinder statusStrip1의 배경색을 결정합니다.", + "description_PointerFinderScanBtnBackColor": "PointerFinder ScanBtn의 배경색을 결정합니다.", + "description_SendPayloadStatusStrip1BackColor": "SendPayload statusStrip1의 배경색을 결정합니다." + } +} \ No newline at end of file diff --git a/README.md b/README.md index 21a11e2..8303c79 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ PS4CheaterNeo is a program to find game cheat codes, and it is based on [`ps4debug`](https://github.com/jogolden/ps4debug) and [`.Net Framework 4.8`](https://support.microsoft.com/en-us/topic/microsoft-net-framework-4-8-offline-installer-for-windows-9d23f658-3b97-68ab-d013-aa3c3e7495e0). -Currently in `version 1.0.2.1` +Currently in `version 1.0.2.2` ## Table of Contents @@ -136,8 +136,14 @@ PS4CheaterNeo special format, but also supports loading(only) the following form - Cheat Relative (*.chtr) PS4CheaterNeo special format, use relative addresses when multiple cheat addresses are close together (0.9.5.7) -- Cheat Json (*.json) +- Cheat Trainer/GoldHEN (\*.json, \*.shn, \*.mc4) Cheat format used by PS4 Trainer and GoldHEN Cheat (0.9.6.0) +Now supports loading all Cheat Trainer/GoldHEN formats (\*.json, \*.shn, \*.mc4), with MC4 formats supporting reading only.(1.0.2.2) +In the "Add/Edit Cheat" interface within the main window, you can choose whether to input ON and OFF values (must be in hexadecimal).(1.0.2.1) +You can write the values of ON or OFF to the PS4 by right-clicking in the CheatGridView and selecting "Active"(1.0.2.1) + +- eboot.bin +The loaded "eboot.bin" here will be compared with the section memory content of the game executable, and the differing memory data between the two will be obtained. you must select to load an "eboot.bin" with the same game ID but differing from the content of the currently running game for the comparison to be valid.(1.0.2.1) ### Add Address @@ -432,9 +438,9 @@ Range: -0x8000000000000000 to 0x7FFFFFFFFFFFFFFF (-9,223,372,036,854,775,808 to - Added support for "Jump to Address" in the HexEditor's context menu. Enter an address, and it will automatically navigate to that location. (0.9.9.9) - Added support for "Jump to Offset" in the HexEditor's context menu. Enter an offset value from the current address, and it will navigate to the address relative to the current position. Negative offsets are also accepted. (0.9.9.9) -![hexeditor_contextMenu](assets/hexeditor_contextMenu.webp) -![hexeditor_jumpAddress](assets/hexeditor_jumpAddress.webp) -![hexeditor_jumpOffset](assets/hexeditor_jumpOffset.webp) +![hexeditor_contextMenu](assets/hexeditor_contextMenu.webp) +![hexeditor_jumpAddress](assets/hexeditor_jumpAddress.webp) +![hexeditor_jumpOffset](assets/hexeditor_jumpOffset.webp) ## Pointer finder [🔼](#table-of-contents) @@ -700,7 +706,7 @@ Restore default. ## Reference [🔼](#table-of-contents) -[TOC generated by markdown-toc](https://ecotrust-canada.github.io/markdown-toc/) +[TOC generated by markdown-toc](https://ecotrust-canada.github.io/markdown-toc/) [ps4debug](https://github.com/jogolden/ps4debug) [PS4_Cheater](https://github.com/hurrican6/PS4_Cheater) [PS4_Cheater_ctn123](https://github.com/ctn123/PS4_Cheater) @@ -709,4 +715,8 @@ Restore default. [AsmJit](https://github.com/hypeartist/AsmJit) [GroupGridView](https://github.com/avan06/GroupGridView) [OptionTreeView](https://github.com/avan06/OptionTreeView) -[CollapsibleSplitcontainer](https://github.com/avan06/CollapsibleSplitcontainer) \ No newline at end of file +[CollapsibleSplitcontainer](https://github.com/avan06/CollapsibleSplitcontainer) +[GoldHEN](https://github.com/GoldHEN/GoldHEN) +[GoldHEN_Cheat_Repository](https://github.com/GoldHEN/GoldHEN_Cheat_Repository) +[Reaper-Software-Suite](https://github.com/ScriptSK/Reaper-Software-Suite) +[save-decrypters](https://github.com/bucanero/save-decrypters) \ No newline at end of file diff --git a/assets/add.webp b/assets/add.webp index 45a449a9e9c98b7ce1b5c5ee02a968271c1536fd..69b5c3992f5768329ecbb07e066eea1e1f61a179 100644 GIT binary patch literal 13218 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 TzY0p69RKKlYK#mF|LOfdcifZ? delta 7622 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 diff --git a/assets/cheat_1.webp b/assets/cheat_1.webp index fe3d4751ffbf447481ab4ad98263468e6b4daaf3..112bebef8484194f855b30611c0c92bf8a75f4ce 100644 GIT binary patch literal 13328 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 QH`ibEpKQ!bO#iU|3+<%AwEzGB literal 7808 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%0A(Pu!rb9weD5Ku zMd4@U?UW1Zm$QaYJUX^Ssy=TDeY>lo3)*0VvdTPsv)Jfh+ZwC=QXFpyTDHYm^#rV2 z{z`=qr9t!PK-o?o#**GI=Pu;ArDOmi_9_G0Z+Dz6tLN`P(GNSv=VFEDxqIs61V$AME^ct>Y&Y zixv__&xm6Sm$Uh#*WPYo6b^g*?`vMZilA1^P@ny8d5{Ql~>FU z>KOyb`LnMd6qYN3W*A2Be2xd~Rr>Cztk-B?1dPP5JYe>WjF(vILrcY*px9^_LjhaNK%Qr`yxTL(9eL>V4an)sF@o;~W|1?!OY?IVnZ-1p!SIyWJg zwG`|m+OkA)-ulgmp;B+=Q}?wfhW?6+XBMU!#=&dS01M=?=Cdyj`79Bc1f1J@)w0Pc z>h*ego&-b9Er3*5yyWHKJMFw_V)eEh)7W9yqnvp|2NJaKFke`W$$xnL?8`wftY zF3!O8M)!6eX*t5+t?8P;z09fSz< z=AS!xqI!-gXCBZ32e_*FR2|%Q}f|i6M^Ae42LL~cT_u7Eu^2K&`Br^Jv_5Sql6xjk6V{j?RKS!Usn z60K*+wMd~L1yJjxVDCs2=}r9EE(?#wV-7$9U8^07hpk&l=5NF^dEVt6=Q zVY{?szmGh;#vOeTUDn-TPK9E7>h`ol=Mt)-Ds?6JwDQr(!ww&ZNfqkKT9m99AMGU2 z8)ML$!mXc0rd@Lk&6+tIh6W=HsM3BNEDPr2q+cfg*3d6k>K z(SG;E7XpOH4dFFC69|a;U52g=1%GMx8Nz6OIk}Xx#*>(WlZ%Dn)oT86G5%n0(SR7g z{rd3Eo{jlB@Jt73q#I+BrP#I~0sC5+GFxXVvniYTz8p2A45D8cWpRtf;vfBiXC`>I(^rWw zrA6!)Ok=CFG6iC+oHk(Hz7@GAX*}|KCKX=47#Pg*Y9A4#MrnHGoEVqD{i+T!p_*Tv zFdxgJ4j#_gc>I?MvU1{S@|jQE18SM>MK#DVZI|B(&drpaTjHjL^r;0qY(ev|VI!(l zdfs9PLs=Y5s02LE@wWceCi4oq7gP4vc3JYa&L zt+UwW+T&kO@%_Z!^M6cgwSvQ~U@@9$WTz*lQvqtsZ-o?o3;N|Ln1|ybcZMKAe0=Sm z%q1@2gWAlEdW)$k>Lx*E6oG_1V)l_j#B0o1G4g zA6QCC{Q^H9aIOiq5=HrbJCAGVb-yE%_$o1ZfMuj>6OJc#7wr-tI(!_j+T@VnQU95; ztxmGu1=eCoK{|=n;Wlw+)OosjYiG?Iz!In9XT5Rl9%}CWnTK;!qe2E1*=w-n?-oRM zvVDsD5m<|>6?Vd~TmEqcL|?QXEN$p_+Bp;+Yd>neSuXM)(TqL>SuiVfaQZR z`eUEzsy1E_x{Khn6OpG54bH^0h-FHGK;`eE(hl*(568=bl5rO^dz+VG=DJ|Yc9k?=#%~jvF7)#1Ju}VDsuU~qL9klw zqLWX>6kX@slT!ze7t0DgJ_cegcxva8yN-5XwFf^Km9cPx&=w9<9W?9#CL{U~lr`56 zo&jOWb>U*;jPtLr6a;vvMqzR>}%*>gCibaBW7VFa11rwj`MCwo)O0wWy@+c43BFfMA~NdX+Blw?ZNaVszCNH`UZewuqTThonn5{ucW5r^1)2b zo{U}2;xp@WD#mXKFMMgMF?FyJ9FKAE!X{g7n#jqTHpfUvL=w46Xc=kunH*2{QYFL4 z3Stu7+&wvb#Pv_yUuDwV=e3sk1McWu-OjnWn;c$d$?R}N^-*N4lIvwUXT||RXvt2? zwyFTwpdfAfLqh}B5>Y^B)0EK>=df{+r*Yt$?ON#9xC@90NHSKIYkv-fBtfpHOLlE` z$w#zmTM;pTNpfTS4YMQL%23fsyZBB$i_6+B0;_DnUgWcU+`?K|w=ca1rS`)BLe7~) zb1mAo$KHWTdR9y!z6DDl$zYLA!6_TYGmnzZAXzdb^BS%0Rm`Y9$jY5%MT@R9pUWk& zNRPu_a*sr%K_YrD1yQt))pXN{!S=l7*Gt@2>?cvQFlT2m<7g1cdRv`WmZrGm!gVwpTBQc#tD_jiqq1gNUo>Cax|0K5FSalKQQdserYeh@5B+FnoP@ z%8AcIcLP4Nb{7*57D$Zs0&(aIdftYdF*>y6CX>&#Rlf&9&vklh2@UA{wX!- z!yQ-MR0-!NMf36A^Jv{g5e0X}9khfQ>KV7e2e^K;Ahhm9QgRip_N@OYD<>%_NoScV zn*0^vLSvLRmKRtM2`Z%aTt6Xy{w4|GhIipd7Icg( z6F+ntCaLYd0K58o;J1OeVFN=yaaP*alE#Xtw_O&L9B=D#2lYj7O$$DGmKi;F*yn(g z7!PJfdBz@BwxINtZ|InIX37S8Uko>$wpw2`YBY|f0@*5QE>BcaYFy2m^ru9-!IH6! zid4Xy?nAR{N~p{!nk;iA@>pEuE7tF>se)1e;2O303Oip32=)LkbJulZ%(v|rs*~}j z**Xu!3k*~B(%s8)*)GCVks>|pevgMn`t+K|K}EX>z?pvDX8#)$5!bFSvt@CDC~{ZDk+|jHVj^@?{i%zy zI8+Q~{ZNsD9RHD-`W$k$^)$;haUwRK!HO%CK zobWURSb140%Hc=z;95`Z^BCptbhM@%+OiV6R8q{uT$S~^=57i=@soEy`Lx$7xr3w; zS!gk|28iv{v>&m|asrKKLW;Nws40-M@Rrbg31#l~gldW!;HBg6jh7q-U63Fp9QOKT zSSlj?2I&RR*)uhJ1)fpyyUgBEEW2rGc=Z4>YS?6hdmk~7-}n^&0FM$qUc>CLsotb4 zz@8uWX}5P3FKJ4KK_f|?#P9n%Gg_lK=9Nq&@Gr8YBa5;>p}%Wq(va;4n$*A{)+aKd zduQeOnSCP|D#ao>ULgy2+%=xi2FLrHvm9N|Vt?+<^Ne~|4B6kA*1jQKZXrXFgghxQ zwrTbVu4}+SvI-Nh)zYF#4Nx3QlW^Q|jm}RD;^Q>pqMv$Rr>9HZQ2UNrU8DILe*Ljv z>`agT8mCVQhyRYaBVps~W>Axi%OdO)Ggp)j?0u6mM=V9o+a<$6D>=otx{2)m>RR6x z8m5xP6z-y$N1zqeG`GSR6)_$zP4-yVq}*OjUv_da#1sup3by*gxWDuZ{ER$892>^}(7N4J9bo~-k_ z9M);R|4u}OCzp|MAvA}Z_=N(Oy;FCWYo1kR{t=(II+Tc(n){O>=x4(~AesE^xf0m> zvxXcqU7p_~mvB5xi5lil#;?|JBGFhL)%+f#<4Ar7`v<`T{(8Uc34{!_Y3M0^HV6v# z6rQj}-x1&O+1W~FLYZTPaMo*xvQry8LUq9jR7BF$uk3Au_F{NszfjJ!PRlUD>dUXF zx&wSF0$=$0iCDtD-hLzXw3wyy((;d{H_b#GK=k^D@mI>|8CE+IdD)mB9maz^LCbFj|@5Ig^sxt#yHvI7$0lcD%iGn+7TR)R&Gj&D&8V8LfjcL0wxT z7-3_CKr-a!@6Z$%qAHpK(v%wT6O3Dr@ZDh1i z8P@$Adx;sqn_!8$?p$>2^k=`ol^Yt(t!kyog}p;rtYgiKXS%Q==Z^5|!D7*X@g*Dc zs~B7e?$q0NDy56UYp1DV>Xt3~J6(N^X+xosdK_JLM-#?=6Pa3a5qhW)Gzpapr6au7 zF@B~wsrt|rb=mT8;h`7ZaaqLzVFr)R>gtL=wAbr~zTji;r-tpNOW6sIJH;MU5cEIL zG3lJxKh-owhW(+Nj&APqnL9bmPQdULdRRbGq`SFhOKMVqzi8x(ln{eQ&}DLgMmBXA z;1Au3ed_kpR3sw81d8yS*JnNLn$}k^ihL`6vz(P<`j+%K?yN_~``^HdE|MZ`HWw9Y z^ECkPm*XnZ+E2K6;gL>(V79ZwWl6F`scQ66onNf>7oC2kGhZzq_EI+u=2^P5}tpJUNH> z2`9&T!lX!ut32x@KFkV&U+o>VQ>j%x<6;3Q?^mosE&Qlr{9p%Ybhh{DK!yo+psl$S zymCRMz5t}Mb0~1tO|ysn{Rdlf@u?EjC}JAyX4V|lWw|lTes7YVVIk5I;?$wL#f^`J zoqpxvj9PAykk?sC7Y_OcwQz2Iy_2;j-wK#!Vg>3il>O2rckDjUwlx9106r+F1`2*O^BC*ZjLo+~^N+tXY*Bt9-^B^Fs&#%u z-x6)_C;GToxth@z7nbYH##oZ%D*6Z#0XN%}P6#Gl^#ocz6vX@<$R_)iZyiy^b21|4 zU#gT|1cLU^lnqSRqHoq|RrUJP6*Z;M_0QzeVJ9%+CZn)Izp3L|X^*!=5P zyuKJzS=3=7VSpL9X~?usy5Me?T)S(i!xQQTs`e!+YpGtL5pDSp+1{TIN1gPc@G+S_H0P85`XT9-3*f05)P#4sP;DHCoOMt-bdx$ZRE31dwgiVZJlvV7?( zA$pTzBpkgMg{c9Z`W33AJ&5P`CJAoKs^Pnt+`$!Wv(`_BR5tRHy4Jf9Dy;zsC1EIu zA9JGBE~;czNQ|4^7h6Wp+$4+@aB^HtZ2 zh8S{1zu$vs8Vr21mg`@y_iL_JHCp-U3Q(!Yd%a&8Wwu8PBMr6lfd`R>KafiZ{h3#u zyiiPy*j9{ALEX7BavzmASFDM|TrV00{c}0Sr_Ri?hR5yfM$s7QKVX_i&!AHVMqh)k zn>bdI9AUyn1kwvaW|nIW`S2}b-)AW@Ww6yL7KIi5AWGyqjJ0*pdFGih$IPRw}J|f6cM>xt8V;9!MtA$7i$KkoVTe zB$`hUMt6xtHxBYds_{kM4dSrTHd6nJokob{b(yyRjD2^dBRDB^N&*rd6e!W=g?;99 z^bvxNK+Ai-6i^ZgGtpHY1BlKSqqGjRVFBc0RXnsWw1udQ$w}iBUHc#s1>JtDAs@g2 z%vCx4XO;e>Zat~?+AOj7%)&A>BkQgV?`q_2Clb5)JDP-S=5ji5IX21BT^XC($DEz4VexN>Yf>WeGnVGq6 zOgMGBF!Pb&X?}F4kC=t5JO3Ih*;@QeAvqdNKY6XHB;Q*>4BR>Qk+AA+ae&nRX3kS* zMC=U~4cU1h33cax5@|JZtJcLXxoap|au{Sft`_Wd#bA)S{Hc|=QSvL2X~CkdMb){Q zJTpD8Rdo2m(*v1g35?w&Pv~*Qo^dXoPJ%RpP%VFTgfI_pqeOnDQN)N?A9pu{o7{w=zK6>*KyQ`G#|Q)!y_e z>AS5S|LL2K%3Bv@$}p`zqh89yPO4LiT`W`XRpZ9BZjT5Sel$NDy0SE%!_w-^tqJl3 zQbvhV=BjI=5PDjx>(E4UW+0Lc-@`R-6d(U_Wa8yWyHrz;hM+hu66Axw7cuT>Lq(jY9T+WjF^Xk1o zZsmyAntH)XIL3+QZmX`;S7X=ySd$1{{t`myBP)5Bg;gP(aDSXgI_GR8v`;}3@^*bJ z^06hicw1HMM>OXmGS13hv_XuK6>){H_hJ&;u&nWEd{{IbNrcWc?g~ImE2rsSIfv5^ z%)iAsvnqbDl&!asA3>cHL)^rebc)LdbOAbo1`b5(*%=H)^gT;%6oP9i2lc)tB*x_H5YWQw z07Aw0s=wXSGH9d^^=Iy%M$dbHNx@LAz&sW+sZ9ollkr4$EP3=1WqB(-%I)$lw5V1a za;rBauV#fjUo9%Ir%!1Hs~1-*ccYErbh*T@l#~X+p(r+!>>F>vBsnHul8bNlqc@%l zGd#~ho-jv&ZQNBUmLVU9N(CFyQ8T4A$}SX0D^I+^>t5C|>qTY-F2u87AFSa1 z2@xlf+-;e46qpfJ5R`x*Yb&We*2v2Mo(&{FQSLwm9B3OdQ z2Ee!Wt{!-$T%dV*{F+Q;ea3dPCEd`Xs;;zF3+NV+d0Ql%J~R3`U^b3;tT8i(aM`6W}KQ2zMI-=kJjIuYU}iX;m2p6{sf5->G8V=b|0q0VO_k{c%U z+ldn8JMfKhHc&Bn5KrYLl8QJFS$sZsq3hf|HH`HQJcGt?wctLn4?)?f1`DblbHqij zH@(Y?eIuIsHdwkEwZ+Zys+B#L861pM&O6M6zQ!|AQB$@A@J->-T>FxUts?=<)==F< z5F`Oj*}nG7Y)!>C@EV;bSuj1RJ3Y4g&A!5o@s&Qm<8QQy6N21 zfKO^8jf8UN&J7DhyiAY_Oi92)Z=vc9&?=+THoq-UB_m`0EArXCJ(fYskyd1Ai3=V^ zj%5hW6O7LLcA2nYvLwXFMO_v&?j;}iONRh{tq73ax#jczEBn*~X&)?_5~&F~qeP0# z3D{SQ^>4l}(UG=a5usHMjyDlIpz44)h%TpF#Wiz+B{+Prt${UC5#=30Imq%9#+wlv zuU%M?JEPE)=bM(V%@2mAK~@a(;@5)9=X@1|d1m3!2NHW9S%hfX+b-%OB+S5>tfvqg z-(y6Ih8CS*S8@#H3!T6hf6GH|2rQ1RWo5vn!}OW_X5-q<@n|{V$d;pEQx-?cFp>pcFoZp3^0IU3=eieaVZpC_ zJw18s#sJ@&FcNGh9~;Fea{Ha=bFg+~czIzYPN^Yzc1U{m<(5(8#9yA~YtqR}*A^Zr zGRPc!~pE!RMu8yE-VLsK$B}2aV;3 zx@5nfE2r=!#uV`eNgQvK$>ybtK{3|Yfo&HWrJ5C$#P!5Au{#DQcH{Kj(_M_OoG5(ea%O71^8@bu?br|c z0BdyFUP8IR)dlg^f{1G)_zV#Uw zVpVAZ>B+7hh>c987#4`yNGZx1aY;pIl&VorLsjvqqV}t8i&-=|IV7Negi zi2KBj-n{xsdpk6pgH+JesoMKvh=_sjvD)XI2kHo&;E?56jghtC zdT*0JZa!r0zT|ALy`G|OZ$wBZ1x@1prnJf632Lkh0w>orG4uu&EmnH?9ZuQ$T1=SOxg&9Q<3`vf z?8dub{W-`S=N;_FFofdt5JB`WkQ-&iYu*{hL26o;4hH5192yhSGLSw>Pa0jos%H6Q zaHFSlyQhVUeKRm%M%1!^MW~Zf`Ys%>UC~tacDT82A-9$X;c7t<~TaK5cQq@)Z^G^!mXWJb6 znp5KpD;eXnI*|BCl&7|$8-%#pwaAXE*gSQLM)Bl5R}JdEYI-A|kl5g1p!{aY{hE8* zKy4|Ce<`MKyA}QlF_pt*jw1xuf)${o+v95jgUyLDOK}dBO?%m<%L6B`KYYv+1#PGr zKDjt8Xu)Ob%8by>dG<&wrNO5dq#?ojobu?&pzX7`j0-)jZU}w zH^H|vOgQoCh-GPT4&pFKvw3ujj4_T`+n8Izni&^aY*76NhLN2R8dBv1bEYbR*Kn2=EK)As7&fi{dKhzJ64=B@e2&7KZ zUJoiNCa^0BG*;gCxl0wd^&jRg9fbCttkb{Vg23wt3`wv#@;3fJ6Ni#> z8v%o(yhF=*7;Ap3w*GEOp#3&lM)$&Ij`RDr!SIrj!XpDSKa7)zeqMy!Dzi*GIs((e z{V>agS7wXeo!I${QU>s2>*UzA z8W(hg6J{p;nwsEvT;#XLH?q4kd8bfS2M7K=DTNdH%EKSO zQYzIFwP(adYpU8XFHm(wUTFQrYFh#h9!w9?ZCmt=scXN={oHIRpvONp=jJ}I`sDRn zL+5V|rPiKw^0MG~H{j8{ zQk_y$?}HH!ItrX*XlLoC0y+eWJ$feM_w*vTXcO$P=YJHLk(RHC8?2bk$@!G-X#8pt zfFQ-$G2~f*zUNz55S9tcaeR1DC5u%PT&>dbSehAy@;e9l4f+Ia>*=cJH- zlf+@0|9jzll1yN>yGSH4oTg7OfR(HA+PMk*`!VnTuK~WrI!0>b{he>yg5p?{PRoP$*pae>p zVj#hp%l;J^LRsT#0(LI36RMtA$%HS-PMkGeHfi9WZJ8GXc!UMKvMTbGuLr(Z2p04` zjjA=4E*>WoBEnFHCp_%w)A`AvPU?IZi~}JoAle-?RLLGN2sWDNYiz+4PHl>6pFl7$ zF-r6{9{1;%>ePw2+BO%f6>39u`o0LWA*<5X(QxT literal 7864 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 literal 60214 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