Skip to content

Play online or open a local game

Start the browser player, manage controls and keep an exported copy of your progress.

5 min read Updated 28 Oct 2026

On this page

The website’s Play Online feature runs an emulator inside your browser. The current integration uses EmulatorJS and its mGBA WebAssembly core. It does not open the GBAx desktop launcher or stream a game from a remote machine. Your device still performs the emulation, while the browser supplies the display, sound, controls and storage.

This guide explains the player currently provided by the website plugin. GBAxJS is a separate planned project; it is not the name of a replacement core already running here.

Choose a catalogue game or a local file

A catalogue game can offer Play Online when its game file has been configured for browser use. A download button, when present, saves the configured file to your device; downloading the desktop application is a separate action on the Downloads page. The catalogue can also contain information-only entries without a playable file.

You do not need to wait for catalogue entries to use the local-file player. Open Play Online, start the player, and use its file picker to select a game already on your device. The plugin accepts .gba, .gb, .gbc, .zip and .7z files up to 128 MiB. An accepted extension does not guarantee that the contents are valid. If an archive fails, try a single extracted game file first.

  1. Open the player in a current browser with JavaScript and WebAssembly enabled.
  2. Start the player and select one game file. The emulator runtime may need to download on first use.
  3. Click inside the game area, check the controls menu and enable sound if the browser requires another user gesture.
  4. Create a normal in-game save when practical, then learn the player’s save-export controls before a long session.

A local file is passed to the player through a browser object URL. The plugin does not upload that selected ROM to WordPress. The page can still make network requests to load the emulator runtime and other website assets. For a catalogue game, the configured game URL must also be reachable by the browser.

Why the first launch can take longer

The player is loaded on demand inside an embedded frame. Before emulation starts, JavaScript and WebAssembly resources must load and initialise. Downloading those resources, opening the game and executing its first instruction are distinct steps. A stalled loader is therefore not automatically evidence that the game is incompatible.

The standard plugin configuration pins the EmulatorJS data directory to version 4.2.3. The site administrator can use another trusted, correctly structured data directory. Mixing a loader from one deployment with missing or mismatched runtime files can break startup even when the ROM is valid.

Controls, fullscreen and sound

Open the player’s controls/settings menu to inspect its keyboard or controller mapping. The desktop launcher’s shortcuts do not automatically apply to the embedded player. Click inside the frame before testing keyboard input, and check whether browser shortcuts or another focused element are intercepting a key.

For a controller, connect it before testing, press a button to make it visible to the browser, and then check the mapping. Support depends on the controller, browser and operating system. If navigation or sound stops after switching tabs, return to the game and interact with it again before changing several settings at once.

Fullscreen enlarges the player’s presentation; it does not change the original game resolution. Browser audio policies may prevent sound until you interact with the page. Check the player’s mute setting and the browser tab’s audio state as separate controls.

Keep a copy of your progress

Browser storage belongs to a particular browser profile and site context. Clearing site data, using private browsing or moving to a different device can make previously stored progress unavailable. It is not an account-based backup, and the plugin does not synchronise saves with the desktop launcher.

Export progress using the player’s supported save controls and keep the downloaded file somewhere you can find it. Prefer a normal cartridge save for moving between emulators, and verify that both sides expect the same format and game revision. A save state contains internal emulator data and may not transfer between different cores or versions.

The plugin gives local files and catalogue entries separate game identifiers. Opening the same game through a catalogue page and through the local-file picker may therefore use different browser save storage. A missing save in the second route does not prove that the first save was deleted. Return to the original route and export it before experimenting. See saves, states and backups for a transfer checklist.

Work out which stage failed

Symptom Check first
Player never initialises Runtime requests, content blockers and the browser console. Site administrators should check the configured EmulatorJS data URL.
Local file rejected immediately Extension, size and archive contents. Test an extracted supported game.
Catalogue game cannot load The game URL, HTTPS and cross-origin access. A normal download link working does not prove that JavaScript can read its response.
Game runs without input or sound Frame focus, mapping, mute state and browser permissions.
Progress appears missing Browser profile, private mode, cleared data and whether you changed between local-file and catalogue routes.

When reporting a browser issue, include the page URL, browser/version, device, whether the file was local or catalogue-hosted, and the stage that failed. Copy the relevant error text without sharing private file paths or game files. The troubleshooting guide includes a reproducible report format.

Sources & implementation

This guide describes the local-file and catalogue player in GBAx Website 1.2, with the default EmulatorJS 4.2.3 runtime. Browser interfaces can differ when the site administrator changes the runtime version.

Further reading: EmulatorJS documentation.

Need help with a specific problem? Start with troubleshooting →