chocolate-doom(6)

πŸ’– chocolate-doom(6) β€” Games Manual πŸ’–

okay bestie, sit DOWN, because we're about to talk about chocolate-doom, and this is genuinely one of my favourite little corner of the Games Manual. it's giving time capsule. it's giving preservation. it's giving respect the ancestors.


πŸŽ€ NAME πŸŽ€

chocolate-doom β€” a historically compatible Doom engine. periodt.


✨ SYNOPSIS ✨

chocolate-doom [options]

that's it. that's the whole vibe. options go in, Doom comes out. πŸ’…


πŸ¦‹ DESCRIPTION πŸ¦‹

Chocolate Doom is a port of Id Software's 1993 game Doom, and the whole entire point of it β€” the main character energy, if you will β€” is that it's designed to behave as similarly to the original DOS version of Doom as is possible. like, that's the mission. that's the assignment. no cap. 🌸


🌈 GENERAL OPTIONS 🌈

  • -config file β€” load the main configuration from the file you name, instead of the default one. ur config, ur rules. ✨
  • -devparm β€” developer mode, bestie. F1 saves a screenshot in the current working directory. that's it, that's the whole thing.
  • -extraconfig file β€” load additional configuration from the specified file, instead of the default. yes, it's a whole separate config. she's extra, that's the name.
  • -file file ... β€” load the PWAD files you list. every next argument gets treated as a PWAD file name until one of them starts with a dash, or you run out of arguments. so keep going until the dash says stop. 🫢
  • -iwad file β€” specify an IWAD file to use. tell her which one. πŸ’–
  • -nomusic β€” disable music. silence, but make it on purpose.
  • -nomusicpacks β€” disable substitution music packs. the swaps are OFF.
  • -nosfx β€” disable sound effects.
  • -nosound β€” disable ALL sound output. every last crumb of audio. gone. πŸ”‡
  • -response file β€” load extra command-line arguments from the given response file. the arguments read from the file get inserted into the command line, replacing this argument. you can also load a response file with the abbreviated syntax @file.rsp. cute lil shortcut, iykyk.
  • -savedir directory β€” specify a path to load and save games from. if the directory doesn't exist yet, it'll be created automatically. she's self-sufficient. πŸ’…
  • -version β€” print the program version and exit. short and sweet.

πŸ‘‘ GAME START OPTIONS πŸ‘‘

  • -episode n β€” start playing episode n (1-4).
  • -fast β€” monsters move faster. they're on their zoomies. πŸ”₯
  • -loadgame s β€” load the game in slot s.
  • -nomonsters β€” disable monsters. peaceful. serene. suspicious.
  • -respawn β€” monsters respawn after being killed. they simply will not stay down. πŸ’€
  • -skill skill β€” set the game skill, 1-5 (1: easiest, 5: hardest). a skill of 0 disables all monsters. so 0 is technically the "nobody's home" setting.
  • -turbo x β€” turbo mode. the player's speed gets multiplied by x%. if you don't specify it, x defaults to 200. values are rounded up to 10 and down to 400. so like, there are rails, but the rails are wide.
  • -warp [x y|xy] β€” start a game immediately, warping to ExMy (Doom 1) or MAPxy (Doom 2). skip the menu, we're going straight in. πŸš€

πŸŽ€ DISPLAY OPTIONS πŸŽ€

  • -1 β€” don't scale up the screen. implies -window.
  • -2 β€” double up the screen to 2x its normal size. implies -window.
  • -3 β€” double up the screen to 3x its normal size. implies -window. (yes, the manpage says "double up to 3x". we are faithful here. don't @ me.)
  • -display x β€” specify the display number to show the screen on.
  • -fullscreen β€” run in fullscreen mode. all of the screen. every pixel. 🌈
  • -geometry WxH β€” specify the dimensions of the window. implies -window.
  • -height H β€” specify the screen height, in pixels. implies -window.
  • -noblit β€” disable blitting the screen.
  • -nodraw β€” disable rendering the screen entirely. absolutely nothing on screen. ghost mode. πŸ‘»
  • -nograbmouse β€” don't grab the mouse when running in windowed mode. let her roam free.
  • -nomouse β€” disable the mouse.
  • -width W β€” specify the screen width, in pixels. implies -window.
  • -window β€” run in a window.

🌸 NETWORKING OPTIONS 🌸

  • -altdeath β€” start a deathmatch 2.0 game. weapons do not stay in place, and all items respawn after 30 seconds. chaos mode, lovingly.
  • -autojoin β€” automatically search the local LAN for a multiplayer server and join it. she finds her people. 🫢
  • -avg β€” Austin Virtual Gaming: end levels after 20 minutes.
  • -connect address β€” connect to a multiplayer server running on the given address.
  • -deathmatch β€” start a deathmatch game. bestie vs bestie, no hard feelings (some hard feelings). πŸ’…
  • -dedicated β€” start a dedicated server: routing packets but not participating in the game itself. she's just the host, not a player. supporting role, main character energy.
  • -dup n β€” reduce the resolution of the game by a factor of n, reducing the amount of network bandwidth needed.
  • -extratics n β€” send n extra tics in every packet as insurance against dropped packets. little safety net. 🧚
  • -left β€” run as the left screen in three screen mode.
  • -localsearch β€” search the local LAN for running servers.
  • -nodes n β€” autostart the netgame when n nodes (clients) have joined the server. once the guest list is full, we GO.
  • -oldsync β€” use original network client sync code rather than the improved sync code. retro on purpose.
  • -port n β€” use the specified UDP port for communications, instead of the default (2342).
  • -privateserver β€” when running a server, don't register with the global master server. implies -server. she's not on the apps, she's on a private invite list. πŸ’œ
  • -query address β€” query the status of the server running on the given IP address.
  • -right β€” run as the right screen in three screen mode.
  • -search β€” query the Internet master server for a global list of active servers.
  • -server β€” start a multiplayer server, listening for connections.
  • -servername name β€” when starting a network server, specify a name for the server. name ur child.
  • -solo-net β€” start the game playing as though in a netgame with a single player. this can also be used to play back single player netgame demos. alone, but networked about it.
  • -timer n β€” for multiplayer games: exit each level after n minutes.

πŸ¦‹ DEHACKED AND WAD MERGING πŸ¦‹

  • -aa file ... β€” equivalent to -af <files> -as <files>. two jobs, one flag.
  • -af file ... β€” simulates the behavior of NWT's -af option, merging flats into the main IWAD directory. multiple files may be specified.
  • -as file ... β€” simulates the behavior of NWT's -as option, merging sprites into the main IWAD directory. multiple files may be specified.
  • -deh file ... β€” load the given dehacked patch(es). patches, plural, welcome.
  • -dehlump β€” load Dehacked patches from DEHACKED lumps contained in one of the loaded PWAD files.
  • -merge file ... β€” simulates the behavior of deutex's -merge option, merging a PWAD into the main IWAD. multiple files may be specified.
  • -noautoload β€” disable auto-loading of .wad and .deh files.
  • -nocheats β€” ignore cheats in dehacked files. no freebies, no shortcuts.
  • -nodeh β€” disable automatic loading of Dehacked patches for certain IWAD files.
  • -nwtmerge file ... β€” simulates the behavior of NWT's -merge option. multiple files may be specified.

πŸŽ€ DEMO OPTIONS πŸŽ€

  • -longtics β€” record a high resolution "Doom 1.91" demo. ✨
  • -maxdemo size β€” specify the demo buffer size (KiB).
  • -playdemo demo β€” play back the demo named demo.lmp.
  • -record x β€” record a demo named x.lmp.
  • -shorttics β€” play with low turning resolution to emulate demo recording.
  • -strictdemos β€” when recording or playing back demos, disable any extensions of the vanilla demo format: record demos as vanilla would do, and play back demos as vanilla would do. vanilla vanilla vanilla. no add-ons, no extras, we're being faithful.
  • -timedemo demo β€” play back the demo named demo.lmp, determining the framerate of the screen.

πŸ”₯ COMPATIBILITY πŸ”₯

  • -donut x y β€” use the specified magic values when emulating behavior caused by memory overruns from improperly constructed donuts. in Vanilla Doom this can differ depending on the operating system. the default (if you don't specify this option) is to emulate the behavior when running under Windows 98.
not me explaining donut overruns like it's normal. it IS normal here. this is a bug-preservation engine, bestie. the bugs are the point. πŸ’€
  • -gameversion version β€” emulate a specific version of Doom. valid values are "1.2", "1.5", "1.666", "1.7", "1.8", "1.9", "ultimate", "final", "final2", "hacx" and "chex". pick ur era. πŸ•°οΈ
  • -pack pack β€” explicitly specify a Doom II "mission pack" to run as, instead of detecting it based on the filename. valid values are: "doom2", "tnt" and "plutonia".
  • -setmem version β€” specify DOS version to emulate for NULL pointer dereference emulation. supported versions are: dos622, dos71, dosbox. the default is to emulate DOS 7.1 (Windows 98).
  • -spechit n β€” use the specified magic value when emulating spechit overruns.
  • -statdump filename β€” dump statistics information to the specified filename on the levels that were played. the output from this option matches the output from statdump.exe (see ctrlapi.zip in the /idgames archive).

πŸ’œ OBSCURE AND LESS-USED OPTIONS πŸ’œ

these are the deep cuts. the b-sides. the ones u find at 3am and become obsessed with. 🎧

  • -cdrom β€” [windows only] save configuration data and savegames in c:\doomdata, allowing play from CD.
  • -dumpsubstconfig file β€” read all MIDI files from loaded WAD files, dump an example substitution music config file to the specified file, and quit.
  • -mb mb β€” specify the heap size, in MiB.
  • -mmap β€” use the OS's virtual memory subsystem to map WAD files directly into memory. she's memory-mapping. she's efficient. she's iconic. ⭐
  • -nogui β€” if specified, don't show a GUI window for error messages when the game exits with an error. raw errors. no cosy popup. just text and consequences. πŸ™ˆ

ok so that's the end of part one, bestie β€” there's more coming, don't go anywhere πŸ’–

πŸ” IWAD SEARCH PATHS πŸ”

ok so before you can play literally anything, you need an IWAD file, bestie. it's a big chonky file with all the levels, graphics, sound effects, music and other material that makes up the game. IWADs get named after the game they belong to, and the standard names are:

  • doom.wad, doom1.wad, doom2.wad, tnt.wad, plutonia.wad β€” Doom, Doom II, Final Doom πŸ’€
  • heretic.wad, hexen.wad, strife.wad β€” Heretic, Hexen and Strife (the commercial Doom engine games)
  • hacx.wad, chex.wad β€” Hacx and Chex Quest, aka the more obscure games based on the Doom engine 🧚
  • freedm.wad, freedoom1.wad, freedoom2.wad β€” the Freedoom open content IWAD files ✨

and here's the tea: these directory paths get searched in order to find an IWAD πŸ‘‘

  • Current working directory β€” any IWAD files found here get used in preference to IWADs found in any other directories. main character behavior honestly.
  • DOOMWADDIR β€” set this environment variable to a path pointing at a single directory to look for IWAD files in. most Doom source ports support this one, so it's giving community standard πŸ’…
  • DOOMWADPATH β€” if you set this, it can hold a colon-separated list of directories to search for IWAD files, or alternatively full paths to specific IWAD files. flexible queen πŸŽ€
  • $HOME/.local/share/games/doom β€” a writeable directory in the user's home directory. you can override the path with the XDG_DATA_HOME environment variable (see the XDG Base Directory Specification).
  • /usr/local/share/doom
  • /usr/local/share/games/doom
  • /usr/share/doom
  • /usr/share/games/doom β€” system-wide locations that all users can access. /usr/share/games/doom is a standard path supported by most Doom source ports. you can override these paths with the XDG_DATA_DIRS environment variable (see the XDG Base Directory Specification).

all of the above can be overridden on a one-time basis by using the -iwad command line parameter to hand over the path to an IWAD file you wanna use. this parameter can also be used to name a particular IWAD to use from one of those paths up there. like, for example, -iwad doom.wad will search the above paths for the file doom.wad and use it. no cap. πŸ¦‹


🌿 ENVIRONMENT 🌿

this section is all about the environment variables that control Chocolate Doom's behavior. yes bestie, you can vibe-tune it 🌸

  • DOOMWADDIR
  • DOOMWADPATH β€” see section "IWAD SEARCH PATHS" above ⬆️
  • PCSOUND_DRIVER β€” when you're running in PC speaker sound effect mode, this environment variable says which PC speaker driver to use for sound effect playback. the valid options are "Linux" for the Linux console mode driver, "BSD" for the NetBSD/OpenBSD PC speaker driver, and "SDL" for SDL-based emulated PC speaker playback (using the digital output). pick your fighter πŸ’–
  • OPL_DRIVER β€” when you're using OPL MIDI playback, this environment variable says which OPL backend driver to use. the valid options are "SDL" for an SDL-based software emulated OPL chip, "Linux" for the Linux hardware OPL driver, and "OpenBSD" for the OpenBSD/NetBSD hardware OPL driver.

and generally speaking? a real hardware OPL chip sounds better than software emulation, periodt. but modern machines don't often include one 😭 and even if it's present, it may still require extra work to set up and elevated security privileges to access. so like, proceed with intention.


πŸ“ FILES πŸ“

  • $HOME/.local/share/chocolate-doom/default.cfg β€” the main configuration file for Chocolate Doom. see default.cfg(5).
  • $HOME/.local/share/chocolate-doom/chocolate-doom.cfg β€” extra configuration values that are specific to Chocolate Doom and not present in Vanilla Doom. see chocolate-doom.cfg(5).

πŸ‘€ SEE ALSO πŸ‘€

chocolate-server(6), chocolate-setup(6), chocolate-heretic(6), chocolate-hexen(6), chocolate-strife(6)

the whole friend group fr fr 🫢


πŸ’– AUTHOR πŸ’–

Chocolate Doom is written and maintained by Simon Howard. it's based on the LinuxDoom source code, released by Id Software. iconic lineage ngl ✨


Copyright Β© id Software Inc. Copyright Β© 2005-2016 Simon Howard.

This is free software. You may redistribute copies of it under the terms of the GNU General Public License http://www.gnu.org/licenses/gpl.html. There is NO WARRANTY, to the extent permitted by law.

bestie that NO WARRANTY is in all caps for a reason β€” it's fr fr, not a vibe πŸ’€

and that's the whole page, we did it πŸŽ‰ this was Chocolate Doom 3.1.1, dated 2018-01-09, and yes the man page is literally called chocolate-doom(6) πŸ«πŸ’… now go play some Doom, you absolute legend πŸ‘‘πŸŒˆ