Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

SYSTEM.INI

Primary engine configuration file controlling rendering, gameplay, camera, dialog, debug, and 3D subsystem parameters.

Shipped sample path: /Redguard/SYSTEM.INI (e.g. .../GOG Galaxy/Redguard/Redguard/SYSTEM.INI).

Settings use key=value records grouped by section. Semicolons introduce comments. Switches use 0/1, no/yes, off/on, or false/true. Most numeric fields contain decimal integers, including negative position offsets and thresholds. Camera glide factors and cam_prox_up contain decimal floating-point values. The [3dfx] scale and font-color settings contain comma-separated integer pairs.

The integer configuration reader maps true, yes, and on to 1, and false, no, and off to 0. Missing or empty values produce 0. Other values use signed decimal conversion; numeric values are not normalized to booleans. In particular, [debug] disable_family clears actor family links only when its value is exactly 1. See actor initialization.

The descriptions below describe the Glide executable, RGFX.EXE. Several keys in the shipped file are never read by it, and several are read but have no effect. Those keys are marked Not read and No effect. A few keys the engine reads are absent from the shipped file; they are listed at the end of their section with the behavior of the missing value.

Map, world, and model distances are in engine world units. Angles use 2048 units per full turn. “Q8” values are world units multiplied by 256. “Ticks” are nominal game ticks; see frame scale.

File Structure

Standard Windows-style INI file with 10 sections:

  1. [screen] — display and movie settings
  2. [system] — core engine paths, audio, physics, object pools, and HUD layout
  3. [debug] — developer diagnostics and logging flags
  4. [game] — falls, slides, ropes, and interaction distances
  5. [cyrus] — player turning and input parameters
  6. [3dmanager] — 3D object cache and memory budget
  7. [xngine] — clipping planes, ambient light, and sky switch
  8. [camera] — camera rig offsets, distances, and glide factors for each mode
  9. [dialog] — dialogue menu layout, subtitles, and speech settings
  10. [3dfx] — Glide resolution, texture reduction, and text colors

[screen]

KeyDefault ValueDescription
candle_mode2Candle HUD visibility: 0 = only while the show timer runs, 1 = always, 2 = always with the health number. Any other nonzero value behaves as 1. F8 cycles 0→1→2 and writes the value back. See candle.
colour_bits8Not read.
resolution1Software-renderer mode index (0/3/4 = 320×200, 1 = 640×480, 2 = 320×400; out-of-range values become 0). It does not change the display in the Glide executable, whose display mode comes from [3dfx] resolution.
Palette_red0No effect. Palette brightness offset of the software renderer’s Gamma option; the Glide executable never creates that option.
Palette_green0Not read. Written only by the software renderer’s Gamma option.
Palette_blue0Not read. Written only by the software renderer’s Gamma option.
smk_interlace0Movie interlace effect: nonzero draws a black line over every odd output scanline of each movie frame. 0 = off. The menu’s interlace option toggles it. See movies.

Keys read but absent from the shipped file: use_uvblib, linear_copy_mode, and linear_interlace. All three have no effect.


[system]

world_ini and item_ini point to WORLD.INI and ITEM.INI respectively, which the engine loads for world and item definitions.

Files and fonts

KeyDefault ValueDescription
game_bitmapsystem\powerup.gxaGXA for the two HUD power-up slots (frame 0 gauntlet, frame 1 shield). The path is stored in save games and restored when one is loaded.
pointerssystem\pointers.bmpCursor GXA bitmap archive, stored with a BMP extension. A pixel of color index 16 marks each cursor’s hotspot. Loaded only by a developer mode enabled from the command line.
system_fontfonts\redguard.fntNot read.
icon_fontfonts\arialvs.fntNot read.
gui_fontfonts\arialbg.fntNot read.
gui_low_fontfonts\arialvb.fntFont loaded at startup as font-table entries 1 and 2 (see reader style table). A missing file stops startup.
animation_driveD:\CD drive path. Movie filenames are prefixed with it (a \ is added when missing), and its first letter selects the drive opened for CD music. Without it, movies load from the bare filename and no CD music plays.
back_texture0Not read.
rtx_filenameENGLISH.RTXRTX dialogue file (voice and text). Without it, the first dialogue line stops the game with an error.
world_iniWORLD.INIINI file holding the [world] section (WORLD.INI). Absent means SYSTEM.INI.
item_iniITEM.INIINI file holding the [ITEMS] section (ITEM.INI). Absent means SYSTEM.INI.

