Releases: hyperbx/Marathon
Marathon - Release 1.0.61
Changes
- 0435d7f Added
GetTotalSize
function for retrieving the total byte count of nested data in anArchiveDirectory
. - 4f7f312 Added
BinaryHelper
class with some functions to make byte lengths more human readable. - 03a2812 Added preliminary Ninja reading and writing.
- d1f08c2 Added more known flags for
SonicNextSaveData
and madeSonicNextFlags
useStringEnumConverter
, making the JSON exports a bit more human readable. - fd2eac7 Improved readability of decompiled results from Lua bytecode, using more IDA-styled naming conventions for unknown locals and arguments.
- dfe7334 Made
ObjectDataType
useStringEnumConverter
, making the JSON exports a bit more human readable. - 73c8300 Implemented
ByteArrayConverter
for JSON conversion with unknown data. - 2247b3e Implemented a parser for the
CompletelyUnknownData
segment ofParticleEffectBank
. - 47f8e6a Added support for Windows (x64), Linux and macOS.
Fixes
- 18c0df8 Fixed the logger wrapping entire logs in square brackets, rather than just the caller.
Marathon - Release 1.0.34
Changes
- d33572f Added
LeaveOpen
property toFileBase
to allow the stream to be left open. - d41813d Reimplemented
CreateDirectories
toU8Archive
to allow you to create an archive structure based on a local directory. - 2a9867c Reimplemented
SonicNextSaveData
, now with a more complete specification at 98.86% cracked. - f416485 Added
ReadNullPaddedString
toBinaryReaderEx
to make reading hard-coded string lengths easier without null characters getting in the way. - b325ff0 Reimplemented
GetFiles
toArchiveHelper
to allow you to enumerate all files in an archive into a single list. - f159028 The minimum .NET version is now .NET 6.0 to utilise some of the C# 10 features.
- 6c6d99a Added error logging to the command-line interface (if an exception occurs,
Marathon.CLI.log
should now appear next to the executable).
Fixes
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?
Sonic '06 Toolkit - Version 3.14
Sonic '06 Toolkit - Version 3.13
Sonic '06 Toolkit - Version 3.12
Sonic '06 Toolkit - Version 3.11
Sonic '06 Toolkit - Version 3.1
Sonic '06 Toolkit - Version 3.09
Sonic '06 Toolkit - Version 3.08
► 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).