Sphinx and the Cursed Mummy Wiki
Advertisement

This is a list of all the documented launch arguments and settings for power users. Keep in mind that -dev mode was added during the 2018-03-28 update[1], and more options were added after that, see the official changelog for the authoritative list[2].

Command-line arguments[]

The PC version of the game supports the following launch parameters:

  • -dev: Enables most of the development functionality and cheats, while also disabling achievements. It always has to be the first parameter in order for it to work. Combine it with Sphinx.ini to unlock most of the options.
    • It mainly unlocks the global right-click menu that contains the level selector and lets you open other windows like the Watcher, and access cheat options.
  • -mod <path>: Same behavior as the PCMod configuration key, but temporary. The folder must contain a BuildData/Filelist.bin. The game will load the original filelist; merging it with the one from the mod, always preferring to load files from the latter when in doubt. So it works as a virtual file system overlay of sorts on top of the assets of the base game. It can be used in a shortcut, so multiple shortcuts will launch multiple mods without having to change any settings. Ensure you quote the path to avoid problems with spaces.
    • Example: During development you can use -mod "X:\Sphinx\Binary\_bin_PC".
  • -level <hashcode>: Same behavior as the PCReplaceFrontEnd configuration key, but temporary. If set to 1 it will use the Level value of [InitialLevel] instead. Requires either -dev or -mod (or both) for it to work. Added in the 2019-08-28 update.
    • Example: To always load HT_File_urk_4pat you can use -dev -level 0x01000233.
  • -slot <zero-based-slot-index>: Same behavior as the PCLoadSaveSlot configuration key, but temporary. Loads a saved slot directly at launch. The first slot is index 0, followed by 1 and 2. Requires either -dev or -mod (or both) for it to work. Not public, yet.
  • viewer: Launches the in-game .EDB asset viewer, same as toggling it via the right-click menu in -dev mode, but temporary. This is the only original argument added by Eurocom that the older versions of the game supported, and it partially works on GameCube via cheat code[3], albeit without mouse support.
  • -sdataheap <memory-size-in-bytes> and -ldataheap <memory-size-in-bytes>: By default the game only uses two small and fixed blocks of RAM to store everything; the PC version only allocates 80 MiB (0x5000000) on startup for the default/«small» heap (where most of the game state is stored) and 100 MiB (0x6400000) for the «large» data heap (where the loaded .EDB file parts are kept). Added in March 2023.
    • The memory heap sizes and usage % at any given moment can be viewed from the Debug > Resources window.
    • Changing these numbers allows modders to make space for more complex and dense textures and level data than what is normally possible by engine limitations.
    • While these numbers may seem silly now, 80/100 MiB is already a big step up over the 4/14 MiB on GameCube, the 6/40 MiB on Xbox and the 4/22 MiB on PS2, as used by the original versions. Just to put hardware advancements in context.
  • -lang <iso-639-1-language-code>: Enforce a particular language, when possible. e.g. -lang es, for Spanish. See the [Localization] Language configuration key from Sphinx.ini below for the full table, this argument overrides that INI option and any other.
    • Unlike in the INI file, the original language numbers (e.g. -lang 5 instead of -lang es) don't work here.
    • If the requested language isn't part of the files, it will generally fall back to English.
    • Using -lang system will force the game to auto-select the closest one matching the operating system, no matter what's currently enforced via Steam. i.e. You want to play in Ukrainian, but on Steam you can only select English; using this it will let you play if your OS is set to that.
    • -lang auto is like not using the argument at all, and the game will try to choose, or use, whatever is currently being set by other means.
    • The priority, from lowest to highest, and how the different methods override each other, goes as follows; first via the OS language, then via Steam, then by looking at the the Sphinx.ini configuration file, and finally, the one who always has the final say, is this -lang command-line argument.

Configuration file (Sphinx.ini)[]

Sphinx.ini is the main configuration file of the game. It is pretty flexible and supports a lot of different keys, especially when combined with -dev mode. The most commonly used configuration keys for modding and unlocking most of the debug functionality are listed below as a good start point:

