chocolate-doom.cfg(5)

๐ŸŽ€ chocolate-doom.cfg ๐ŸŽ€

โœจ NAME โœจ

chocolate-doom.cfg โ€” the Chocolate Doom configuration file, bestie. It lives in File Formats Manual territory and it is, lowkey, the vibe settings for your whole Doom experience. ๐Ÿ’…


๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Okay so, chocolate-doom.cfg is a configuration file for chocolate-doom(6). It's the auxiliary config file, not the main character. The main config options live in default.cfg, which has all the same options as Vanilla Doom (for compatibility reasons, obviously). chocolate-doom.cfg is where the stuff that's Chocolate-Doom only goes. Exclusive. VIP section. ๐Ÿ‘‘

Normally this file chills in your home directory like:

~/.local/share/chocolate-doom/chocolate-doom.cfg

And you can override that path with the XDG_DATA_HOME environment variable (peep the XDG Base Directory Specification for the deets). โœจ

Also, if you don't wanna hand-edit text files like some kind of gremlin, the chocolate-doom-setup(6) tool is a whole front-end for editing chocolate-doom.cfg. It's giving "user friendly". ๐Ÿซถ


๐ŸŒˆ FILE FORMAT ๐ŸŒˆ

The file format is literally the same as the one used for default.cfg(5). No cap. If you know that one, you know this one. ๐Ÿงš


๐Ÿ’– CONFIGURATION VARIABLES ๐Ÿ’–

