Skip to main content
Installed emulators (games with source: "emulator") and console games (the ones with platform: your own ROMs, homebrew, and what was downloaded from the catalogs) are not part of the PC library. They go in Homebrew, a separate view next to the library. Since 1.4.0, the kit’s visible() already leaves them out:

The fast way: the kit view

/_sdk/kit/homebrew.js brings the whole view, with a controller, like a store: search and one tab per console along the top; what is downloading; your console games; rows of popular, new, and one per console from the catalogs (each console’s rows are requested as you get close); each game’s page with Download, its progress, Play and Delete; and your emulators (installed, configured by hand, and the ones that are missing). It repaints itself when the library changes, a session starts, or a download advances.
onExit is called with Back at the start of the view. Return false if there is nothing to do there. Your games’ cards carry data-game-id, so your usual shortcuts (favorite, properties…) still work on them.

The look

The layout changes the shapes: square covers on ps5, xbox and switch, posters on steam and cinema, pixel borders and inverted focus on retro. The colors are your theme’s, with these variables on .hb-view: Moneda passes layout: "moneda". That layout opens the game as a full page (is-page) instead of a side sheet.

The catalogs

Each entry carries title, coverUrl (served by ejGames), platform (the catalog’s) and system (the one for game.platform), size, region, installedGameId if it is already in the library, and emulator (what would play it). download only accepts a link from the page: direct links go to the queue (they download, extract and land in the library: "queued"), a download website opens in the browser ("opened") and a torrent opens the catalogs window ("catalogs"). To delete a console game, ejg.game.uninstall(id): the host confirms and sends its files to the recycle bin.

The store’s emulators

platforms are the same ids as game.platform (switch, ps2, psx…) and systems are their names. gameId is its library entry (for ejg.game.launch) if it is installed, and update says whether a newer version exists. The first call of the session asks their websites for versions. To install or update them, open the host store with ejg.ui.open("software"). Import ROMs with ejg.ui.open("rom-import").