Marathon - Release 1.0.0
Welcome to Marathon!
Let's get up-to-date, shall we? Sonic '06 Toolkit has been discontinued for almost a year and in that time, we've certainly improved regarding reverse-engineering and general software development. This release presents the step up we've taken since the last release of Sonic '06 Toolkit, and while this doesn't have a GUI yet, I hope our efforts towards at least allowing a lot of these previously unknown formats to be editable suffices in this release.
Why "Marathon"?
"Marathon" is one of the internal names used by SONIC THE HEDGEHOG, along with "SonicNext". The original PE header name for the Xbox 360 executable is marathon.exe
, so that may actually be the proper internal name. I chose the name because Sonic Team used it, it's as simple as that.
What is there to offer in this release?
Marathon supports a multitude of formats that were previously unknown in the Sonic '06 Toolkit days. The available formats are listed in the repository's README document, so please head over there to see what's new. Alternatively, the command-line interface displays all of the supported serialisable formats if you open the application without a file.
Is Marathon complete?
Far from it... Marathon is certainly still a work-in-progress, but I feel like now is the right time to make a public release with our current work, as everything is now up to a more acceptable standard than Sonic '06 Toolkit or the earlier revisions of Marathon. A command-line tool existing alone is certainly a lot more friendly than asking newcomers to build Marathon and write C# code to edit the formats.
There are still some formats that we haven't fully cracked, so you may see remnants of that for certain exports with unknown data. If you can figure out what any of that does though, feel free to reach out.
How do I use Marathon?
Marathon can be used in two ways; as a C# API or as a command-line interface. There will be documentation available at a later date regarding the C# API, but the command-line interface is as easy to use as dragging supported files into it.
Depending on the format, the file's contents will be exported to JSON, which you can then make your changes in. As long as the extension is left intact, Marathon will automatically detect which format you exported and create a new file with your changes.
If you want to rename the JSON, just make sure you leave the full extension. For example; if you export a Message Table, ensure that the JSON uses the *.mst.json
extension before dragging back into Marathon.
Where do I get the C# library?
Marathon is available on NuGet - you can download and use the latest release available from there and it'll be updated for every push to this repository.
This feels like a README.
Yeah, it kinda does, doesn't it?