
BattleTech: The Crescent Hawk's Inception ingeniería inversa
Análisis de ingeniería inversa y reconstrucción en Godot 4 + C# de BattleTech: The Crescent Hawk's Inception, el juego MS-DOS de 1988 de Infocom.
├── docs/ # Documentación y hallazgos de RE
│ ├── CONTEXT.md # Contexto principal (1050+ líneas)
│ ├── TECHNICAL_ANALYSIS.md # Análisis técnico exhaustivo (3211 líneas)
│ ├── MEMORY_MAP.md # Mapa de memoria completo (603 líneas)
│ ├── ADDRESS_REFERENCE.md # Referencia de direcciones (1035 líneas)
│ ├── BLD_BYTECODE.md # Especificación del bytecode BLD (342 líneas)
│ ├── WORLD_MAP_FINDINGS.md # Análisis del mapa del mundo (321 líneas)
│ ├── REBUILD_PLAN.md # Plan de reconstrucción en Godot
│ ├── REBUILD_ROADMAP.md # Hoja de ruta de reconstrucción
│ └── STORY_TEXT.txt # Texto completo de la historia extraído
│
├── tools/ # Herramientas de análisis en Python
│ ├── bld/ # Herramientas de scripts BLD (decodificador, conversor, visor)
│ ├── assets/ # Herramientas de extracción y renderizado de activos
│ └── analysis/ # Herramientas de análisis RE
│
├── reko/ # Salida del descompilador Reko
│ ├── UNBTECH.exe.c # Descompilación C completa (2MB)
│ ├── UNBTECH.exe.h # Cabecera con definiciones de estructuras
│ ├── UNBTECH_all.asm # Desensamblado combinado (60K líneas)
│ └── segments/ # Archivos .c/.asm/.dis por segmento
│
├── asm/ # Análisis de ensamblador
│ └── discoveries.asm # Notas de análisis manual
│
├── json/ # Conversiones BLD → JSON (26 archivos)
│
├── spice86/ # Salidas de emulación Spice86
│
├── BattleTechCHI/ # Reconstrucción en Godot 4 + C#
│
├── original/ # Activos originales del juego (solo local, no subidos)
│ ├── bld/ cmp/ icn/ mtp/ anm/ saves/ exe/
│
├── extracted_assets/ # PPM/PNG renderizados a partir de activos del juego
└── Assets/ # Hojas de sprites/tiles convertidas
La reconstrucción está en Fase 6 (integración ANM + ANM de combate). ~8.000 líneas de C# en más de 45 scripts en BattleTechCHI/Scripts/.
Emulador Spice86 con 19 herramientas MCP específicas de BattleTech para introspección del estado del juego en tiempo de ejecución:
# Iniciar emulador con servidor MCP en el puerto 8081
dotnet exec bin/Debug/net10.0/UNBATTLETECH.dll \
--Exe "/ruta/a/BTECH.EXE" \
--CDrive "/ruta/al/juego/" \
--HeadlessMode Minimal --McpHttpPort 8081 --NoGui
# Leer estado del juego
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":{}}}'
# Convertir BLD ↔ JSON
python3 tools/bld/bld_json_converter.py to-json original/bld/
# Extraer texto completo de la historia
python3 tools/bld/extract_story.py
# Decodificar todos los archivos BLD con análisis de opcodes
python3 tools/bld/decode_bld.py
# Visor ASCII en terminal para mapas
python3 tools/bld/ascii_viewer.py
# Renderizar activos CMP a PPM
python3 tools/assets/extract_assets.py
# Compilar la reconstrucción C#
cd BattleTechCHI && dotnet build
# Compilar el emulador
dotnet build UNBATTLETECH.csproj
Este repositorio no contiene activos originales del juego (BLD, CMP, EXE, etc.). Solo se incluyen análisis de ingeniería inversa, documentación y código fuente original para una reconstrucción en entorno aislado. Los activos originales del juego permanecen en original/ solo para desarrollo local (gitignored).