This is the main event, bestie. Every single variable, coming right up. ๐Ÿ“

  • video_driver โ€” The name of the SDL video driver you wanna use. If you set it to an empty string, it just uses the default video driver like a chill lil guy. โœจ
  • window_position โ€” Where the window sits on your screen when you're running in windowed mode. The accepted values are: "" (empty string) โ€” don't care, not my problem; "center" โ€” plop the window right in the center of the screen; and "x,y" โ€” put the window at the exact coordinates you specify. ๐Ÿ“
  • fullscreen โ€” If it's non-zero, the game runs in full screen mode. If it's zero, it runs in a window. Simple as. ๐Ÿ–ฅ๏ธ
  • video_display โ€” The index of the display the game should run on. Heads up tho: this does nothing if you're running in windowed mode (fullscreen=0) and window_position isn't set to "center". ๐Ÿ™ˆ
  • aspect_ratio_correct โ€” If it's non-zero, the screen gets stretched vertically so it displays correctly on a square pixel video mode. Math girlies, this one's for you. ๐Ÿ“
  • smooth_pixel_scaling โ€” If it's non-zero, the screen gets smooth scaling. Silky. โœจ
  • integer_scaling โ€” If it's non-zero, it forces integer scales for resolution-independent rendering. ๐Ÿงฎ
  • window_width โ€” The window width when you're running in windowed mode. ๐Ÿ“
  • window_height โ€” The window height when you're running in windowed mode. ๐Ÿ“
  • fullscreen_width โ€” The width for screen mode when running fullscreen. If this and fullscreen_height are both set to zero, we run fullscreen as a desktop window that covers the entire screen, rather than ever switching screen modes. Honestly? It should usually be unnecessary to set this value. It's giving "why are you here". ๐Ÿ’€
  • fullscreen_height โ€” The height for screen mode when running fullscreen. Go read the documentation for fullscreen_width, it's the same situation. ๐Ÿ‘€
  • force_software_renderer โ€” If it's non-zero, force the use of a software renderer. This is for the systems out there lacking hardware acceleration. We support you. ๐Ÿซถ
  • max_scaling_buffer_pixels โ€” The maximum number of pixels to use for the intermediate scaling buffer. More pixels = the screen can be rendered more precisely, BUT there are diminishing returns on quality, so don't go wild. The default limits it to 16,000,000 pixels, which is enough to cover 4K monitor standards. Iconic. ๐Ÿ”ฅ
  • startup_delay โ€” The number of milliseconds to wait on startup after the video mode has been set, before the game will start. This gives the screen time to settle on some monitors that don't display an image for a brief interval after changing video modes. Patience is a virtue. ๐ŸŒธ
  • show_endoom โ€” If it's non-zero, the ENDOOM text screen gets displayed when you exit the game. If it's zero, no ENDOOM for you. ๐Ÿ˜ญ
  • show_diskicon โ€” If it's non-zero, a disk activity indicator shows up when data is read from disk. If it's zero, no indicator. A lil blinkie. ๐Ÿ’ซ
  • png_screenshots โ€” If it's non-zero, screenshots get saved in PNG format. If it's zero, they're saved in PCX format, exactly like Vanilla Doom does it. Retro behavior, preserved. ๐ŸŽ€
  • snd_samplerate โ€” Sound output sample rate, in Hz. The typical values to use are 11025, 22050, 44100 and 48000. Pick your fighter. ๐ŸŽต
  • snd_cachesize โ€” The maximum number of bytes to allocate for caching converted sound effects in memory. If you set it to zero, there's no limit applied. Go feral. ๐Ÿ“
  • snd_maxslicetime_ms โ€” The maximum size of the output sound buffer size in milliseconds. Sound output is generated periodically in slices. Higher values might be more efficient, but they'll introduce latency to the sound output, and nobody wants laggy audio. The default is 28ms (that's one slice per tic with the 35fps timer, iykyk). โฑ๏ธ
  • snd_pitchshift โ€” If it's non-zero, sound effects get their pitch varied up or down by a random amount during play. If it's zero, sound effects play back at their default pitch. Chaos mode: optional. ๐ŸŒˆ
  • snd_musiccmd โ€” An external command to invoke to perform MIDI playback. If you set it to the empty string, SDL_mixer's internal MIDI playback is used instead. Also important: this only has any effect when snd_musicdevice is set to General MIDI output. ๐ŸŽน
  • snd_dmxoption โ€” The value to set for the DMXOPTION environment variable. If this contains "-opl3", output for an OPL3 chip is generated when in OPL MIDI playback mode. โœจ
  • opl_io_port โ€” The I/O port to use to access the OPL chip. Only relevant when you're using native OPL music playback. ๐Ÿ”Œ
  • use_libsamplerate โ€” Controls whether libsamplerate support is used for performing sample rate conversions of sound effects. Support for this must be compiled into the program โ€” it's not just gonna show up. If it's zero, libsamplerate support is disabled. If it's non-zero, libsamplerate is enabled. And here's the tea: increasing values roughly correspond to higher quality conversion, and the higher the quality, the slower the conversion process. The scale is:
    • Linear conversion = 1
    • Zero order hold = 2
    • Fast Sinc filter = 3
    • Medium quality Sinc filter = 4
    • High quality Sinc filter = 5

Choose wisely bestie. ๐Ÿ’…

  • libsamplerate_scale โ€” The scaling factor used by libsamplerate. This gets used when converting sounds internally back into integer form; normally you should not need to change it from the default value. The one time it might be needed is if a PWAD file is loaded that contains very loud sounds โ€” in that case the conversion may cause sound clipping, and the scale factor should be reduced. The lower the value, the quieter the sound effects become, so it should be set as high as possible without clipping occurring. Balance, babe. โš–๏ธ
  • autoload_path โ€” The full path to a directory where WAD files and dehacked patches can be placed so they get automatically loaded on startup. A subdirectory of this directory matching the IWAD name is checked to find the files to load. Autoload, slay. ๐Ÿ—‚๏ธ
  • music_pack_path โ€” The full path to a directory containing configuration files for substitute music packs. These packs contain high quality renderings of game music to be played instead of using the system's built-in MIDI playback. Fancy. ๐ŸŽผ
  • fsynth_chorus_active โ€” If 1, activate the FluidSynth chorus effects module. If 0, no chorus gets added to the output signal. ๐ŸŽถ
  • fsynth_chorus_depth โ€” Specifies the modulation depth of the FluidSynth chorus. Default is 5.0, range is 0.0 to 256.0. ๐ŸŒŠ
  • fsynth_chorus_level โ€” Specifies the output amplitude of the FluidSynth chorus signal. Default is 0.35, range is 0.0 to 10.0. ๐Ÿ”Š
  • fsynth_chorus_nr โ€” Sets the voice count of the FluidSynth chorus signal. Default is 3, range is 0 to 99. ๐ŸŽค
  • fsynth_chorus_speed โ€” Sets the FluidSynth chorus modulation speed in Hz. Default is 0.3, range is 0.1 to 5.0. ๐Ÿ’ซ
  • fsynth_midibankselect โ€” This setting defines how FluidSynth interprets Bank Select messages. The default is "gs". The other possible values are "gm", "xg" and "mma". Pick your lore. ๐Ÿ“œ
  • fsynth_polyphony โ€” Sets the number of FluidSynth voices that can be played in parallel. Default is 256, range is 1 - 65535. That's a lot of voices, go off. ๐Ÿ‘‘
  • fsynth_reverb_active โ€” If 1, activate the FluidSynth reverb effects module. If 0, no reverb gets added to the output signal. ๐Ÿ›๏ธ
  • fsynth_reverb_damp โ€” Sets the amount of FluidSynth reverb damping. Default is 0.4, range is 0.0 to 1.0. ๐Ÿซง
  • fsynth_reverb_level โ€” Sets the FluidSynth reverb amplitude. Default is 0.15, range is 0.0 - 1.0. ๐Ÿ”Š
  • fsynth_reverb_roomsize โ€” Sets the room size (i.e. the amount of wet) of FluidSynth reverb. Default is 0.6, range is 0.0 - 1.0. ๐Ÿšฟ
  • fsynth_reverb_width โ€” Sets the stereo spread of the FluidSynth reverb signal. Default is 0.4, range is 0.0 - 100.0. ๐ŸŒ
  • fsynth_gain โ€” Fine tune the FluidSynth output level. Default is 1.0, range is 0.0 - 10.0. ๐Ÿ“ถ
  • fsynth_sf_path โ€” The full path to a soundfont file to use with FluidSynth MIDI playback. ๐ŸŽน
  • timidity_cfg_path โ€” The full path to a Timidity configuration file to use for MIDI playback. The file will be evaluated from the directory where it is evaluated, so there's no need to add "dir" commands into it. Nice, less work for you. โœจ
  • gus_patch_path โ€” The path to GUS patch files to use when operating in GUS emulation mode. ๐ŸŽ›๏ธ
  • gus_ram_kb โ€” The number of kilobytes of RAM to use in GUS emulation mode. Valid values are 256, 512, 768 or 1024. Pick one, no in-betweens. ๐Ÿ’พ
  • winmm_midi_device โ€” The MIDI device for native Windows MIDI. ๐ŸชŸ
  • winmm_complevel โ€” The compatibility level for native Windows MIDI, default 0. Valid values are 0 (Vanilla), 1 (Standard), 2 (Full). ๐ŸŽš๏ธ
  • winmm_reset_type โ€” The reset device type for native Windows MIDI, default 1. Valid values are 0 (None), 1 (GM Mode), 2 (GS Mode), 3 (XG Mode). ๐Ÿ”„
  • winmm_reset_delay โ€” The reset device delay for native Windows MIDI, default 0, median value 100 ms. โณ
  • vanilla_savegame_limit โ€” If it's non-zero, the Vanilla savegame limit is enforced. Meaning: if the savegame exceeds 180224 bytes in size, the game will exit with an error. If this has a value of zero, there is no limit to the size of savegames. Choose chaos if you want. ๐Ÿ˜ญ
  • vanilla_demo_limit โ€” If it's non-zero, the Vanilla demo size limit is enforced. Meaning: the game exits with an error when a demo exceeds the demo size limit (128KiB by default). If this has a value of zero, there's no limit to the size of demos. ๐ŸŽฌ
  • vanilla_keyboard_mapping โ€” If it's non-zero, the game behaves like Vanilla Doom, always assuming an American keyboard mapping. If this has a value of zero, the native keyboard mapping of the keyboard is used. ๐Ÿ‡บ๐Ÿ‡ธ
  • player_name โ€” The name to use in network games for identification. Important caveat: this is only used on the "waiting" screen while waiting for the game to start. So make it cute, everyone's gonna see it. ๐Ÿซถ

