chocolate-strife(6)

๐Ÿ“ฆ
version 3.1.1 ยท 4 versions
, in fedora 43, fedora 44, nixpkgs unstable, ubuntu resolute, ubuntu stonking

๐ŸŽ€ chocolate-strife(6) โ€” Games Manual ๐ŸŽ€

okay bestie, welcome to the chocolate-strife manual page. yes it's chocolate-strife from the Games Manual, and yes we're doing this whole thing together. grab a snack. ๐Ÿ’–


โœจ NAME โœจ

chocolate-strife โ€” a historically compatible Strife engine. it's giving accuracy, it's giving preservation, it's giving we love you Rogue Entertainment. ๐Ÿซถ


โœจ SYNOPSIS โœจ

chocolate-strife [options]

โœจ DESCRIPTION โœจ

so. Chocolate Strife is an accurate and complete recreation of Rogue Entertainment's Strife: Quest for the Sigil. no cap. it was built over more than two years of reverse engineering effort โ€” and the actual original programmers of the game gave it their blessing. ๐Ÿ˜ญ๐Ÿ‘‘ the whole lore drop is in the โ€œHISTORYโ€ section below, keep scrolling bestie.


๐Ÿ’… GENERAL OPTIONS ๐Ÿ’…

  • -config file โ€” load your main configuration from the file you specify, instead of the default one. main character config energy.
  • -devparm โ€” developer mode. heads up: this implies -nograph. ๐Ÿ”ง
  • -extraconfig file โ€” load additional configuration from the specified file, instead of the default. the lil bonus config.
  • -file file ... โ€” load the PWAD files you list. every argument after this one gets treated as a PWAD file nameโ€ฆ until one of them starts with a dash, or you run out of arguments. ๐Ÿ—‚๏ธ
  • -iwad file โ€” specify which IWAD file to use.
  • -nograph โ€” disable the graphical introduction sequence. skip the cutscene, we're busy.
  • -nomusic โ€” disable music. ๐ŸŽตโŒ
  • -nomusicpacks โ€” disable substitution music packs.
  • -nosfx โ€” disable sound effects.
  • -nosound โ€” disable all sound output. total silence arc.
  • -novoice โ€” disable voice dialog and show the dialog as text instead โ€” even if voices.wad can be found. ๐Ÿ“œ
  • -response file โ€” load extra command-line arguments from the given response file. the arguments get read out of the file and inserted into the command line, replacing this argument. you can also load a response file with the abbreviated syntax @file.rsp. cute, right?
  • -savedir directory โ€” pick a path to load and save games from. if that directory doesn't exist, it gets created automatically. โœจ
  • -version โ€” print the program version and exit. bye bestie. ๐Ÿ‘‹

๐ŸŽฎ GAME START OPTIONS ๐ŸŽฎ

  • -fast โ€” monsters move faster. good luck, soldier. ๐Ÿƒ๐Ÿ’จ
  • -loadgame s โ€” load the game in slot s.
  • -nomonsters โ€” disable monsters. peaceful era. ๐Ÿ•Š๏ธ
  • -random โ€” items respawn at random locations. ๐ŸŽฒ
  • -respawn โ€” respawn monsters after they are killed. they're not gone, they're just rebooting.
  • -skill skill โ€” set the game skill, 1-5 (1: easiest, 5: hardest). a skill of 0 disables all monsters. choose your fighter. ๐Ÿ’ช
  • -turbo x โ€” turbo mode! the player's speed gets multiplied by x%. if you don't specify x, it defaults to 200. values are rounded up to 10 and down to 400.
  • -warp x โ€” start a game immediately, warping straight to level x. no menu, just vibes. ๐ŸŒ€

๐Ÿ–ฅ๏ธ 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, it says "double" for the 3 one. that's what it says, bestie, we're just reporting the news. ๐Ÿ‘€)
  • -display x โ€” specify the display number on which to show the screen.
  • -fullscreen โ€” run in fullscreen mode. immerse yourself. ๐ŸŒˆ
  • -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. nothing to see here fr.
  • -nograbmouse โ€” don't grab the mouse when running in windowed mode.
  • -nomouse โ€” disable the mouse. ๐ŸญโŒ
  • -width W โ€” specify the screen width, in pixels. implies -window.
  • -window โ€” run in a window. cozy mode. ๐ŸชŸ

