Roadmap
Project goals derived from README.md and TODO.md.
This reflects the current development direction as of the repository state.
Immediate Goals
- Add detailed logging around DirectDraw initialization to diagnose the double Create() issue
- Verify whether
CPixmap::Create()is really called twice at startup - Clarify the
bTrueColorBack/bTrueColorDecorparameter order - Fix or document the
delete thisUB inCPixmap::CacheAll(FALSE) - Verify clean checkout builds on Linux without system SDL packages
Core Development Goals
- ☐ Improve accuracy of the decompiled source code
- ☐ Restore missing or defective gameplay behavior
- ☐ Complete
decblupi.cpp— player physics and vehicle logic - ☐ Complete
event.cpp— input processing and phase dispatch - ☐ Complete
decmove.cpp— enemy and object AI - ☐ Complete
decblock.cpp— crate/door/block interaction - ☐ Complete
decio.cpp— save/load serialization - ☐ Complete
decdesign.cpp— level editor - ☐ Fix or stub DirectPlay network initialization
Documentation Goals
- ☐ Add Doxygen documentation to all headers and source files
- ☐ Document all
TYPE_*,ACTION_*, andSOUND_*constants in context - ☐ Document the
.blpbinary file format specification
Platform Goals
- ☐ Complete CMake FreeDirect support (in progress)
- ☐ Port to additional platforms beyond Windows
- ☐ Finalize and test Android support
- ☐ Finalize and test web browser (Emscripten) support
- ☐ Verify macOS build
Build System Goals
- ☐ Change
target_include_directoriesto PRIVATE for game executable - ☐ Verify
/permissive-MSVC flag appropriateness - ☐ Verify SDL runtime DLL copying on Windows
- ☐ Consider CMake option for audio backend:
FREE_EGGBERT_AUDIO_BACKEND=DSOUND|BASS|STUB - ☐ Consider strict FreeDirect mode (
FREE_DIRECT_STRICT=1) for catching DirectDraw contract violations
Recommended Debugging Priority
From TODO.md, the recommended priority order is:
- Add detailed logging around DirectDraw initialization
- Verify whether
CPixmap::Create()is really called twice - Capture exact
HRESULTvalues from DirectDraw calls - Decide ownership of
CPixmap::Create()— either DoInit() or CacheAll(), not both - Clarify the
bTrueColorBack/bTrueColorDecorparameter order - Keep unrelated systems separate during this investigation
- After fullscreen path is understood, continue with web/Android portability work