0
mirror of https://github.com/sampletext32/ParkanPlayground.git synced 2025-05-18 19:31:17 +03:00
bird_egop f5bacc018c test
2025-04-12 16:42:44 +03:00
2024-11-18 23:48:42 +03:00
2024-11-17 15:54:59 +03:00
2025-04-12 16:42:44 +03:00
2025-03-11 04:36:05 +03:00
2024-11-18 23:48:42 +03:00
2025-03-01 23:03:13 +03:00
2025-04-12 16:42:44 +03:00
2025-04-12 16:42:44 +03:00
2024-11-14 12:04:05 +03:00
2025-04-12 16:42:44 +03:00
2025-04-12 16:42:44 +03:00
2024-11-26 01:17:35 +03:00

Reverse Engineering игры Parkan Железная стратегия 1998

x86 Registers

Сборка проекта

Проект написан на C# под .NET 8

Вам должно хватить dotnet build для сборки всех проектов отдельно.

Все приложения кросс-платформенные, в том числе UI.

Состояние проекта

  • Распаковка всех NRes файлов
  • Распаковка всех TEXM текстур
    • формат 565 работает некорректно
    • не понятно назначение двух магических чисел в заголовке
  • Распаковка данных миссии .tma. Пока работает чтение ареалов и кланов.
  • Распаковка файла NL. Есть только декодирование заголовка. Формат кажется не используется игрой, а реверс бинарника игры то ещё занятие.
  • Распаковка текстуры шрифта формата TFNT. Встроен прямо в UI. По сути шрифт это 4116 байт заголовка и текстура TEXM сразу после.

Структура проекта

Внимание!

Проект делается как небольшой PET, поэтому тут может не быть

  • чёткой структуры
  • адекватных названий
  • комментариев

Я конечно стараюсь, но ничего не обещаю.

NResUI

UI приложение на OpenGL + ImGui.

Туда постепенно добавляю логику.

NResLib

Библиотека распаковки формата NRes и всех файлов, которые им запакованы.

Есть логика импорта и экспорта. Работа не завершена, но уже сейчас можно читать любые архивы такого формата.

TexmLib

Библиотека распаковки текстур TEXM.

Есть логика импорта и экспорта, хотя к UI последняя не подключена.

NLUnpacker

Приложение распаковки NL.

Работа приостановлена, т.к. кажется игра не использует эти файлы.

MissionDataUnpacker

Приложение распаковки миссий .tma.

Готово чтение ареалов и кланов. Пока в процессе.

ParkanPlayground

Пустой проект, использую для локальных тестов.

TextureDecoder

Приложение для экспорта текстур TEXM.

Изначально тут игрался с текстурами.

Для Reverse Engineering-а использую Ghidra

Наблюдения

  • Игра использует множество стандартных библиотек, в частности stl_port, vc++6 и другие. Если хотите что-то изучить в игре, стоит поискать по строкам и сигнатурам, что именно используется в конкретной dll.
  • Строки в основном используются двух форматов - char* и std::string. Последняя состоит из 16 байт - undefined4, char* data, int length, int capacity.
  • В игре очень много inline функции, которые повторяются по куче раз в бинарнике.
  • Игра загружает и выгружает свои dll файлы по несколько раз, так что дебаг с Memory Map очень затруднён.
  • Игра активно и обильно течёт по памяти, оставляя после чтения файлов их MapViewOfFile и подобные штуки.
  • Игра нормально не работает на Win10. Мне помог dgVoodoo. Хотя с ним не работает MisEditor.

Контакты

Вы можете связаться со мной в Telegram.

Description
My reverse engineering of Parkan Iron Strategy 1998 file formats. Мои потуги по декомпиляции Parkan Железная стратегия 1998 года.
Readme 1,010 KiB
Languages
C# 100%