๐ŸŒ NETWORKING OPTIONS ๐ŸŒ

  • -altdeath โ€” start a deathmatch game. weapons do not stay in place, and all items respawn after 30 seconds. chaos, but scheduled.
  • -autojoin โ€” automatically search the local LAN for a multiplayer server and join it. social butterfly behavior. ๐Ÿฆ‹
  • -avg โ€” Austin Virtual Gaming: end levels after 20 minutes.
  • -connect address โ€” connect to a multiplayer server running on the given address. ๐Ÿ”Œ
  • -dedicated โ€” start a dedicated server: it routes packets but doesn't participate in the game itself. it's the friend who's just there to support you. ๐Ÿซถ
  • -dup n โ€” reduce the resolution of the game by a factor of n, which reduces the amount of network bandwidth needed.
  • -extratics n โ€” send n extra tics in every packet as insurance against dropped packets. safety net, periodt.
  • -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.
  • -oldsync โ€” use the original network client sync code rather than the improved sync code. vintage, as requested.
  • -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. ๐Ÿคซ
  • -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 your 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.
  • -timer n โ€” for multiplayer games: exit each level after n minutes. โฐ

๐Ÿ’€ DEHACKED AND WAD MERGING ๐Ÿ’€

  • -aa file ... โ€” equivalent to -af <files> -as <files>. two birds, 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). ๐Ÿฉน
  • -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 files. no surprise wads. ๐Ÿ™ˆ
  • -nocheats โ€” ignore cheats in dehacked files. no freebies.
  • -nwtmerge file ... โ€” simulates the behavior of NWT's -merge option. multiple files may be specified.

๐Ÿ“ผ DEMO OPTIONS ๐Ÿ“ผ

  • -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. ๐ŸŽฅ
  • -solo-net โ€” play back a demo recorded in a netgame with a single player.
  • -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. purity check passed. โœจ
  • -timedemo demo โ€” play back the demo named demo.lmp, determining the framerate of the screen. benchmark girlies rise. ๐Ÿ“Š

๐Ÿงฉ COMPATIBILITY ๐Ÿงฉ

  • -donut x y โ€” use the specified magic values when emulating behavior caused by memory overruns from improperly constructed donuts. in Vanilla Strife this can differ depending on the operating system. if you don't specify this option, the default is to emulate the behavior when running under Windows 98. ๐Ÿฉ (yes this is real, no I'm not joking)
  • -gameversion version โ€” emulate a specific version of Strife. valid values are "1.2" and "1.31".
  • -setmem version โ€” specify the 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.

๐Ÿ™ˆ OBSCURE AND LESS-USED OPTIONS ๐Ÿ™ˆ

  • -cdrom โ€” [windows only] save configuration data and savegames in c:\strife.cd, allowing play from CD. ๐Ÿ’ฟ
  • -dumpsubstconfig file โ€” read all MIDI files from the loaded WAD files, dump an example substitution music config file to the specified file, and quit.
  • -flip โ€” flip player gun sprites (broken). โš ๏ธ it literally says broken, bestie. we don't make the rules.
  • -mb mb โ€” specify the heap size, in MiB.
  • -mmap โ€” use the OS's virtual memory subsystem to map WAD files directly into memory. ๐Ÿง 
  • -nogui โ€” if specified, don't show a GUI window for error messages when the game exits with an error.
  • -work โ€” set Rogue playtesting mode (god mode; no cliping mode toggled by backspace). yes, "cliping". we keep it exactly as written. ๐Ÿ› ๏ธ

๐Ÿ”Ž IWAD SEARCH PATHS ๐Ÿ”Ž

to play, you need an IWAD file. it's a big file holding all the levels, graphics, sound effects, music and other material that makes up the game. IWAD files are named according to the game; 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 โ€” the more obscure games based on the Doom engine
  • freedm.wad, freedoom1.wad, freedoom2.wad โ€” the Freedoom open content IWAD files ๐ŸŒˆ

๐Ÿ—บ๏ธ The Search Order ๐Ÿ—บ๏ธ

the following directory paths are searched in order to find an IWAD:

  • Current working directory โ€” any IWAD files found in the current working directory will be used in preference to IWADs found in any other directories. first come, first served.
  • DOOMWADDIR โ€” this environment variable can be set to contain a path to a single directory in which to look for IWAD files. it's supported by most Doom source ports, so it's basically the people's choice.
  • DOOMWADPATH โ€” this environment variable, if set, can contain a colon-separated list of directories in which to look for IWAD files โ€” or alternatively, full paths to specific IWAD files.
  • $HOME/.local/share/games/doom โ€” a writeable directory in the user's home directory. the path can be overridden using 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 can be accessed by all users. the path /usr/share/games/doom is a standard path that is supported by most Doom source ports. these paths can be overridden using the XDG_DATA_DIRS environment variable (see the XDG Base Directory Specification). ๐ŸŒ

๐Ÿ’ก the above can be overridden on a one-time basis by using the -iwad command line parameter to provide the path to an IWAD file to use. this parameter can also be used to specify the name of a particular IWAD to use from one of the above paths. for example, -iwad doom.wad will search the above paths for the file doom.wad to use. โœจ

okay that's it for this part, but we're not done yet โ€” more is coming, so don't go anywhere bestie ๐Ÿซถ

๐ŸŒฟ ENVIRONMENT ๐ŸŒฟ

