chocolate-heretic.cfg(5)

🍫 NAME ✨

okay so bestie, say hi to chocolate-heretic.cfg β€” the Chocolate Heretic configuration file, and the manual page for it is chocolate-heretic.cfg(5) in case you were wondering which page you're on πŸ’–. It's a whole vibe and we're about to read every single line of it together, no skimming, no cap.


🌸 DESCRIPTION 🌸

So chocolate-heretic.cfg is a config file for chocolate-heretic(6), but here's the tea: it's an auxiliary config file. The main config options live in heretic.cfg, which holds all the same options as Vanilla Heretic (because compatibility is that girl). chocolate-heretic.cfg is only for the options that are specific to Chocolate-Heretic itself. It's giving "side character with main character energy," fr fr.

Normally it chills in your home directory at ~/.local/share/chocolate-heretic/chocolate-heretic.cfg. 🏠 If you wanna move it, you can override that path with the XDG_DATA_HOME environment variable (check the XDG Base Directory Specification, iykyk).

And if editing config files by hand isn't your moment, the chocolate-heretic-setup(6) tool is a cute little front-end for editing chocolate-heretic.cfg. πŸŽ€


πŸ¦‹ FILE FORMAT πŸ¦‹

The file format is literally the same one used for heretic.cfg(5). Same format, different file, slay. ✨


πŸ‘‘ CONFIGURATION VARIABLES πŸ‘‘