[Debug]
ScanMode=1
AllowGamePause=1
KeyboardOptions=1

[RenderMode]
PresentMode=Windowed
InputGrabbed=0

[Control]
TutorialPrompts=0

[InitialLevel]
PCReplaceFrontEnd=1

[BootState]
PCBootToViewer=0

Location of the configuration file[]

Depending on your operating system your Sphinx.ini will be stored in the following per-user folders:

  • Windows: %appdata%\Sphinx\Sphinx.ini (e.g. C:\Users\<user-name>\AppData\Roaming\Sphinx\)
  • macOS: ~/Library/Application Support/Sphinx/Sphinx.ini
  • Linux: ~/.local/share/Sphinx/Sphinx.ini
Note: Keep in mind that there is also a Sphinx.ini in the game's root folder, but it is only there for reference and is not loaded directly by the game.

List of documented configuration keys and values[]

Key Default value

Valid values

Description
BootState
PCBootToViewer 0 0 or 1 Bring ups the in-game .EDB asset viewer mode. Same as toggling it from the right-click menu.
PCMod (empty) folder path Forces the game to launch in mod mode, in this mode the special folder overrides any files from the base game. Same as specifying the -mod <path> command-line parameter, but persistent.
Localization
Language -1
-1 None auto
0 English en
US English en-GB
1 UK English en-US
2 French fr
3 German de
4 Italian it
5 Spanish es
6 Portuguese pt
7 Korean ko
8 Japanese ja
9 Greek el
10 Dutch nl
11 Danish da
12 Norwegian no
13 Swedish sv
14 Finnish fi
15 Russian ru
16 Trad. Chinese zh-Hant
17 Simpl. Chinese zh-Hans
18 Czech cz
19 Polish pl
20 Canadian French fr-CA
21 Latin Spanish es-419
22 Hungarian hu
23 Brazilian pt-BR
24 Turkish tr
25 Arabic ar
26 Romanian ro
27 Thai th
28 Vietnamese vi
29 Indonesian id
30 Latvian lv
31 Bulgarian bg
32 Ukrainian uk
If this configuration key is set to none (-1) then the language set in Steam has priority over the platform language, if everything else fails the game will use the default system language.

The game filters the languages to those available in the compiled version. At the time of writing Sphinx supports English, French, German, Italian, Spanish and Korean.

In newer versions you can use the language's ISO 639-1 code. i.e. Language=cz instead of Language=18, which is much easier to use. You can also use Language=system to let the game auto-select, ignoring whatever option may be enforced via Steam game properties.

Same as specifying the -lang <iso-639-1-language-code> command-line parameter, but persistent.

Debug
ScanMode 0 0 or 1 Scan mode is the equivalent to noclip mode in other games. To enable scan mode in-game you press the right analog stick/C keyboard key, the player can then move freely and fly through objects. To move vertically use the Y/A Xbox controller buttons (top and bottom, basically) or Esc/Spacebar if you are using keyboard. Press the enable button again to toggle it back. It only works in -dev mode.
AllowGamePause 0 0 or 1 Allows you to toggle the game pause, frame advance and slow down modes by using the Scroll Lock and Pause keyboard keys; see this Steam thread for more information. It only works in -dev mode.
KeyboardOptions 0 0 or 1 Enables the following keyboard debug shortcuts. It only works while in -dev mode:
  • Ctrl + Shift + M: Reloads the current map.
  • Ctrl + Shift + N: Toggle trigger markers on and off.
  • Ctrl + Shift + D: Toggle trigger radius on and off.
  • Ctrl + Shift + G: Toggle god mode on and off.
  • Ctrl + Shift + I: Toggle the AlwaysHasItem cheat on/off.
  • Ctrl + 1-5 as configurable quick ways of loading a particular map; assign the current map to any key with Ctrl + Alt + 1-5 first.