okay bestie so this section is all about the environment variables that control how Chocolate Strife behaves. think of them as the little settings you whisper into the machine before it even starts up ๐Ÿ’–


DOOMWADDIR ๐ŸŒธ

DOOMWADPATH ๐ŸŒธ

yeah these two? already covered up in the โ€œIWAD SEARCH PATHSโ€ section above, so scroll up if you missed it, no cap โœจ

PCSOUND_DRIVER ๐ŸŽ€

when you're running in PC speaker sound effect mode, this env var tells Chocolate Strife 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 ๐Ÿฆ‹
  • SDL โ€” for SDL-based emulated PC speaker playback (using the digital output) ๐ŸŽฎ

OPL_DRIVER ๐Ÿ’…

when you're using OPL MIDI playback, this env var picks which OPL backend driver to use. valid options are:

  • SDL โ€” an SDL-based software emulated OPL chip
  • Linux โ€” the Linux hardware OPL driver
  • OpenBSD โ€” the OpenBSD/NetBSD hardware OPL driver

ngl, generally speaking a real hardware OPL chip sounds better than software emulation ๐Ÿ‘‘ but likeโ€ฆ modern machines do not often include one. and even if you have one, it may still require extra work to set up and elevated security privileges to access ๐Ÿ˜ญ it's giving high-maintenance, honestly.


๐Ÿ“ FILES ๐Ÿ“

  • $HOME/.local/share/chocolate-doom/strife.cfg โ€” the main configuration file for Chocolate Strife. see strife.cfg(5) โœจ
  • $HOME/.local/share/chocolate-doom/chocolate-strife.cfg โ€” extra configuration values that are specific to Chocolate Strife and not present in Vanilla Strife. see chocolate-strife.cfg(5) ๐Ÿ’–

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

chocolate-doom(6), chocolate-server(6), chocolate-setup(6)

go read those too, bestie, they're iconic ๐Ÿซถ


๐Ÿ“œ HISTORY ๐Ÿ“œ

okay this part is lowkey heartbreaking. the source code for Strife was lost ๐Ÿ˜ญ which means โ€” unlike the code for all the other commercial games using the Doom engine โ€” it cannot be released. the only access we have to the code is the binary executable file.

so what did they do? they brought in reverse engineering tools to disassemble and decompile the executables, cross-referenced those against the Linux Doom and DOS Heretic sources, and then painstakingly combed over everything multiple times, instruction by instruction, to make sure the resulting Chocolate-Doom-based executable is as close as possible to the original. the dedication?? the commitment?? main character energy fr fr ๐Ÿ’œ


โš–๏ธ LEGALITY โš–๏ธ

so, the tea: reverse engineering is a protected activity so long as the original code is not used directly in the product. because of the vast amount of information lost through the process of compilation, and the need to refactor large portions of code in order to eliminate non-portable idioms or to adapt them properly to Chocolate Doom's framework, the resulting code behaves the same, but is not the same code โœจ

plus, James Monroe and John Carmack have both stated that they have no objections to the project. because they are the original authors of the code, and neither Rogue nor their publisher, Velocity, Inc., exist any longer as legal entities, this is effectively legal permission ๐Ÿ‘‘

so likeโ€ฆ we're good. legally. slay ๐Ÿ’…

๐Ÿ’€ BUGS ๐Ÿ’€

Chocolate Strife is almost, but not entirely, perfect at recreating the behavior of Vanilla Strife. so if you notice any discrepancies between this executable and the vanilla DOS program, help us out by reporting them ๐Ÿ™

BUT โ€” and this is important, bestie โ€”

do not report any glitch that you can replicate in the vanilla EXE as a bug. ๐Ÿšซ

the whole point of Chocolate Strife, like Chocolate Doom before it, is to be as bug-compatible with the original game as possible. also be aware that some glitches are impossible to compatibly recreate, and wherever that's the case, Chocolate Strife has erred on the side of not crashing the program โ€” for example by initializing pointers to NULL rather than using them without setting a value first ๐Ÿซถ


๐Ÿซถ AUTHORS ๐Ÿซถ

Chocolate Strife is part of the Chocolate Doom project ๐Ÿ’– It was reverse engineered from the DOS versions of Strife by James Haley and Samuel Villarreal. Chocolate Doom was written and maintained by Simon Howard, and is based on the LinuxDoom source code released by Id Software โญ


Copyright ยฉ id Software Inc. Copyright ยฉ 2005-2013 Simon Howard, James Haley, Samuel Villarreal.

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.


okay that's the whole page bestie, you made it to the end ๐ŸŽ‰ this one's from Chocolate Doom 3.1.1, dated 2018-01-15, and it's the chocolate-strife(6) manpage. go forth and play some Strife, you absolute icon ๐Ÿ‘‘๐Ÿ’–โœจ

๐Ÿ“ฆ where this page comes from