
BattleTech: The Crescent Hawk's Inception — реверс-инжиниринг
Анализ обратной разработки и воссоздание на Godot 4 + C# игры BattleTech: The Crescent Hawk's Inception — MS-DOS игры 1988 года от Infocom.
├── docs/ # Документация и результаты RE
│ ├── CONTEXT.md # Основной контекст (1050+ строк)
│ ├── TECHNICAL_ANALYSIS.md # Подробный технический анализ (3211 строк)
│ ├── MEMORY_MAP.md # Полная карта памяти (603 строки)
│ ├── ADDRESS_REFERENCE.md # Справочник адресов (1035 строк)
│ ├── BLD_BYTECODE.md # Спецификация байт-кода BLD (342 строки)
│ ├── WORLD_MAP_FINDINGS.md # Анализ карты мира (321 строк)
│ ├── REBUILD_PLAN.md # План воссоздания на Godot
│ ├── REBUILD_ROADMAP.md # Дорожная карта воссоздания
│ └── STORY_TEXT.txt # Извлечённый полный текст истории
│
├── tools/ # Инструменты анализа на Python
│ ├── bld/ # Инструменты для BLD-скриптов (декодер, конвертер, просмотрщик)
│ ├── assets/ # Инструменты извлечения и рендеринга ассетов
│ └── analysis/ # Инструменты RE-анализа
│
├── reko/ # Вывод декомпилятора Reko
│ ├── UNBTECH.exe.c # Полная декомпиляция на C (2MB)
│ ├── UNBTECH.exe.h # Заголовок с определениями структур
│ ├── UNBTECH_all.asm # Объединённый дизассемблированный код (60K строк)
│ └── segments/ # Пофайловые .c/.asm/.dis для каждого сегмента
│
├── asm/ # Анализ ассемблерного кода
│ └── discoveries.asm # Ручные заметки по анализу
│
├── json/ # Преобразования BLD → JSON (26 файлов)
│
├── spice86/ # Результаты эмуляции через Spice86
│
├── BattleTechCHI/ # Воссоздание на Godot 4 + C#
│
├── original/ # Оригинальные игровые ассеты (только локально, не загружены)
│ ├── bld/ cmp/ icn/ mtp/ anm/ saves/ exe/
│
├── extracted_assets/ # Отображаемые PPM/PNG из игровых ассетов
└── Assets/ # Преобразованные листы спрайтов/тайлов
Воссоздание находится на этапе 6 (интеграция ANM + боевые ANM). ~8 000 строк C# в 45+ скриптах в BattleTechCHI/Scripts/.
Эмулятор Spice86 с 19 специализированными для BattleTech MCP-инструментами для интроспекции состояния игры в рантайме:
# Запуск эмулятора с MCP-сервером на порту 8081
dotnet exec bin/Debug/net10.0/UNBATTLETECH.dll \
--Exe "/path/to/BTECH.EXE" \
--CDrive "/path/to/game/" \
--HeadlessMode Minimal --McpHttpPort 8081 --NoGui
# Чтение состояния игры
curl -s -X POST http://localhost:8081/mcp/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"bt_get_state","arguments":{}}}'
# Преобразование BLD → JSON и обратно
python3 tools/bld/bld_json_converter.py to-json original/bld/
# Извлечение полного текста истории
python3 tools/bld/extract_story.py
# Декодирование всех BLD-файлов с анализом опкодов
python3 tools/bld/decode_bld.py
# ASCII-просмотрщик карт в терминале
python3 tools/bld/ascii_viewer.py
# Рендеринг CMP-ассетов в PPM
python3 tools/assets/extract_assets.py
# Сборка C#-версии
cd BattleTechCHI && dotnet build
# Сборка эмулятора
dotnet build UNBATTLETECH.csproj
Этот репозиторий не содержит оригинальных игровых ассетов (BLD, CMP, EXE и т.д.). Включены только анализ обратной разработки, документация и оригинальный исходный код для воссоздания методом «чистой комнаты». Оригинальные игровые ассеты остаются в original/ только для локальной разработки (исключены через .gitignore).