okay bestie, we're officially in the input-device half of the config and this is where the girlies either thrive or cry ๐Ÿ˜ญ mouse first, joystick second, keybinds last. buckle up ๐ŸŽ€


  • grabmouse โ€” if this is non-zero, the mouse gets grabbed while you're running in windowed mode so you can actually use it as an input device ๐Ÿ–ฑ๏ธ while running full screen? this does literally nothing. zero effect. napping ๐Ÿ’ค
  • novert โ€” if non-zero, all vertical mouse movement gets ignored. it's cosplaying the "novert" tool from back in the DOS days that did the exact same thing. retro icon behavior fr ๐Ÿ’…
  • mouse_acceleration โ€” the mouse acceleration factor. the moment your mouse speed goes past the threshold value (mouse_threshold), your speed gets multiplied by this value. math is mathing โœจ
  • mouse_threshold โ€” the mouse acceleration threshold. when mouse speed exceeds this, speed gets multiplied by an acceleration factor (mouse_acceleration). they're a duo, they come as a set ๐Ÿซถ
  • mouseb_strafeleft โ€” mouse button to strafe left โฌ…๏ธ
  • mouseb_straferight โ€” mouse button to strafe right โžก๏ธ
  • mouseb_turnleft โ€” mouse button to turn left โ†ฉ๏ธ
  • mouseb_turnright โ€” mouse button to turn right โ†ช๏ธ
  • mouseb_use โ€” mouse button to "use" an object, eg. a door or switch ๐Ÿšช
  • mouseb_backward โ€” mouse button to move backwards ๐Ÿ™ˆ
  • mouseb_prevweapon โ€” mouse button to cycle to the previous weapon
  • mouseb_nextweapon โ€” mouse button to cycle to the next weapon
  • dclick_use โ€” if non-zero, double-clicking a mouse button acts like pressing the "use" key to use an object in-game, eg. a door or switch. double tap, but make it doors ๐Ÿšชโœจ

and now the joystick section, aka the part where you find out your controller has opinions ๐ŸŽฎ

  • joystick_guid โ€” an SDL GUID string telling the game which joystick to use. an empty string means no joystick is configured. it's giving "single and ready to mingle" ๐Ÿ’€
  • joystick_index โ€” index of the SDL joystick to use. this one only matters when you've got multiple identical joystick devices plugged in that share the same GUID and you need to tell them apart. twin energy ๐Ÿ‘ฏ
  • use_analog โ€” if non-zero, use analog movement when playing with a gamepad ๐Ÿ•น๏ธ
  • joystick_x_axis โ€” joystick axis to use for horizontal (X) movement
  • joystick_x_invert โ€” if non-zero, movement on the horizontal joystick axis is inverted ๐Ÿ”„
  • joystick_turn_sensitivity โ€” joystick turn analog sensitivity, specified as a value between 0 and 20
  • joystick_y_axis โ€” joystick axis to use for vertical (Y) movement
  • joystick_y_invert โ€” if non-zero, movement on the vertical joystick axis is inverted ๐Ÿ”„
  • joystick_strafe_axis โ€” joystick axis to use for strafing movement
  • joystick_strafe_invert โ€” if non-zero, movement on the joystick axis used for strafing is inverted ๐Ÿ”„
  • joystick_move_sensitivity โ€” joystick move and strafe analog sensitivity, specified as a value between 0 and 20
  • joystick_look_axis โ€” joystick axis to use for looking up and down ๐Ÿ‘€
  • joystick_look_invert โ€” if non-zero, movement on the joystick axis used for looking is inverted ๐Ÿ”„
  • joystick_look_sensitivity โ€” joystick look analog sensitivity, specified as a value between 0 and 20

okay so this next bit is the virtual button mapping. there are seventeen of them (0 through 16, no cap) and they all work the same way: you're telling the game which physical joystick button stands in for each virtual button ๐Ÿ’…

  • joystick_physical_button0 โ€” the physical joystick button that corresponds to joystick virtual button #0
  • joystick_physical_button1 โ€” the physical joystick button that corresponds to joystick virtual button #1
  • joystick_physical_button2 โ€” the physical joystick button that corresponds to joystick virtual button #2
  • joystick_physical_button3 โ€” the physical joystick button that corresponds to joystick virtual button #3
  • joystick_physical_button4 โ€” the physical joystick button that corresponds to joystick virtual button #4
  • joystick_physical_button5 โ€” the physical joystick button that corresponds to joystick virtual button #5
  • joystick_physical_button6 โ€” the physical joystick button that corresponds to joystick virtual button #6
  • joystick_physical_button7 โ€” the physical joystick button that corresponds to joystick virtual button #7
  • joystick_physical_button8 โ€” the physical joystick button that corresponds to joystick virtual button #8
  • joystick_physical_button9 โ€” the physical joystick button that corresponds to joystick virtual button #9
  • joystick_physical_button10 โ€” the physical joystick button that corresponds to joystick virtual button #10
  • joystick_physical_button11 โ€” the physical joystick button that corresponds to joystick virtual button #11
  • joystick_physical_button12 โ€” the physical joystick button that corresponds to joystick virtual button #12
  • joystick_physical_button13 โ€” the physical joystick button that corresponds to joystick virtual button #13
  • joystick_physical_button14 โ€” the physical joystick button that corresponds to joystick virtual button #14
  • joystick_physical_button15 โ€” the physical joystick button that corresponds to joystick virtual button #15
  • joystick_physical_button16 โ€” the physical joystick button that corresponds to joystick virtual button #16

  • use_gamepad โ€” if non-zero, use the SDL_GameController interface instead of the SDL_Joystick interface ๐ŸŽฎโœจ
  • gamepad_type โ€” stores the SDL_GameControllerType of the last configured gamepad. it's basically keeping receipts of what you plugged in ๐Ÿงพ
  • joystick_x_dead_zone โ€” joystick x axis dead zone, specified as a percentage of the axis max value
  • joystick_y_dead_zone โ€” joystick y axis dead zone, specified as a percentage of the axis max value
  • joystick_strafe_dead_zone โ€” joystick strafe axis dead zone, specified as a percentage of the axis max value
  • joystick_look_dead_zone โ€” joystick look axis dead zone, specified as a percentage of the axis max value

  • joyb_strafeleft โ€” joystick virtual button to make the player strafe left โฌ…๏ธ
  • joyb_straferight โ€” joystick virtual button to make the player strafe right โžก๏ธ
  • joyb_menu_activate โ€” joystick virtual button to activate the menu
  • joyb_toggle_automap โ€” joystick virtual button to toggle the automap ๐Ÿ—บ๏ธ
  • joyb_prevweapon โ€” joystick virtual button that cycles to the previous weapon
  • joyb_nextweapon โ€” joystick virtual button that cycles to the next weapon

and now: keybinds ๐Ÿ‘‘ the main character section. every one of these is just "which key does the thing" and honestly? iconic.

  • key_pause โ€” key to pause or unpause the game โธ๏ธ
  • key_menu_activate โ€” key that activates the menu when pressed
  • key_menu_up โ€” key that moves the cursor up on the menu โฌ†๏ธ
  • key_menu_down โ€” key that moves the cursor down on the menu โฌ‡๏ธ
  • key_menu_left โ€” key that moves the currently selected slider on the menu left
  • key_menu_right โ€” key that moves the currently selected slider on the menu right
  • key_menu_back โ€” key to go back to the previous menu
  • key_menu_forward โ€” key to activate the currently selected menu item
  • key_menu_confirm โ€” key to answer 'yes' to a question in the menu
  • key_menu_abort โ€” key to answer 'no' to a question in the menu
  • key_menu_help โ€” keyboard shortcut to bring up the help screen ๐Ÿ†˜
  • key_menu_save โ€” keyboard shortcut to bring up the save game menu ๐Ÿ’พ
  • key_menu_load โ€” keyboard shortcut to bring up the load game menu ๐Ÿ“‚
  • key_menu_volume โ€” keyboard shortcut to bring up the sound volume menu ๐Ÿ”Š
  • key_menu_detail โ€” keyboard shortcut to toggle the detail level
  • key_menu_qsave โ€” keyboard shortcut to quicksave the current game โœจ
  • key_menu_endgame โ€” keyboard shortcut to end the game
  • key_menu_messages โ€” keyboard shortcut to toggle heads-up messages ๐Ÿ’ฌ
  • key_menu_qload โ€” keyboard shortcut to load the last quicksave
  • key_menu_quit โ€” keyboard shortcut to quit the game
  • key_menu_gamma โ€” keyboard shortcut to toggle the gamma correction level ๐ŸŒˆ
  • key_spy โ€” keyboard shortcut to switch view in multiplayer ๐Ÿ‘€
  • key_menu_incscreen โ€” keyboard shortcut to increase the screen size
  • key_menu_decscreen โ€” keyboard shortcut to decrease the screen size
  • key_menu_screenshot โ€” keyboard shortcut to save a screenshot ๐Ÿ“ธ

  • key_map_toggle โ€” key to toggle the map view ๐Ÿ—บ๏ธ
  • key_map_north โ€” key to pan north when in the map view
  • key_map_south โ€” key to pan south when in the map view
  • key_map_east โ€” key to pan east when in the map view
  • key_map_west โ€” key to pan west when in the map view
  • key_map_zoomin โ€” key to zoom in when in the map view ๐Ÿ”
  • key_map_zoomout โ€” key to zoom out when in the map view
  • key_map_maxzoom โ€” key to zoom out the maximum amount when in the map view
  • key_map_follow โ€” key to toggle follow mode when in the map view
  • key_map_grid โ€” key to toggle the grid display when in the map view
  • key_map_mark โ€” key to set a mark when in the map view ๐Ÿ“
  • key_map_clearmark โ€” key to clear all marks when in the map view

  • key_weapon1 โ€” key to select weapon 1
  • key_weapon2 โ€” key to select weapon 2
  • key_weapon3 โ€” key to select weapon 3
  • key_weapon4 โ€” key to select weapon 4
  • key_weapon5 โ€” key to select weapon 5
  • key_weapon6 โ€” key to select weapon 6
  • key_weapon7 โ€” key to select weapon 7
  • key_weapon8 โ€” key to select weapon 8
  • key_prevweapon โ€” key to cycle to the previous weapon
  • key_nextweapon โ€” key to cycle to the next weapon
  • key_message_refresh โ€” key to re-display last message ๐Ÿ”
  • key_demo_quit โ€” key to quit the game when recording a demo ๐ŸŽฌ
  • key_multi_msg โ€” key to send a message during multiplayer games ๐Ÿ’ฌ
  • key_multi_msgplayer1 โ€” key to send a message to player 1 during multiplayer games
  • key_multi_msgplayer2 โ€” key to send a message to player 2 during multiplayer games
  • key_multi_msgplayer3 โ€” key to send a message to player 3 during multiplayer games
  • key_multi_msgplayer4 โ€” key to send a message to player 4 during multiplayer games

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€


and that's the whole vibe check, bestie ๐Ÿซถ this page was served to you fresh from Chocolate Doom 3.1.1, dated 2024-01-23, and it's literally the chocolate-doom.cfg(5) manual. go forth and bind some keys, you absolute icon ๐Ÿ’–โœจ๐ŸŒธ

๐Ÿ“ฆ where this page comes from