Sound and music

KeyDefault ValueDescription
volume255Master sound-effect volume: every sample volume is scaled by volume / 256. Missing means silence. The menu Sound slider sets it.
sound1Enables sound. 0 skips sound startup entirely: no effects, voices, or CD music, and subtitles are forced on with speech off. The nosound command-line option also disables it.
fast_sound1Miles Sound System mixer timing. Nonzero keeps the Miles defaults: a 100 ms mixing buffer, mixer serviced at 200 Hz, interrupts enabled while mixing. 0 halves the buffer to 50 ms, services the mixer at 250 Hz, and disables interrupts while it mixes. Output is 22050 Hz 16-bit stereo either way.
fidelity0Load-time quality reduction for sound effects and voice clips. See Sound fidelity.
redbookonEnables CD music. Requires sound on and animation_drive naming the CD drive.
redbook_volume200CD music volume, clamped to 0–255 and halved to the Miles 0–127 range; the shipped 200 plays at 100 of 127. Applied when each CD track starts. The menu Music slider sets it. See music volume.
sound_distance64Sound radius: sound_distance × 36 world units (shipped 2304); see positional sound. Values of 3 or less make the divisor zero.

Sound fidelity

fidelity converts every sample as it loads, both the MAIN.SFX effect bank and RTX voice clips. Conversion keeps every other sample frame to halve the rate and keeps the high byte to turn 16-bit samples into 8-bit ones. No filtering is applied.

Value16-bit stereo16-bit mono8-bit stereo8-bit mono
0unchangedunchangedunchangedunchanged
1half ratehalf rateunchangedunchanged
28-bit stereo8-bit monounchangedunchanged
38-bit stereo, half rate8-bit mono, half ratehalf ratehalf rate
48-bit mono (left channel), half rate8-bit mono, half ratemono (left channel), half ratehalf rate

Other values leave samples unchanged. Halving the rate turns a 22050 Hz sample into 11025 Hz and an 11025 Hz sample into 5512 Hz.

Frame rate and movement physics

KeyDefault ValueDescription
normal_frame_rate12Nominal game tick rate. The per-frame scale is normal_frame_rate × 256 / fps, so game time advances normal_frame_rate ticks per second regardless of frame rate. 0 means 12. See frame scale.
use_smooth_fpsyesWhen on, the frame scale uses a smoothed FPS value instead of the raw measured FPS. Each update moves the smoothed value one step toward the measured value, or half the difference for gaps of 5 or more.
use_smooth_divisoryesWhen on, the frame scale steps toward its new target over several frames instead of jumping to it.
min_frame_rate6Lowest FPS used in the frame-scale division. Below this rate game time slows down rather than taking larger steps; the shipped value caps each frame at two nominal ticks.
max_frame_rate300Highest FPS used in the frame-scale division. It does not cap rendering: above this rate each frame still advances by the step for max_frame_rate, so game time runs faster than real time. 0 means 36.
jump_time6Default for actor attribute attr_jump_time when the actor’s value is zero or negative (low byte used). Values below 1 mean 6.
jump_height80Default for actor attribute attr_jump_height when the actor’s value is zero. The engine stores bits 8–15 of this value, so the shipped 80 (and the fallback 80 for values below 1) leaves the attribute at zero.
post_collide_height50Vertical probe height in map units for actor collision: forward-obstacle probes, step and support checks, body-shape sphere layout, and the falling-speed limit. See player movement.
hpost_collide_height50No effect.
pre_validatenoWhen on, actors outside living states 27–32 skip the forward obstacle probes during movement sub-steps while the measured frame rate is at least 6.
sphere_object_scale256Collision-size scale in 1/256 units, applied at load to static-model X/Z bounds and actor collision-sphere radii (radius minimum 1). 256 leaves sizes unchanged; values below 1 mean 256.
standing_height-2Vertical offset in map units added when an actor is placed on ground support or a ledge. The shipped -2 sinks actors two units into their support.
slide_range-60000Wall-slide threshold for the dot product of the normalized movement and the contact normal. Contacts above it slide along the wall; at or below it the actor stops. See body-contact response.
floating_point_physicsyesNo effect.

