🐣 Mobile Eggbert

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

2013 — Speedy Blupi (Windows Phone)

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.

Step 1 — ILSpy Decompilation

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/.

Step 2 — MonoGame Migration

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.

Step 3 — C++ Rewrite

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.

Current — CNA Migration (this repo)

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.

Mobile Eggbert is part of the OpenEggbert project collection. All projects live as siblings in the same parent directory.

RepositoryRoleStatus
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
Important Distinction Mobile Eggbert is not a fork of Planet Blupi or Free Eggbert. It is an independent C++ port that originated specifically from the Windows Phone version of the game, not from any of the desktop Speedy Eggbert titles.

The Blupi Family of Games

Blupi is a character created by Epsitec SA. Several distinct games feature Blupi:

GameYearPlatformTechnology
Planet Blupi1997DOS / WindowsDirectX, C++
Speedy Eggbert2000WindowsDirectX 3, C++
Speedy Eggbert 22001WindowsDirectX 3, C++
Speedy Blupi (Windows Phone)2013Windows Phone 8XNA 4.0, C#
Mobile Eggbert (this project)2023+Linux/Win/Web/AndroidCNA/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.