okay this is the main event, the whole runway, every single variable, let's go πŸ’…

  • video_driver β€” the name of the SDL video driver to use. If it's an empty string, you just get the default video driver. No thoughts, head empty, default it is.
  • window_position β€” where the window sits on your screen when you're running in windowed mode. Accepted values are: "" (empty string) β€” don't care, "center" β€” put the window in the center of the screen, "x,y" β€” put it at those exact coordinates. Pick your fighter. 🎯
  • fullscreen β€” if it's non-zero, the game runs in full screen mode. If it's zero, you get a window. That's it, that's the whole thing.
  • video_display β€” the index of the display the game should run on. Heads up bestie: this does nothing if you're running in windowed mode (fullscreen=0) and window_position isn't set to "center". πŸ–₯️
  • aspect_ratio_correct β€” if non-zero, the screen gets stretched vertically so it displays correctly on a square pixel video mode.
  • smooth_pixel_scaling β€” if non-zero, the screen gets smooth scaling. Soft and pretty ✨
  • integer_scaling β€” if non-zero, it forces integer scales for resolution-independent rendering. Whole numbers only, no in-between.
  • 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, it runs fullscreen as a desktop window covering the entire screen, instead of ever switching screen modes. Usually you don't even need to touch this value. Like, at all.
  • fullscreen_height β€” the height for screen mode when running fullscreen. Go read what fullscreen_width says, it's the same energy. πŸ‘―
  • force_software_renderer β€” if non-zero, it forces the use of a software renderer. Made for systems that are lacking hardware acceleration. We've all been there.
  • max_scaling_buffer_pixels β€” the max number of pixels to use for the intermediate scaling buffer. More pixels means the screen renders more precisely, but the quality gains start diminishing (diminishing returns, the classic 😭). The default limits it to 16,000,000 pixels, which is enough to cover 4K monitor standards. Iconic amount of pixels honestly.
  • startup_delay β€” number of milliseconds to wait on startup after the video mode has been set, before the game starts. This gives the screen time to settle on monitors that don't display an image for a brief interval after changing video modes. Patience is a virtue πŸ’…
  • graphical_startup β€” if non-zero, display the graphical startup screen.
  • show_endoom β€” if non-zero, the ENDOOM text screen is displayed when you exit the game. If zero, the ENDOOM screen does not appear. Bye bye ENDOOM πŸ‘‹
  • png_screenshots β€” if non-zero, screenshots get saved in PNG format. If zero, they're saved in PCX format, just like Vanilla Doom does. Retro moment.
  • snd_samplerate β€” sound output sample rate, in Hz. Typical values to use are 11025, 22050, 44100 and 48000.
  • snd_cachesize β€” the maximum number of bytes to allocate for caching converted sound effects in memory. If set to zero, there's no limit applied. Unlimited memory, we love to see it (carefully).
  • 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 introduce latency to the sound output. The default is 28ms β€” that's one slice per tic with the 35fps timer, if you're keeping score. ⏱️
  • snd_pitchshift β€” if non-zero, sound effects get their pitch varied up or down by a random amount during play. If zero, sound effects play back at their default pitch. Chaotic or calm, your call. 🎡
  • snd_musiccmd β€” external command to invoke for MIDI playback. If it's set to the empty string, SDL_mixer's internal MIDI playback is used instead. This only does anything 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 used to access the OPL chip. Only relevant when you're using native OPL music playback.
  • use_libsamplerate β€” controls whether libsamplerate support is used for doing sample rate conversions of sound effects. This support has to be compiled into the program to work, no cap. If zero, libsamplerate support is disabled. If non-zero, libsamplerate is enabled. Increasing values roughly correspond to higher quality conversion, and the higher the quality, the slower the conversion process β€” trade-off queen. The levels are: Linear conversion = 1; Zero order hold = 2; Fast Sinc filter = 3; Medium quality Sinc filter = 4; High quality Sinc filter = 5. 🌈
  • libsamplerate_scale β€” the scaling factor used by libsamplerate. It's used when converting sounds internally back into integer form; normally you shouldn't 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, because then the conversion may cause sound clipping and the scale factor should be reduced. The lower the value, the quieter the sound effects become, so set it as high as possible without clipping happening. Loud and clear but not too loud πŸ’₯
  • autoload_path β€” full path to a directory where WAD files and dehacked patches can be placed so they're automatically loaded on startup. A subdirectory of this directory matching the IWAD name is checked to find the files to load. πŸ“‚
  • music_pack_path β€” full path to a directory containing configuration files for substitute music packs. These packs contain high quality renderings of game music, played instead of using the system's built-in MIDI playback. Upgrade your soundtrack, bestie 🎢
  • fsynth_chorus_active β€” if 1, activate the FluidSynth chorus effects module. If 0, no chorus is 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 β€” defines how FluidSynth interprets Bank Select messages. The default is "gs". Other possible values are "gm", "xg" and "mma". Choose your bank, diva πŸ’…
  • fsynth_polyphony β€” sets the number of FluidSynth voices that can be played in parallel. Default is 256, range is 1 - 65535.
  • fsynth_reverb_active β€” if 1, activate the FluidSynth reverb effects module. If 0, no reverb is added to the output signal. Reverb or silence, pick one πŸ•³οΈ
  • 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. amount of wet) FluidSynth reverb. Default is 0.6, range is 0.0 - 1.0. Big room energy 🏟️
  • 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 β€” full path to a soundfont file to use with FluidSynth MIDI playback.
  • timidity_cfg_path β€” full path to a Timidity configuration file to use for MIDI playback. The file gets evaluated from the directory where it is evaluated, so there's no need to add "dir" commands into it. Convenient, honestly ✨
  • gus_patch_path β€” path to GUS patch files to use when operating in GUS emulation mode.
  • gus_ram_kb β€” number of kilobytes of RAM to use in GUS emulation mode. Valid values are 256, 512, 768 or 1024.
  • winmm_midi_device β€” MIDI device for native Windows MIDI. πŸͺŸ
  • winmm_complevel β€” compatibility level for native Windows MIDI, default 0. Valid values are 0 (Vanilla), 1 (Standard), 2 (Full).
  • winmm_reset_type β€” 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 β€” reset device delay for native Windows MIDI, default 0, median value 100 ms.
  • vanilla_keyboard_mapping β€” if non-zero, the game behaves like Vanilla Doom and always assumes 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. This is only used on the "waiting" screen while waiting for the game to start. Make it cute, everyone sees it.
  • grabmouse β€” if this is non-zero, the mouse gets "grabbed" when running in windowed mode so it can be used as an input device. When running full screen, this has no effect. 🐭
  • novert β€” if non-zero, all vertical mouse movement is ignored. This emulates the behavior of the "novert" tool available under DOS that performs the same function. Old school solution, new school setting πŸ’€
  • mouse_acceleration β€” mouse acceleration factor. When the speed of mouse movement exceeds the threshold value (mouse_threshold), the speed is multiplied by this value. Zoom zoom πŸš€