OpenGLContext 0 0 or 1 Enable OpenGL validation, request a debug context and GL_KHR_debug.
LogLev -1 0, any Sets the verbosity of the game log traces, which are sorted by priority. On Windows the game prints to DebugView, while on macOS and Linux it uses stderr. Added by Eurocom.
RichPresence 1 0 or 1 Setting it to zero disables the rich presence integration for Discord/Steam Friends without necessarily disabling achievements, in case it causes slowdowns or frame-pacing issues (e.g. on macOS). Or just due to privacy reasons.
Control
InvertFirstPersonVertical 0 0 or 1
InvertThirdPersonVertical 1 0 or 1
InvertThirdPersonHorizontal 1 0 or 1
PadRumble 1 0 or 1 Enable force feedback.
TutorialPrompts 1 0 or 1 Has direct gameplay consequences. Disables most of the help tooltips and explanations that can be freely ignored by advanced users. It uses a hardcoded blacklist of hashcodes.
DeadZoneLow 0.22 Range from 0.0 to 1.0 Adjustment of the analog stick dead zone, clips any input outside of this range, tightening the range might help when there is phantom input, wear or stick drift. Especially the low part (inner ring, rest position) the high part (outer ring, maximum extent) is less prone to this.
DeadZoneHigh 0.90 Range from 0.0 to 1.0
WatcherItems
Display-FOV 64 20, 110 Field of view, in degrees. Limit is only enforced at startup on Nintendo Switch or while using the GUI.
Audio
Reverb 1 0 or 1 Enables the echo effects.
MusicVolume 75 0, 100
SfxVolume 100 0, 100
RenderMode
InputGrabbed 1 0 or 1 Restrict the cursor to the game window area. Enabled by default.
Display 0 0, any Select the index of the screen to use. First screen starts at zero.
PresentMode Borderless

Fullscreen

Borderless

Windowed

Setting it to window mode will cause the game to pick a size slightly smaller than the work area rectangle by default.
FBWidth (desktop width) 1, any Force the framebuffer width in pixels. Also useful to force a specific window size.
FBHeight (desktop height) 1, any Force the framebuffer height in pixels. Also useful to force a specific window size.
MinFrameRate 30 1, 240 Override the minimum and maximum framerate; this is not officially supported and, while improved, causes certain gameplay and physics or collision bugs. Some things are too fast and others too slow.
MaxFrameRate 60 1, 240
PixelScalingFactor 1.0 Generally from 0.5 to 2.0 Override the DPI screen detection, allows to scale all the 2D elements. Mainly HiDPI or Retina-style screens, where the default 100% scaling makes everything look tiny.


E.g: Here 100% is 1.0 and 200% is 2.0.

VideoFrameRate Mostly 60 60, 30, 20, 15, ... This can be used to override the display's refresh rate and make the game render at less than 60 Hz, like 30 Hz, 20 Hz, 15 Hz, or even less. So if you put a 30 there it will only render every other frame, improving performance by virtue of having half of the workload (and twice as much time allowance) to draw stuff, at the cost of looking slightly choppier.

To make the game run at more than 60 Hz see the MaxFrameRate option above. This will only reduce it.

If your screen runs at 30 Hz this should be detected and applied automatically, in theory.

Graphics
Vsync 2 0 = Off

1 = Adaptive

2 = On

Use adaptive v-sync to reduce screen tearing.
UseFramebuffer 1 0 or 1 By default the game creates its own framebuffer objects to draw the scene and then blits/resolves into the default framebuffer at the end of the frame. When setting this to zero the game will draw directly in the default framebuffer and MSAA won't work unless forced by the graphics card vendor panel.
MSAASamples varies 1, max supported Set the number of samples for multisample antialiasing. Setting it to one is the same as disabling it.
AnisotropyTaps varies 1, max supported Amount of anisotropic filtering.
SoftParticles varies 0 or 1 Masks the borders of flat, translucent elements that cut against solid geometry. Adding a volumetric effect.
LimitParticles varies 0 = unlimited

1 = limited

2 = all, no particles

