This repository is a reverse-engineered DOS animation player for Dune, implemented with Spice86 C# overrides.
Use this file as the entry point for agent behavior. Prefer linking to existing docs instead of duplicating their content.
Read these first, in order:
- README.md
- Program.cs
- GeneratedCode.cs
- CodeGeneratorConfig.json
- .github/instructions/reverse-engineering.instructions.md
- Build:
dotnet build --configuration Release - Run:
dotnet run -- -e /path/to/LOGO.EXE -d false - Required DOS binary checksum is enforced in Program.cs.
- Default run profile is cloud-friendly: headless minimal UI, MCP on
8081, andUseCodeOverride=falseunless explicitly overridden. - To run with repository C# overrides, pass
--OverrideSupplierClassName logo.MyOverrideSupplier --UseCodeOverride true. - Main project targets
net10.0in logo.csproj.
- Edit GeneratedCode.cs for high-level/manual override behavior.
- Treat GeneratedCode_OriginalAsm.cs as generated/reference-oriented code.
- Treat GeneratedCode_DecompiledAsm.cs as optional intermediate output.
- If changing GeneratedCode.cs, GeneratedCode_OriginalAsm.cs, GeneratedCode_DecompiledAsm.cs, or MyOverrideSupplier.cs, follow .github/instructions/reverse-engineering.instructions.md.
- Gather evidence first (live Spice86/GDB or existing dump files) before changing behavior.
- Preserve calling contract exactly: return type (
NearRet()/FarRet()), register/FLAGS side effects, and stack behavior. - Keep function naming traceable to segment/offset/linear address.
- For unobserved code paths, fail explicitly (
FailAsUntested) rather than guessing behavior.
See full rules: .github/instructions/reverse-engineering.instructions.md.
- Live inspection prompt: .github/prompts/inspect-live-spice86.prompt.md
- Spice86 MCP skill: .github/skills/spice86-mcp/SKILL.md
- HSQ decompression skill: .github/skills/dune-dat-and-hsq-decompression/SKILL.md
- Execution flow dump: spice86dumpExecutionFlow.json
- Ghidra symbol dump: spice86dumpGhidraSymbols.txt
There is no dedicated automated test suite in this repo. When behavior changes are made, validate by running the emulated program and checking in-game behavior against expected/original flow.