solarus - RetroBIOS¶
Technical notes
2D action-RPG engine running quests scripted in Lua, built as libsolarus with
the solarus-run command-line player and the Qt Solarus Launcher on top. ES-DE
runs solarus-run <rom> on a single .solarus file, Batocera as solarus-run
-fullscreen=yes -cursor-visible=no -lua-console=no -quit-combo=<hotkey>+<start>
-joypad-num<n>=<index> <rom> off a bbecaf31 pin, RetroDECK ships the v2.0.3
solarus-launcher AppImage.
The quest arrives as the content argument. get_quest_path takes the last
non-option argv and otherwise falls back to SOLARUS_DEFAULT_QUEST, which
defaults to "." (MainLoop.cpp:108-121, cmake/AddOptions.cmake:8,
include/solarus/core/Common.h:119-123). open_quest mounts that path through
PhysFS directly, then tries
Startup reads one file from outside the quest. System::initialize probes SDL_GetBasePath() then SOLARUS_DATADIR_PATH for gamecontrollerdb.txt and hands whichever it finds to SDL through SDL_HINT_GAMECONTROLLERCONFIG_FILE (System.cpp:71-99). The GLSL fallbacks are raw string literals in DefaultShaders.h:57,114, and glad, hqx and snes_spc compile in from third_party/.
Files the engine writes rather than expects: settings.dat and savegames under the quest write directory named in quest.dat (Settings.cpp:149-166,240-280, Savegame.cpp:114), the write root from SDL_GetPrefPath (QuestFiles.cpp:540), and error.txt under SOLARUS_FILE_LOGGING (Logger.cpp:29-45). Batocera's 002-pad.patch adds a read of /userdata/system/configs/solarus/pads.ini, which its own generator rewrites at every launch. The editor and launcher subtrees build separately from the root CMakeLists, which adds only cli/, tests/ and third_party/, and their assets are Qt resources compiled into those binaries (editor/cmake/AddQtFiles.cmake:46-50, launcher/cmake/addTarget.cmake:30).
1 files | 0 required, 1 optional | 1 in repo, 0 missing Categories: 1 game data
gamecontrollerdb.txt optional in repo game_data
SDL gamepad mappings applied on top of the built-in table
- System: solarus
- Source:
src/core/System.cpp:71-99,cmake/AddDefines.cmake:44-49,cmake/AddInstallTargets.cmake:23-28 - Looked up next to the executable first, then under SOLARUS_DATADIR_PATH, share/solarus by default (cmake/AddInstallDirs.cmake:14). Installed from assets/gamecontrollerdb.txt when SOLARUS_GAMECONTROLLERDB_INSTALL is on, which is the default (cmake/AddOptions.cmake:51), and carried in the release archives (.gitlab-ci.yml:306). Both probes are guarded by an existence test, and neither hitting leaves SDL on its built-in mappings.
Generated on 2026-08-23T16:12:06Z