webstation-broker
DeveloperPython referenceemulatorsemulators.eden

emulators.eden.Eden

Nintendo Switch via Eden, driven by command line flags and a graceful SIGTERM.

Nintendo Switch via Eden, driven by command line flags and a graceful SIGTERM.

Eden has no external control API, so the broker patches qt-config.ini before every launch (close confirmation off) and boots fullscreen with -f -g. SIGTERM goes through Eden's Qt event loop into a normal window close, so the stop is a graceful emulation teardown; SIGINT is never used because Eden maps it to _exit(1).

There are no save states: persistence is the game's own save data under the virtual NAND, and the archive carries it together with the profile store, since Switch save paths embed the profile UUID. A resume slot is logged and ignored.

Attributes

attributename
= 'eden'

Provider key, eden.

attributedisplay_name
= 'Eden'

Human-readable name.

attributesave_root
= DATA_DIR

The data directory the save subtrees hang off.

attributesave_subtrees
= ('nand/user/save', 'nand/system/save/8000000000000010')

Game saves plus the profile store.

attributerom_extensions
= ROM_EXTENSIONS

Bootable formats, best first.

attributelog_path
= EDEN_LOG_PATH

The emulator log file.

attributeterm_timeout
= float(os.environ.get('EDEN_STOP_WAIT', '15'))

SIGTERM grace before SIGKILL (env EDEN_STOP_WAIT, default 15).

Functions

funcresolve_rom_file(self, path) -> Optional[Path]

The file Eden should boot for path.

paramself
parampathPath

A ROM file, or a folder searched up to two levels deep.

Returns

typing.Optional

The file itself, the best-ranked bootable file in the folder, or None.

funclaunch(self, rom_path, resume_slot) -> None

Patch qt-config.ini and boot the game fullscreen.

paramself
paramrom_pathPath

The file to boot.

paramresume_slotOptional[int]

Ignored with a log line; Eden has no save states.

Returns

None

On this page