A repository for me to push various bits of C# code for random file formats in random games I'm tinkering with, alongside a command line tool for extracting/building supported archives/converting supported formats to and from JSON plain text formats.
-
KnuxLib - The actual C# library itself. See below for formats currently supported.
-
KnuxTest - A template CLI program designed for me to use when writing test code, should be left unedited with commits.
-
KnuxTools - A CLI program intended for use by the end user.
To build any of the projects here, simply clone the repository (either using a tool such as GitHub Desktop or Git CMD) then open the .sln file in a modern version of Visual Studio (anything supporting .NET 8 C# development).
For the average end user, they'll want to right click on the KnuxTools project and choose to Build
, then find the compiled executable in KnuxTools/bin/Debug/net8.0
. Alternatively, download the KnuxTools artifact from the most recent GitHub Actions compile.
A developer looking to experiment with or contribute to the project will want to use the KnuxTest project for development, only editing the KnuxTools project to add support for a newly implemented format.
This repository also uses various other libraries as part of it in the form of NuGet packages or individual segments of code transplanted into the main project. These projects are:
-
AssimpNet - Used for importing data from 3D models.
-
AuroraLib.Compression - Used for decompressing/recompressing PRS data in Sonic Storybook Engine ONE Archives and decompressing/recompressing LZ11 data in Sonic World Adventure Wii Engine ONZ Archives.
-
HedgeLib and Marathon - Served as the basis for the ExtendedBinary and BINA functionality.
-
Newtonsoft.Json - Used for seralising data to and from a JSON file.
The formats supported by KnuxLib, organised by game engine.
Name | System(s) |
---|---|
Mega Man X Legacy Collection | PC, Xbox ONE, PlayStation 4, Switch |
Mega Man X Legacy Collection 2 | PC, Xbox ONE, PlayStation 4, Switch |
Mega Man 11 | PC, Xbox ONE, PlayStation 4, Switch |
Note Absolutely used in more things, but these are the only ones I've personally experimented with.
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Archive | *.arc |
π πΎ π₯ π€ | β | An archive format used by various games on the Capcom MT Framework, currently only supports version 7 and 9 archives. |
Name | System(s) |
---|---|
Sonic Unleashed | Xbox 360, PlayStation 3 |
Sonic Colours | Nintendo Wii |
Sonic Generations | Xbox 360, PlayStation 3, PC |
Sonic Lost World | Nintendo Wii U, PC |
Mario & Sonic at the Rio 2016 Olympic Games* | Wii U |
Sonic Forces* | PC, Xbox ONE, PlayStation 4, Switch |
Sakura Wars* | PlayStation 4 |
Olympic Games Tokyo 2020* | PC, Xbox ONE, PlayStation 4, Switch |
Mario & Sonic at the Tokyo 2020 Olympic Games* | Switch |
Puyo Puyo Tetris 2* | PC, Xbox ONE, PlayStation 4, Switch |
Sonic Colours Ultimate* | PC, Xbox ONE, PlayStation 4, Switch |
Sonic Origins** | PC, Xbox ONE, PlayStation 4, Switch |
Sonic Frontiers* | PC, Xbox ONE, PlayStation 4, Switch |
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Archive Info | *.arcinfo |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Unleashed to determine what archives the game has. |
Density Point Cloud | *.densitypointcloud |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Frontiers to determine where to place objects definied in the Density Settings format. |
Instance Info | *.terrain-instanceinfo |
π πΎ π₯ π€ | βοΈ | A format used from Sonic Unleashed to Sonic Forces to determine where to place terrain models. |
Map (2010) | *.map.bin |
π πΎ π₯ π€ | βοΈ | A format used in Sonic Colours to determine where to place terrain chunks. |
Master Level Table | *.mlevel |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Frontiers to determine what archives the game has. |
Message Table (2010) | *.xtb |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Colours, Sonic Generations and Mario & Sonic at the London 2012 Olympic Games to store plain text messages. |
Message Table (2013) | *.xtb2 |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Lost World to store plain text messages. |
Path Spline | *.path *.path2.bin |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Lost World, Sonic Forces and Sonic Frontiers to store splines. |
Point Cloud | *.pccol *.pcmodel *.pcrt *.pointcloud |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Frontiers to determine where to place visual assets. |
Sector Visibility Collision | *.svcol.bin |
π πΎ π₯ π€ | βοΈ | Formats used by Sonic Lost World and Sonic Forces to determine when specific terrain chunks should be shown or hidden. |
Terrain Material | *.terrain-material |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Frontiers to apply textures to a heightmap. |
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
U8 Archive | *.arc |
π πΎ π₯ π€ | β | An archive format used by various games Nintendo games (as well as Sonic The Hedgehog (2006) for whatever reason). |
Name | System(s) |
---|---|
Crash Bandicoot: The Wrath of Cortex | PlayStation 2, Xbox, GameCube |
Note Absolutely used in more things, but these are the only ones I've personally experimented with.
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
AI Entity Table | *.ai |
π πΎ π₯ π€ | βοΈ | A format used by Crash Bandicoot: The Wrath of Cortex to place enemy characters. |
Crate Table | *.crt |
π πΎ π₯ π€ π§ | βοΈ | A format used by Crash Bandicoot: The Wrath of Cortex to place crates. |
Wumpa Fruit Table | *.wmp |
π πΎ π₯ π€ | βοΈ | A format used by Crash Bandicoot: The Wrath of Cortex to place Wumpa Fruit. |
Name | System(s) |
---|---|
Rayman 2: The Great Escape | Nintendo 64, PC, Dreamcast, PlayStation, PlayStation 2, Nintendo DS, iOS, Nintendo 3DS |
Note Absolutely used in more things, but these are the only ones I've personally experimented with.
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Big File Archive | *.bf *.dsc |
π πΎ π₯ π€ | β | An archive format used by Rayman Revolution. |
Name | System(s) |
---|---|
Metroid: Other M | Wii |
Note Likely not this engine's name (if it even had one).
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Message Table | *.dat |
π πΎ π₯ π€ | βοΈ | A format used by Metroid: Other M to store plain text messages. |
Name | System(s) |
---|---|
Big Rigs: Over the Road Racing | PC |
Note Absolutely used in more things, but these are the only ones I've personally experimented with.
Note Likely not this engine's name (if it even had one).
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Material Library | *.mat |
π πΎ π₯ π€ | βοΈ | A format used by the Stellar Stone engine to store material data in a plain text format. |
Mesh Object | *.sco |
π πΎ π₯ π€ | βοΈ | A format used by the Stellar Stone engine to store model data in a plain text format. |
Name | System(s) |
---|---|
Sonic and the Secret Rings | Wii |
Sonic and the Black Knight | Wii |
Note Likely not this engine's name (if it even had one).
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Light Field | *.bin |
π πΎ π₯ π€ | βοΈ | A format used by Sonic and the Black Knight to handle lighting on objects. |
Motion Table | *.bin |
π πΎ π₯ π€ π§ | βοΈ | A format used by the Storybook Engine to store information for animations. |
ONE Archive | *.one |
π πΎ π₯ π€ | β | An archive format used by the Storybook Engine. |
Path Spline | *.pth |
π πΎ π€* | βοΈ | A format used by the Storybook Engine to store splines. |
Stage Entity Table Object Table | *.bin |
π πΎ π₯ π€ | βοΈ | A format used by the Storybook Engine to determine what objects can appear in what stages. |
Name | System(s) |
---|---|
Sonic Unleashed | Wii, PlayStation 2 |
Note Likely not this engine's name (if it even had one).
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Area Points Table | *.wap |
π πΎ π₯ π€ | βοΈ | A format used by Sonic Unleashed to determine where to place terrain chunks. |
ONE Archive | *.one *.onz |
π πΎ π₯ π€ | β | An archive format used by Sonic Unleashed. |
Name | System(s) |
---|---|
Sonic Channel 5 Part 2 | Dreamcast, PlayStation 2, PlayStation 3, PC, Xbox 360 |
Note Likely not this engine's name (if it even had one).
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Caption Table | *.bin |
π πΎ π₯ π€ | βοΈ | A format used by Space Channel 5 Part 2 to store plain text messages. |
Name | System(s) |
---|---|
Crash Twinsanity | PlayStation 2, Xbox |
Note Likely not this engine's name (if it even had one).
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Data Header Pair | *.bd *.bh |
π πΎ π₯ π€ | βοΈ | An archive format used by Crash Twinsanity. |
Name | System(s) |
---|---|
Shantae: Risky's Revenge | Nintendo DSi, iOS, PC, PlayStation 4, Wii U, Switch, Xbox ONE |
Ducktales Remastered | PlayStation 3, Wii U, PC, Xbox 360, Android, iOS, Windows Phone |
Shantae: Half-Genie Hero | PlayStation 4, PlayStation Vita, Wii U, PC, Xbox ONE, Switch |
Shantae and the Seven Sirens | iOS, Switch, PlayStation 4, PC, Xbox ONE |
Note Likely used in more things, but these are the only ones I've personally experimented with.
Name | Extension(s) | Support | 1:1 | Description |
---|---|---|---|---|
Collision | *.clb |
π π€ π§ | N/A | A format used by the Wayforward Engine to handle stage collision. |
Environment Table | *.env |
π πΎ π₯ π€ | βοΈ | A format used by the Wayforward Engine to place static meshes into a scene. |
Package Archive | *.pak |
π πΎ π₯ π€ | βοΈ | An archive format used by the Wayforward Engine. |