Map loading and engine subsystems

KeyDefault ValueDescription
statics_loadyesWhen off, map loading skips MPSO static objects.
flats_loadyesWhen off, map loading skips MPSF flat objects.
objects_loadyesWhen off, map loading skips all MPOB records: actors, markers, and object local lights.
lights_loadyesWhen off, map loading skips MPSL light records.
ropes_loadyesWhen off, map loading builds no MPRP ropes.
task_systemyesInitial value of the task cheat: on runs actor entry, task, and main script stages. See cheats and SOUP update gates.
animation_systemyesInitial value of the animation cheat: on runs actor animation playback and animation-gated combat timing. See cheats.
start_fadeonWhether the first world entered at startup without the book menu (first run with no autosave) fades the loading screen out and the world in from black. 0 cuts directly. Later world loads always fade.
max_active_objects32Reusable actor-pool capacity, clamped to at least 10.
max_effects32Capacity of the environmental effect pool. Negative values become 0; 0 disables the pool.
max_particles512Capacity of the particle array used by ScriptParticles. 0 or negative disables particles.
max_remap_objects64Capacity of the list of moved actors waiting to be re-filed in the map grid (console show remap), clamped to at least 32. Exceeding it raises runtime error 196.
disable_effectsnoWhen on, the environmental effect pool is not created.

Text and startup checks

KeyDefault ValueDescription
disable_textyesInitial state of the engine’s formatted-text suppression flag. While set, diagnostic text printers draw nothing. Menus, loading progress, and other screens clear the flag around their own text, and HUD prompts and subtitles ignore it.
disable_debug_textyesInitial state of queued debug-text suppression. The shipped yes hides queued debug text.
normal_ink1No effect.
lock_windowsnoNot read.
disable_drive_checkyesWhen off, startup enumerates drive letters for the console show machine report. It does not gate startup. The nodrive command-line option forces it on.
disable_cpu_checkyesWhen off, startup detects the CPU type for the show machine report. It does not gate startup. The nocpu option forces it on.
disable_svga_checkyesWhen off, startup identifies the SVGA chipset for the show machine report; otherwise the report shows “SVGA TEST DISABLED”. The nosvga option forces it on.
report_machinenoWhen on, startup runs the console command show machine. The console opens for it only when disable_debug_text is off.

HUD layout

KeyDefault ValueDescription
compass_xco546Compass top-left X.
compass_yco396Compass top-left Y.
candle_xco12Candle top-left X.
candle_yco8Candle top-left Y.
logbook_xco540Logbook icon top-left X.
logbook_yco20Logbook icon top-left Y.
pickup_xco12Active item icon top-left X, and start X of the prompt text.
pickup_yco386Active item icon top-left Y.
pickup_text_yco436Top Y of the HUD prompt text line.
game_xco1576Power-up slot 1 X.
game_yco16Power-up slot 1 Y.
game_xco2576Power-up slot 2 X.
game_yco296Power-up slot 2 Y.

Key read but absent from the shipped file: archive_file_first. 1 opens a loose file in preference to an archived copy; 0 (the missing value) searches .ZAP archives first and falls back to the loose file. It has no effect on an install without .ZAP archives.


[debug]

Developer diagnostics, logging, and display flags. Most are disabled in the shipped build.

