Crispy Doom is a friendly fork of Chocolate Doom that provides a higher display resolution, removes the static limits of the Doom engine and offers further optional visual, tactical and physical enhancements while remaining entirely config file, savegame, netplay and demo compatibile with the original.
Objectives and featuresEdit
Crispy Doom is a source port that aims to provide a faithful Doom gaming experience while also featuring some user-requested improvements and enhancements. It is forked off of Chocolate Doom to take advantage of its free and open-source code base, portability, accuracy and compatibility with Vanilla Doom.
Its core features are:
- Enhanced 640x400 display resolution, with the original 320x200 resolution still available in the "Graphics Detail: Low" mode.
- Removal of all static engine limits, or at least raising of the less crucial ones.
- Full support for the "Doom Classic" WADs shipped with the "Doom 3: BFG Edition", especially the "No Rest For The Living" episode shipped in the NERVE.WAD file.
Furthermore, the following optional user-visible and audible features are available:
- Free vertical looking, including mouse look and vertical aiming.
- Aiming support by a crosshair that may get directly rendered into the game world.
- A new minimal Crispy HUD, displaying only the status bar numbers.
- Clean Screenshot feature, enabling to take screenshots without burning the crosshair and HUD messages into them. If Crispy HUD is on, the weapon and status bar numbers are not imprinted in the screenshot either, so if you need to take a screenshot without any signs of the player's presence, enable the Crispy HUD.
- Colorized status bar numbers, HUD texts and blood sprites for certain monsters.
- Tranlucency for certain sprites and status bar elements in the Crispy HUD.
- Randomly mirrored death animations and corpse sprites.
- Players may walk over or under monsters and hanging corpses.
- Centered Weapons when firing, weapon recoil thrust and pitch.
- Reports whenever a secret is revealed.
- Level statistics and extended coloring in the Automap.
- Playing sounds (e.g. chainsaw start sound) in full length, deliberately preserving the silent BFG trick.
- Miscellaneous sound fixes.
All of these features are disabled by default and need to get enabled either in the in-game "Crispness" menu or in the crispy-doom-setup tool. They are implemented in a way that preserves demo-compatibility with Vanilla Doom and network game compatibility with Chocolate Doom. Furthermore, Crispy Doom's savegames and config files are compatible, though not identical, to Vanilla Doom's.
Crispy Doom strives for maximum compatibility with all "limit-removing Vanilla" maps -- but not Boom or ZDoom maps. Many additional less user-visible features have been implemented, e.g. fixed engine limitations and crashes, fixed rendering bugs, fixed harmless game logic bugs, full support for DEHACKED files and lumps in BEX format, additional and improved cheat codes, an improved Automap, and many more! For a detailed list of features and changes please refer to the release notes below.
New controls (with default bindings)Edit
- Move Forward (alt.) "W"
- Move Backward (alt.) "S"
- Strafe Left (alt.) "A"
- Strafe Right (alt.) "D"
- Jump (bindable to mouse buttons as well) "/" (like in Chocolate Hexen and Strife)
- Quick Reverse (bindable to keys or mouse buttons as well)
- Mouse Look (bindable to keys or mouse buttons or permanent)
- Look up "PgDn" (bindable to joystick axes)
- Look down "DELETE" (bindable to joystick axes)
- Center view "END"
- Toggle always run "CAPSLOCK"
- Delete savegame "DELETE"
- Go to next level
- Reload current level
- Save a clean screenshot
New command line parametersEdit
- -mergedump <file> merges the PWAD file(s) given on the command line with the IWAD file and writes the resulting data into the <file> given as argument. Might be considered as a replacement for the DEUSF.EXE tool.
- -fliplevels loads mirrored versions of the maps (this was the default on April 1st up to version 5.0).
- -blockmap forces a (re-)building of the BLOCKMAP lumps for loaded maps.
- -monosfx plays all sound effects in mono (new in 5.0).
- -shorttics forces low-resolution turning, like in default demos, which is useful for demo run practice. -longtics -record demoname records a demo with high-resolution turning (as well as in Chocolate Doom).
- -loadgame N -record demoname and -loadgame N -playdemo demoname allow to record and play demos starting from a savegame, not from the level start.
New cheat codesEdit
- TNTWEAP followed by a weapon number gives or removes this weapon (8 = Chainsaw, 9 = SSG). Try to load Doom 1 with DOOM2.WAD as a PWAD and type TNTWEAP9 to play the SSG in Doom 1.
- TNTEM, KILLEM or FHHALL kill all monsters on the current map (and disables all cube spitters).
- SPECHITS triggers all Linedef actions on a map at once, no matter if they are enabled by pushing, walking over or shooting or whether they require a key or not. It also triggers all boss monster and Commander Keen actions if possible.
- NOTARGET or FHSHH toggle deaf and blind monsters that do not act until attacked.
- TNTHOM toggles the flashing HOM indicator (disabled by default).
- SHOWFPS or IDRATE toggle printing the FPS in the upper right corner.
- NOMOMENTUM toggles a debug aid for pixel-perfect positioning on a map (not recommended to use in-game).
- GOOBERS triggers an easter egg, i.e. an "homage to an old friend". ;-)
- IDBEHOLD0 disables all currently active power-ups.
- IDCLEV00 restarts the current level.
- IDMUS00 restarts the current music (new in 5.1).
- VERSION shows the engine version, build date and SDL version (new in 5.1).
- Savegames saved by Crispy Doom are still compatible with Vanilla Doom, but are not identical anymore to the files that Vanilla Doom would have saved. This is caused by several reasons:
- In order to distinguish the NRFTL levels from the regular Doom 2 levels, Crispy Doom uses the gameepisode variable, which is used in Doom 1 to distinguish between the game episodes but is hitherto unused in Doom 2 (e.g. Chocolate Doom ignores the gameepisode variable in Doom 2). Consequently, savegames that have been recorded playing NRFTL in Crispy Doom can be loaded in Chocolate Doom if the latter is invoked with "-file nerve.wad". On the other hand, savegames that are recorded in Chocolate Doom with the "-file nerve.wad" parameter cannot immediately be loaded in Crispy Doom without the "-file nerve.wad" parameter. In order to "convert" savegames to Crispy Doom, run it with the "-file nerve.wad" parameter, load the savegames and save them again. It should then be possible to load them without the "-file nerve.wad" parameter in Crispy Doom.
- Crispy Doom preserves the mobj->target and mobj->tracers fields when saving a game by replacing their contents with specific indices. These indices are then converted back into the corresponding pointers in Crispy Doom when the game is loaded again. In Vanilla Doom, however, the contents of the mobj->target and mobj->tracers fields are disregarded and get overwritten with NULL when loading the game. Games saved in Vanilla Doom, on the other hand, still contain pointers in the mobj->target and mobj->tracers fields, but these will not match any of the indices expected by Crispy Doom and will thus get overwritten with NULL as in Vanilla Doom.
- If you are going to share savegames between Crispy Doom and Chocolate Doom, make sure to load all PWADs with the -merge parameter in the latter.
- The Crispy HUD is displayed when blocksize == 12, which isn't supported by Chocolate Doom. To retain config file compatibility, quit the game with any other view size.
- The "flipped levels" and "SSG available in Doom 1" features introduced in Crispy Doom 1.3 are considered strictly experimental! They may produce savegames, demo files or netgames that are not compatible with Chocolate Doom, Vanilla Doom or previous versions of Crispy Doom at all. Furthermore, the SPECHITS cheat introduced in Crispy Doom 1.5 may leave a map in a completely inconsistent state and games saved after using it may even cause Vanilla to crash by exceeding static limits.
Binaries for Windows XP / Vista / 7 / 8.1 / 10 (both x86 and x64 editions) are available here:
A supplementary Music Pack that contains the fluidsynth library and a freely-available soundfont is available here:
Crispy Doom can play nearly all variants of Doom. If you don't own any, you may download the Shareware version of Doom, extract it and copy the DOOM1.WAD file into your Crispy Doom directory. Alternatively, you may want to play Crispy Doom with Freedoom and a MegaWAD.
Compilation on Debian/Ubuntu systems should be as simple as
sudo apt-get install build-essential automake sudo apt-get build-dep chocolate-doom
to install the prerequisites and then
cd crispy-doom autoreconf -vif ./configure make
After successful compilation the resulting binaries can be found in the src/ directory.
History of changesEdit
Changes of Crispy Doom 5.2 from Crispy Doom 5.1Edit
Crispy Doom 5.2 has been released on April XX, 2018. This release features the new sections of Crispness menu: Rendering for hi-res rendering, framerate and smooth pixel scaling and Demos with options for demo recording/playback timers and progress bar, smooth diminishing lighting, increased number of sound channels and support for taller textures as well as numerous improvements and bug fixes.
- Smooth diminishing lighting option with 32 light levels instead of 16 can now be enabled in Visual section of the Crispness menu.
- The number of sound channels can now be 16 or 32 as an alternative to standard 8, adjustable in Audible section of the Crispness menu.
- "Rendering" Crispness menu section has been introduced, comprising the high resolution rendering, framerate and smooth pixel scaling options.
- Support for DeePsea tall patches to the main patch drawing functions and tall textures/sprites composed of DeePsea tall patches suggested by JNechaevsky has been introduced.
- Resolution-agnostic and fullscreen-stretching patch drawing functions mostly taken from Brad Harding's Doom Retro have been implemented.
- New 'Demos' section of the Crispness menu, including the recording timer, forward/backward counting playback timer and demo progress bar, now 2 px high.
- Support for MUSINFO lumps (dynamic music changing).
- Crisps background texture for the Crispness menu has been created by JNechaevsky.
- "Mono SFX" is now a Crispness menu Audible section item.
- Fonts in text screens (e.g. finale) are now rendered shadowed.
- In fullscreen mode, 16:10 aspect ratio is not enforced when aspect ratio correction is disabled, the game is scaled to the entire screen area instead, contributed to Choco by chungy. For those who prefer 16:10 or other specific aspect ratio, the screen dimensions can be explicitly defined in crispy-doom.cfg (fullscreen_width and fullscreen_height variables). Alas, the bug in SDL2 leaves these variables ignored, hopefully the SDL team fixes it eventually.
- Doom 2 MAP33-related code is now unified with Choco code by CapnClever, but not changing the behavior that is defined by Crispy code.
- Player's viewZ is now updated on sector move.
- Warnings about mapthings without any skill tag set are now issued.
- Exception thrown by Windows when debugging with GDB has been fixed upsteam in Choco by AXDOOMER.
- 'Always Run' is now disabled by default, like in Chocolate Doom, not to confuse players installing Crispy for the first time. Zodomaniac is guilty of this ;) If you prefer Always Run enabled by default, copy the default.cfg and crispy-doom.cfg from your previous installation, you will also avoid re-configuring all the controls.
- Miscellaneous Sound Fixes now include playing the Arch-Vile fire start sound (DSFLAMST) on JNechaevsky's suggestion.
- Palette changes now don't occur when help screen or Crispness menu is active, thanks to mfrancis95 for the contribution.
- Game remaining paused after saving while recording a demo has been fixed on Zodomaniac's report.
- The bug when music was starting to play while paused and changed volume spotted by JNechaevsky has been fixed.
- The in-engine "fixes" replacing WolfSS by Zombiemen for the BFG edition IWAD and removing the TNT MAP31 yellow key erroneous "multiplayer only" flag have been removed because they make demo playback fail as Zodomaniac's investigation has shown. Instead, the PWAD fixes (https://forum.zdoom.org/viewtopic.php?f=19&t=53776 and http://www.teamtnt.com/other/tnt31fix.zip respectively) are recommended.
- player->viewheight calculation in P_ThingHeightClip() has been fixed, spotted by JNechaevsky and Brad Harding.
- Crashes when completing IWAD bonus maps (E1M10: Sewers, MAP33: Betray) while recording a demo have been fixed on Zodomaniac's report.
- Possible falling down into a wall after savegame load has been fixed.
- Zero music volume not muting OPL (and not only OPL) music fully has been fixed. Thanks to JNechaevsky, Zodomaniac and mfrancis95 for reminding again and again about this and nukeykt for clarifying OPL chip limitations and suggesting to pause music when it is muted.
- MAXBUTTONS limit has been removed (mostly because of the SPECHITS cheat and because of the more-then-one-switch-texture-per-line fix mentioned below).
- The glitch of switch textures not changing in some segments in case of additional textures specified has been fixed by means of registering up to three buttons at once for lines with more than one switch texture. Thanks to JNechaevsky for spotting this bug in the Vanilla code and Brad Harding and Jeff Doggett for presenting alternative approaches.
- Bug with music track loop metadata tags on Windows has been fixed upstream in Choco.
- Savegames are now prevented from restoring out-of-range flats. This could happen if a PWAD was loaded in Choco with the -file parameter, a savegame had been saved and then restored in Crispy (which loads PWADs with the -merge parameter).
- Brightmap of COMP2 texture has been fixed in Brad Harding's way.
- Clean screenshot breaking the menu if the regular screenshot key is unbound has been fixed due to JNechaevsky's efforts to track this down.
- Screenshot without 'screen shot' message feature has been repaired.
- Crash on completing NERVE MAP09 when recording/playing back a demo in case NERVE.WAD is auto-loaded with BFG Edition DOOM 2 IWAD has been fixed on Zodomaniac's report.
- Crash on attempt to load a non-existent savegame reported by Zodomaniac has been fixed by chungy (also upstream in Chocolate Doom), now the game errors out with a message saying which savegame could not be loaded.
- Crash when finishing NERVE MAP06 while recording a demo has been fixed, thanks to galileo31dos01 for pointing this out.
- Status bar is now backed up with arms widget background to fix the automap causing pixel replacement reported by JNechaevsky.
- Fixes to Chex Quest:
-do not show the Episode menu anymore when returning from the Skill menu
-explicitly disable the "Colored blood and corpses", "Fix Spectre and Lost Sould blood" and "Randomly mirrored corpses" Crispness menu entries
-some consistency fixes (gamemode, nervewadfile)
done on request by JNechaevsky.
- Resurrections of mirrored corpses staying mirrored have been fixed by mfrancis95.
- Bullet puffs now don't slip to the edge of a sector when passing through the plane, bullets hitting the floors and ceilings in direct aiming mode now have their puffs displayed at the actual hit spots, thanks to JNechaevsky for noticing.
- Window going out of vertical bounds in non FullHD mode at startup has been fixed, window default size is not set to twice the native framebuffer resolution, thanks to JNechaevsky's report.
Crispy Doom 5.2 is based on Chocolate Doom 3.0.0 and has merged all changes to the Chocolate Doom master branch up to commit 1332c5aa
Changes of Crispy Doom 5.1 from Crispy Doom 5.0Edit
Crispy Doom 5.1 has been released on January 13, 2018.
Crispy Doom 5.1 offers some new features and improvements, most of them requested by JNechaevsky, and is accompanied by a new Music Pack adapted to the SDL2 version and tested by Zodomaniac (if you are experiencing problems with playing music remove crispy-midiproc.exe from the game folder).
- Optional Brightmaps for select textures and flats ("walls") and/or pick-up and weapon HUD sprites ("items") have been introduced for all supported IWADs. Thanks to JNechaevsky for this contribution!
- Extended automap colors are now optional, the setting is in the new 'Navigational' section of the Crispness menu.
- A new setting for squatting down the weapon when falling has been introduced to the 'Tactical' section of the Crispness menu.
- A new setting for miscellaneous sound fixes has been introduced to the Audible section of the Crispness menu.
- Demo de-syncing cheats are now disallowed during demo recording or playback as Zodomaniac requested.
- An option for weapon bobbing with half amplitude during firing has been added.
- Combined card and skull keys are now supported in the status bar (if provided by a PWAD).
- The VERSION cheat code showing the engine version, build date and SDL version has been introduced.
- The GPL-licensed P_CreateBlockMap() implementation from MBF has been re-introduced.
- The "power up" sound is not played anymore when selecting the berserk fist, according to Paar's request.
- Fake contrast logic is now also applied to mid-textured lines.
- Demo version mismatch has been made non-fatal for in-game demos, the demo just doesn't play if its version differs from the IWAD version. On deliberate launch of a wrong versioned demo the game still exits with an error message.
- The 'A secret is revealed!' message isn't shown anymore when the menu is active.
- The current music now restarts if IDMUS00 is entered.
- If the D_INTRO music is from a PWAD, and D_INTROA is from a different WAD file, the former is played, as galileo31dos01 pointed out.
- The INTERCEPTS limit has been removed.
- The inverted palette effect is now disabled when the player dies (e.g. when telefragged while having the Invulnerability power-up).
- The yellow bonus palette is now reset and never shown if the player dies.
- The player's looking direction is restored from savegames only if either keyboard-look or mouse-look is enabled.
- Binding of the crispy_smoothscaling config variable has been fixed, reported by Paar.
- The missing line not drawn at the bottom of fuzzed sprites has been fixed.
- VSYNC is now disabled if software rendering is enforced.
- Support for compressed ZDBSP nodes has been brought back, it was accidentally removed in 5.0 by the switch to the SDL2-based configure script.
Crispy Doom 5.1 is based on Chocolate Doom 3.0.0 and has merged all changes to the Chocolate Doom master branch, which has meanwhile merged the sdl2-branch, up to commit 55a1c1c9
Changes of Crispy Doom 5.0 from Crispy Doom 4.3Edit
Crispy Doom 5.0 has been released on November 04, 2017.
This is the first release based on SDL2, merging Chocolate Doom's SDL2-branch which has yet to see its own release.
Besides this major transition, it features the following changes and fixes:
- The NUMCMAPS variable is now initialized to 32 to fix the missing "Finished" and "Now Entering" lines on the intermission screens for Doom 1 (bug introduced in Crispy 4.2).
- Joystick look up/down (which has been introduced for the three non-Doom games in Choco's SDL2-branch) has been adapted to Doom.
- Smooth scaling of the framebuffer content to the game window (which is the only choice in Choco's SDL2-branch) has been made optional with plain nearest interpolation as the other alternative.
- The 60FPS and 70FPS rendering modes have been removed in favor of proper VSYNC.
- DOS references in the game quit confirmation dialogs have been replaced with the name of the actual operating system.
- A new -monosfx command line parameter has been introduced to play all sound effects in mono. Inspired by other Choco derivatives like Russian Doom and Riscos Doom.
- Resolutions above 1920x1200 are now properly supported, thanks to SDL2-based hardware scaling.
Crispy Doom 5.0 has merged all changes to the Chocolate Doom sdl2-branch up to commit 413f4ecd
Crispy Doom maintains a major and a minor version number. The major version number is increased whenever a new official version of Chocolate Doom is released and the changes merged into Crispy Doom. The minor version number is increased whenever changes have been applied that are not part of an official Chocolate Doom release or do only affect Crispy Doom.
Please report any bugs, glitches or crashes that you encounter to the GitHub Issue Tracker.
Although I have played the thought of hacking on Chocolate Doom's renderer for quite some time already, it was Brad Harding's Doom Retro that provided the incentive to finally do it. However, his fork aims at a different direction and I did not take a single line of code from it. Lee Killough's MBF was studied and used to debug the code, especially in the form of Team Eternity's WinMBF source port, which made it easier to compile and run on my machine. And of course there is fraggle's Chocolate Doom with its exceptionally clean and legible source code. Please let me take this opportunity to appreciate all these authors for their work!
Also, thanks plums of the Doomworld forums for beta testing, "release manager" Zodomaniac and "art director" JNechaevsky for the continuous flow of support and inspiration during the 3.x-5.x development cycle and (last but not the least) Cacodemon9000 for his Infested Outpost map that helped to track down quite a few bugs!
Doom is © 1993-1996 Id Software, Inc.;
Boom 2.02 is © 1999 id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman;
PrBoom+ is © 1999 id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman, © 1999-2000 Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze, © 2005-2006 Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko;
Chocolate Doom is © 1993-1996 Id Software, Inc., © 2005 Simon Howard; Chocolate Hexen is © 1993-1996 Id Software, Inc., © 1993-2008 Raven Software, © 2008 Simon Howard;
Strawberry Doom is © 1993-1996 Id Software, Inc., © 2005 Simon Howard, © 2008-2010 GhostlyDeath;
Crispy Doom is additionally © 2014-2018 Fabian Greffrath; all of the above are released under the GPL-2+.
SDL 2.0, SDL_mixer 2.0 and SDL_net 2.0 are © 1997-2016 Sam Lantinga and are released under the zlib license.
Secret Rabbit Code (libsamplerate) is © 2002-2011 Erik de Castro Lopo and is released under the GPL-2+.
Libpng is © 1998-2014 Glenn Randers-Pehrson, © 1996-1997 Andreas Dilger, © 1995-1996 Guy Eric Schalnat, Group 42, Inc. and is released under the libpng license.
Zlib is © 1995-2013 Jean-loup Gailly and Mark Adler and is released under the zlib license.
The Crispy Doom icon (as shown at the top right of this page) is composed of the Chocolate Doom icon and a photo of potato crisps (Utz-brand, grandma's kettle-cooked style) by Evan-Amos who kindly released it into the public domain. The current high-resolution version of this icon has been contributed by JNechaevsky (formerly by Zodomaniac).