...and bestie, we're not even done yet, there's more coming in the next part, stay with me πŸ’–

  • mouse_threshold β€” the mouse acceleration threshold, bestie. once your mouse movement speed goes over this value, the speed gets multiplied by an acceleration factor (that's mouse_acceleration, if you were wondering).
  • mouseb_strafeleft β€” mouse button that strafes left.
  • mouseb_straferight β€” mouse button that strafes right.
  • mouseb_turnleft β€” mouse button that turns left.
  • mouseb_turnright β€” mouse button that turns right.
  • mouseb_use β€” mouse button that "uses" an object, eg. a door or switch.
  • mouseb_backward β€” mouse button that moves you backwards.
  • mouseb_prevweapon β€” mouse button that cycles to the previous weapon.
  • mouseb_nextweapon β€” mouse button that cycles to the next weapon.
  • mouseb_invleft β€” mouse button that moves to the left in the inventory.
  • mouseb_invright β€” mouse button that moves to the right in the inventory.
  • mouseb_useartifact β€” mouse button that uses an artifact.
  • dclick_use β€” if it's non-zero, double-clicking a mouse button acts exactly like pressing the "use" key to use an object in-game, eg. a door or switch. one double-click, zero thoughts.

  • joystick_guid β€” an SDL GUID string saying which joystick to use. an empty string means no joystick is configured at all, so like, don't be surprised when nothing responds. πŸ’€
  • joystick_index β€” the index of the SDL joystick to use. this one only matters when you've got multiple identical joystick devices connected that share the same GUID, and you need to tell them apart.
  • use_analog β€” if it's non-zero, use analog movement when you're playing with a gamepad.
  • joystick_x_axis β€” the joystick axis used for horizontal (X) movement.
  • joystick_x_invert β€” if it's non-zero, movement on the horizontal joystick axis is inverted.
  • joystick_turn_sensitivity β€” joystick turn analog sensitivity, given as a value between 0 and 20.
  • joystick_y_axis β€” the joystick axis used for vertical (Y) movement.
  • joystick_y_invert β€” if it's non-zero, movement on the vertical joystick axis is inverted.
  • joystick_strafe_axis β€” the joystick axis used for strafing movement.
  • joystick_strafe_invert β€” if it's non-zero, movement on the joystick axis used for strafing is inverted.
  • joystick_move_sensitivity β€” joystick move and strafe analog sensitivity, given as a value between 0 and 20.
  • joystick_look_axis β€” the joystick axis used for looking up and down.
  • joystick_look_invert β€” if it's non-zero, movement on the joystick axis used for looking is inverted.
  • joystick_look_sensitivity β€” joystick look analog sensitivity, given as a value between 0 and 20.
  • 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 it's non-zero, use the SDL_GameController interface instead of the SDL_Joystick interface. glow up fr.
  • gamepad_type β€” stores the SDL_GameControllerType of the last configured gamepad.
  • joystick_x_dead_zone β€” joystick x axis dead zone, given as a percentage of the axis max value.
  • joystick_y_dead_zone β€” joystick y axis dead zone, given as a percentage of the axis max value.
  • joystick_strafe_dead_zone β€” joystick strafe axis dead zone, given as a percentage of the axis max value.
  • joystick_look_dead_zone β€” joystick look axis dead zone, given as a percentage of the axis max value.
  • joyb_strafeleft β€” joystick virtual button that makes the player strafe left.
  • joyb_straferight β€” joystick virtual button that makes the player strafe right.
  • joyb_menu_activate β€” joystick virtual button that activates the menu.
  • joyb_toggle_automap β€” joystick virtual button that toggles the automap.
  • joyb_prevweapon β€” joystick virtual button that cycles to the previous weapon.
  • joyb_nextweapon β€” joystick virtual button that cycles to the next weapon.
  • joyb_useartifact β€” joystick virtual button that activates an artifact.
  • joyb_invleft β€” joystick virtual button that moves left in the inventory.
  • joyb_invright β€” joystick virtual button that moves right in the inventory.
  • joyb_flyup β€” joystick virtual button that flies up.
  • joyb_flydown β€” joystick virtual button that flies down.
  • joyb_flycenter β€” joystick virtual button that centers flying.

okay now we're into keyboard territory, and it's giving very detailed πŸŽ€

  • key_pause β€” key that pauses or unpauses 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 that goes back to the previous menu.
  • key_menu_forward β€” key that activates the currently selected menu item.
  • key_menu_confirm β€” key that answers 'yes' to a question in the menu.
  • key_menu_abort β€” key that answers 'no' to a question in the menu.
  • key_menu_help β€” keyboard shortcut that brings up the help screen.
  • key_menu_save β€” keyboard shortcut that brings up the save game menu.
  • key_menu_load β€” keyboard shortcut that brings up the load game menu.
  • key_menu_volume β€” keyboard shortcut that brings up the sound volume menu.
  • key_menu_detail β€” keyboard shortcut that toggles the detail level.
  • key_menu_qsave β€” keyboard shortcut that quicksaves the current game.
  • key_menu_endgame β€” keyboard shortcut that ends the game.
  • key_menu_messages β€” keyboard shortcut that toggles heads-up messages.
  • key_menu_qload β€” keyboard shortcut that loads the last quicksave.
  • key_menu_quit β€” keyboard shortcut that quits the game.
  • key_menu_gamma β€” keyboard shortcut that toggles the gamma correction level.
  • key_spy β€” keyboard shortcut that switches view in multiplayer.
  • key_menu_incscreen β€” keyboard shortcut that increases the screen size.
  • key_menu_decscreen β€” keyboard shortcut that decreases the screen size.
  • key_menu_screenshot β€” keyboard shortcut that saves a screenshot. πŸ“Έ do it for the lore.

map time, bestie. cartography era πŸ—ΊοΈ

  • key_map_toggle β€” key that toggles the map view.
  • key_map_north β€” key that pans north when you're in the map view.
  • key_map_south β€” key that pans south when you're in the map view.
  • key_map_east β€” key that pans east when you're in the map view.
  • key_map_west β€” key that pans west when you're in the map view.
  • key_map_zoomin β€” key that zooms in when you're in the map view.
  • key_map_zoomout β€” key that zooms out when you're in the map view.
  • key_map_maxzoom β€” key that zooms out the maximum amount when you're in the map view.
  • key_map_follow β€” key that toggles follow mode when you're in the map view.
  • key_map_grid β€” key that toggles the grid display when you're in the map view.
  • key_map_mark β€” key that sets a mark when you're in the map view.
  • key_map_clearmark β€” key that clears all marks when you're in the map view.

weapons, in order, no skipping πŸ”₯

  • key_weapon1 β€” key that selects weapon 1.
  • key_weapon2 β€” key that selects weapon 2.
  • key_weapon3 β€” key that selects weapon 3.
  • key_weapon4 β€” key that selects weapon 4.
  • key_weapon5 β€” key that selects weapon 5.
  • key_weapon6 β€” key that selects weapon 6.
  • key_weapon7 β€” key that selects weapon 7.
  • key_weapon8 β€” key that selects weapon 8.
  • key_prevweapon β€” key that cycles to the previous weapon.
  • key_nextweapon β€” key that cycles to the next weapon.

artifacts, aka the ✨ special little guys ✨

  • key_arti_quartz β€” key that uses the "quartz flask" artifact.
  • key_arti_urn β€” key that uses the "mystic urn" artifact.
  • key_arti_bomb β€” key that uses the "timebomb of the ancients" artifact.
  • key_arti_tome β€” key that uses the "tome of power" artifact.
  • key_arti_ring β€” key that uses the "ring of invincibility" artifact.
  • key_arti_chaosdevice β€” key that uses the "chaos device" artifact.
  • key_arti_shadowsphere β€” key that uses the "shadowsphere" artifact.
  • key_arti_wings β€” key that uses the "wings of wrath" artifact.
  • key_arti_torch β€” key that uses the "torch" artifact.
  • key_arti_morph β€” key that uses the "morph ovum" artifact.

and the last little batch, we love a finale πŸ¦‹

  • key_message_refresh β€” key that re-displays the last message.
  • key_demo_quit β€” key that quits the game when you're recording a demo.
  • key_multi_msg β€” key that sends a message during multiplayer games.
  • key_multi_msgplayer1 β€” key that sends a message to player 1 during multiplayer games.
  • key_multi_msgplayer2 β€” the key that fires off a message to player 2 mid-multiplayer-game. squad communication bestie, use it πŸ’¬
  • key_multi_msgplayer3 β€” same energy, but it's messaging player 3. yes you need a whole separate key. no they did not bundle them. it's giving thorough πŸ’…
  • key_multi_msgplayer4 β€” and this one pings player 4 during multiplayer games. four players, four keys, four chances to say "gg" πŸŽ€

🌈 SEE ALSO 🌈

okay so if you wanna go deeper (and you should, bestie, the lore is immaculate):

  • chocolate-heretic(6) β€” the main game itself πŸ‘‘
  • heretic.cfg(5) β€” the OG config page, for when you want the original flavor πŸ“
  • chocolate-heretic-setup(6) β€” the setup tool, aka where you go when you're too scared to hand-edit this file (no judgement, we've all been there) πŸ™ˆ

that's the whole page, bestie!! you made it to the end, which honestly is giving main character energy πŸ’œ

this lil masterpiece lives under Chocolate Doom 3.1.1, dated 2024-01-23, and it's the chocolate-heretic.cfg(5) man page. go forth and configure, you gorgeous nerd πŸ¦‹βœ¨πŸ’–