KeyDefault ValueDescription
final_version1Selects release behavior. 0 selects developer mode, which also enables the queued developer text used by other [debug] displays. See Developer mode.
enable_logs0Log output level. 0 writes no logs, 1 appends engine messages to *.LOG files in the game directory, 2–3 echo them to the console only, and 4–5 do both; 3 and 5 also open the console at startup. A fatal error switches logging to 1.
map_lognoNo effect.
console_erroryes1 prints the fatal-error report in the in-game console before the game shuts down. Any other value leaves only the report printed after exit.
software_interruptyesEnables the engine’s debug-break checks during logging and input waits: a developer key combination triggers a debugger breakpoint, and a pending break request ends or interrupts the session. Required by software_break.
software_breakyes1 lets a break request from the keyboard handler exit the game during startup, before the first world starts. The engine clears it when gameplay begins.
attempt_recovernoNonzero makes fatal errors non-fatal: the engine shows the error report in the console and keeps running instead of exiting. Also forces console_error on.
object_logno1 restarts OBJECT.LOG each time a world loop begins. Requires nonzero enable_logs.
video_lognoNot read.
node_markernoInitial value of the nodemarker cheat slot, which has no effect. See cheats.
task_debugnoNonzero turns invalid script operations (unknown opcodes, out-of-range function numbers, failed lookups) into fatal errors; 1 also range-checks property access by index.
memory_manager0Heap-tracking mode. 0 is off, 1 counts allocated bytes, and 2 or higher also records each block so that freeing an unknown pointer is a fatal error. Nonzero modes add memory statistics to error reports.
monitor_object(empty)Name of an actor to monitor. The matching actor is selected for the console’s per-frame animation-state readout and for fatal-error reports.
display_mastersnoNo effect.
display_slavesnoNo effect.
display_edgesnoNonzero prints the player’s ledge-detection candidates and results as developer text. Visible only in developer mode.
ignore_errorsyesNo effect. The ie command-line option sets the same unused value.
disable_familyno1 clears every actor’s master/slave attributes at creation. Any nonzero value also skips building the world’s family tree at world load.
disable_master_slavesnoNonzero excludes actors that are both master and slave from object updates.
disable_slavesnoNonzero excludes slave actors that are not also masters from object updates.
family_logno1 writes each world’s actor family tree to FAMILY.LOG at world load. Requires nonzero enable_logs and disable_family=0.
script_lognoNo effect. The console log command writes SCRIPT.LOG.
show_managernoNo effect.
display_node_mapnoNonzero draws a marker sprite above every navigation node of the loaded node maps.
display_nodesnoNonzero draws marker sprites at each navigating actor’s movement target and current navigation node.
display_markersnoNonzero draws a marker sprite at every enabled world marker (RGM MPMK).
network_marker_fileg:\PROJECTS\REDGUARD\DEMO\NETWORK.MRKNo effect. The shipped value is a leftover developer path.
object_system_lognoNo effect.
convert_static_anglesnoNonzero forces [3dmanager] dummy_manager on. It performs no angle conversion.
def_checksumyesNonzero makes world loading require the RGM’s stored SOUP386.DEF checksum (the byte sum of the file) to match the installed SOUP386.DEF; a mismatch is a fatal error.
render_lognoNonzero logs the draw list of one rendered frame, then switches itself off. Works regardless of enable_logs.
idebug0Nonzero sends log output to a remote network monitor session instead of log files.
idebug_refreshnoWith idebug, nonzero makes each log message wait for the remote monitor to acknowledge it.
memory_monitornoNonzero shows an on-screen free-memory readout and a scrolling graph of heap usage changes. It also forces on-screen text on.

Key read but absent from the shipped file: camera_log. Nonzero restarts CAMERA.LOG when the camera system starts, if enable_logs is nonzero. No camera messages are written to it.


[game]

KeyDefault ValueDescription
fall_bounce_height100Minimum fall distance in map units before a falling actor that overlaps an actor with nonzero attr_bounce_power tries to land on it. Shorter falls use the ordinary overlap response.
fall_death_height568Fall distance in map units above which landing is fatal (health change -256). Landings on surfaces 1 through 4 count as zero distance.
fall_hurt_height300Fall distance in map units above which landing hurts: animation group 73 and a health change of -fall_hurt_zap.
fall_hurt_zap10Health removed by a landing that exceeds fall_hurt_height but not fall_death_height.
slide_hurt_height1024Accumulated slide distance in map units above which ending a slide hurts the actor (knock-back, group 73, -slide_hurt_zap health).
slide_hurt_zap10Health removed when a slide longer than slide_hurt_height ends.
rope_jump_add18Base speed of a jump off a rope, in map units. A swinging rope adds its node speed on top.
rope_attach_angle512Largest heading difference at which the player can grab a directional rope; masked to 0–1023, and 0 means 256.
slide_speed36Slope-slide speed: each update moves slide_speed / 2 map units at nominal frame scale. Values below 8 become 8.
rtx_pickup_override_time24Ticks for which holding the previous/next item key suppresses an activation prompt and shows the item icon.
swim_depth40Model Y offset in map units for animation groups 141 through 143 on the non-inhibited surface-2/3/4 model-position path. Zero is replaced with 40.
player_dead_time3No effect.
player_fall_dead_time12Falling-death timeout input. Clamped to at least 3, then multiplied by 12 nominal ticks; the world loop exits only after the elapsed value exceeds that limit.
old_combatoffNot read.
lineup_distance128Distance in map units at which PlayerLineUp switches from walking the player toward the target to aligning in place.
dialog_radius512Player-proximity radius in map units for walk-route navigation: while the exclusion switch is on, route nodes closer than this to the player are not used.
combat_sphere_scale200Radius scale in 1/256 units for the secondary (fighting) collision shape: each sphere radius becomes the larger of two opposite bounds extents times this value divided by 256. 0 means 230.

