Chocolate Doom Changelog

What's new in Chocolate Doom 2.2.0

Jun 24, 2015
  • The Hexen four level demo IWAD is now supported. Thanks to Fabian Greffrath for his careful investigation and emulation of the demo game's behavior in developing this.
  • OPL music playback has been improved in a number of ways to match the behavior of Vanilla Doom's DMX library much more closely. OPL3 playback is also now supported. Thanks go to Alexey Khokholov for his excellent research into the Vanilla DMX library that enabled these improvements.
  • New gamepad configurations: - PS4 DualShock 4 (thanks Matt '3nT' Davis). - Xbox One controller on Linux (thanks chungy). - "Super Joy Box 7" USB/PC gameport adapter.
  • The Doom reload hack has been added back. See the wiki for more context on this: http://doomwiki.org/wiki/Reload_hack
  • The IWAD file from Strife: Veteran Edition is now detected automatically (thanks chungy).
  • It's now possible to build outside of the source directory (thanks Dave Murphy).
  • MSVC project files were brought up to date (thanks dbrackett16).
  • M_StringDuplicate() has been added as a safer replacement for strdup() (thanks Quasar). M_StringCopy() now handles short buffers more gracefully.
  • The netgame discrepancy window is now dismissed by pressing enter to proceed, not escape (thanks Alexandre-Xavier).
  • A couple of source files that were in the previous release and were GPL3 have been replaced by GPL2 equivalents. Previous releases that included these files should be retroactively considered GPL3.
  • Bug fixes:
  • A long-standing bug that could cause every display frame to be rendered twice was fixed (thanks Linguica, Harha, Alexandre- Xavier).
  • Lots of endianness fixes were integrated that were found by Ronald Lasmanowicz during development of his Wii port of Chocolate Doom, including a fix for a bug that could cause monsters to become partially invisible.
  • DeHackEd files without a newline character at the EOF are now correctly parsed (thanks Fabian).
  • An infinite loop that could occur in the weapon cycling code was fixed (thanks raithe, Fabian).
  • Mouse input triggered by cursor warp was fixed (thanks Super6-4).
  • Loop tags in substitute music files are ignored if both of the loop tags are equal to zero. This makes us consistent with other source ports that support the tags.
  • It's now possible to more conveniently play back demo .lmp files with names that end in the all-caps '.LMP' (thanks Ioan Chera).
  • Some code that accessed memory after freeing it was fixed. Two new parameters, -zonezero and -zonescan, were added to try to help detect these cases.
  • Mistaken assumptions about representations of booleans that affected some ARM systems were fixed (thanks floppes).
  • memcpy() uses on overlapping memory were changed to use memmove(), fixing abort traps on OpenBSD (thanks ryan-sg).
  • Hyphens in manpages were fixed (thanks chungy, Fabian).
  • Lots of compiler build warnings were fixed (thanks Fabian).
  • Setup tool:
  • The setup tool now has help buttons for its various different screens, which link to articles on the wiki that give more information (thanks to chungy for helping to put the wiki pages together).
  • A fix was applied for a buffer overrun that could occur if the user had lots of IWAD files installed (thanks Fabian).
  • A crash related to username lookup was fixed.
  • It's now possible to connect via the setup tool to multiplayer servers that are not listening on the default port (thanks Alexandre-Xavier).
  • Doom:
  • Sky transitions when emulating the id anthology version of the Final Doom executable were fixed (thanks Alexandre-Xavier, Fabian, chungy).
  • Structure fields in the stair-building functions were fixed to be deterministic, fixing a desync in mm09-512.lmp (thanks Fabian).
  • Hexen:
  • A bug with texture names that had long names was fixed (thanks ETTiNGRiNDER).
  • Minotaur spawn time is now stored in little endian format, fixing a bug that affected compatibility with Vanilla savegames on big endian systems.
  • Code that starts ACS scripts is no longer compiler-dependent.
  • Strife (all these are thanks to Quasar):
  • Sound priority was changed, so that the ticking sound that Stalker enemies make while active matches Vanilla behavior (thanks GeoffLedak).
  • Minor fixes to game behavior to match Vanilla, discovered during development of Strife: Veteran edition.
  • Behavior of descending stairs was fixed to match Vanilla.
  • Inventory items beyond the 8-bit range are now allowed in netgames.
  • Automap behavior better matches Vanilla now.
  • Multiplayer name changes were fixed.
  • Sound origin behavior for switches was fixed.
  • Teleport beacon behavior was fixed.
  • Default Strife skill level and screen size were changed to match Vanilla.
  • Bug was fixed where Rowan would not always take Beldin's ring.
  • Totally-invisible objects are now displayed correctly, and a Vanilla glitch with Shadow Acolytes is correctly emulated.
  • The level name for MAP29 (Entity's Lair) was fixed (thanks chungy).
  • libtextscreen:
  • The main loop now exits immediately once all windows are closed (thanks Alexander-Xavier).
  • The large font is no longer selected based entirely on screen size.

New in Chocolate Doom 2.1.0 (Oct 24, 2014)

  • Chocolate Doom now supports high-quality substitute music packs that are used in place of the original MIDI music tracks. I'm hoping to put together high-quality recordings of the music for all supported games using the Roland SC-55 synthesizer originally used to compose Doom's music (thanks twipley and MusicallyInspired).
  • Support for joysticks and gamepads has been significantly improved in this version. Most gamepads should now work; if they don't, please report a bug. A number of gamepads are now automatically detected and configured automatically; if yours is not, you can help by sending in details. See the following page: http://www.chocolate-doom.org/wiki/index.php/Adding_your_gamepad
  • OPL MIDI playback has been significantly improved, and problems with most tracks should now be resolved. Multi-track MIDI files now play back properly, MIDI tempo meta events are now supported and problems with stuttering when playing certain tracks have been fixed. If you still have problems with OPL playback, let me know.
  • Also of note is that Chocolate Doom now has a document that describes the philosophy of the project and the reasoning behind its design (see PHILOSOPHY distributed with the source).
  • Other new features:
  • There is now a -dehlump command line parameter to load Dehacked files contained inside WAD files (thanks Fabian Greffrath).
  • PNG format screenshots are now supported, and there is a dedicated key binding for taking screenshots without needing to always use -devparm (thanks Fabian Greffrath). The PrintScreen key can be used as a key binding (thanks Alexandre-Xavier).
  • There is now a config file variable (snd_maxslicetime_ms) to control the sound buffer size, and the default is more precise to reduce sound latency (thanks Holering).
  • You can now use an external command for music playback (thanks Holering).
  • All games now detect if you're tring to play using the wrong type of IWAD (doom.wad with Hexen, etc.) and exit with a helpful error message. A couple of users made this mistake after the 2.0 release introduced support for the new games.
  • The OS X app now associates with .hhe and .seh files.
  • There is now a -nodes parameter that automatically starts a netgame when a desired number of players have joined the game.
  • There is now more extensive documentation about music configuration (README.Music).
  • On Linux, a GUI pop-up is used when the game quits with an error to show the error message (thanks Willy Barro).
  • There are now Linux .desktop files for all supported games (thanks Mike Swanson).
  • The -geometry command line parameter can now be used to specify fullscreen or windowed modes, eg. -geometry 640x480w or -geometry 1024x768f. (thanks Mike Swanson)
  • Doom:
  • Minor workarounds were added to allow the BFG Edition IWADs to be used without crashing the game (thanks Fabian Greffrath).
  • GUS patch files included with the BFG Edition are now automatically detected.
  • The 'no fog on spawn west' Vanilla bug is now correctly emulated (thanks xttl).
  • Behavior of older versions of Doom back to v1.666 can now be emulated.
  • The new Freedoom IWAD names are now recognized and supported.
  • Freedoom's DEHACKED lump can now be parsed and is automatically loaded when a Freedoom IWAD file is used (thanks Fabian Greffrath). A new command line parameter, -nodeh, can be used to prevent this from being loaded.
  • Behavior of the M_EPI4 menu item is now correctly emulated based on game version (thanks Alexandre-Xavier).
  • IDCLEV up to MAP40 is now supported, to match Vanilla (thanks Alexandre-Xavier).
  • Level warping on the command line (-warp) to episodes higher than 4 is possible, matching Vanilla behavior (thanks plumsinus).
  • The -cdrom command line parameter writes savegames to the correct directory now, matching Vanilla Doom behavior (thanks Alexandre-Xavier).
  • The Doom II mission pack to use can now be specified manually on the command line with the -pack parameter (thanks chungy)
  • Heretic:
  • Weapon cycling keys for mouse and joystick were fixed (thanks Sander van Dijk).
  • The -timedemo parameter has been fixed, and -playdemo now handles full paths correctly.
  • A bug when panning the map was fixed (thanks Chris Fielder).
  • A savegame bug where plat_t structures were not restored correctly was fixed (thanks romeroyakovlev).
  • Rebinding of the pause key was fixed (thanks Fabian Greffrath).
  • Hexen:
  • Music workarounds have been added so that it is possible to play using the Mac version of the Hexen IWAD file.
  • Weapon cycling keys for mouse and joystick were fixed (thanks Sander van Dijk).
  • The -timedemo parameter has been fixed, and -playdemo now handles full paths correctly.
  • There are now key bindings to allow the artifact keys to be rebound (thanks Fabian Greffrath).
  • Rebinding of the pause key was fixed (thanks Fabian Greffrath).
  • Maximum level number was extended to MAP60, allowing multiplayer games using the Deathkings add-on.
  • The startup screen can now be aborted by pressing escape, like in Vanilla.
  • Desync when playing back DEMO1 was fixed (thanks alexey.lysiuk).
  • Strife:
  • 'Show mission' key is configured properly in setup (thanks Sander van Dijk).
  • Default music volume level now matches Vanilla (thanks Alexandre-Xavier).
  • Teleport beacon allegiance was fixed to match Vanilla (thanks Quasar).
  • The stair building code now more closely matches Vanilla (thanks Quasar).
  • Torpedo weapon changing behavior now matches Vanilla (thanks Quasar).
  • Cleanups:
  • The copyright headers at the top of all source files have been vastly simplified.
  • Unsafe string functions have been eliminated from the codebase. Thanks to Theo de Raadt for calling out Chocolate Doom by name (alongside many other packages) for still using unsafe functions like strcpy: http://marc.info/?l=openbsd-tech&m=138733933417096
  • vldoor_e enum values are now namespaced to avoid potential conflicts with POSIX standard functions.
  • Bug fixes:
  • WAD and Dehacked checksums are now sent to clients and checked correctly when setting up netgames.
  • A bug was fixed that caused sound not to work in multiplayer games (thanks to everyone who reported this, and for Alexandre-Xavier and Quasar for help in fixing it).
  • The "D_DDTBLU disease" bug affecting certain MIDI files has been fixed (thanks plumsinus, Brad Harding and Quasar).
  • Calculation of the -devparm 'ticker' dots was fixed to match Vanilla behavior (thanks _bruce_ and Alexandre-Xavier).
  • The PC speaker code now supports the full range of sound frequencies (thanks Gez).
  • Annoying "jumping" behavior when grabbing the mouse cursor was fixed.
  • The screen is now initialized at the native bit depth by default, to avoid problems with systems that don't handle 8-bit screenbuffers very well any more.
  • The --docdir argument to the configure script is now honored (thanks Jan Engelhardt).
  • Various issues with the build were fixed (thanks Jan Engelhardt and Fabian Greffrath).
  • Backwards parameters were fixed in the sound code (thanks proteal).
  • A crash was fixed when running fullscreen with the -2 parameter (thanks Fabian Greffrath).
  • A crash when using large values of snd_channels was fixed (thanks Alexandre-Xavier).
  • A resource leak in the BSD PC speaker code was fixed (thanks Edward-san).
  • Windows resource files were fixed for Windows 7 (thanks Brad Harding).
  • A hard to trigger crash caused by a realloc() in the WAD code was fixed (thanks Fabian Greffrath for debugging).
  • A bug has been fixed where Chocolate Doom would stay running in the background on Windows after quitting. SDL_Quit() is called now (thanks johnsirett, Brad Harding, Quasar).
  • String replacements in dehacked lumps can now be overridden if a subsequent dehacked patch replaces the same string.
  • libtextscreen:
  • Clicking on scrollbars now jumps to the correct position (thanks Alexandre-Xavier).
  • A use-after-free bug has been fixed where a click in a window that causes the window to close could lead to a crash (thanks DuClare).
  • Characters that are unprintable in the Extended ASCII chart are just ignored when they're typed, rather than appearing as an upside-down question mark (thanks Alexandre-Xavier).

New in Chocolate Doom 2.0.0 (Mar 14, 2014)

  • The codebase now includes Chocolate Heretic and Chocolate Hexen.

New in Chocolate Doom 1.7.0 (Jun 11, 2012)

  • Fix crash when typing lots of Unicode characters into a number input
  • box.
  • Fix chat macros when vanilla_keyboard_mapping is turned off.
  • Fix CP437-Unicode mapping of cedilla character.
  • Upgrade the input box and label widgets to use UTF-8 strings.

New in Chocolate Doom 1.5.0 (Mar 24, 2011)

  • Big changes in this version:
  • The DOSbox OPL emulator (DBOPL) has been imported to replace the older FMOPL code. The quality of OPL emulation is now therefore much better.
  • The game can now run in screen modes at any color depth (not just 8-bit modes). This is mainly to work around problems with Windows Vista/7, where 8-bit color modes don't always work properly.
  • Multiplayer servers now register themselves with an Internet master server. Use the -search command line parameter to find servers on the Internet to play on. You can also use DoomSeeker (http://skulltag.net/doomseeker/) which supports this functionality.
  • When running in windowed mode, it is now possible to dynamically resize the window by dragging the window borders.
  • Names can be specified for servers with the -servername command line parameter.
  • There are now keyboard, mouse and joystick bindings to cycle through available weapons, making play with joypads or mobile devices (ie. without a proper keyboard) much more practical.
  • There is now a key binding to change the multiplayer spy key (usually F12).
  • The setup tool now has a "warp" button on the main menu, like Vanilla setup.exe (thanks Proteh).
  • Up to 8 mouse buttons are now supported (including the mousewheel).
  • A new command line parameter has been added (-solo-net) which can be used to simulate being in a single player netgame.
  • There is now a configuration file parameter to set the OPL I/O port, for cards that don't use port 0x388.
  • The Python scripts used for building Chocolate Doom now work with Python 3 (but also continue to work with Python 2) (thanks arin).
  • There is now a NOT-BUGS file included that lists some common Vanilla Doom bugs/limitations that you might encounter (thanks to Sander van Dijk for feedback).
  • Compatibility:
  • The -timer and -avg options now work the same as Vanilla when playing back demos (thanks xttl)
  • A texture lookup bug was fixed that caused the wrong sky to be displayed in Spooky01.wad (thanks Porsche Monty).
  • The HacX v1.2 IWAD file is now supported, and can be used standalone without the need for the Doom II IWAD (thanks atyth).
  • The I_Error function doesn't display "Error:" before the error message, matching the Vanilla behavior. "Error" has also been removed from the title of the dialog box that appears on Windows when this happens. This is desirable as not all such messages are actually errors (thanks Proteh).
  • The setup tool now passes through all command line arguments when launching the game (thanks AlexXav).
  • Demo loop behavior (ie. whether to play DEMO4) now depends on the version being emulated. When playing Final Doom the game will exit unexpectedly as it tries to play the fourth demo - this is Vanilla behaviour (thanks AlexXav).
  • Bugs fixed:
  • A workaround has been a bug in old versions of SDL_mixer (v1.2.8 and earlier) that could cause the game to lock up. Please upgrade to a newer version if you haven't already.
  • It is now possible to use OPL emulation at 11025Hz sound sampling rate, due to the new OPL emulator (thanks Porsche Monty).
  • The span renderer function (used for drawing floors and ceilings) now behaves the same as Vanilla Doom, so screenshots are pixel-perfect identical to Vanilla Doom (thanks Porsche Monty).
  • The zone memory system now aligns allocated memory to 8-byte boundaries on 64-bit systems, which may fix crashes on systems such as sparc64 (thanks Ryan Freeman and Edd Barrett).
  • The configure script now checks for libm, fixing compile problems on Fedora Linux (thanks Sander van Dijk).
  • Sound distortion with certain music files when played back using OPL (eg. Heretic title screen).
  • Error in Windows when reading response files (thanks Porsche Monty, xttl, Janizdreg).
  • Windows Vista/7 8-bit color mode issues (the default is now to run in 32-bit color depth on these versions) (thanks to everybody who reported this and helped test the fix).
  • Screen borders no longer flash when running on widescreen monitors, if you choose a true-color screen mode (thanks exp(x)).
  • The controller player in a netgame is the first player to join, instead of just being someone who gets lucky.
  • Command line arguments that take an option now check that an option is provided (thanks Sander van Dijk).
  • Skill level names in the setup tool are now written the same as they are on the in-game "new game" menu (thanks AlexXav).
  • There is no longer a limit on the lengths of filenames provided to the -record command line parameter (thanks AlexXav).
  • Window title is not lost in setup tool when changing video driver (thanks AlexXav).
  • libtextscreen:
  • The font used for the textscreen library can be forced by setting the TEXTSCREEN_FONT environment variable to "small" or "normal".
  • Tables or scroll panes that don't contain any selectable widgets are now themselves not selectable (thanks Proteh).
  • The actions displayed at the bottom of windows are now laid out in a more aesthetically pleasing way.