OhMyGame
OhMyGame is the open-source studio for making games with AI. Design, build, playtest, and publish games in one app, with your own model keys.
Lightweight Linux for the Anbernic RG DS and RG DS Plus, with a pixel-art menu, two DS emulators, lid sleep, Bluetooth, layout themes and updates over Wi-Fi.
GamesC++ · PythonGitHub @JorreFogOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
A light Linux for the Anbernic RG DS and RG DS Plus: boots to its own menu in seconds, two DS emulators straight onto both screens, RetroArch, and an App Store.
Taken from the repository README
Loading the full README.
Read the full README ↗Lightweight Linux for the Anbernic RG DS and RG DS Plus.
A pixel-art menu, two DS emulators and a system built around your handheld's two screens and lid. Add your games, choose an emulator and start playing.
[!WARNING] Beta 0.5.0. Tested by the QA team on both handhelds through twelve beta builds, with the known issues listed under Status. Read them before installing. If something goes wrong, docs/FIRST-BOOT.md explains which logs to include in a report.
BananaOS is a complete Linux system built specifically for the RG DS and RG DS Plus. It uses Buildroot, a Linux kernel with ROCKNIX hardware support, BusyBox init and a dedicated interface for both screens. The system image is read-only; games, saves and settings live on a separate exFAT partition.
It starts directly in the menu, releases display, input and audio resources when launching a game, and pauses play when you close the lid. Updates come over Wi-Fi and install to a second system slot, so the previous version remains one restart away. The menu speaks English, Simplified Chinese (简体中文, translated by Majirefy) and Russian (Русский, translated by Vladislav (LVD) and Ruslan (Nestrahoff)).
The full list, with every fix: the 0.5.0 release notes.
Nintendo DS
Bluetooth
Updates and your library
Companions on the second screen
Look and feel
Other systems and speed
Flashing erases the selected card. Back up anything on it you want to keep, and check the selected drive before you start.
The easiest route is the BananaLinux Flasher by jesussaves-ai: choose your handheld, choose your microSD card, then download and flash. It fetches the newest BananaOS image, checks it against the release's SHA-256 and refuses your computer's own disks.
BananaLinuxFlasher.exe from its releases and run it as administrator. It is an unsigned community build, so SmartScreen may ask: More info > Run anyway.python3 flash_banana.py).Or flash by hand: download the image for your handheld from the 0.5.0 release and open it in Raspberry Pi Imager (Choose OS > Use custom image) without unzipping it. Avoid balenaEtcher: several people have found it writes the card incorrectly, and the handheld then fails to boot.
| Handheld | Image | Update package |
|---|---|---|
| RG DS Plus | banana-rgds-plus.img.gz | banana-rgds-plus-0.5.0.update.tar |
| RG DS | banana-rgds.img.gz | banana-rgds-0.5.0.update.tar |
Insert the card and power on. The first boot prepares your data partition, plays its arrival animation, then guides you through setup step by step: language, Wi-Fi with a connection test, time zone, your DS's name, a RetroAchievements account and box art. Skip any step with B, or the whole setup with START. To add games, open the BANANA drive on your computer and copy them into roms/nds, roms/gba and the other system folders, or copy them over Wi-Fi. banana/README.txt on the card lists the folders.
banana-rgds-plus-0.5.0.update.tar (RG DS Plus) or banana-rgds-0.5.0.update.tar (RG DS) in banana/updates on the card, then Settings › System › Update, A on the package and A again. It installs to the card's other system slot and runs from the next restart; the version you had stays one restart away (Settings › System › Previous version). Games, saves and settings stay.SHA256SUMS file.The first start after the update runs the new first-time setup once, prefilled with what your card already has.
Coming from GammaOS or ROCKNIX? The Save Mover backs up your saves, converts them and places them in the card's folders, all in your browser. A ROCKNIX .dsv next to a game is used as its save the first time.
A look around BananaOS, captured on an RG DS Plus running 0.4.2. For 0.5.0's layout themes, see Themes.
Both put each DS screen on its own display and include an in-game menu for save states, shaders and quick settings. Choose a default in Settings > Nintendo DS, or press X in the library to choose one for a game.
| SuperDrastic | BananaDS | |
|---|---|---|
| Core | DraStic by Exophase, adapted for the RG DS and RG DS Plus | The melonDS core on BananaOS's display path and menu |
| 3D | Gengis Engine at 2x, threaded | Gengis Engine at 2x, threaded; 3x and 4x (experimental) |
| Low latency (experimental) | Yes | Yes: a press shows about two refreshes sooner |
| CPU clocks | Per-game tuning | Steps down only when the heaviest frames still fit |
| RetroAchievements | No | Softcore, with the account from setup |
| Online play | No | Nintendo WFC through Kaeru |
| Microphone | A "blow" key | The real microphone |
| Extras | Shaders, save slots with both screens as their picture | Cheats for 4,000+ games, fast-forward (R2), FPS counter, screenshots (F + L2), save slots with both screens as their picture |
Press F for the in-game menu; the Anbernic button also opens it. In DS games, both emulators: F + R saves a state and F + L loads it, L2 (or F + SELECT) swaps the two screens, R2 fast-forwards and L3 blows on the mic (Settings › Nintendo DS › Buttons changes L2, R2, L3 and R3). More in docs/EMULATORS.md, the contract between the menu and any emulator.
\\<address>\banana (log in as banana / linux). Copied games show up in the menu.| System | RetroArch core (RetroArch 1.22, built for the RK3566's Cortex-A55) |
|---|---|
| GBA | gpSP or mGBA |
| Game Boy | Gambatte |
| NES | BananaNES (a FCEUmm fork) / FCEUmm |
| SNES | Snes9x |
| Mega Drive | PicoDrive |
| PlayStation | PCSX ReARMed |
| N64 | Mupen64Plus-Next |
In 0.5.0 a theme file can draw the whole menu: where everything is, how it looks and how it moves. Ten layout themes come built in: pick one in Settings › Display & sound › Theme (A opens a gallery with previews). They were made with the Banana Theme Studio, the theme editor that runs in your browser.
banana/themes/ on the card (over file sharing, or with the card in a computer), then pick it in Settings. A file there with the same name as a built-in theme replaces it. Pick Dark to go straight back to the normal look.
banana-panel-tune reads the real pixel clock on the first boot and retunes both screens to 59.999 Hz.
0.5.0 is a beta. The QA team tested it on both handhelds through 0.5.0-beta.1 to beta.12 (a 36-item test plan), with every confirmed report fixed or listed below. Both update packages were installed over earlier builds through Settings › System › Update and over Wi-Fi from the beta channel, and every speed claim was measured on the handhelds' own screens. These are checks of this release, not a compatibility guarantee.
Known issues:
dsi_bios9.bin and dsi_bios7.bin (64 KB each; a dump's DSI_bios9.bin names and a DSi BIOS folder inside it work too) in bios/ on the card. Your DSi's NAND (dsi_nand.bin, optional) goes there too; without it BananaDS keeps DSiWare saves on a NAND of its own. Without the BIOS they stop at a white screen. DSi-enhanced DS games (Pokémon Black 2 / White 2) run as DS games.Not available yet:
What's next: docs/ROADMAP.md. Every release's notes: Releases.
On Linux (Debian/Ubuntu: build-essential bc bison flex libssl-dev libelf-dev unzip rsync cpio python3-dev swig libgnutls28-dev). The released 0.5.0 is the tag v0.5.0:
make rgds # output/rgds/images/banana-rgds.img.gz
make rgds-plus # output/rgds-plus/images/banana-rgds-plus.img.gz
The first build fetches Buildroot and everything it builds, and takes an hour or more. The whole image boots in QEMU with no handheld (tools/qemu-boot.sh, also the CI's boot job): the first boot, the menu on two virtual panels, a game started from the library, a shutdown from the settings.
No handheld needed:
make ui # ui/banana-ui for this computer
make test # renders the menu from a test library into ui/tests/out
| Path | What |
|---|---|
ui/ | banana-ui: the KMS host (src/), ROCKNIXDS Pixel's engine (rnds/), its assets, the headless tests |
system/bananad/ | bananad (sleep, lid, power button, LEDs, sound routing, volume and brightness, battery guard) and banana-panel-tune |
system/rootfs/ | init, first boot, banana-perf, sleep hooks, the game launchers, default settings |
buildroot/ | defconfigs, Banana's packages, the RG DS board (kernel patches, device trees, drivers, U-Boot, image layout) |
store/ | the App Store's catalogue |
tools/ | the menu engine's import, ROCKNIX's hardware sync, the pixel bunch, the logo, the boot animation, the Banana Theme Studio (theme-studio/), this page's pictures (make-readme-art.py) |
web/ | the website on GitHub Pages: the Save Mover, with the Banana Theme Studio (tools/theme-studio/) published next to it |
docs/ | ARCHITECTURE.md, EMULATORS.md, FIRST-BOOT.md, COMPANIONS.md, MAKE-A-THEME.md, THEMES.md, , , |
The people who made 0.5.0 (also in Settings › System › Credits):
Thanks to:
tools/lang-from-docx.py turns a filled-in one into ui/assets/lang/<language>.tsv.Much of the code, tests and documentation was developed with Claude as a coding assistant. The maintainer directs, reviews and tests the work on real hardware. Bug reports and contributions are welcome.
BananaOS is MIT licensed (LICENSE); bundled components keep their own licenses, listed in THIRD_PARTY.md. BananaOS contains no games, ROMs or BIOS files.