Build C homebrew for the VTech MobiGo 2, package it as a donor-free MBA, install it into a disposable NAND image, and test it in Emulator2.
The supported starting point is the editable application in app/main.c. New
projects target the SY system profile unless they deliberately opt into the
legacy G1 compatibility profile. SY and G1 binaries are not interchangeable.
Clone the repository with its maintained emulator and manager repositories:
git clone --recurse-submodules https://github.com/MaxNiftyNine/MobiGo2StarterProject.git
cd MobiGo2StarterProjectFor an existing clone, run git submodule update --init --recursive once.
The canonical command-line entry point is:
python3 tools/mobigo.py doctor
python3 tools/mobigo.py rundoctor checks the host, target compiler, firmware inputs, and emulator.
run builds the starter, applies a role-aware in-memory MBA overlay, and
launches the emulator. Older emulator binaries automatically fall back to a
verified copied-NAND install. Neither path changes tracked firmware inputs.
Other common commands are:
python3 tools/mobigo.py build
python3 tools/mobigo.py testbuildproducesbuild/MobiGo2Starter.MBAand related artifacts without launching the emulator. Add--nandwhen a persistent edited NAND is needed.testruns host, USB, target-compiler, emulator unit, and emulator-device checks. Add--fullfor all firmware integrations, sample builds, and complete-sample emulator runtime checks.
On stock Windows without Make, test labels and runs a smaller native baseline
that still includes target compilation and a firmware/emulator integration.
The full command fails until the documented MSYS2 test prerequisites are present;
it never reports success after silently skipping release checks.
See the installation guide for Windows, macOS, and Linux prerequisites and the first-project guide for the complete workflow.
Edit app/main.c or copy the starter into a new project. Public headers are in
include/mobigo_sdk/; implementations are in src/.
Target applications are C: the bundled builder supports C99-style .c and
u'nSP .asm/.s sources. It does not provide a target C++ frontend or an
established C++ ABI. Emulator2 is independently written in host C++20.
The SDK includes:
- the resident application lifecycle;
- logical buttons, keyboard input, touch, and motion-sensor support;
- standard volume, brightness, and power-off handling;
- graphics resources, sprites, animation, and text;
- PCM8 and ADPCM36 effects plus sequenced music;
- resident storage access;
- donor-free SY and legacy G1 MBA packaging;
- NAND, USB, asset, emulator, and Ghidra tools.
Read Lifecycle and memory before porting code. A direct MBA entry does not receive conventional C runtime initialization, so ordinary assumptions about initialized writable globals are unsafe.
For a substantial port, start with the porting guide. It is written for both human developers and coding agents.
The default starter is linked for SY. Use the role-aware emulator workflow for normal development and a copied NAND when validating persistent installation. Installing an SY application on a physical device replaces the system menu and requires verified recovery backups.
G1 is a legacy, explicit opt-in used by several examples. A G1-linked MBA must be installed with the G1 target; never install the default SY artifact as G1. Device filenames differ by region, so use the filesystem-aware tools instead of embedding a numeric slot filename in code, documentation, or automation.
See Target profiles and Deployment and recovery.
Run:
python3 tools/mobigo.py testEvery port should also receive an application-specific emulator smoke test. Input, rendering, system controls, audio, storage, shutdown, and relaunch paths that the application uses should be exercised before physical installation. The testing guide explains the available levels and their evidence boundaries.
The published manual is at maxniftynine.github.io/MobiGo2StarterProject. It separates application development, API reference, physical hardware, firmware/software behavior, tools, and validation evidence.
Build it locally with:
python3 -m pip install -r docs/requirements.txt
mkdocs serveHistorical reverse-engineering notes remain under research/. They preserve
evidence but are not the source of truth for new application paths.
app/ editable SY starter application
include/, src/ public clean-room SDK and implementation
examples/ focused probes and complete opt-in examples
tests/ firmware-free SDK and packaging tests
emulator/ MobiGo2Emulator submodule
tools/ unified CLI, specialist tools, and Homebrew Manager submodule
scripts/ compatibility launchers for desktop workflows
docs/ current published manual
research/ evidence, dated notes, reports, and historical material
vendor/ third-party tools, linker profiles, and firmware inputs
Read THIRD_PARTY.md before redistributing the repository or its bundled
inputs. The project is an independent clean-room effort, not an official VTech
or Generalplus SDK.
Standalone tools and packaged releases: