
BattleTech: The Crescent Hawk's Inception reverse engeneering
Reverse engineering analysis and Godot 4 + C# rebuild of BattleTech: The Crescent Hawk's Inception, the 1988 MS-DOS game by Infocom.
├── docs/ # RE documentation & findings
│ ├── INDEX.md # Documentation map (canonical source per topic)
│ ├── context.md # Master overview + known/unknown
│ ├── combat-system.md # Canonical combat spec
│ ├── world-map.md # Canonical world-map spec
│ ├── formats/ # file-formats, bld-bytecode, anm-format, memory-map
│ ├── story/ # story-arc, story-system, STORY_TEXT.txt
│ ├── rebuild/ # roadmap, progress
│ ├── tools/ # spice86-mcp, analysis-tools
│ ├── walkthrough/ # gameplay walkthroughs
│ └── UNVERIFIED_DISCOVERIES.md
│
├── tools/ # Python analysis tools
│ ├── bld/ # BLD script tools (decoder, converter, viewer)
│ ├── assets/ # Asset extraction & rendering tools
│ └── analysis/ # RE analysis tools
│
├── reko/ # Reko decompiler output
│ ├── UNBTECH.exe.c # Full C decompilation (2MB)
│ ├── UNBTECH.exe.h # Header with struct definitions
│ ├── UNBTECH_all.asm # Combined disassembly (60K lines)
│ └── segments/ # Per-segment .c/.asm/.dis files
│
├── asm/ # Assembly analysis
│ └── discoveries.asm # Manual analysis notes
│
├── json/ # BLD → JSON conversions (26 files)
│
├── spice86/ # Spice86 emulation outputs
│
├── BattleTechCHI/ # Godot 4 + C# rebuild
│
├── original/ # Original game assets (local only, not uploaded)
│ ├── bld/ cmp/ icn/ mtp/ anm/ saves/ exe/
│
├── extracted_assets/ # Rendered PPM/PNG from game assets
└── Assets/ # Converted sprite/tile sheets
The rebuild is in Phase 6 (ANM integration + combat ANM). ~8,000 lines C# across 45+ scripts in BattleTechCHI/Scripts/.
BattleTechMcpTools/BattleTechOverrideSupplier.cs.)Spice86 emulator with 23 BattleTech-specific MCP tools for runtime game state introspection:
bt_screenshot: text mode 0x03 → 80×25 text from B800:0000; graphics 0x13/0x0D/0x0E → 80×50 luminance grid from A000:0000)# Start emulator with MCP server on port 8086
dotnet exec bin/Debug/net10.0/UNBATTLETECH.dll \
--Exe "/path/to/BTECH.EXE" \
--CDrive "/path/to/game/" \
--HeadlessMode Minimal --McpHttpPort 8086 --NoGui
# Read game state (POST JSON-RPC; GET returns SSE endpoint event)
curl -s -X POST http://localhost:8086/mcp/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"bt_get_state","arguments":{}}}'
# Convert BLD → JSON and back
python3 tools/bld/bld_json_converter.py to-json original/bld/
# Extract full story text
python3 tools/bld/extract_story.py
# Decode all BLD files with opcode analysis
python3 tools/bld/decode_bld.py
# ASCII terminal viewer for maps
python3 tools/bld/ascii_viewer.py
# Render CMP assets to PPM
python3 tools/assets/extract_assets.py
# Build C# rebuild
cd BattleTechCHI && dotnet build
# Build emulator
dotnet build UNBATTLETECH.csproj
tools/playtest/bt.py drives the original game in the emulator (MCP on 8086 + HTTP memory API on 20000): BDA keyboard injection, state reads, and true-colour PNG rendering.
python3 tools/playtest/bt.py state # mode/cursor/credits/flags/state snapshot
python3 tools/playtest/bt.py tile # world-map tile under the cursor
python3 tools/playtest/bt.py keys w # press a named key (space/enter/esc/w/a/s/d/arrows/...)
python3 tools/playtest/bt.py png out.png # true-colour screenshot
python3 tools/playtest/bt.py boot # adapter+drive keys, then spaces -> title/menu
This repository contains no original game assets (BLD, CMP, EXE, etc.). Only reverse engineering analysis, documentation, and original source code for a clean-room rebuild are included. The original game assets remain in original/ for local development only (gitignored).