Project History
Mobile Eggbert has a long and winding heritage tracing back to a Windows Phone XNA game from 2013. Understanding this history helps explain many of the naming and structural decisions in the codebase.
Code Evolution Timeline
The original game was written in C# XNA 4.0 for Windows Phone 8 by Epsitec SA (Daniel Roux). It is a side-scrolling platform game featuring the Blupi character. The source code was never publicly released.
The Windows Phone binary was decompiled using ILSpy. Symbol names (classes, methods, fields) were largely preserved by the decompiler, which later assisted reverse-engineering of related games such as Speedy Eggbert 2 and Free Eggbert.
The decompiled source lives in mobile-eggbert-legacy/.
The decompiled C# source was adapted to compile and run on MonoGame (a cross-platform XNA implementation). This allowed running the game on Linux and Windows with minimal code changes.
A complete line-by-line rewrite from C# to C++ was performed. The rewrite preserved all original class names, method signatures, and enum values as closely as possible. Starting from mobile-eggbert-core commit 1cbc134.
The C++ version uses SharpRuntime to emulate .NET base-class types (String, List<T>, Dictionary<K,V>, Math, etc.) that the original code relied upon.
The graphics and audio backend was replaced from MonoGame with CNA — a custom C++ XNA 4.0-compatible API layer built on SDL3. This enables native compilation without Mono and provides full control over rendering.
This repository (mobile-eggbert) is the current active version.
Related Projects
Mobile Eggbert is part of the OpenEggbert project collection. All projects live as siblings in the same parent directory.
| Repository | Role | Status |
|---|---|---|
| mobile-eggbert | C++ port of Speedy Blupi Windows Phone game (this project) | Active |
| mobile-eggbert-legacy | Previous version of the port; decompiled C# source + MonoGame builds | Archive |
| mobile-eggbert-libgdx | Java/LibGDX port of the same game, ported from the C# XNA source | In Progress |
| cna | CNA framework — C++ XNA 4.0-compatible API wrapper built on SDL3 | Active |
| sharp-runtime | C++ reimplementation of .NET BCL types (String, List, Dictionary, Math, …) | Active |
| planetblupi | Official open-source C++ source of Planet Blupi (isometric RTS, by Epsitec SA) | Reference |
| free-eggbert | Decompiled Speedy Eggbert 2 (DirectX 3 platform game) | Reference |
| free-direct | DirectDraw → SDL3 abstraction layer (used by free-eggbert port) | Active |
| free-api | Win32 → cross-platform API abstraction layer | Active |
The Blupi Family of Games
Blupi is a character created by Epsitec SA. Several distinct games feature Blupi:
| Game | Year | Platform | Technology |
|---|---|---|---|
| Planet Blupi | 1997 | DOS / Windows | DirectX, C++ |
| Speedy Eggbert | 2000 | Windows | DirectX 3, C++ |
| Speedy Eggbert 2 | 2001 | Windows | DirectX 3, C++ |
| Speedy Blupi (Windows Phone) | 2013 | Windows Phone 8 | XNA 4.0, C# |
| Mobile Eggbert (this project) | 2023+ | Linux/Win/Web/Android | CNA/SDL3, C++23 |
License
Mobile Eggbert is licensed under the MIT License. The original Speedy Blupi game assets (sprites, sounds, level data) remain property of Epsitec SA. Copyright for the C++ port code includes contributions by Daniel Roux and the OpenEggbert contributors.