GameBEX

Browse. Download. Play together.

GameBEX turns your ROM site into a game library.

Browse a site's games with your controller, search its catalog, and download only what you want to play. Give our prompt and the site address to your coding agent, then import the plugin it makes. GameBEX handles the download, disc prep, and emulator setup. Your phone doesn't need to hold the whole catalog.

Built and tuned on a roughly $30 Moto G 2025 from Walmart. Add a second phone for supported local co-op over Wi-Fi. Compatible sites only; account-only sites aren't supported.

We supply the prompt, not the ROMs. Only download games you legally own and have the right to download. Your source, your responsibility. At your own risk. ;) Phone price and stock vary; controller and microSD are extra.

PlayStationStar Rally '97

PlayStation · ROMS-I-Own.com

Star Rally '97

412 MB · RetroArch

Ready

Play

GameBEX was built on a $30 phone.

The moto g 2025 is about $30 at Walmart with no plan required, and it has a 120 Hz screen, a microSD slot, and a headphone jack. GameBEX was built and tuned on that exact phone, so add a GameSir X5s (often $15-20 refurbished on Amazon) and it runs everything up to Dreamcast and PSP.

Browse the site's catalog in GameBEX.

Pick a compatible ROM site, copy the prompt, and let your coding agent build its JSON plugin. Import it and the catalog appears in Discover. Reuse the same prompt for other sites; each gets its own plugin. The site needs public pages the plugin can read; support depends on how the site works.

Browse the catalog without downloading every game. Download a game when you want to play it, and remove its local files from the game page when you need the space.

Play together on two phones.

Stream sends the host's game picture and sound to a second phone, and brings player two's controls back. Only the host needs the game and emulator; the joining phone just needs GameBEX. Play supported local two-player games across systems, even without native netplay. Both phones stay on the same Wi-Fi.

Press 2P to invite a friend. Where a native mode is available, choose Use Stream instead. The Stream host needs Android 13+ and Shizuku; the joining phone needs Android 10+. RetroArch netplay, Game Boy link, and PSP ad hoc are available too.

Host phone
Your game, its emulator, and player one's controls. Android 13+ with Shizuku.
Joining phone
GameBEX and player two's controls. Android 10+; no game, emulator, or matching core needed.
Super Bomberman running on two phones at once, player 1 and player 2 on the same stage
Super Bomberman, two phonesTwo-phone play over RetroArch netplay. Stream is another way to bring player two.
  1. Play together host screen waiting for the other phone, with a QR code and the phone’s address
    1. HostPress 2P on a game.
  2. The other phone’s Home with a Play together invite: Phone A is hosting Super Bomberman
    2. JoinThe other phone gets an invite.
  3. Host screen showing Phone B joined and ready, with the in-game steps
    3. StartBoth ready: press START.

The four session types, and how to host, join and play

Install emulators. See what each game needs.

GameBEX picks an emulator for each of its 54 playable systems. Open System to install it or follow its download link. RetroArch cores download when needed, and GameBEX suggests settings for your phone's CPU and RAM. With Shizuku running, it can also close other emulators before a launch to free up memory.

GameBEX sets up your controller in RetroArch, and Vita3K reads it natively. Flycast, Dolphin, and NetherSX2 need Shizuku, a free helper app, for GameBEX to change their settings. Dolphin and NetherSX2 also need a one-time mapping step in their own menus.

If a game needs a BIOS file or disc preparation, its page shows Finish Setup and lists what's missing. Press it to run the setup steps GameBEX supports.

Game performance depends on your phone and the emulator.

GameBEX runs 54 systems, most of them in RetroArch.

Pick a system to see which emulator runs it and which folder its games go in.

SystemPlayStation 2
Runs inNetherSX2or ARMSX2GameBEX/ps2/

RetroArch46

GameBEX picks the core, so you never see RetroArch's Load Core menu.

NetherSX21

You can switch PS2 to ARMSX2 if you prefer it.

Vita3K1

Vita games get installed inside Vita3K itself, and GameBEX shows you the steps.

ScummVM1

J2ME Loader1

Old Java phone games run in J2ME Loader.

Installs as an app1

OUYA games are Android apps, so GameBEX installs them like any other app.

Dolphin2

PPSSPP1

Folder names and file types for every system are in the docs

Give your coding agent the site address.

The agent reads the plugin schema, studies the site, and gives you one JSON file to import. A plugin can't log in, so sites that need an account won't work.

  1. Replace ROMS-I-Own.com in the prompt below with your ROM site.

  2. Copy the prompt into your coding agent

  3. Import the file in GameBEX

    SystemDeviceGame sources

prompt.txt · 24 lines
You are building a GameBEX source plugin for ROMS-I-Own.com. Only do this for a site you have the right to use this way; the plugin is yours and GameBEX does not review or endorse it.

A GameBEX source plugin is ONE data-only JSON file (schemaVersion 1, strict UTF-8, max 1 MiB, no code). Read these first, from the GameBEX repo (https://github.com/jeffnash/GameBEX):
- docs/source-schema.md (the definition language)
- source-runtime/src/main/resources/source.schema.json (machine schema)
- source-runtime/src/test/resources/synthshop.source.json (a complete working example)

Then:
1. Study ROMS-I-Own.com's public pages/API. Find how to list consoles, browse, search, show a game's detail and file variants, and get a download link.
2. Write `<id>.source.json` with:
   - id [a-z][a-z0-9._-]* (not starting with "builtin")
   - name, author, version
   - requires ["http-v1","expressions-v1","catalog-v1"] (add "assist-v1" only if assist.enabled is true)
   - origins: the exact HTTPS hosts per purpose (catalog / download / artwork / assist), as https://host with the default port and no credentials. Anything not listed is blocked, including redirect hops.
   - platforms: map the site's platform slugs to GameBEX folder ids.
   - all 8 operations: consoles, types, latest, browse, search, detail, variants, resolveDownload. Each is built from request steps plus expressions (ref, html, select, text, attr, map, json, get, concat...).
3. Rules the validator enforces:
   - unknown fields are rejected
   - no cookie/authorization/host/content-length/connection/range headers
   - no regex CSS selectors (:matches... or [attr~=regex])
   - expressions nest at most 64 deep
   - the plugin never chooses file paths, folders, or volumes; GameBEX does
4. Save a few real responses as fixtures and check every operation's output against them. Iterate until the definition validates (run the runtime's DefinitionValidator via `./gradlew :source-runtime:test` or a small test).
5. Hand me the JSON file and a list of the origins it requests. I'll import it on my phone via System → Device → Game sources → Import source and review it before confirming.
Show the full promptShow less

Install GameBEX 1.0.0

GameBEX isn't on the Play Store, so you sideload the APK, which takes a few minutes.

Your phone needs

  • Android 8.0 or newer (Android 11+ recommended)
  • A 64-bit ARM phone
  • Landscape only (there's no portrait layout)
  • A controller, though touch works
  • Shizuku for the full controller setup (optional)
  1. 01Download the APK
  2. 02Allow the installAndroid asks you to allow installs from your browser or file manager.
  3. 03Grant All files accessGameBEX needs it to read your game folders.
  4. 04Add your games or a pluginPoint it at a folder, or import a plugin.
  5. 05Install emulators from SystemThe System screen lists the emulators your games need.
  6. Play
GameBEXBEX is my wife's nickname. I started GameBEX to get her into video games.

© 2026 Jeff Nash and GameBEX contributors · AGPL-3.0-or-later