[cyrus]

KeyDefault ValueDescription
sheath_sword_delay6No effect. Read at startup (0 becomes 6) but not used.
auto_defend1No effect on combat. F7 toggles the value, shows the RTX line AUTO-DEFEND MODE ON or AUTO-DEFEND MODE OFF (#don/#dof), and writes it back to this file.
walk_mode0No effect on movement. Tab toggles the value, shows the RTX line WALK MODE ON or WALK MODE OFF (#won/#wof), and writes it back to this file.
turn_speed12Turn acceleration: added to the held-direction turn rate each input update while the rate is below turn_max_speed.
turn_max_speed48Turn rate limit in heading units per update at nominal frame scale. Acceleration stops once the rate reaches it.
mouse_turn0Nonzero enables mouse turning: horizontal mouse motion plays the turn animation groups (14/15, or 16/17 with a burning torch). Only the low byte is used.
joy_tolerance60Joystick dead zone: an axis registers as left/right/up/down only when its reading is more than this many units from the calibrated center.
camera_distance200Not read. The camera uses [camera] camera_distance.
tap_time12Multi-tap window: a press counts as a repeated tap only when it follows a release within this many updates at nominal frame scale (minimum 6). 0 means 3.
poly_push_units16Minimum separation distance in map units used when pushing an actor out of face geometry. Values below 4 become 4.
auto_graboff1/on makes the forward-obstacle response try the ledge-grab path automatically; any other value disables it.
smooth_post_min2No effect.
smooth_post_max10No effect.
smooth_post_divisor2No effect.

[3dmanager]

KeyDefault ValueDescription
buffer_kbytes8003D manager workspace size in kilobytes as shown in the developer console. No allocation uses it. Values below 100 become 100.
heap_kbytes220003D object manager heap size in kilobytes. Values below 500 become 500.
max_objects255Number of 3D object slots in the object manager and its cache table. Values below 10 become 10.
compress1Not read.
save_compressed0Not read.
cache_objectsyesWhen on, loaded 3D objects stay in a slot cache until they have been unused for cache_lifetime main-loop iterations. Off disables the cache.
cache_lifetime64Number of main-loop iterations an unused cached 3D object is kept before it is released.
dummy_manager01 replaces the 3D object manager with a stub that loads no model data. The dm command-line option forces it on.
in_view_enabledyesNo effect.
shutdown_modeyesNot read.

[xngine]

KeyDefault ValueDescription
texture_kbytes12000No effect. Shown only in the developer console header as the texture heap size.
gfx_kbytes256No effect.
front_plane7Near clipping distance of the scene. See fog and clipping.
back_plane3800Far clipping distance of the scene; a nonzero world_back_plane[N] replaces it for that world. See fog and clipping.
perspective_low_x … perspective_ultra_y190–800Not read. All eight perspective_* keys.
detail8No effect.
ambient_light32No effect. Initial environmental-effect brightness, replaced by world_ambientfx[N] on every world load.
screen_scale256No effect. Shown only by the console show xngine report.
haze_depth768No effect. Scene fog comes from FOG.INI.
sky_disable01 disables the sky in every world; any other value leaves it enabled.
sky_move1No effect.
sky_xrotate3No effect.
sky_yrotate40No effect.
game_detail2No effect. Shown only by the console show xngine report.
exclusion0Not read.

[camera]

Camera rig configuration for the normal, combat, hanging, rope, and debug cameras. Each camera orbits a pivot point near the player at its own distance and angles. See the camera sections of SOUP for the runtime behavior.

Pivot, target, and normal camera

KeyDefault ValueDescription
target_offset_x / _y / _z-6000 / -14000 / 0Camera target point relative to the player, in Q8 units in the player’s rotated frame. It is the look-at point and the start of the camera’s obstacle test. Applies to the normal and combat cameras; the normal camera uses only Y.
offset_pos_x / _y / _z0 / -14000 / 0Camera pivot offset from the player in Q8 units, rotated with the player. The camera sits distance behind this point; the shipped Y puts it about 55 units above the player origin.
offset_angle_x / _y / _z0 / 0 / 0Normal camera orbit angles (pitch, yaw, roll) relative to the player. 0 places the camera straight behind the player.
camera_distance250Normal camera distance behind the pivot, in world units.
camera_min_distance120When an obstacle pulls the normal or combat camera closer than this, the camera rises so that its height above the player scales by the ratio of minimum to actual distance.
camera_left_pos / camera_right_pos5000 / 5000No effect.

Mode cameras

All angle triples are pitch, yaw, and roll.

KeyDefault ValueDescription
camera_combat_angle_offset_x / _y / _z134 / 245 / 0Combat camera orbit angles relative to the player, used while the player holds a weapon.
camera_combat_distance260Combat camera distance in world units.
camera_hang_angle_offset_x / _y / _z256 / 0 / 0Hanging (ledge) camera orbit angles relative to the player.
camera_hang_distance250Hanging camera distance in world units.
static_rope_threshold5Ropes whose maximum swing amplitude (MPRP swing) is below this value are static. On a static rope the camera uses the rope-above settings while the player holds a link in the upper two thirds and the rope-below settings otherwise. Other ropes use the rope settings.
camera_rope_max_vel18000Movement limit of the swinging-rope camera, in the units of max_vel. 0 means max_vel.
camera_rope_angle_offset_x / _y / _z96 / 128 / 0Swinging-rope camera orbit angles. The pitch is absolute (the player’s pitch is ignored); yaw and roll are relative to the player.
camera_rope_distance300Swinging-rope camera distance in world units.
camera_rope_above_angle_offset_x / _y / _z96 / 128 / 0Static-rope camera orbit angles for the upper part of the rope, relative to the aim angles.
camera_rope_above_distance300Upper static-rope camera distance in world units.
camera_rope_above_aim_x / _y / _z-512 / 0 / 0Fixed angles that the upper static-rope camera uses in place of the player’s orientation. -512 pitches the view a quarter turn from level.
camera_rope_below_angle_offset_x / _y / _z96 / 128 / 0Static-rope camera orbit angles for the lower part of the rope, relative to the aim angles.
camera_rope_below_distance300Lower static-rope camera distance in world units.
camera_rope_below_aim_x / _y / _z512 / 0 / 0Fixed angles that the lower static-rope camera uses in place of the player’s orientation.
camera_debug_angle_offset_x / _y / _z128 / 256 / 0Debug camera orbit angles. All three values are stored into the pitch, so only camera_debug_angle_offset_z takes effect (as pitch); yaw and roll come from offset_angle_y and offset_angle_z.
camera_debug_distance300Debug camera distance in world units.

Collision, limits, and smoothing

KeyDefault ValueDescription
obstacle_size20Only models whose bounding radius is strictly larger than this can block the camera’s line of sight. See camera collision.
camera_size10Camera body radius in world units. On contact the camera is pushed this far along the contact normal. See camera collision response.
camera_scape_size5Minimum camera height above WLD terrain, in steps of 4 world units (shipped 20 units). It has no effect on maps without terrain.
max_x_angle / min_x_angle1692 / 400Pitch limits for the look key: the look pitch offset never enters the band between min_x_angle and max_x_angle, so the shipped values allow -356 to +400 units around level. The automatic cameras ignore them.
max_vel8000Maximum camera movement per frame step in Q8 units (shipped about 31 units), scaled by frame time. See movement limiting.
max_y_vel5000Maximum vertical camera movement per frame step in Q8 units (shipped about 20 units). The upward limit is scaled by frame time; the downward limit is not.
max_acc5000Camera acceleration: each frame step may exceed the previous one by this many Q8 units, up to max_vel.
player_control_x_inc / player_control_y_inc70 / -70Pitch (x) and yaw (y) change per frame while the look key is held and a direction key is pressed.
glide_x / glide_y / glide_z0.9 / 0.2 / 0.9Fraction of the remaining distance that the rendered camera moves toward its target each frame on each axis. 1.0 means no lag. See render camera step.
glide_angle_x / glide_angle_y / glide_angle_z0.7 / 0.1 / 0.7The same fraction for the rendered camera angles. glide_angle_x applies to yaw, glide_angle_y to pitch, and glide_angle_z to roll.
cam_prox_up70.0No effect.

Keys read but absent from the shipped file:

  • camera_combat_max_vel, camera_hang_max_vel, camera_rope_above_max_vel, camera_rope_below_max_vel, camera_debug_max_vel: movement limit for that camera, in the units of max_vel. Missing or 0 means max_vel.
  • fudge_factor, max_angular_velocity: no effect.

[dialog]

KeyDefault ValueDescription
menu_start_x35Left edge of the dialogue topic menu, in text-screen pixels.
menu_start_y25Top of the first dialogue topic-menu entry, in text-screen pixels; each later entry is one font line lower.
dialog_max_menu_items20Capacity of the dialogue topic menu, at least 300. The shipped 20 therefore gives 300 entries.
dialog_max_dialog_lines20Number of subtitle slots (minimum 16), not a line limit.
dialog_max_text_width500Subtitle wrap width in 640-wide screen pixels (minimum 150).
dialog_print_text10 hides dialogue subtitles without changing their timing. The book’s Subtitles checkbox edits this value.
dialog_use_speech11 plays dialogue speech and shows each line for the length of its clip; 0 silences speech and times lines from their text length.
dialog_max_distance1600Scripted RTX lines from a speaker farther than this distance (in PlayerDistance units) are not started.
menu_traverse_delay4Delay in BIOS timer ticks (18.2 per second) before a held direction key moves the selection again, in the dialogue topic menu and the book menu. 0 means one tick.

[3dfx]

Glide-specific display, texture, and text settings.

KeyDefault ValueDescription
resolution12Glide display mode: 3 = 512×384, 7 = 640×480, 8 = 800×600, 9 = 960×720, 12 = 1024×768, 13 = 1280×1024, 14 = 1600×1200 (the engine’s own size table uses 1600×1280 for this mode). Other values are not supported. If the mode cannot be opened, the game falls back to 640×480.
text_scale1, 1Texture reduction factors for 256-texel and 128-texel textures (256 factor, 128 factor). 1 keeps full resolution; a missing key means 4, 2. Sky textures are never reduced.
anim_text_scale1, 1No effect.
font_sel255,255Color scale and alpha (A,B, 0–255) for the REDSEL text style used by NPC subtitles, HUD text, and the selected topic-menu entry.
font_norm125,255Color scale and alpha for the normal REDSEL style, used for Cyrus’s subtitles and unselected topic-menu entries. A missing key copies font_sel.
font_used125,128Color scale and alpha for topic-menu entries already chosen. A missing key copies font_sel.

For these styles, the main glyph pass uses alpha B and the shadow uses B × 200 / 256, truncated to an integer. Each pass blends only below alpha 254; alpha 254 and 255 replace the destination without blending. See subtitle glyph rendering for the shadow offsets and palette rules.


Developer mode

[debug] final_version=0 selects developer behavior. The fv command-line option forces release behavior and takes precedence over nfv, which forces developer behavior. Either option overrides the INI value.

In developer mode, startup does not present the book menu and enters the starting world directly. In a world, Escape waits for its release and then exits the game instead of opening the book. Developer mode also enables the camera position/angle diagnostic keys and other developer display paths.

Demo executable keys

The demo’s RGFX.EXE (build 5.0, see Demo release) reads these keys in addition to the ones above. The CD and GOG executable does not read them.

SectionKeyDescription
[debug]demo_versionNonzero restricts play to world 1. Every world load becomes world 1 at marker 1, a load while world 1 is already loaded does nothing, and world-change requests are discarded. A missing key means 0.
[RTX_PATCH]bad[N], good[N]RTX entry substitutions for N from 0 to 14. Each value is a four-character RTX entry name. A dialogue request for the bad[N] entry plays the good[N] entry instead. A pair takes effect only when both keys are present.
[3DFX]warningsNonzero prints Glide texture warnings: Warning: Could not find match for texture '%s'! and Warning: Attempt to delete invalid texture! (Tex:%d). A missing key means 0. The CD and GOG executable always keeps these warnings off.

External References