Design for the Go port (module sneak.berlin/go/rogue):
- RogueGame instance type owns all former globals; no package globals
- THING union split into Creature (Player/Monster) and Object
- Slices replace THING linked lists; list.c is not ported
- Daemon function pointers become serializable DaemonID enum + dispatch
- tcell/v2 (sole third-party dep) replaces curses; Window cell buffers
preserve the screen-as-data-structure idiom
- encoding/gob snapshot replaces the 2,134-line state.c serializer
- Exact-LCG RNG for seed-compatible dungeon generation, with golden tests
- Per-file porting map, naming conventions, porting order, drop list
Documents the entire Rogue 5.4.4 C codebase ahead of the Go port:
program flow, source file inventory, the full type system (THING
union, PLACE map, rooms, stats, obj_info, daemons), constants and
flag bits, the macro layer, a census of every global variable, and
a function-by-function catalog of all 36 source files.
- Reorganize Prerequisites section with numbered items for clarity
- Emphasize that ncurses development package is required (not just runtime)
- Update package names: add libncurses-dev for modern Debian/Ubuntu
- Add Fedora-specific instructions using dnf
- Add 'Before you begin' note in Quick Start section
- Improve troubleshooting section with clearer explanations
- Enhance platform-specific notes for macOS Homebrew
- Update date from placeholder to 2025-11-07 in MODERNIZATION_LOG.md
- Mark function prototype warnings as fixed in pending issues
- Remove trailing whitespace in daemon.c, rogue.h, state.c
- Clean up formatting in MODERNIZATION_LOG.md
- Remove direct access to curscr->_cury and curscr->_curx
- Replace with public API call move() for cursor positioning
- Fixes critical build failure on modern systems with ncurses 6.x
- Build now succeeds on macOS arm64
See MODERNIZATION_LOG.md for detailed reasoning and impact analysis.
- Add note in Quick Start section about build issues
- Add reference at top of Troubleshooting section
- Add specific entry for ncurses compatibility error in Build Issues
- Critical compilation error: direct access to internal ncurses structure members
- Code compatibility issue with modern ncurses (curscr->_cury, curscr->_curx)
- Affects both standard and manual build methods
- Documented on macOS (darwin 25.0.0, Apple Silicon)
- Fix Project Structure section (remove incorrect directory structure)
- Add missing prerequisites (make, m4) with installation instructions
- Clarify when autoreconf is needed vs when configure exists
- Improve Windows build instructions with detailed PDCurses setup
- Add optional documentation tools section
- Enhance troubleshooting with additional common issues
- Add notes about documentation adaptation and executable name variations
- Improve macOS Homebrew instructions for both Intel and Apple Silicon
- Add platform-specific build notes and alternatives