Skip to content

A repository for me to push various bits of code for random file formats in random games I'm tinkering with, alongside basic command line tools for format conversion where applicable.

License

Notifications You must be signed in to change notification settings

Knuxfan24/KnuxLib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

KnuxLib

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.

Projects

  • 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.

Building

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.

Used Libraries

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.

Formats

The formats supported by KnuxLib, organised by game engine.

Capcom MT Framework

Known games:

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.

Formats:

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.

Hedgehog Engine

Known games:

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

Formats:

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.

Nintendo

Formats:

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).

Nu2 Engine

Known games:

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.

Formats:

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.

OpenSpace

Known games:

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.

Formats:

Name Extension(s) Support 1:1 Description
Big File Archive *.bf *.dsc πŸ“œ πŸ’Ύ πŸ“₯ πŸ“€ ❌ An archive format used by Rayman Revolution.

Project M Engine

Known games:

Name System(s)
Metroid: Other M Wii

Note Likely not this engine's name (if it even had one).

Formats:

Name Extension(s) Support 1:1 Description
Message Table *.dat πŸ“œ πŸ’Ύ πŸ“₯ πŸ“€ βœ”οΈ A format used by Metroid: Other M to store plain text messages.

Stellar Stone Engine

Known games:

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.

Sonic Storybook Engine

Known games:

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.

Sonic World Adventure (SD) Engine

Known games:

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.

Space Channel Engine

Known games:

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.

Twinsanity Engine

Known games:

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.

Wayforward Engine

Known games:

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.

Westwood Engine

Known games:

Name System(s)
Monopoly (1995) PC

Note Potentially used in more things, but this is the only one I've personally experimented with.

Name Extension(s) Support 1:1 Description
Message Table *.tre *.tru πŸ“œ πŸ’Ύ πŸ“₯ πŸ“€ βœ”οΈ A format used by the Westwood Engine to store plain text messages.

About

A repository for me to push various bits of code for random file formats in random games I'm tinkering with, alongside basic command line tools for format conversion where applicable.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages