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) andwindow_positionisn'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 andfullscreen_heightare 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 forfullscreen_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 to16,000,000pixels, 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, theENDOOMtext screen gets displayed when you exit the game. If it's zero, noENDOOMfor 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 inPNGformat. If it's zero, they're saved inPCXformat, exactly like Vanilla Doom does it. Retro behavior, preserved. ๐snd_samplerateโ Sound output sample rate, in Hz. The typical values to use are11025,22050,44100and48000. 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 is28ms(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 whensnd_musicdeviceis set to General MIDI output. ๐นsnd_dmxoptionโ The value to set for theDMXOPTIONenvironment 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
- Linear conversion =
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โ If1, activate the FluidSynth chorus effects module. If0, no chorus gets added to the output signal. ๐ถfsynth_chorus_depthโ Specifies the modulation depth of the FluidSynth chorus. Default is5.0, range is0.0to256.0. ๐fsynth_chorus_levelโ Specifies the output amplitude of the FluidSynth chorus signal. Default is0.35, range is0.0to10.0. ๐fsynth_chorus_nrโ Sets the voice count of the FluidSynth chorus signal. Default is3, range is0to99. ๐คfsynth_chorus_speedโ Sets the FluidSynth chorus modulation speed in Hz. Default is0.3, range is0.1to5.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 is256, range is1-65535. That's a lot of voices, go off. ๐fsynth_reverb_activeโ If1, activate the FluidSynth reverb effects module. If0, no reverb gets added to the output signal. ๐๏ธfsynth_reverb_dampโ Sets the amount of FluidSynth reverb damping. Default is0.4, range is0.0to1.0. ๐ซงfsynth_reverb_levelโ Sets the FluidSynth reverb amplitude. Default is0.15, range is0.0-1.0. ๐fsynth_reverb_roomsizeโ Sets the room size (i.e. the amount of wet) of FluidSynth reverb. Default is0.6, range is0.0-1.0. ๐ฟfsynth_reverb_widthโ Sets the stereo spread of the FluidSynth reverb signal. Default is0.4, range is0.0-100.0. ๐fsynth_gainโ Fine tune the FluidSynth output level. Default is1.0, range is0.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 are256,512,768or1024. Pick one, no in-betweens. ๐พwinmm_midi_deviceโ The MIDI device for native Windows MIDI. ๐ชwinmm_complevelโ The compatibility level for native Windows MIDI, default0. Valid values are0(Vanilla),1(Standard),2(Full). ๐๏ธwinmm_reset_typeโ The reset device type for native Windows MIDI, default1. Valid values are0(None),1(GM Mode),2(GS Mode),3(XG Mode). ๐winmm_reset_delayโ The reset device delay for native Windows MIDI, default0, median value100ms. โณvanilla_savegame_limitโ If it's non-zero, the Vanilla savegame limit is enforced. Meaning: if the savegame exceeds180224bytes 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 (128KiBby 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 weaponmouseb_nextweaponโ mouse button to cycle to the next weapondclick_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) movementjoystick_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 20joystick_y_axisโ joystick axis to use for vertical (Y) movementjoystick_y_invertโ if non-zero, movement on the vertical joystick axis is inverted ๐joystick_strafe_axisโ joystick axis to use for strafing movementjoystick_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 20joystick_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 #0joystick_physical_button1โ the physical joystick button that corresponds to joystick virtual button #1joystick_physical_button2โ the physical joystick button that corresponds to joystick virtual button #2joystick_physical_button3โ the physical joystick button that corresponds to joystick virtual button #3joystick_physical_button4โ the physical joystick button that corresponds to joystick virtual button #4joystick_physical_button5โ the physical joystick button that corresponds to joystick virtual button #5joystick_physical_button6โ the physical joystick button that corresponds to joystick virtual button #6joystick_physical_button7โ the physical joystick button that corresponds to joystick virtual button #7joystick_physical_button8โ the physical joystick button that corresponds to joystick virtual button #8joystick_physical_button9โ the physical joystick button that corresponds to joystick virtual button #9joystick_physical_button10โ the physical joystick button that corresponds to joystick virtual button #10joystick_physical_button11โ the physical joystick button that corresponds to joystick virtual button #11joystick_physical_button12โ the physical joystick button that corresponds to joystick virtual button #12joystick_physical_button13โ the physical joystick button that corresponds to joystick virtual button #13joystick_physical_button14โ the physical joystick button that corresponds to joystick virtual button #14joystick_physical_button15โ the physical joystick button that corresponds to joystick virtual button #15joystick_physical_button16โ the physical joystick button that corresponds to joystick virtual button #16
use_gamepadโ if non-zero, use theSDL_GameControllerinterface instead of theSDL_Joystickinterface ๐ฎโจgamepad_typeโ stores theSDL_GameControllerTypeof 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 valuejoystick_y_dead_zoneโ joystick y axis dead zone, specified as a percentage of the axis max valuejoystick_strafe_dead_zoneโ joystick strafe axis dead zone, specified as a percentage of the axis max valuejoystick_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 menujoyb_toggle_automapโ joystick virtual button to toggle the automap ๐บ๏ธjoyb_prevweaponโ joystick virtual button that cycles to the previous weaponjoyb_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 pressedkey_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 leftkey_menu_rightโ key that moves the currently selected slider on the menu rightkey_menu_backโ key to go back to the previous menukey_menu_forwardโ key to activate the currently selected menu itemkey_menu_confirmโ key to answer'yes'to a question in the menukey_menu_abortโ key to answer'no'to a question in the menukey_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 levelkey_menu_qsaveโ keyboard shortcut to quicksave the current game โจkey_menu_endgameโ keyboard shortcut to end the gamekey_menu_messagesโ keyboard shortcut to toggle heads-up messages ๐ฌkey_menu_qloadโ keyboard shortcut to load the last quicksavekey_menu_quitโ keyboard shortcut to quit the gamekey_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 sizekey_menu_decscreenโ keyboard shortcut to decrease the screen sizekey_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 viewkey_map_southโ key to pan south when in the map viewkey_map_eastโ key to pan east when in the map viewkey_map_westโ key to pan west when in the map viewkey_map_zoominโ key to zoom in when in the map view ๐key_map_zoomoutโ key to zoom out when in the map viewkey_map_maxzoomโ key to zoom out the maximum amount when in the map viewkey_map_followโ key to toggle follow mode when in the map viewkey_map_gridโ key to toggle the grid display when in the map viewkey_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 1key_weapon2โ key to select weapon 2key_weapon3โ key to select weapon 3key_weapon4โ key to select weapon 4key_weapon5โ key to select weapon 5key_weapon6โ key to select weapon 6key_weapon7โ key to select weapon 7key_weapon8โ key to select weapon 8key_prevweaponโ key to cycle to the previous weaponkey_nextweaponโ key to cycle to the next weaponkey_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 gameskey_multi_msgplayer2โ key to send a message to player 2 during multiplayer gameskey_multi_msgplayer3โ key to send a message to player 3 during multiplayer gameskey_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
- fedora 43: chocolate-doom 3.1.1-1.fc43 ยท GPL-2.0-or-later
- fedora 44: chocolate-doom 3.1.1-1.fc44 ยท GPL-2.0-or-later
- nixpkgs unstable: chocolate-doom 3.1.1
- ubuntu resolute: chocolate-doom 3.1.1-1 ยท GPL-2.0-or-later
- ubuntu stonking: chocolate-doom 3.1.1-1 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms