crispy-strife(6)

๐Ÿ“ฆ
version 7.1 ยท 4 versions
, in nixos 26.05, ubuntu questing, ubuntu resolute, ubuntu stonking

crispy-strife ๐Ÿ’… (manual section 6, Games Manual)

okay so bestie, this is the manual page for crispy-strife, section 6, Games Manual. it's LONG so we're doing it in parts. grab a snack. ๐Ÿ“


โœจ NAME โœจ

crispy-strife โ€” the historically compatible Strife engine, no cap. ๐Ÿ’–


๐ŸŽ€ SYNOPSIS ๐ŸŽ€

crispy-strife [options]

๐ŸŒธ DESCRIPTION ๐ŸŒธ

Crispy Strife is an accurate and complete recreation of Rogue Entertainment's Strife: Quest for the Sigil. like, the whole thing. ๐Ÿ˜ญ๐Ÿ’–

it was made through more than two years of reverse engineering effort, and the devs did it with the blessings of the original programmers of the game โ€” the way that's the most iconic flex honestly. go look at the section โ€œHISTORYโ€ below for the whole story. ๐Ÿ‘‘


๐ŸŒˆ GENERAL OPTIONS ๐ŸŒˆ

  • -config file โ€” load your main config from the file you picked, instead of the default one. ๐Ÿ’…
  • -devparm โ€” developer mode. it implies -nograph btw. ๐Ÿ› ๏ธ
  • -extraconfig file โ€” load additional config from the specified file, instead of the default. โœจ
  • -file file ... โ€” load the PWAD files you name. every argument after it counts as a PWAD filename until one starts with a dash or the argument list runs out. ๐Ÿฆ‹
  • -iwad file โ€” tell it which IWAD file to use. ๐Ÿ‘‘
  • -nograph โ€” disables the graphical intro sequence. skip the cutscene era. ๐Ÿ™ˆ
  • -nomusic โ€” no music. ๐Ÿ’€
  • -nomusicpacks โ€” no substitution music packs either. ๐ŸŽต
  • -nosfx โ€” no sound effects. ๐Ÿ”‡
  • -nosound โ€” kills all sound output, periodt. ๐Ÿ˜ญ
  • -novoice โ€” disables voice dialog and shows 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 from the file and inserted into the command line, replacing this argument. you can also load one with the abbreviated syntax '@file.rsp'. ๐Ÿซถ
  • -savedir directory โ€” pick the path to load and save games from. if the directory doesn't exist, it gets automatically created, she's self-sufficient. ๐Ÿ’…
  • -version โ€” prints the program version and dips. ๐ŸŒˆ

๐ŸŽฎ GAME START OPTIONS ๐ŸŽฎ

  • -doubleammo โ€” double ammo pickup rate. ๐Ÿšจ NOT allowed when recording a demo, playing back a demo, or starting a network game. know the rules bestie.
  • -fast โ€” monsters move faster. faster. ๐Ÿ˜ญ
  • -loadgame s โ€” load the game in slot s. ๐Ÿ’พ
  • -nomonsters โ€” disable monsters. (peaceful queen era ๐ŸŒธ)
  • -random โ€” items respawn at random locations. ๐ŸŽฒ
  • -respawn โ€” monsters respawn after they get killed. ๐Ÿ”ฅ
  • -skill skill โ€” set the game skill, 1-5 (1: easiest, 5: hardest). a skill of 0 disables all monsters. ๐Ÿ’…
  • -turbo x โ€” turbo mode. the player's speed is multiplied by x%. if you leave it unspecified, x defaults to 200. values are rounded up to 10 and down to 400. ๐ŸŽ๏ธ
  • -warp x โ€” start a game immediately, warping to level x. ๐ŸŒ€

๐Ÿ–ฅ๏ธ 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 bestie, it says โ€œdouble up โ€ฆ to 3xโ€, we don't make the rules, we just report them ๐Ÿ’€)
  • -display x โ€” specify the display number to show the screen on. ๐Ÿ–ผ๏ธ
  • -fullscreen โ€” run in fullscreen mode. ๐Ÿ‘‘
  • -geometry WxH โ€” set the dimensions of the window. implies -window. ๐Ÿ“
  • -height H โ€” set the screen height, in pixels. implies -window. ๐Ÿ“
  • -noblit โ€” disable blitting the screen. ๐Ÿšซ
  • -nodraw โ€” disable rendering the screen entirely. like, nothing. ๐Ÿ’€
  • -nograbmouse โ€” don't grab the mouse when you're running in windowed mode. ๐Ÿญ
  • -nomouse โ€” disable the mouse. ๐Ÿ–ฑ๏ธ
  • -width W โ€” set the screen width, in pixels. implies -window. ๐Ÿ“
  • -window โ€” run in a window. ๐ŸชŸ

