CTR-tools - это набор утилит для работы с файлами из игры Crash Team Racing.
Идея проекта - описать неизвестные игровые форматы и написать распаковщики для них. Упаковщики только по мере возможности и необходимости.
Всё что накопано, доступно на гитхабе, есть дискорд (англ)
https://github.com/DCxDemo/CTR-toolsВ качестве примера - распакованная модель Coco Park в разных уровнях детализации:
https://imgur.com/gallery/v22A1XkПодробнее об утилитах. Названия обычно говорят сами за себя.
Часть из них консольные, часть - с интерфейсом, в этом плане пока единого стиля не выработано.
bigtool - распаковывает, переименовывает файлы по человечески (в BIG файлах нет никаких названий) и запаковывает обратно при необходимости BIG файлы. подходят файлы BIGFILE.BIG и SAMPLER. BIG из демо-версий.
model_reader - читает статичный меш из игровых сцен, сюда входят как уровни, так и например заставки.
viewer - просмотрщик уровней на базе MonoGame.
levtool - gui утилита для работы с файлами уровней, в основном для экспериментов.
lng2txt - гоняет туда и обратно файлы локализации. Можно пофиксить какой-нибудь перевод.
howl - вытаскивает банки сэмплов и кастомные миди файлы (cseq) из файла KART.HWL
cseq - читает cseq файлы и конвертит в миди по мере возможности. Для части файлов написан кастомный маппинг инструментов в json, чтобы они звучали адекватно в миди.
mpktool - пока толком не реализован. mpk файлы содержат модельки персонажей и ссылки на текстуры интерфейса (шрифт, оружие, и т.д.)
Реализация парсеров структурно вынесена в CTRFramework - общая dll для всех утилит. По итогу весь парсинг должен происходить в ней.
С игровыми форматами можно ознакомится в ksy файлах в папке formats. Они описываются с помощью kaitai-struct:
https://kaitai.io/---
Если говорить об истоках, возможно, олды помнят вот этот трэд от HoRRoR'a:
https://www.emu-land.net/forum/index.php/topic,36640.0.htmlЭтот проект можно рассматривать как своеобразное продолжение его трудов, несмотря на то, что как раз кусок, который он разгрыз в своё время пока не реализован