Reduce the amount of slowdowns when the graphics card is struggling with the huge amount of pixel fill-rate caused by many layers of transparent objects when they cover most of the screen.
UsePlayStationButtonPrompts 0 0 or 1 Show the original PS2 on-screen button prompts instead of the Xbox button layout.
TextHudObjScaling 1.3 0.1, any Scale several HUD elements like dialog text and Ankh markers. Works independently and in a more limited way than PixelScalingFactor, which works with every screen element. This one is to optionally fine-tune and tweak the HUD on top of the other value. It also predates it.
ShadowMapSize 8192 1, any Width and height of the square texture used to store the projected shadow depth image. The more detailed, the less blocky the they will look. As graphics cards work in sizes that are powers of two it's recommended to use something like 1024 texels instead of random numbers like 1013 to avoid wasted memory/padded out space. Unless you like the look.
DynResScaleX 1.0 0.1 - 4.0 Reduces the internal render resolution of the 3D gameplay (e.g. to half the rate in each direction with 0.5) without affecting the HUD, or reducing the readability of the interface, which will still be rendered at full resolution (1.0) no matter what. This may allow running the game on very under-powered computers when setting these to very low values, like 0.4 for 40%, at the cost of worsening and pixelating the image quality.
DynResScaleY
InitialLevel
PCLevel varies hashcode in decimal Persistently stores the last loaded level during normal gameplay. Replaces the value of the front-end .EDB file, in theory. Could be used to launch the game and jump straight to a level when coupled with the option below. Added by Eurocom.
PCReplaceFrontEnd 0 0 or 1 or a hashcode When set to 1 the game will boot with the last loaded level, see above. If a fixed map hashcode is used instead it will load it. Same as specifying -level <hashcode> at launch time.
PCLoadSaveSlot -1 0, 1, 2 Loads a save game slot directly at start up. Same as specifying -slot <slot-index> at launch time.


As a bit of an Easter egg, 3 (which should normally be invalid) can be used to always start a new game without a predefined slot. The first time the user asks it lets you select which one you want to overwrite. Remember that the third slot of the list you see is index 2. They go from zero to two.

PCQuickLevelJump1 -1 a level hashcode Storage for each Ctrl + 1 (up to 5) quick-load shortcut. It only works in -dev mode with KeyboardOptions set to 1. Added in the 2019-08-28 update.


Note: Other than typing the numbers manually, you can also set/assign/overwrite the map of each slot by pressing Ctrl + Shift + 1 (up to 5) to overwrite that slot with the current map's hashcode.

PCQuickLevelJump2
PCQuickLevelJump3
PCQuickLevelJump4
PCQuickLevelJump5
PCKeyboardMap
IgnoreGamepadInput 0 0 or 1 When set to 1 the game only responds to keyboard input and ignores game controllers altogether, useful to create virtual keyboard → gamepad layouts with Xpadder or similar software. As requested.
SDL_CONTROLLER_BUTTON_A Spacebar See this forum thread for a full rundown of remapping keys.
SDL_CONTROLLER_BUTTON_B F
SDL_CONTROLLER_BUTTON_X Tab
SDL_CONTROLLER_BUTTON_Y Esc
SDL_CONTROLLER_BUTTON_BACK Backspace
SDL_CONTROLLER_BUTTON_GUIDE (empty)
SDL_CONTROLLER_BUTTON_START Enter
SDL_CONTROLLER_BUTTON_LEFTSTICK Z
SDL_CONTROLLER_BUTTON_RIGHTSTICK C
SDL_CONTROLLER_BUTTON_LEFTSHOULDER Q
SDL_CONTROLLER_BUTTON_RIGHTSHOULDER E
SDL_CONTROLLER_BUTTON_DPAD_UP Up
SDL_CONTROLLER_BUTTON_DPAD_DOWN Down
SDL_CONTROLLER_BUTTON_DPAD_LEFT Left
SDL_CONTROLLER_BUTTON_DPAD_RIGHT Right

References[]

Advertisement