๐ŸŒ NETWORKING OPTIONS ๐ŸŒ

  • -altdeath โ€” start a deathmatch game. weapons do not stay in place and all items respawn after 30 seconds. ๐Ÿ”ฅ
  • -autojoin โ€” automatically search the local LAN for a multiplayer server and join it. ๐Ÿซถ
  • -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, routing packets but not participating in the game itself. ๐Ÿค–
  • -dup n โ€” reduce the resolution of the game by a factor of n, which cuts down the network bandwidth needed. ๐Ÿ“‰
  • -extratics n โ€” send n extra tics in every packet as insurance against dropped packets. ๐Ÿ›ก๏ธ
  • -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 instead of the improved sync code. ๐Ÿง“
  • -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, give the server a name. ๐Ÿท๏ธ
  • -solo-net โ€” start the game playing as though it's 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>". โœจ
  • -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. ๐Ÿšซ
  • -nocheats โ€” ignore cheats in dehacked files. ๐Ÿ˜‡
  • -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. ๐ŸงŠ
  • -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 Strife 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. ๐Ÿฉ
  • -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, which lets you 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. ๐Ÿ”„
  • -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). ๐Ÿ˜Ž

๐Ÿ”Ž IWAD SEARCH PATHS ๐Ÿ”Ž

okay so to actually 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 after the game, 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 (commercial Doom engine games).
  • hacx.wad, chex.wad โ€” Hacx and Chex Quest โ€” more obscure games based on the Doom engine.
  • freedm.wad, freedoom1.wad, freedoom2.wad โ€” the Freedoom open content IWAD files.

the following directory paths get searched in order to find an IWAD: ๐Ÿ”

  1. Current working directory โ€” any IWAD files found here will be used in preference to IWADs found in any other directories. ๐Ÿ’…
  2. DOOMWADDIR โ€” this environment variable can be set to hold a path to a single directory to look for IWAD files in. this environment variable is supported by most Doom source ports. ๐Ÿซถ
  3. DOOMWADPATH โ€” this environment variable, if it's set, can hold a colon-separated list of directories to look for IWAD files in, or alternatively full paths to specific IWAD files. ๐ŸŒˆ
  4. $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). ๐Ÿ 
  5. /usr/local/share/doom
  6. /usr/local/share/games/doom
  7. /usr/share/doom
  8. /usr/share/games/doom โ€” system-wide locations that all users can access. the path /usr/share/games/doom is a standard path that's supported by most Doom source ports. these paths can be overridden using the XDG_DATA_DIRS environment variable (see the XDG Base Directory Specification). ๐Ÿ›๏ธ

alllll of 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. โœจ


โœจ ENVIRONMENT โœจ

okay bestie, this section is literally the vibes your shell can set to boss Crispy Strife around. Environment variables? iconic. Let's get into it.

  • DOOMWADDIR โ€” See section โ€œIWAD SEARCH PATHSโ€ above.
  • DOOMWADPATH โ€” See section โ€œIWAD SEARCH PATHSโ€ above.
  • PCSOUND_DRIVER โ€” When you're running in PC speaker sound effect mode, this env var tells it which PC speaker driver to use for sound effect playback. Valid choices 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). Slay.
  • OPL_DRIVER โ€” When you're using OPL MIDI playback, this env var picks the OPL backend driver. Valid choices 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.
ngl, generally speaking, a real hardware OPL chip sounds better than software emulation; however, modern machines do not often include one. If present, it may still require extra work to set up and elevated security privileges to access. ๐Ÿ’€

๐Ÿ“ FILES ๐Ÿ“

Here's where Crispy Strife keeps its config cuteness:

  • $HOME/.local/share/crispy-doom/strife.cfg โ€” The main configuration file for Crispy Strife. See strife.cfg(5).
  • $HOME/.local/share/crispy-doom/crispy-strife.cfg โ€” Extra configuration values that are specific to Crispy Strife and not present in Vanilla Strife. See crispy-strife.cfg(5).

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

Go read these next, bestie:


๐Ÿ•ฐ๏ธ HISTORY ๐Ÿ•ฐ๏ธ

So the tea is: 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. Reverse engineering tools were employed to disassemble and decompile the executables, which were cross-referenced against the Linux Doom and DOS Heretic sources and painstakingly combed over multiple times, instruction by instruction, to ensure that the resulting Chocolate-Doom-based executable is as close as possible to the original. That's dedication, fr fr. ๐Ÿ’–


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

Reverse engineering is a protected activity so long as the original code is not used directly in the product. Due to 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.

In addition, 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. Periodt. ๐Ÿ‘‘


๐Ÿ› BUGS ๐Ÿ›

Crispy Strife is almost, but not entirely perfect, in recreating the behavior of Vanilla Strife. Help us by reporting any discrepancies you might notice between this executable and the vanilla DOS program. ๐Ÿซถ

However, do not report any glitch that you can replicate in the vanilla EXE as a bug. The point of Crispy 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 this is the case, Crispy 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. No cap.

โœ๏ธ 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. Legends only. ๐ŸŒˆ


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.


This whole iconic manual page is from Crispy Doom 7.1.0, dated 2018-01-15, and it's literally crispy-strife(6) โ€” bestie, you ate. ๐Ÿ’…โœจ

๐Ÿ“ฆ where this page comes from