Marathon
Marathon copied to clipboard
A toolkit and library for SONIC THE HEDGEHOG file formats
Marathon
A toolkit and library for SONIC THE HEDGEHOG file formats
Releases
GitHub Releases
This is where stable builds of Marathon are published; if you're looking for the most reliable experience.
GitHub Actions
While it can be fun to live on the bleeding edge, GitHub Actions publishes new builds for each new commit, so changes can be unstable.
Building
See the Building page on the wiki.
Capabilities
- Archive
-
U8 Archive (
*.arc
) reading and writing
-
U8 Archive (
- Audio
-
Sound Bank (
*.sbk
) reading and writing
-
Sound Bank (
- Event
-
Event Playbook (
*.epb
) reading and writing -
Time Event (
*.tev
) reading and writing
-
Event Playbook (
- Mesh
-
Collision (
collision.bin
) reading and writing -
Ninja (
*.xna; *.xnd; *.xne; *.xnf; *.xng; *.xni; *.xnm; *.xno; *.xnv
) reading and writing -
Path Spline (
*.path
) reading and writing -
Reflection Zone (
*.rab
) reading and writing
-
Collision (
- Package
-
Asset Package (
*.pkg
) reading and writing -
Common Package (
Common.bin
) reading and writing -
Explosion Package (
Explosion.bin
) reading and writing -
Path Package (
PathObj.bin
) reading and writing -
Script Package (
ScriptParameter.bin
) reading and writing -
Shot Package (
ShotParameter.bin
) reading and writing
-
Asset Package (
- Particle
-
Particle Container (
*.plc
) reading and writing -
Particle Effect Bank (
*.peb
) reading and writing -
Particle Generation System (
*.pgs
) reading and writing -
Particle Texture Bank (
*.ptb
) reading and writing
-
Particle Container (
- Placement
-
Object Placement (
*.set
) reading and writing -
Object Property Database (
*.prop
) reading and writing
-
Object Placement (
- Save
-
Save Data (
SonicNextSaveData.bin
) reading and writing
-
Save Data (
- Script
-
Lua Binary (
*.lub
) reading and writing
-
Lua Binary (
- Text
-
Message Table (
*.mst
) reading and writing -
Picture Font (
*.pft
) reading and writing
-
Message Table (
Unsupported
Marathon currently doesn't support every format, despite the above list already being pretty large.
Adaptive Transform Acoustic Coding 3 (ATRAC3)
The *.at3
format is SONY's proprietary audio format used for the PlayStation 3 version of the game. There are many open-source ways to encode these files.
Cue Sheet Binary
The *.csb
format is part of the closed-source CriWare audio library; ADX. We have some specifications for this format, as well as the *.cpk
format which contains the actual data, but it's yet to be implemented into Marathon.
Proprietary Sonic Team texture container
The *.ddm
format is a basic container that stores the names of textures per index and all of the texture data that pertains to them in the DirectDraw Surface format. It was supported by Marathon at one point, but only had a reader that exported the textures in a hacky way.
DirectDraw Surface
The *.dds
format is for textures - there's no need for Marathon to support this, as there are plenty of image manipulation programs that support it already.
Font Map
The *.ftm
format contains information pertaining to the Shift-JIS encoding standard and defines the characters used in the font textures. This format is a bit of a nightmare, so not much research has been done on it yet.
PlayStation 3 Fragment Shader Bytecode
The *.fpo
format is the compiled fragment shader format for the PlayStation 3 version of the game. Unlike DirectX, each shader technique in this format is split up into separate files, rather than being in a single shader.
DirectX Shader Bytecode
The *.fxo
format is for compiled DirectX shaders - there's no need for Marathon to support this, as there are already disassemblers and compilers for DirectX that are supported by Xbox 360.
Havok Collision Data
The *.hkx
format is part of the closed-source Havok physics library. SONIC THE HEDGEHOG uses Havok 3.3.0-b2, which is conveniently a version of Havok that nobody has outside of development studios.
Kynapse Big File
The *.kbf
format is part of the closed-source Kynapse AI library. This format contains data pertaining to AI behaviour, spatial graphs, Astar
data, FindNearest
data, PathCost
data, path ways and meshes. You can probably see where it gets the name 'big file' from. There has only been minimal research done on this format, as the embedded formats will also have to be researched individually.
Proprietary CriWare and Sonic Team property format
The *.mab
format was originally believed to be closely related to particles, since the particles that used meshes were always in this format. However, after digging around the event data for cutscenes, it seems it's also used for timing with various elements (e.g. subtitles, models, etc). The internal assertions for this format refer to it as Acroarts, which is a development environment from CriWare.
Motion Base Information
The *.mbi
format is a plaintext file containing node definitions for a skeleton. This format hasn't been researched, but the data it represents is all helpfully labelled by whatever internal tool from SEGA exported it.
SOX Model Format
The *.mdl
format is used by the PlayStation 3 version of the game in place of Ninja models used for terrain. While preliminary research has been done on this format, a lot of the extra data beyond the simple model construction is unknown.
Proprietary SONY video format
The *.pam
format is SONY's proprietary video format used for the PlayStation 3 version of the game for pre-rendered events. Apparently, this format consists of *.avi
and *.at3
data, but the only encoder available is part of the PlayStation 3 SDK and doesn't allow you to embed audio data in the video.
Font Proportion
The *.pfi
format defines the margin and padding per character in a given font map. It was supported by Marathon at one point, but only had a reader and some data wasn't fully researched.
PlayStation 3 Vertex Shader Bytecode
The *.vpo
format is the compiled vertex shader format for the PlayStation 3 version of the game. Unlike DirectX, each shader technique in this format is split up into separate files, rather than being in a single shader.
Windows Media Video
The *.wmv
format is Microsoft's proprietary Windows Media Video format used for the Xbox 360 version of the game for pre-rendered events. These files can be encoded by pretty much anything, but the audio tracks will need to be kept intact for English and Japanese audio, otherwise the game will either crash or skip the video.
Xbox Media Audio
The *.xma
format is Microsoft's proprietary variant of the Windows Media Audio format used for the Xbox 360 version of the game. You can use Xbox 360 SDK Build 3424 to encode these files properly for use with SONIC THE HEDGEHOG.
Ninja Morph Type
The Ninja format, particularly for *.xno
files (such as kdv_obj_cage02.xno
) have a NXMT
chunk that is currently unsupported, preventing these files from being fully read by Marathon.
Ninja Raw
The *.xtm
, *.xto
and *.xtv
formats are leftover plaintext representations of their compiled counterparts as auto-generated C code from a 3ds Max script. These plaintext versions are not supported and aren't used by the game, but they helped with research on the actual compiled Ninja formats, which are supported by Marathon.