Vicboss
I recently started playing Metal Gear Solid: Peace Walker for PC. I had played the game before, but since the game was being released for modern platforms as part of the Metal Gear Solid: Master Collection Vol. 2, I decided to play through it again. During this playthrough I had the idea of collecting as many unlockables in the game as I could (e.g. "Codenames" which are unlocked based on the types of weapons that you use, "Insignias" which are awarded at certain in-game milestones, etc.). However, I discovered that the game does not track the relevant values for you to obtain the different codenames; this meant that if you weren't manually tracking specific actions you took from the moment you started the game, it would essentially be impossible to obtain all of the codenames.
I was disappointed at this, and so I researched if there was a way to look into the game's code to find the values needed for obtaining different codenames. This research was very useful, and led me to reverse-engineering the game; eventually the project expanded, and culminated in the creation of Vicboss, a save file editor for Peace Walker that works entirely in the browser.
AI
Usually I try and limit the amount of generative AI I use in my projects, as I believe that the work that I create should be made by me, especially if it is work that I can easily create myself without the help of AI. However, as this project involves concepts and skills that I was not experienced in, such as encryption / decryption, assembly code and reverse-engineering softwares, I used ChatGPT to assist in the creation of the project.
I used ChatGPT to analyse massive amounts of data and assembly code, and to track important memory addresses. This was extremely helpful to me as it could read a huge amount of information at once, and quickly determine meaning from it and recommend the next action. This led into the workflow of (AI suggests an action -> I perform the action and provide the relevant data -> AI analyses the data, derives relevant information from the data and recommends the next course of action), which went very smoothly and allowed progress to move quickly.
Tools
Alongside AI, I used multiple tools to reverse-engineer the game, which revealed very useful information for tracking codenames and decrypting the Peace Walker save file. Some of these tools include:
- CE to view different values held in the game's memory
- Ghidra to view the .exe file's low-level code and analyse different functions
- PE-sieve to obtain a readable .exe for Ghidra to analyse
- Community-made tools for Peace Walker that perform similar actions to Vicboss
There were some existing tools (and more have been published since) that read from the game's memory to display useful statistics (e.g. values for tracking codenames), however using the source code of these tools as well as information gained from reverse-engineering, I was able to produce a tool that decrypts and edits information inside the game's save files stored on the hard drive. This is a big improvement from simply reading from the game's memory, and to my knowledge is the first tool to be able to edit save file data to this extent.
Implementation
After the method to decrypt save files was uncovered, as well as the location of useful values inside the save file were found, I began development of the save editor website using HTML, CSS and JavaScript. I used AI to convert the existing save file decrypter into JS, as well as create scripts for reading/writing different values inside the save file. Like I mentioned earlier, I wanted to ensure that the majority of the project remained my own work; therefore I did not use generative AI for the HTML/CSS or any other aspect of the implementation for the project.
The current version of Vicboss prompts the user to upload a save file, first validating that the uploaded file is a valid save file. Since the project runs only in the browser, the file is not uploaded to any server, and no personal data is processed. Once the upload has been validated, the save file can be edited; Vicboss currently displays an overview of the save file including important information and stats, a comprehensive staff member editor, and a detailed guide on the codename progress so far and information what actions to take to obtain the next codename.
I published Vicboss to GitHub, and also upload updates to Nexus Mods. Vicboss can be downloaded and run locally, however the easiest way to use it is to go to the website, hosted using GitHub Pages. The editor is designed to be easily used online / through a web browser, instead of an executable file; users can feel safer when just using the editor online and only downloading their edited save file instead of downloading and running a .exe file, and the website is much easier for non-technical users to access.
Conclusion
I am still regularly updating and improving Vicboss as I add more features. Working on this project has shown me a lot about reverse-engineering software and the modding community. Peace Walker is a unique case for modding, as although the Master Collection only released a month before Vicboss was first released, there were two versions of the game released before it: the original PSP version, and the HD Collection version for PS3 and Xbox 360. So even though community-made mods for Peace Walker are relatively new, there are lots of mods and materials that were made for older versions of the game, yet are still relevant.
There have been some similar "editors" made, both for older versions of the game and the newer version: however as far as I know, the only tool for editing the actual save file was a less-advanced staff editor than Vicboss offers, specifically for save files being transferred from the PSP version to the HD Collection versions. Other "editors" for the latest Peace Walker version do not actually decrypt the save file, instead editing values in memory while the game is running. Vicboss is the first tool for the game that actually decrypts the save file and offers a comprehensive list of values that can be edited.
The online version of Vicboss is available here. Vicboss is also available on GitHub and Nexus.