A toolkit and library for SONIC THE HEDGEHOG file formats
GetTotalSize
function for retrieving the total byte count of nested data in an ArchiveDirectory
.BinaryHelper
class with some functions to make byte lengths more human readable.SonicNextSaveData
and made SonicNextFlags
use StringEnumConverter
, making the JSON exports a bit more human readable.ObjectDataType
use StringEnumConverter
, making the JSON exports a bit more human readable.ByteArrayConverter
for JSON conversion with unknown data.CompletelyUnknownData
segment of ParticleEffectBank
.LeaveOpen
property to FileBase
to allow the stream to be left open.CreateDirectories
to U8Archive
to allow you to create an archive structure based on a local directory.SonicNextSaveData
, now with a more complete specification at 98.86% cracked.ReadNullPaddedString
to BinaryReaderEx
to make reading hard-coded string lengths easier without null characters getting in the way.GetFiles
to ArchiveHelper
to allow you to enumerate all files in an archive into a single list.Marathon.CLI.log
should now appear next to the executable).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.
"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.
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.
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.
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.
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.
Yeah, it kinda does, doesn't it?
► Use ArcPacker instead of Arctool (fixes an issue with the repacker ceasing function due to the Win32 API). ► Added feedback if there's a .NET settings issue.
This may be the last release of Sonic '06 Toolkit for Environment 3 - this codebase is now obsolete. Stay tuned for Environment 4!
► Implemented batch XNM decoder.
► Added loop options for ATRAC3plus. ► Optimised standalone sound decoder for ATRAC3plus. ► Redesigned Sonic Sound Studio. ► Added volume control to Sonic Sound Studio.
► Fixed invalidated repack sessions.
► Fixed unhandled exception when creating a new ARC with another tab open. ► Added modifier keys to all SDK menus for external file modification (hold SHIFT to use).
► Added warning if the user attempts to close the application when an archive is repacking. ► Improved Session Log UI and resizing.
► Added verification for application dependencies, which allows for dependency updates on the fly. ► Improved Session Log UI. ► Improved application stability. ► All processed paths are now decoded to help with virtual machines accessing drives on Unix systems (the most oddly specific error, I know).