🐣 Mobile Eggbert

Known Issues & TODO

This page aggregates outstanding issues from TODO.md, ENUMS.md, and DOXYGEN_DOCUMENTATION_PLAN.md.

Open Bugs (from TODO.md)

#IssueDescription
1 Accelerometer visibility The accelerometer setting button should only appear on hardware that actually has an accelerometer. Currently visible on all platforms.
2 Sound system verification Audio playback needs end-to-end testing across all platforms (Linux, Windows, Web, Android). Particularly the 93 WAV files and volume/balance panning.
3 Sprite transparency Some sprites have transparency handling issues — certain pixels appear with incorrect blending artefacts.
4 Fullscreen mode Fullscreen mode currently malfunctions (incorrect resolution or display state). Windowed mode is unaffected.
5 Web sound delay Audio has a noticeable startup delay in the Emscripten/WebAssembly build on first sound playback. Likely related to browser autoplay policy and SDL3_mixer initialization.
6 Cheat name conflict quick and quicklollypop cheat codes conflict because one is a prefix of the other. The fix is to rename quicklollypop.

Magic Number Refactoring (from ENUMS.md)

Multiple locations in the codebase still use raw integer literal magic numbers instead of the typed enums defined in include/def/ and include/decor/.

The ENUMS.md file catalogues every location where this occurs. Fixing them is an ongoing refactoring effort. The priority is:

  1. Decor.cpp — the largest file with the most magic numbers
  2. Game1.cpp — button and phase comparisons
  3. Smaller files
Impact Magic number usages do not cause bugs on their own, but they make the code harder to maintain and refactor. Replacing them with enum values enables type checking by the compiler.

Doxygen Documentation (from DOXYGEN_DOCUMENTATION_PLAN.md)

Complete Doxygen documentation is planned for all 50 source files. As of the last update, it has not yet been written.

Priority Groups

PriorityFilesReason
1–4 (highest)Decor.cpp/hpp, Tables.cpp/hpp, Game1.cpp/hppComplex algorithms, animation table layout, phase state machine
5–12Pixmap, Worlds, GameData, InputPad, Sound, decor/* headersPublic API surfaces used by multiple callers
13–21MyResource, Misc, Text, Slider, Helper, TinyRect, TinyPoint, IPixmap, ISound, IGame1, ConfigDef, ConfigUtility classes and interfaces

Documentation Conventions

All files must follow the conventions in DOXYGEN_DOCUMENTATION_PLAN.md and CLAUDE.md:

  • Every file: @file + @brief + @details
  • Every class: @class, @brief, @details, @note, @warning, @see
  • Every method: @brief, @param[in/out] (directional), @return/@retval, @throws, @pre, @post
  • Member variables: trailing ///< @brief inline comment
  • .cpp files: document only what is not already in the .hpp

Performance Issues

Four known performance issues in Decor.cpp. None are blocking. See Performance for the full analysis and proposed fixes.

  • Issue 1: ByeByeDraw — unnecessary struct copy in draw loop
  • Issue 2: ByeByeAdd — double-copy on vector insert
  • Issue 3: ByeByeStep — O(n) erase during iteration
  • Issue 4: MoveObjectSort — O(n²) bubble sort with struct copies