[
  {
    "path": "Changelog.md",
    "content": "# ACSaveTool Changelog\n\n## v2.6.0\n- Added support for the AC:Shadows\n- Added support for CLI mode\n- GUI: Fixed the dark mode and switched to use the native theme on Windows 11\n\n## v2.5.0\n- Added support for AC:Mirage\n- Extended the capability for game title auto detection\n- Decryption/Encryption ID detection is now supported for AC:Revelations\n- GUI: Allow test save file drag & drop to Encryption ID text field\n- GUI: Open save button now locates a possible path for the selected game\n- GUI: New option on Preferences to switch Account ID for save path detection\n- GUI: New option on Preferences to enable verbose log\n- Misc. code refactoring and fixup\n\n## v2.4.3\n- Added option on Preferences to keep the current save format\n- Added support for loading certain non-standard saves\n- Applied workaround to prevent crashes on platforms with Hardware-enforced Stack Protection enabled\n\n## v2.4.2\n- Fixed issue when processing certain non-standard saves\n- GUI: Added dark mode support\n- GUI: Added Preferences panel (Ctrl-P, for specific use only)\n\n## v2.4.1\n- Added support for Immortals Fenyx Rising\n- Improved compatibility for some old saves\n- Fixed broken input validation for certain game titles\n- Added more tooltips to GUI\n\n## v2.4.0\n- Added support for ACValhalla\n- Added input validation for Encryption/Decryption ID fields\n- Minor GUI tweaks\n\n## v2.3.1\n- Added support to convert ACLHD save to ACLRM (choose ACLHD & double click `Encryption ID` label)\n- Show output file name if different from the original file\n- Adjusted release package structure\n\n## v2.3.0\n- Added support for loading certain non-standard saves (*.sav)\n- Moved backup save location to separate `acst_backup` folder\n- Fixed test save file processing logic\n- Performance optimization\n- Miscellaneous GUI issue fixup\n\n## v2.2.0\n- Disable detection feature if the game title is ACR\n- Added support for Steep saves\n- Changed default file open path to user profile directory\n- Reduced release package size\n- Some cleanup and minor GUI issue fixes\n\n## v2.1.1\n- Additional checking for the test save path to prevent a folder or file with the same name being used as test save\n- Relaxed filtering for decryption/encryption ID input to allow underscores (_) and dots (.)\n\n## v2.1.0\n- Added support for detecting decryption key from test save file\n- Fixed issue on GUI stopping processing saves when decryption and encryption key are both given\n- Added showing execution time on GUI\n- Added extra checking for valid save detection\n\n## v2.0.0\n- First public release\n"
  },
  {
    "path": "FAQ.md",
    "content": "# Frequently Asked Questions\n\n## Failed to load save file\n\nThis tool only supports standard format saves generated from legitimate game copies.\n\nIf you enconter this error during the save conversion, consider using alternative tools or manually hex editing the saves by restoring the correct save header - usually the first 0x228 bytes as observed in a standard format save.\n\nIf you still need help, please refer to [this issue](https://github.com/linuslin0/ACST/issues/96)\n\n## 7z SFX error during launch\n\nThe packed executable might be flagged by some antivirus software as a false positive.\nTry these steps to run the actual executable instead:\n1. Rename the packed executable file extension from `.exe` to `.7z`.\n2. Extract it using 7-Zip or another extraction tool.\n3. Run the main executable inside the extracted `ACST` folder.\n\n## How to use this tool from the command line?\n\nFirst, extract the actual executable by following the steps mentioned above 👆.\n\nThen, launch the main executable from a terminal window using the `--no-gui` along with other necessary parameters.\n\nExample:\n``` powershell\n.\\ACSaveTool.exe --no-gui -d=\"foo\" -e=\"bar\" <path_to_save>\n```\n\nTo check all available parameters, use the `-h` option.\n\nTip: You can find the game title index on the GUI by selecting a game and hovering the cursor over the game title.\n\n## Where is the Preferences dialog?\n\n`CTRL + P`\n\n## Converted saves not working?\n\nEnsure that the original saves are not corrupted, as this tool does not alter the actual save data.\n\nIf you are not using the auto-detection feature, verify that the Encryption/Decryption ID is correct. This tool has basic format checking and decryption validation enabled by default to help prevent incorrect IDs from being used.\n\nAdditionally, for certain games, you may not be able to load a save generated from a higher version of the game.\n\n## How does the save \"encryption\" work?\n\nAC game save only performs an XOR in ECB mode:\n\n1. Compute the MD5 hash of your account ID.\n2. Create the encryption key from the 16-byte MD5 hash: take the first and last bytes, followed by the remaining 14 bytes in reverse order.\n3. Determine the rotation offset based on the save data size: `size % 16`, then perform a right rotation on the key.\n4. XOR the key with the save data.\n\nNote: Other games may use different encryption methods for their saves, which are not supported by this tool.\n"
  },
  {
    "path": "README.md",
    "content": "ACST\n====\nPublic releases for ACSaveTool  \nFor downloads, please go to the [Release](https://github.com/linuslin0/ACST/releases) page.\n\n## Features\n- Convert saves between different encryption IDs.\n- Support for various game saves.\n- Process multiple files simultaneously.\n- Auto-detect game titles and decryption/encryption keys for certain saves.\n- Automatically lookup save paths for supported titles.\n\n## Usage\n1. Open save files by clicking the `Open` button or drag and drop saves into the app window.\n2. Select the appropriate game title, or leave it as `[Auto Detect]` (only works for certain game saves).\n3. Input the `Decryption ID` for the loaded saves, or check the `Detect` box.\n4. Input the `Encryption ID` for the new saves, or click the button on the right to open a test save for encryption key detection.\n5. Click the `Convert` button. The original saves will be backed up in the `acst_backup` folder.\n6. Copy the converted saves to the corresponding game save location. You may need to temporarily disable cloud save sync before launching the game.\n\nRefer to [FAQ](FAQ.md) for common issues and tips.\n\n## Supported Games\nSupported game saves and their decryption/encryption ID type:\n```\nAssassin's Creed Shadows           // Account ID\nAssassin's Creed Mirage            // Account ID\nAssassin's Creed Valhalla          // Account ID\nAssassin's Creed Odyssey           // Account ID\nAssassin's Creed Origins           // Account ID\nAssassin's Creed Syndicate         // Account ID\nAssassin's Creed Rogue             // Game key\nAssassin's Creed Unity             // Account ID\nAssassin's Creed Liberation HD     // Game key\nAssassin's Creed IV Black Flag     // Game key\nAssassin's Creed III Remastered    // Account ID\nAssassin's Creed III               // Game key\nAssassin's Creed Revelations       // Account (legacy) username\nImmortals Fenyx Rising             // Account ID\n```\nNote: Use `Account ID` and `Account (legacy) username` in lowercase; `Game key` in uppercase.\n\n## Requirements\nWindows 10 or later (64-bit).\n\n## Disclaimer\nThis software is provided \"AS IS\" for research purposes only. Commercial use is prohibited. The author is not liable for any save data corruption or loss that may occur from using this software.\n\n## Credits\n- [Ubisoft](https://www.ubisoft.com/) for all the fun.\n- [Linus L.](https://github.com/linuslin0) for writing this tool.\n- machine4578 for testing and feedback.\n"
  }
]