๐Ÿฃ Mobile Eggbert

Mobile Eggbert

A faithful C++ port of Speedy Blupi โ€” the Windows Phone XNA platform game from 2013. Multi-platform, open-source, and developer-friendly.

C++23 CNA / SDL3 Linux ยท Windows ยท Web ยท Android MIT License

What is Mobile Eggbert?

Mobile Eggbert is a side-scrolling platform game in which the player controls Blupi through 100ร—100-tile levels, collecting treasures, driving vehicles, using power-ups, and reaching the goal exit. The game contains 78 levels organized into chapters, with a tutorial and a final bonus stage.

The codebase originated as the Windows Phone 8 XNA game Speedy Blupi (2013), was decompiled, migrated to MonoGame, and subsequently rewritten in C++ using CNA โ€” a custom XNA-compatible C++ framework built on top of SDL3.

Quick Facts

Language & Framework

  • Primary language: C++23
  • Framework: CNA (XNA 4.0 compatible, SDL3-based)
  • Build system: CMake 3.21+
  • Executable: WindowsPhoneSpeedyBlupi

Target Platforms

Linux Windows Web (WASM) Android

Linux is the primary development target. Web and Android use SDL_Renderer backend.

Game Features

Documentation Map

SectionDescription
HistoryHow the codebase evolved from C# XNA โ†’ MonoGame โ†’ C++ โ†’ CNA, and how it relates to Planet Blupi / Free Eggbert
Build SystemStep-by-step build instructions for Linux, Windows (MinGW), Web (Emscripten) and Android
ConfigurationLEGACY vs MODERN mode, FPS settings, resolution scaling, time and speed scale factors
ArchitectureRepository layout, dependency graph, key class responsibilities
GameplayPhase state machine, vehicles, power-ups, enemies, keys and doors
API: EnumerationsAll enum types: BlupiAction (88), ObjectType (203+), SoundChannel (93), PixmapChannel (17), โ€ฆ
API: ClassesDecor, Game1, Pixmap, InputPad, GameData, Worlds, Tables โ€” purpose and key members
Data FormatsWorld file text format (100ร—100 grid), save data binary layout (640 bytes, 3 gamer slots)
Asset FilesAll PNG sprite sheets, WAV sounds, world level files โ€” naming conventions and sizes
Cheat SystemHidden unlock gesture, 9 UI buttons, full list of 22 cheat codes
LocalizationFrench, English and German UI strings in MyResource.cpp
Performance4 known O(n) issues in Decor.cpp with suggested fixes
Known IssuesOpen bugs and TODO items from TODO.md, ENUMS.md, and DOXYGEN_DOCUMENTATION_PLAN.md

Repository Quick Reference

mobile-eggbert/
โ”œโ”€โ”€ include/WindowsPhoneSpeedyBlupi/   โ† all .hpp headers
โ”‚   โ”œโ”€โ”€ def/                           โ† enum headers (BlupiAction, ObjectType, โ€ฆ)
โ”‚   โ””โ”€โ”€ decor/                         โ† decor-specific enums
โ”œโ”€โ”€ src/WindowsPhoneSpeedyBlupi/       โ† all .cpp implementations
โ”œโ”€โ”€ Content/                           โ† PNG sprites + WAV sounds
โ”‚   โ”œโ”€โ”€ backgrounds/                   โ† 37 background PNGs (32 themes + UI)
โ”‚   โ”œโ”€โ”€ icons/                         โ† 8 sprite-sheet PNGs
โ”‚   โ””โ”€โ”€ sounds/                        โ† 92 WAV sound effects
โ””โ”€โ”€ worlds/                            โ† 78 level text files
Developer Note This documentation was generated from DOC.md and covers the C++ port. A parallel Java/LibGDX port (mobile-eggbert-libgdx) also exists and shares the same game logic design.