diff --git a/HACKING b/HACKING.md similarity index 61% rename from HACKING rename to HACKING.md index db20f963..0356d2e6 100644 --- a/HACKING +++ b/HACKING.md @@ -1,6 +1,4 @@ - -Coding style guidelines -======================= +# Coding style guidelines The coding style guidelines for Chocolate Doom are designed to keep the style of the original source code. This maintains consistency throughout @@ -9,52 +7,57 @@ of these guidelines are stricter than what was done in the original source; follow these when writing new code only: there is no need to change existing code to fit them. -You should set tabs to _display_ as eight spaces, not four. However, -_indentation_ should be four spaces. If possible, do not use tab -characters at all. There is a utility called "expand" which will remove +You should set tabs to *display* as eight spaces, not four. However, +*indentation* should be four spaces. If possible, do not use tab +characters at all. There is a utility called “expand” which will remove tab characters. For the reasoning behind this, see: http://www.jwz.org/doc/tabs-vs-spaces.html Please write code to an 80 column limit so that it fits within a standard 80 column terminal. Do not leave trailing whitespace at the end of lines. -Functions should be named like this: 'AB_FunctionName'. The 'AB' prefix -denotes the subsystem (AM_ for automap, G_ for game, etc). If a +Functions should be named like this: `AB_FunctionName`. The `AB` prefix +denotes the subsystem (`AM_` for automap, `G_` for game, etc). If a function is static, you can omit the prefix and just name it like -'FunctionName'. Functions and global variables should always be made +`FunctionName`. Functions and global variables should always be made static if possible. -Put '_t' on the end of types created with typedef. Type names like this +Put `_t` on the end of types created with typedef. Type names like this should be all lowercase and have the subsystem name at the start. An -example of this is 'txt_window_t'. When creating structures, always +example of this is `txt_window_t`. When creating structures, always typedef them. Do not use Hungarian notation. Do not use the goto statement. -Use C++-style comments, ie. '//' comments, not '/* ... */' comments. -I don't care that this isn't standard ANSI C. +Use C++-style comments, ie. `//` comments, not `/* ... */` comments. +I don’t care that this isn’t standard ANSI C. -Variables should be named like this: 'my_variable_name', not like this: -'MyVariableName'. In pointer variable declarations, place the '*' next +Variables should be named like this: `my_variable_name`, not like this: +`MyVariableName`. In pointer variable declarations, place the `*` next to the variable name, not the type. When using an if, do, while, or for statement, always use the { } braces even when they are not necessary. For example, do this: - if (condition) - { - body; - } +```c +if (condition) +{ + body; +} +``` Not this: - if (condition) // NO - body; +```c +if (condition) // NO + body; +``` Write code like this: +```c typedef struct { int member1; @@ -117,81 +120,82 @@ void FunctionName(int argument, int arg2, int arg3, int arg4, int arg5, } while (condition); } +``` -Security -======== +## Security The C standard library has a number of unsafe functions that should be avoided when writing code for Chocolate Doom. These are: - Unsafe function Safer alternative - --------------------------------------------- - gets() fgets(.., stdin) - sprintf M_snprintf() - snprintf M_snprintf() - vsprintf M_vsnprintf() - vsnprintf M_vsnprintf() - strcpy() M_StringCopy() - strncpy() M_StringCopy() - strcat() M_StringConcat() - strncat() M_StringConcat() - strdup() M_StringDuplicate() +Unsafe function | Safer alternative +------------------|------------------------ +`gets()` | `fgets(.., stdin)` +`sprintf` | `M_snprintf()` +`snprintf` | `M_snprintf()` +`vsprintf` | `M_vsnprintf()` +`vsnprintf` | `M_vsnprintf()` +`strcpy()` | `M_StringCopy()` +`strncpy()` | `M_StringCopy()` +`strcat()` | `M_StringConcat()` +`strncat()` | `M_StringConcat()` +`strdup()` | `M_StringDuplicate()` Lots of the code includes calls to DEH_String() to simulate string replacement by the Dehacked tool. Be careful when using Dehacked replacements of printf format strings. For example, do not do this: - printf(DEH_String("foo %s"), s); - sprintf(mybuf, DEH_String("bar %s"), t); +```c +printf(DEH_String("foo %s"), s); +sprintf(mybuf, DEH_String("bar %s"), t); +``` Instead do this: - DEH_printf("foo %s", s); - DEH_snprintf(mybuf, sizeof(mybuf), "bar %s", t); +```c +DEH_printf("foo %s", s); +DEH_snprintf(mybuf, sizeof(mybuf), "bar %s", t); +``` This does the format string replacement safely in a way that checks the arguments securely. - -Portability -=========== +## Portability Chocolate Doom is designed to be cross-platform and work on different Operating Systems and processors. Bear this in mind when writing code. -Do not use the long type (its size differs across platforms; use -int or int64_t depending on which you want). +Do not use the `long` type (its size differs across platforms; use +`int` or `int64_t` depending on which you want). -Use Doom's byte data type for byte data. 'int' is assumed to be a -32-bit integer, and 'short' is a 16-bit integer. You can also use the -ISO C99 data types: intN_t and uintN_t where N is 8,16,32,64. +Use Doom’s byte data type for byte data. `int` is assumed to be a +32-bit integer, and `short` is a 16-bit integer. You can also use the +ISO C99 data types: `intN_t` and `uintN_t` where N is 8, 16, 32, 64. Be careful with platform dependencies: do not use Windows API functions, for example. Use SDL where possible. -Preprocessor #defines are set that can be used to identify the OS -if necessary: _WIN32 for Windows and __MACOSX__ for MacOS X. Others +Preprocessor `#defines` are set that can be used to identify the OS +if necessary: `_WIN32` for Windows and `__MACOSX__` for Mac OS X. Others are set through SDL. Try to avoid this if possible. -Be careful of endianness! Doom has SHORT() and LONG() macros that +Be careful of endianness! Doom has `SHORT()` and `LONG()` macros that do endianness conversion. Never assume that integer types have a particular byte ordering. Similarly, never assume that fields inside a structure are aligned in a particular way. This is most relevant when reading or writing data to a file or a network pipe. -For signed integers, you shouldn't assume that (i >> n) is the same as -(i / (1 << n)). However, most processors handle bitshifts of signed -integers properly, so it's not a huge problem. +For signed integers, you shouldn’t assume that `(i >> n)` is the same as +`(i / (1 << n))`. However, most processors handle bitshifts of signed +integers properly, so it’s not a huge problem. +## GNU GPL and licensing -GNU GPL and licensing -===================== - -All code submitted to the project must be licensed under the GNU GPL or a -compatible license. If you use code that you haven't 100% written +All code submitted to the project must be licensed under the GNU GPLv2 or a +compatible license. If you use code that you haven’t 100% written yourself, say so. Add a copyright header to the start of every file. Use this template: +``` // // Copyright(C) YEAR Author's name // @@ -208,6 +212,4 @@ this template: // // *File description goes here* // - -# vim: tw=70 - +``` diff --git a/Makefile.am b/Makefile.am index 88105e13..74ee60c7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -39,9 +39,9 @@ CODEBLOCKS_FILES= \ DOC_FILES= \ README.md \ - README.Music \ - NEWS \ - PHILOSOPHY \ + README.Music.md \ + NEWS.md \ + PHILOSOPHY.md \ ChangeLog EXTRA_DIST= \ @@ -49,15 +49,15 @@ EXTRA_DIST= \ $(MSVC_FILES) \ $(CODEBLOCKS_FILES) \ $(DOC_FILES) \ - NOT-BUGS \ - README.Strife \ + NOT-BUGS.md \ + README.Strife.md \ .lvimrc \ - HACKING \ - TODO \ + HACKING.md \ + TODO.md \ rpm.spec doomdocsdir = ${docdir}/../${PROGRAM_PREFIX}doom -doomdocs_DATA = $(DOC_FILES) NOT-BUGS +doomdocs_DATA = $(DOC_FILES) NOT-BUGS.md hereticdocsdir = ${docdir}/../${PROGRAM_PREFIX}heretic hereticdocs_DATA = $(DOC_FILES) @@ -66,7 +66,7 @@ hexendocsdir = ${docdir}/../${PROGRAM_PREFIX}hexen hexendocs_DATA = $(DOC_FILES) strifedocsdir = ${docdir}/../${PROGRAM_PREFIX}strife -strifedocs_DATA = $(DOC_FILES) README.Strife +strifedocs_DATA = $(DOC_FILES) README.Strife.md MAINTAINERCLEANFILES = $(AUX_DIST_GEN) diff --git a/NEWS b/NEWS deleted file mode 100644 index 0daa6e77..00000000 --- a/NEWS +++ /dev/null @@ -1,1178 +0,0 @@ -HEAD: - - General: - * Bash completion scripts are included. (thanks Fabian) - * Support the *.lmp file format in the OS X launcher (thanks Jon) - * Added emulation for pitch-shifting as in early versions of Doom, - Heretic, and Hexen. (thanks Jon) - * Write out aspect-correct 1600×1200 PNGs. (thanks Jon) - * OPL emulation is more accurate. (thanks Nuke.YKT) - * Futher emulation of DMX bugs with GUS cards. (thanks Nuke.YKT) - * Emulation of the disk icon has returned. (thanks Fabian, Jon) - * Checksum calculations were fixed on big endian systems, allowing - multiplayer games to be played in mixed little/big-endian - environments. (thanks GhostlyDeath, njankowski) - - Build systems: - * Improved compatibility with BSD Make. (thanks R.Rebello) - * “./configure --with-PACKAGE” checks were repaired to behave - logically, rather than disabling the feature. (thanks R.Rebello) - * Default to installing the games to ${bindir}, such as /usr/local/bin, - rather than /usr/local/games. (thanks chungy) - * Support Visual Studio 2015. (thanks Azarien) - * Allow SDL headers and libraries to exist in the Microsoft Visual - Studio project directory. (thanks Quasar) - * Repaired the CodeBlocks projects by removing non-existent files from - the project files (thanks krystalgamer) - - Doom: - * Chex Quest's level warp cheat (LEESNYDER##) was changed to behave - like the original EXE. (thanks Nuke.YKT) - * Allow starting multiplayer Chex Quest games. - * Allow Freedoom: Phase 1 ≤ 0.10.1 to be loaded with mods, with - -gameversion older than ultimate. (thanks Fabian, chungy) - * Added safety checks against write failures when saving a game, - such as when the directory is read-only. Try falling back to a - temporary directory and reporting an error instead. - (thanks terrorcide) - * Versions 1.666, 1.7, and 1.8 are emulated. (thanks Nuke.YKT) - - Heretic: - * Added map names for Episode 6, fixing a crash after completing a - level in this episode. (thanks J.Benaim) - - Hexen: - * The MRJONES cheat code returns an identical string as vanilla, - and enables fully reproducable builds. (thanks Fabian) - * Fixed an issue where the game crashed while killing the Wraithverge - in 64-bit builds. (thanks J.Benaim) - - Strife: - * Support added for automatic loading of the IWAD from the GOG.com - release of Strife: Veteran Edition on Windows. (thanks chungy) - * Jumping can be bound to a mouse button. (thanks Gez) - * Gibbing logic was changed to match vanilla behavior. (thanks Quasar) - * Several constants differences from vanilla were fixed. (thanks - Nuke.YKT, Quasar) - * When using -iwad, voices.wad from the IWAD's directory is prefered - over auto-detected DOS/Steam/GOG.com installs. (thanks Quasar) - - libtextscreen: - * Simplified the API for creating and managing tables and columns. - * Allow cycling through tables with tab key. - -2.2.1 (2015-09-10): - - Chocolate Doom has not seen a great deal of "stable" patch - releases in its history. While the development tree sees major new - features and changes, the purpose of this release, and hopefully - others to follow like it, is to repair some deficiencies that - existed in 2.2.0. - - General: - * Preferences for the OS X launcher are now stored with a unique - name to not conflict with other applications. (thanks Xeriphas1994) - * Unix desktop entry files are now brought up to full desktop - entry specification compliance. (thanks chungy, Fabian) - * Unix AppData entries are now included, allowing software centers - to display detailed information about the engines. (thanks chungy) - * Partial XDG base directory specification compliance on Unix - systems now exist to search for IWAD paths. One benefit is that - $HOME/.local/share/games/doom is now a valid location to store - and automatically find IWADs. (thanks chungy) - - Build systems: - * The Microsoft Visual Studio build system was not fully - functional in 2.2.0 and has been fixed. (thanks Linguica) - * The autoconf build system checks for windres only for Windows - toolchains. Some Linux distributions mistakingly include the - program in their native toolchains. (thanks Fabian) - * A compiler hint for packed structs has been added, which - otherwise broke the games when built under recent GCC releases - for Windows. (thanks Fabian) - - Doom: - * The GOG.com releases of The Ultimate Doom, Doom II, and Final - Doom are now detected and supported on Windows. (thanks chungy) - * An integer overflow was used in spawn angle calculation, - undefined C behavior which broke with Clang optimization. - (thanks David Majnemer for insight) - - Setup tool: - * The help URL for the level warp menu now points to the proper - wiki page, rather than the multiplayer page. - * The manifest has been updated for Windows 10 compatibility. - (thanks chungy) - -2.2.0 (2015-06-09): - - * 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. - -2.1.0 (2014-10-22): - - 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). - -2.0.0 (2013-12-09): - - This is version 2.0 of Chocolate Doom! This new major version is - released to celeberate the 20th anniversary of the first release - of Doom in 1993. Happy Birthday Doom! - - This new version has some major changes compared to the 1.0 series: - - * The codebase now includes Chocolate Heretic and Chocolate - Hexen. These are based on the GPL source code released by - Raven Software. - * Also included is Chocolate Strife. This was developed through a - mammoth four year reverse engineering project conducted by - James "Quasar" Haley and Samuel "Kaiser" Villareal. The result - is the most accurate reproduction of Strife to date, including - full demo and savegame compatibility. See README.Strife for - more information. - - Minor features that are nonetheless worth mentioning: - * Chocolate Doom now includes a -statdump command line option, - which emulates the output of the statdump.exe tool. This is - used to implement a form of regression testing (statcheck) that - directly compares against the Vanilla behavior. - * Chocolate Heretic includes HHE patch file support, and I - believe is the first Heretic port to include this feature. - * GUS "pseudo-emulation" is now supported. This does not fully - emulate a GUS, but Doom's DMXGUS lump can be used to generate - a Timidity configuration file that plays music using the GUS - patch set. - * The setup tool now includes a built-in server browser, for use - when selecting a server to join. - - Version 2.0 of Chocolate Doom has been in development for a long - time, and there have been many bugs fixed over this time, too many - to list here. Thanks to all the people who have tested it and - diligently reported bugs over this time, and to all the people who - have tested the beta releases over the past couple of months. - Your contributions have been essential and invaluable. - -1.7.0 (2012-06-09): - - * Fixed gnome-screensaver desktop file (thanks Rahul Sundaram). - * Updated COPYING to current version of GPL2 (thanks Rahul - Sundaram). - * Running servers now re-resolve the address of the master server - occasionally, to adapt to DNS address changes. - * Error dialog is no longer shown on OS X when running from the - console. - * The Makefiles no longer use GNU make extensions, so the package - builds on OpenBSD. - * There is now an OPL MIDI debug option (-opldev), useful for - when developing GENMIDI lumps. - * A workaround for SDL mouse lag is now only used on Windows - (where it is needed), and not on other systems. This fixes - Chocolate Doom on AmigaOS (thanks Timo Sievänen). - * UTF-8 usernames are supported, and Windows usernames with - non-ASCII characters are now supported (thanks Alexandre - Xavier). - - Compatibility: - * Palette accuracy is reduced to 6 bits per channel, to more - accurately emulate the PC VGA hardware (thanks GhostlyDeath). - * Fixed teleport behavior when emulating the alternate Final Doom - executable (-gameversion final2) (thanks xttl). - - Bugs fixed: - * Fixed weapon cycling keys when playing in Shareware Doom and using - the IDKFA cheat (thanks Alexandre Xavier). - * Fixed the default mouse buttons in the setup tool (thanks - Alexandre Xavier). - * Chat macros now work when vanilla_keyboard_mapping is turned - off. - * Default chat macros were fixed in the setup tool. - * Ping time calculation was fixed for LAN search, and made more - accurate for all searches. - * Fixed bug with detection of IWAD type by filename (thanks mether). - - libtextscreen: - * There is now limited UTF-8 text support in the textscreen - library, used in the label and input box widgets. - * Scroll bar behavior was fixed (thanks Alexandre Xavier). - * Input boxes stop editing and save when they lose their focus, - correcting a previous counterintuitive behavior (thanks - Twelve). - * The numeric keypad now works properly when entering text values - (thanks Twelve). - -1.6.0 (2011-05-17): - - * The instructions in the INSTALL file are now customized for - different platforms, and each binary package contains a version - with instructions specific to the platform that it is - targetting. This should help to avoid confusion that some - users have reported experiencing. - * The display settings window in the setup tool has been - reorganised to a better arrangement. - * It is now possible to load .lmp files (and play back demos) - with long filenames (thanks blzut3). - * In the setup tool, it is now possible to hold down shift when - changing key/mouse/joystick bindings to prevent other bindings - to the same key from being cleared (thanks myk). - * The joystick menu in the setup tool now has a test button - (thanks Alexandre Xavier). - * Specifying the -privateserver option implies -server (thanks - Porsche Monty). - * The Mac OS X .dmg package now has a background and looks generally - more polished. - * In Mac OS X, it is now possible to simply double click an IWAD - file in the Finder to configure its location within the launcher. - * Freedesktop.org desktop files are now installed for Doom and - the setup tool, which will appear in the main menu on desktop - environments such as Gnome and KDE (thanks Adrián Chaves - Fernández). - * The Chex Quest dehacked patch (chex.deh) will now be detected - if it is in the same directory as the IWAD file. - - Compatibility: - * Added support for the alternate version of the Final Doom - executable included in some later versions of the Id Anthology. - This version fixed the demo loop crash that occurred with the - "original" Final Doom executable. - - This executable can be selected on the command line with - -gameversion final2. It has been made the default when playing - with the Final Doom IWADs (the original behavior can be - selected with -gameversion final). (thanks Porsche Monty, - Enjay). - * Very short sound effects are not played, to better emulate the - behavior of DMX in Vanilla Doom (thanks to Quasar for help in - investigating this). - * The null sector dereference emulation code has been imported - from Prboom+ - this fixes a desync with CLNJ-506.LMP (thanks - entryway). - * The IDMUS cheat doesn't work when emulating the v1.9 executable - (thanks Alexandre Xavier). - - Bugs fixed: - * Menu navigation when using joystick/joypad (thanks Alexandre - Xavier). - * For configuration file value for shift keys, use scan code for - right shift, not left shift (thanks Alexandre Xavier). - * Default joystick buttons for the setup tool now match Vanilla - (thanks twipley). - * Visual Studio project files work again (thanks GhostlyDeath). - * The default sfx/music volume set by the setup tool is now 8 - instead of 15, matching the game itself. (thanks Alexandre - Xavier). - * Weapon cycling from the shotgun to the chaingun in Doom 1 now - works properly (thanks Alexandre Xavier). - * MIDI playback that locked up when using an empty MUS / MIDI - file (thanks Alexandre Xavier). - * Default sampling rate used by setup tool changed to 44100Hz, to - match the game default (thanks Alexandre Xavier). - * Cheat codes and menu hot keys now work when shift is held down - or capslock turned on (thanks Alexandre Xavier). - - libtextscreen: - * The background on GUI controls now lights up when hovering over - them, so that it is more obvious what you are selecting. - * It is now possible to type a '+' in input boxes (thanks - Alexandre Xavier). - * It is possible to use the mouse wheel to scroll through scroll - panes. - * Clicking on scroll bars now moves the scroll handle to a - matching location. - * Clicking outside a dropdown list popup window now dismisses the - window. - * Window hotkeys that are an alphabetical letter now work when - shift is held down or capslock turned on (thanks Alexandre - Xavier). - -1.5.0 (2011-01-02): - - 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. - -1.4.0 (2010-07-10): - - The biggest change in this version is the addition of OPL - emulation. This emulates Vanilla Doom's MIDI playback when - using a Yamaha OPL synthesizer chip, as was found on - SoundBlaster compatible cards. - - A software OPL emulator is included as most modern computers do - not have a hardware OPL chip any more. If you do have one, you - can configure Chocolate Doom to use it; see README.OPL. - - The OPL playback feature is not yet perfect or 100% complete, - but is judged to be good enough for general use. If you find - music that does not play back properly, please report it as a - bug. - - Other changes: - * The REJECT overflow emulation code from PrBoom+ has been - imported. This fixes demo desync on some demos, although - others will still desync. - * Warnings are now generated for invalid dehacked replacements of - printf format strings. Some potential buffer overflows are - also checked. - * The installation instructions (INSTALL file) have been - clarified and made more platform-agnostic. - * The mouse is no longer warped to the center of the screen when - the demo sequence advances. - * Key bindings can now be changed for the demo recording quit key - (normally 'q') and the multiplayer messaging keys (normally - 't', 'g', 'i', 'b' and 'r'). - -1.3.0 (2010-02-10): - - * Chocolate Doom now runs on Windows Mobile/Windows CE! - * It is possible to rebind most/all of the keys that control the - menu, shortcuts, automap and weapon switching. The main - reason for this is to support the Windows CE port and other - platforms where a full keyboard may not be present. - * Chocolate Doom now includes a proper Mac OS X package; it is - no longer necessary to compile binaries for this system by - hand. The package includes a simple graphical launcher - program and can be installed simply by dragging the "Chocolate - Doom" icon to the Applications folder. (thanks to Rikard Lang - for extensive testing and feedback) - * The video mode auto-adjust code will automatically choose - windowed mode if no fullscreen video modes are available. - * The zone memory size is automatically reduced on systems with - a small amount of memory. - * The "join game" window in the setup tool now has an option to - automatically join a game on the local network. - * Chocolate Doom includes some initial hacks for compiling under - SDL 1.3. - * Recent versions of SDL_mixer include rewritten MIDI code on Mac - OS X. If you are using a version of SDL_mixer with the new - code, music will now be enabled by default. - * Windows Vista and Windows 7 no longer prompt for elevated - privileges when running the setup tool (thanks hobbs and - MikeRS). - * The Windows binaries now have better looking icons (thanks - MikeRS). - * Magic values specified using the -spechit command line - parameter can now be hexadecimal. - * DOOMWADDIR/DOOMWADPATH can now specify the complete path to - IWAD files, rather than the path to the directory that contains - them. - * When recording shorttics demos, errors caused by the reduced - turning resolution are carried forward, possibly making turning - smoother. - * The source tarball can now be used to build an RPM package: - rpmbuild -tb chocolate-doom-VER.tar.gz - - Compatibility: - * The A_BossDeath behavior in v1.9 emulation mode was fixed - (thanks entryway) - * The "loading" disk icon is drawn more like how it is drawn in - Vanilla Doom, also fixing a bug with chook3.wad. - * Desync on 64-bit systems with ep1-0500.lmp has (at long last) - been fixed (thanks exp(x)). - * Donut overrun emulation code imported from Prboom+ (thanks - entryway). - * The correct level name should now be shown in the automap for - pl2.wad MAP33 (thanks Janizdreg). - * In Chex Quest, the green radiation suit colormap is now used - instead of the red colormaps normally used when taking damage - or using the berserk pack. This matches Vanilla chex.exe - behavior (thanks Fuzztooth). - * Impassible glass now displays and works the same as in Vanilla, - fixing wads such as OTTAWAU.WAD (thanks Never_Again). - - Bugs fixed: - * Memory-mapped WAD I/O is disabled by default, as it caused - various issues, including a slowdown/crash with Plutonia 2 - MAP23. It can be explicitly re-enabled using the '-mmap' - command line parameter. - * Crash when saving games due to the ~/.chocolate-doom/savegames - directory not being created (thanks to everyone who reported - this). - * Chocolate Doom will now run under Win95/98, as the - SetProcessAffinityMask function is looked up dynamically. - * Compilation under Linux with older versions of libc will now - work (the semantics for sched_setaffinity were different in - older versions) - * Sound clipping when using libsamplerate was improved (thanks - David Flater) - * The audio buffer size is now calculated based on the sample - rate, so there is not a noticeable delay when using a lower - sample rate. - * The manpage documentation for the DOOMWADPATH variable was - fixed (thanks MikeRS). - * Compilation with FEATURE_MULTIPLAYER and FEATURE_SOUND - disabled was fixed. - * Fixed crash when using the donut special type and the joining - linedef is one sided (thanks Alexander Waldmann). - * Key settings in a configuration file that are out of range - do not cause a crash (thanks entryway). - * Fix ear-piercing whistle when playing the MAP05 MIDI music - using timidity with EAWPATS (thanks entryway / HackNeyed). - - libtextscreen: - * There is now a second, small textscreen font, so that the - ENDOOM screen and setup tool can be used on low resolution - devices (eg. PDAs/embedded devices) - * The textscreen library now has a scrollable pane widget. Thanks - to LionsPhil for contributing code to scroll up and down using - the keyboard. - * Doxygen documentation was added for the textscreen library. - -1.2.1 (2008-12-10): - - This version just fixes a crash at the intermission screen when - playing Doom 1 levels. - -1.2.0 (2008-12-10): - - Happy 15th Birthday, Doom! - - * Chocolate Doom now has an icon that is not based on the proprietary - Doom artwork. - * There is now memory-mapped WAD I/O support, which should be useful - on some embedded systems. - * Chex quest emulation support is now included, although an - auxiliary dehacked patch is needed (chexdeh.zip in the idgames - archive). - - Compatibility: - * The armor class is always set to 2 when picking up a megasphere - (thanks entryway). - * The quit screen prompts to quit "to dos" instead of just to quit - (thanks MikeRS) - * The "dimensional shambler" quit message was fixed. - * Fix crash related to A_BFGSpray with NULL target when using - dehacked patches - discovered with insaned2.deh - (thanks CSonicGo) - * NUL characters are stripped from dehacked files, to ensure correct - behavior with some dehacked patches (eg. the one with portal.wad). - - Bugs fixed: - * "Python Image Library" should have been "Python Imaging Library" - (thanks exp(x)). - * The setup tool should no longer ask for elevated permissions - on Windows Vista (this fix possibly may not work). - * The application icon is set properly when running under Windows - XP with the "Luna" theme. - * Fix compilation under Cygwin to detect libraries and headers from - the correct environment. - * The video code does not try to read SDL events before SDL has - been properly initialised - this was causing problems with some - older versions of SDL. - -1.1.1 (2008-04-20): - - The previous release (v1.1.0) included a bug that broke compilation - when libsamplerate support was enabled. The only change in this - version is to fix this bug. - -1.1.0 (2008-04-19): - - * The video mode code has been radically restructured. The video mode is - now chosen by directly specifying the mode to use; the scale factor is - then chosen to fit the screen. This is helpful when using widescreen - monitors (thanks Linguica) - * MSVC build project files (thanks GhostlyDeath and entryway). - * Unix manpage improvements; the manpage now lists the environment - variables that Chocolate Doom uses. Manpages have been added for - chocolate-setup and chocolate-server, from the versions for the Debian - Chocolate Doom package (thanks Jon Dowland). - * INSTALL file with installation instructions for installing Chocolate - Doom on Unix systems. - * Support for high quality resampling of sound effects using - libsamplerate (thanks David Flater). - * A low pass filter is applied when doing sound resampling in an - attempt to filter out high frequency noise from the resampling - process. - * R_Main progress box is not displayed if stdout is a file (produces - cleaner output). - * Client/server version checking can be disabled to allow different - versions of Chocolate Doom to play together, or Chocolate Doom - clients to play with Strawberry Doom clients. - * Unix manpages are now generated for the Chocolate Doom - configuration files. - * The BSD PC speaker driver now works on FreeBSD. - - Compatibility: - * Use the same spechits compatibility value as PrBoom+, for consistency - (thanks Lemonzest). - * The intercepts overrun code has been refactored to work on big - endian machines. - * The default startup delay has been set to one second, to allow - time for the screen to settle before starting the game (some - monitors have a delay before they come back on after changing modes). - * If a savegame buffer overrun occurs, the savegame does not get saved - and existing savegames are not overwritten (same behaviour as - Vanilla). - - Bugs fixed: - * Desync with STRAIN demos and dehacked Misc values not being set - properly (thanks Lemonzest) - * Don't grab the mouse if the mouse is disabled via -nomouse or use_mouse - in the configuration file (thanks MikeRS). - * Don't center the mouse on startup if the mouse is disabled (thanks - Siggi). - * Reset the palette when the window is restored to clear any screen - corruption (thanks Catoptromancy). - * mus2mid.c should use MEM_SEEK_SET, not SEEK_SET (thanks Russell) - * Fast/Respawn options were not being exchanged when starting netgames - (thanks GhostlyDeath). - * Letterbox mode is more accurately described as "pillarboxed" or - "windowboxed" where appropriate (thanks MikeRS) - * Process affinity mask is set to 1 on Windows, to work around a - bug in SDL_mixer that can cause crashes on multi-core machines - (thanks entryway). - * Bugs in the joystick configuration dialog in the setup tool have - been fixed. - -1.0.0 (2007-12-10): - - This release is dedicated to Dylan 'Toke' McIntosh, who was - tragically killed in a car crash in 2006. I knew Dylan - from IRC and the Doomworld forums for several years, and he had - a deep passion for this game. He was also a huge help for me while - developing Chocolate Doom, as he helped point out a lot of small - quirks in Vanilla Doom that I didn't know about. His death is a - great loss. RIP Toke. - - This is the first release to reach full feature parity with - Vanilla Doom. As a result, I have made this version 1.0.0, so - Chocolate Doom is no longer beta! - - Big new features: - * Multiplayer! This version includes an entirely new multiplayer - engine, based on a packet server architecture. I'd like to thank - joe, pritch, Meph and myk, and everyone else who has helped test - the new code for their support, feedback and help in testing this. - The new code still needs more testing, and I'm eager to hear any - feedback on this. - * A working setup tool. This has the same look and feel as the - original setup.exe. I hope people like it! Note that it has - some advantages over the original setup.exe - for example, - you can use the mouse. - - Other new features: - * New mus conversion code thanks to Ben Ryves. This converts the - Doom .mus format to .mid a lot better. As one example, tnt.wad - Map02 is now a lot closer to how Vanilla says. Also, the music - on the deca.wad titlescreen now plays! - * x3, x4 and x5 display scale (thanks to MikeRS for x5 scale). - * Fullscreen "letterbox" mode allows Chocolate Doom to run on machines - where 1.6:1 aspect ratio modes are unavailable (320x200/640x400). - The game runs in 320x240/640x480 instead, with black borders. - The system automatically adjusts to this if closer modes are - unavailable. - * Aspect ratio correction: you can (also) run at 640x480 without black - borders at the top and bottom of the screen. - * PC speaker sound effect support. Chocolate Doom can output real - PC speaker sounds on Linux, or emulate a PC speaker through the - sound card. - * Working three-screen mode, as seen in early versions of Doom! - To test this out, put three computers on a LAN and type: - chocolate-doom -server - chocolate-doom -autojoin -left - chocolate-doom -autojoin -right - * Allow a delay to be specified on startup, to allow the display to - settle after changing modes before starting the game. - * Allow the full path and filename to be specified when loading demos: - It is now possible to type 'chocolate-doom -playdemo /tmp/foo.lmp' - for example. - * Savegames are now stored in separate directories depending on - the IWAD: eg. the savegames for Doom II are stored in a different - place to those for Doom I, Final Doom, etc. (this does not affect - Windows). - * New mouse acceleration code works based on a threshold and - acceleration. Hopefully this should be closer to what the DOS - drivers do. There is a 'test' feature in the setup tool to help - in configuring this. - * New '-nwtmerge' command line option that emulates NWT's '-merge' - option. This allows TiC's Obituary TC to be played. - * The ENDOOM screen no longer closes automatically, you have to click - the window to make it go away. - * Spechit overrun fixes and improvements. Thanks to entryway for - his continued research on this topic (and because I stole your - improvements :-). Thanks to Quasar for reporting a bug as well. - * Multiple dehacked patches can be specified on the command line, - in the same way as with WADs - eg. -deh foo.deh bar.deh baz.deh. - * Default zone memory size increased to 16MB; this can be controlled - using the -mb command-line option. - * It is now possible to record demos of unlimited length (by default, - the Vanilla limit still applies, but it can now be disabled). - * Autoadjusting the screen mode can now be disabled. - * On Windows, the registry is queried to detect installed versions of - Doom and automatically locate IWAD files. IWADs installed through - Steam are also autodetected. - * Added DOOMWADPATH that can be used like PATH to specify multiple - locations in which to search for IWAD files. Also, '-iwad' is - now enhanced, so that eg. '-iwad doom.wad' will now search all - IWAD search paths for 'doom.wad'. - * Improved mouse tracking that should no longer lag. Thanks to - entryway for research into this. - * The SDL driver can now be specified in the configuration file. - The setup tool has an option on Windows to select between - DirectX and windib. - * Joystick support. - * Configuration file option to change the sound sample rate. - * More than three mouse buttons are now supported. - - Portability improvements: - * Chocolate Doom now compiles and runs cleanly on MacOS X. Huge - thanks go to Insomniak who kindly gave me an account on his machine - so that I could debug this remotely. Big thanks also go to - athanatos on the Doomworld forums for his patience in testing - various ideas as I tried to get Chocolate Doom up and running - on MacOS. - * Chocolate Doom now compiles and runs natively on AMD64. - * Chocolate Doom now compiles and runs on Solaris/SPARC, including - the Sun compiler. Thanks to Mike Spooner for some portability - fixes. - * Improved audio rate conversion, so that sound should play properly - on machines that don't support low bitrate output. - - Compatibility fixes: - * Check for IWADs in the same order as Vanilla Doom. - * Dehacked code will now not allow string replacements to be longer than - those possible through DOS dehacked. - * Fix sound effects playing too loud on level 8 (thanks to myk - for his continued persistence in getting me to fix this) - * Save demos when quitting normally - it is no longer necessary to - press 'q' to quit and save a demo. - * Fix spacing of -devparm mode dots. - * Fix sky behavior to be the same as Vanilla Doom - when playing in - Doom II, the skies never change from the sky on the first level - unless the player loads from a savegame. - * Make -nomouse and config file use_mouse work again. - * Fix the -nomusic command-line parameter. Make the snd_sfxdevice - snd_musicdevice values in the configuration file work, so that it - is possible to disable sound, as with Vanilla. - * Repeat key presses when the key is held down (this is the Vanilla - behavior) - thanks to Mad_Mac for pointing this out. - * Don't print a list of all arguments read from response files - Vanilla - doesn't do this. - * Autorun only when joyb_speed >= 10, not >= 4. Thanks to Janizdreg - for this. - * Emulate a bug in DOS dehacked that can overflow the dehacked - frame table and corrupt the weaponinfo table. Note that this means - Batman Doom will no longer play properly (identical behavior - to Vanilla); vbatman.deh needs to also be applied to fix it. - (Thanks grazza) - * Allow dehacked 2.3 patches to be loaded. - * Add more dehacked string replacements. - * Compatibility option to enable or disable native key mappings. This - means that people with non-US keyboards can decide whether to use - their correct native mapping or behave like Vanilla mapping (which - assumes all keyboards are US). - * Emulate overflow bug in P_FindNextHighestFloor. Thanks to - entryway for the fix for this. - * Add -netdemo command line parameter, for playing back netgame - demos recorded with a single player. - * The numeric keypad now behaves like Vanilla Doom does. - * Fix some crashes when loading from savegames. - * Add intercepts overrun emulation from PrBoom-plus. Thanks again - to entryway for his research on this subject. - * Add playeringame overrun emulation. - - Bugs fixed: - * Fix crash when starting new levels due to the intermission screen - being drawn after the WI_ subsystem is shut down (thanks - pritch and joe) - * Catch failures to initialise sound properly, and fail gracefully. - * Fix crasher in 1427uv01.lmp (thanks ultdoomer) - * Fix crash in udm1.wad. - * Fix crash when loading a savegame with revenant tracer missiles. - * Fix crash when loading a savegame when a mancubus was in the middle - of firing. - * Fix Doom 1 E1-3 intermission screen animations. - * Fix loading of dehacked "sound" sections. - * Make sure that modified copyright banners always end in a newline - - this fixes a bug with av.wad (thanks myk) - * Added missing quit message ("are you sure you want to quit this - great game?"). - * Fix when playing long sound effects - the death sound in marina.wad - now plays properly, for example. - * Fix buffer overrun on the quicksave prompt screen that caused a - mysterious cycling character to appear. - * IDCLEV should not work in net games (thanks Janizdreg) - * Stop music playing at the ENDOOM screen. - * Fix sound sample rate conversion crash. - * Fix 'pop' heard at the end of sound effects. - * Fix crash when playing long sounds. - * Fix bug with -timedemo accuracy over multi-level demos. - * Fix bug with the automap always following player 1 in multiplayer - mode (thanks Janizdreg). - -0.1.4 (2006-02-13): - - NWT-style merging command line options (allows Mordeth to be played) - Unix manpage (thanks Jon Dowland) - Dehacked improvements/fixes: - * Allow changing the names of graphic lumps used in menu, status bar - intermission screen, etc. - * Allow changing skies, animated flats + textures - * Allow changing more startup strings. - * Allow text replacements on music + sfx lump names - Fix for plutonia map12 crash. - Fix bug with playing long sfx at odd sample rates. - Big Endian fixes (for MacOS X). Thanks to athanatos for helping - find some of these. - Install into /usr/games, rather than /usr/bin (thanks Jon Dowland) - -0.1.3 (2006-01-20): - - Imported the spechit overrun emulation code from prboom-plus. Thanks to - Andrey Budko for this. - New show_endoom option in the chocolate-doom.cfg config file allows - the ENDOOM screen to be disabled. - Chocolate Doom is now savegame-compatible with Vanilla Doom. - - Fixes for big endian machines (thanks locust) - Fixed the behavior of the dehacked maximum health setting. - Fix the "-skill 0" hack to play without any items (thanks to Janizdreg - for pointing out that this was nonfunctional) - Fix playing of sounds at odd sample rates (again). Sound effects at - any sample rate now play, but only sounds with valid headers. - This is the *real* way Vanilla Doom behaves. Thanks to myk for - pointing out the incorrect behavior. - -0.1.2 (2005-10-29): - - Silence sounds at odd sample rates (rather than bombing out); this - is the way Vanilla Doom behaves. - Handle multiple replacements of the same sprite in a PWAD. - Support specifying a specific version to emulate via the command line - (-gameversion) - Fix help screen orderings and skull positions. Behave exactly as - the original executables do. - -0.1.1 (2005-10-18): - Display startup "banners" if they have been modified through - dehacked. - Dehacked "Misc" section support. - - Bugs fixed: - * Doom 1 skies always using Episode 1 sky - * Crash when switching applications while running fullscreen - * Lost soul bounce logic (do not bounce in Registered/Shareware) - * Mouse buttons mapped incorrectly (button 1 is right, 2 is middle) - * Music not pausing when game is paused, when using SDL_mixer's - native MIDI playback. - * Pink icon on startup (palette should be fully set before anything is - loaded) - -0.1.0 (2005-10-09): - Dehacked support - WAD merging for TCs - ENDOOM display - Fix bug with invalid MUS files causing crashes - Final Doom fixes - -0.0.4 (2005-09-27): - Application icon and version info included in Windows .exe files - Fixes for non-x86 architectures - Fix uac_dead.wad (platform drop on e1m8 should occur when all - bosses die, not just barons) - Fix "loading" icon to work for all graphics modes - -0.0.3 (2005-09-17): - Mouse acceleration code to emulate the behaviour of old - DOS mouse drivers (thanks to Toke for information about - this and suggestions) - Lock surfaces properly when we have to (fixes crash under - Windows 98) - -0.0.2 (2005-09-13): - Remove temporary MIDI files generated by sound code. - Fix sound not playing at the right volume - Allow alt-tab away while running in fullscreen under Windows - Add second configuration file (chocolate-doom.cfg) to allow - chocolate-doom specific settings. - Fix switches not changing in Ultimate Doom - -0.0.1 (2005-09-07): - First beta release - -# vim: tw=70 - diff --git a/NEWS.md b/NEWS.md new file mode 100644 index 00000000..174e86d6 --- /dev/null +++ b/NEWS.md @@ -0,0 +1,1164 @@ +## HEAD + +### General + * Bash completion scripts are included. (thanks Fabian) + * Support the *.lmp file format in the OS X launcher (thanks Jon) + * Added emulation for pitch-shifting as in early versions of Doom, + Heretic, and Hexen. (thanks Jon) + * Write out aspect-correct 1600×1200 PNGs. (thanks Jon) + * OPL emulation is more accurate. (thanks Nuke.YKT) + * Futher emulation of DMX bugs with GUS cards. (thanks Nuke.YKT) + * Emulation of the disk icon has returned. (thanks Fabian, Jon) + * Checksum calculations were fixed on big endian systems, allowing + multiplayer games to be played in mixed little/big-endian + environments. (thanks GhostlyDeath, njankowski) + +### Build systems + * Improved compatibility with BSD Make. (thanks R.Rebello) + * “./configure --with-PACKAGE” checks were repaired to behave + logically, rather than disabling the feature. (thanks R.Rebello) + * Default to installing the games to ${bindir}, such as + /usr/local/bin, rather than /usr/local/games. (thanks chungy) + * Support Visual Studio 2015. (thanks Azarien) + * Allow SDL headers and libraries to exist in the Microsoft Visual + Studio project directory. (thanks Quasar) + * Repaired the CodeBlocks projects by removing non-existent files + from the project files (thanks krystalgamer) + +### Doom + * Chex Quest’s level warp cheat (LEESNYDER##) was changed to behave + like the original EXE. (thanks Nuke.YKT) + * Allow starting multiplayer Chex Quest games. + * Allow Freedoom: Phase 1 ≤ 0.10.1 to be loaded with mods, with + -gameversion older than ultimate. (thanks Fabian, chungy) + * Added safety checks against write failures when saving a game, + such as when the directory is read-only. Try falling back to a + temporary directory and reporting an error instead. (thanks + terrorcide) + * Versions 1.666, 1.7, and 1.8 are emulated. (thanks Nuke.YKT) + +### Heretic + * Added map names for Episode 6, fixing a crash after completing a + level in this episode. (thanks J.Benaim) + +### Hexen + * The MRJONES cheat code returns an identical string as vanilla, and + enables fully reproducable builds. (thanks Fabian) + * Fixed an issue where the game crashed while killing the + Wraithverge in 64-bit builds. (thanks J.Benaim) + +### Strife + * Support added for automatic loading of the IWAD from the GOG.com + release of Strife: Veteran Edition on Windows. (thanks chungy) + * Jumping can be bound to a mouse button. (thanks Gez) + * Gibbing logic was changed to match vanilla behavior. (thanks Quasar) + * Several constants differences from vanilla were fixed. (thanks + Nuke.YKT, Quasar) + * When using -iwad, voices.wad from the IWAD’s directory is prefered + over auto-detected DOS/Steam/GOG.com installs. (thanks Quasar) + +### libtextscreen + * Simplified the API for creating and managing tables and columns. + * Allow cycling through tables with tab key. + +## 2.2.1 (2015-09-10) + + Chocolate Doom has not seen a great deal of “stable” patch releases + in its history. While the development tree sees major new features + and changes, the purpose of this release, and hopefully others to + follow like it, is to repair some deficiencies that existed + in 2.2.0. + +### General + * Preferences for the OS X launcher are now stored with a unique + name to not conflict with other applications. (thanks + Xeriphas1994) + * Unix desktop entry files are now brought up to full desktop entry + specification compliance. (thanks chungy, Fabian) + * Unix AppData entries are now included, allowing software centers + to display detailed information about the engines. (thanks chungy) + * Partial XDG base directory specification compliance on Unix + systems now exist to search for IWAD paths. One benefit is that + $HOME/.local/share/games/doom is now a valid location to store and + automatically find IWADs. (thanks chungy) + +### Build systems + * The Microsoft Visual Studio build system was not fully functional + in 2.2.0 and has been fixed. (thanks Linguica) + * The autoconf build system checks for windres only for Windows + toolchains. Some Linux distributions mistakingly include the + program in their native toolchains. (thanks Fabian) + * A compiler hint for packed structs has been added, which otherwise + broke the games when built under recent GCC releases for + Windows. (thanks Fabian) + +### Doom + * The GOG.com releases of The Ultimate Doom, Doom II, and Final Doom + are now detected and supported on Windows. (thanks chungy) + * An integer overflow was used in spawn angle calculation, undefined + C behavior which broke with Clang optimization. (thanks David + Majnemer for insight) + +### Setup tool + * The help URL for the level warp menu now points to the proper wiki + page, rather than the multiplayer page. + * The manifest has been updated for Windows 10 compatibility. + (thanks chungy) + +## 2.2.0 (2015-06-09) + + * 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. + +## 2.1.0 (2014-10-22) + + 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). + +## 2.0.0 (2013-12-09) + + This is version 2.0 of Chocolate Doom! This new major version is + released to celeberate the 20th anniversary of the first release of + Doom in 1993. Happy Birthday Doom! + + This new version has some major changes compared to the 1.0 series: + + * The codebase now includes Chocolate Heretic and Chocolate + Hexen. These are based on the GPL source code released by Raven + Software. + * Also included is Chocolate Strife. This was developed through a + mammoth four year reverse engineering project conducted by James + “Quasar” Haley and Samuel “Kaiser” Villareal. The result is the + most accurate reproduction of Strife to date, including full demo + and savegame compatibility. See README.Strife for more + information. + +### Minor features that are nonetheless worth mentioning + * Chocolate Doom now includes a -statdump command line option, which + emulates the output of the statdump.exe tool. This is used to + implement a form of regression testing (statcheck) that directly + compares against the Vanilla behavior. + * Chocolate Heretic includes HHE patch file support, and I believe + is the first Heretic port to include this feature. + * GUS “pseudo-emulation” is now supported. This does not fully + emulate a GUS, but Doom’s DMXGUS lump can be used to generate a + Timidity configuration file that plays music using the GUS patch + set. + * The setup tool now includes a built-in server browser, for use + when selecting a server to join. + + Version 2.0 of Chocolate Doom has been in development for a long + time, and there have been many bugs fixed over this time, too many + to list here. Thanks to all the people who have tested it and + diligently reported bugs over this time, and to all the people who + have tested the beta releases over the past couple of months. Your + contributions have been essential and invaluable. + +## 1.7.0 (2012-06-09) + + * Fixed gnome-screensaver desktop file (thanks Rahul Sundaram). + * Updated COPYING to current version of GPL2 (thanks Rahul + Sundaram). + * Running servers now re-resolve the address of the master server + occasionally, to adapt to DNS address changes. + * Error dialog is no longer shown on OS X when running from the + console. + * The Makefiles no longer use GNU make extensions, so the package + builds on OpenBSD. + * There is now an OPL MIDI debug option (-opldev), useful for when + developing GENMIDI lumps. + * A workaround for SDL mouse lag is now only used on Windows (where + it is needed), and not on other systems. This fixes Chocolate Doom + on AmigaOS (thanks Timo Sievänen). + * UTF-8 usernames are supported, and Windows usernames with + non-ASCII characters are now supported (thanks Alexandre Xavier). + +### Compatibility + * Palette accuracy is reduced to 6 bits per channel, to more + accurately emulate the PC VGA hardware (thanks GhostlyDeath). + * Fixed teleport behavior when emulating the alternate Final Doom + executable (-gameversion final2) (thanks xttl). + +### Bugs fixed + * Fixed weapon cycling keys when playing in Shareware Doom and using + the IDKFA cheat (thanks Alexandre Xavier). + * Fixed the default mouse buttons in the setup tool (thanks + Alexandre Xavier). + * Chat macros now work when vanilla_keyboard_mapping is turned off. + * Default chat macros were fixed in the setup tool. + * Ping time calculation was fixed for LAN search, and made more + accurate for all searches. + * Fixed bug with detection of IWAD type by filename (thanks mether). + +### libtextscreen + * There is now limited UTF-8 text support in the textscreen library, + used in the label and input box widgets. + * Scroll bar behavior was fixed (thanks Alexandre Xavier). + * Input boxes stop editing and save when they lose their focus, + correcting a previous counterintuitive behavior (thanks Twelve). + * The numeric keypad now works properly when entering text values + (thanks Twelve). + +## 1.6.0 (2011-05-17) + + * The instructions in the INSTALL file are now customized for + different platforms, and each binary package contains a version + with instructions specific to the platform that it is targetting. + This should help to avoid confusion that some users have reported + experiencing. + * The display settings window in the setup tool has been reorganised + to a better arrangement. + * It is now possible to load .lmp files (and play back demos) with + long filenames (thanks blzut3). + * In the setup tool, it is now possible to hold down shift when + changing key/mouse/joystick bindings to prevent other bindings to + the same key from being cleared (thanks myk). + * The joystick menu in the setup tool now has a test button (thanks + Alexandre Xavier). + * Specifying the -privateserver option implies -server (thanks + Porsche Monty). + * The Mac OS X .dmg package now has a background and looks generally + more polished. + * In Mac OS X, it is now possible to simply double click an IWAD + file in the Finder to configure its location within the launcher. + * Freedesktop.org desktop files are now installed for Doom and the + setup tool, which will appear in the main menu on desktop + environments such as Gnome and KDE (thanks Adrián Chaves + Fernández). + * The Chex Quest dehacked patch (chex.deh) will now be detected if + it is in the same directory as the IWAD file. + +### Compatibility + * Added support for the alternate version of the Final Doom + executable included in some later versions of the Id Anthology. + This version fixed the demo loop crash that occurred with the + “original” Final Doom executable. + + This executable can be selected on the command line with + -gameversion final2. It has been made the default when playing + with the Final Doom IWADs (the original behavior can be selected + with -gameversion final). (thanks Porsche Monty, Enjay). + * Very short sound effects are not played, to better emulate the + behavior of DMX in Vanilla Doom (thanks to Quasar for help in + investigating this). + * The null sector dereference emulation code has been imported from + Prboom+ - this fixes a desync with CLNJ-506.LMP (thanks entryway). + * The IDMUS cheat doesn’t work when emulating the v1.9 executable + (thanks Alexandre Xavier). + +### Bugs fixed + * Menu navigation when using joystick/joypad (thanks Alexandre + Xavier). + * For configuration file value for shift keys, use scan code for + right shift, not left shift (thanks Alexandre Xavier). + * Default joystick buttons for the setup tool now match Vanilla + (thanks twipley). + * Visual Studio project files work again (thanks GhostlyDeath). + * The default sfx/music volume set by the setup tool is now 8 + instead of 15, matching the game itself. (thanks Alexandre + Xavier). + * Weapon cycling from the shotgun to the chaingun in Doom 1 now + works properly (thanks Alexandre Xavier). + * MIDI playback that locked up when using an empty MUS / MIDI file + (thanks Alexandre Xavier). + * Default sampling rate used by setup tool changed to 44100Hz, to + match the game default (thanks Alexandre Xavier). + * Cheat codes and menu hot keys now work when shift is held down or + capslock turned on (thanks Alexandre Xavier). + +### libtextscreen + * The background on GUI controls now lights up when hovering over + them, so that it is more obvious what you are selecting. + * It is now possible to type a “+” in input boxes (thanks Alexandre + Xavier). + * It is possible to use the mouse wheel to scroll through scroll + panes. + * Clicking on scroll bars now moves the scroll handle to a matching + location. + * Clicking outside a dropdown list popup window now dismisses the + window. + * Window hotkeys that are an alphabetical letter now work when shift + is held down or capslock turned on (thanks Alexandre Xavier). + +## 1.5.0 (2011-01-02) + + 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. + +## 1.4.0 (2010-07-10) + + The biggest change in this version is the addition of OPL emulation. + This emulates Vanilla Doom’s MIDI playback when using a Yamaha OPL + synthesizer chip, as was found on SoundBlaster compatible cards. + + A software OPL emulator is included as most modern computers do not + have a hardware OPL chip any more. If you do have one, you can + configure Chocolate Doom to use it; see README.OPL. + + The OPL playback feature is not yet perfect or 100% complete, but is + judged to be good enough for general use. If you find music that + does not play back properly, please report it as a bug. + +### Other changes + * The REJECT overflow emulation code from PrBoom+ has been + imported. This fixes demo desync on some demos, although + others will still desync. + * Warnings are now generated for invalid dehacked replacements of + printf format strings. Some potential buffer overflows are also + checked. + * The installation instructions (INSTALL file) have been clarified + and made more platform-agnostic. + * The mouse is no longer warped to the center of the screen when the + demo sequence advances. + * Key bindings can now be changed for the demo recording quit key + (normally ‘q’) and the multiplayer messaging keys (normally ‘t’, + ‘g’, ‘i’, ‘b’ and ‘r’). + +## 1.3.0 (2010-02-10) + + * Chocolate Doom now runs on Windows Mobile/Windows CE! + * It is possible to rebind most/all of the keys that control the + menu, shortcuts, automap and weapon switching. The main reason + for this is to support the Windows CE port and other platforms + where a full keyboard may not be present. + * Chocolate Doom now includes a proper Mac OS X package; it is no + longer necessary to compile binaries for this system by hand. The + package includes a simple graphical launcher program and can be + installed simply by dragging the “Chocolate Doom” icon to the + Applications folder. (thanks to Rikard Lang for extensive testing + and feedback) + * The video mode auto-adjust code will automatically choose windowed + mode if no fullscreen video modes are available. + * The zone memory size is automatically reduced on systems with a + small amount of memory. + * The “join game” window in the setup tool now has an option to + automatically join a game on the local network. + * Chocolate Doom includes some initial hacks for compiling under + SDL 1.3. + * Recent versions of SDL_mixer include rewritten MIDI code on Mac OS + X. If you are using a version of SDL_mixer with the new code, + music will now be enabled by default. + * Windows Vista and Windows 7 no longer prompt for elevated + privileges when running the setup tool (thanks hobbs and MikeRS). + * The Windows binaries now have better looking icons (thanks + MikeRS). + * Magic values specified using the -spechit command line parameter + can now be hexadecimal. + * DOOMWADDIR/DOOMWADPATH can now specify the complete path to IWAD + files, rather than the path to the directory that contains them. + * When recording shorttics demos, errors caused by the reduced + turning resolution are carried forward, possibly making turning + smoother. + * The source tarball can now be used to build an RPM package: + rpmbuild -tb chocolate-doom-VER.tar.gz + +### Compatibility + * The A_BossDeath behavior in v1.9 emulation mode was fixed (thanks + entryway) + * The “loading” disk icon is drawn more like how it is drawn in + Vanilla Doom, also fixing a bug with chook3.wad. + * Desync on 64-bit systems with ep1-0500.lmp has (at long last) been + fixed (thanks exp(x)). + * Donut overrun emulation code imported from Prboom+ (thanks + entryway). + * The correct level name should now be shown in the automap for + pl2.wad MAP33 (thanks Janizdreg). + * In Chex Quest, the green radiation suit colormap is now used + instead of the red colormaps normally used when taking damage or + using the berserk pack. This matches Vanilla chex.exe behavior + (thanks Fuzztooth). + * Impassible glass now displays and works the same as in Vanilla, + fixing wads such as OTTAWAU.WAD (thanks Never_Again). + +### Bugs fixed + * Memory-mapped WAD I/O is disabled by default, as it caused various + issues, including a slowdown/crash with Plutonia 2 MAP23. It can + be explicitly re-enabled using the “-mmap” command line parameter. + * Crash when saving games due to the ~/.chocolate-doom/savegames + directory not being created (thanks to everyone who reported + this). + * Chocolate Doom will now run under Win95/98, as the + SetProcessAffinityMask function is looked up dynamically. + * Compilation under Linux with older versions of libc will now work + (the semantics for sched_setaffinity were different in older + versions) + * Sound clipping when using libsamplerate was improved (thanks David + Flater) + * The audio buffer size is now calculated based on the sample rate, + so there is not a noticeable delay when using a lower sample rate. + * The manpage documentation for the DOOMWADPATH variable was fixed + (thanks MikeRS). + * Compilation with FEATURE_MULTIPLAYER and FEATURE_SOUND disabled + was fixed. + * Fixed crash when using the donut special type and the joining + linedef is one sided (thanks Alexander Waldmann). + * Key settings in a configuration file that are out of range do not + cause a crash (thanks entryway). + * Fix ear-piercing whistle when playing the MAP05 MIDI music using + timidity with EAWPATS (thanks entryway / HackNeyed). + +### libtextscreen + * There is now a second, small textscreen font, so that the ENDOOM + screen and setup tool can be used on low resolution devices + (eg. PDAs/embedded devices) + * The textscreen library now has a scrollable pane widget. Thanks to + LionsPhil for contributing code to scroll up and down using the + keyboard. + * Doxygen documentation was added for the textscreen library. + +## 1.2.1 (2008-12-10) + + This version just fixes a crash at the intermission screen when + playing Doom 1 levels. + +## 1.2.0 (2008-12-10) + + Happy 15th Birthday, Doom! + + * Chocolate Doom now has an icon that is not based on the + proprietary Doom artwork. + * There is now memory-mapped WAD I/O support, which should be useful + on some embedded systems. + * Chex quest emulation support is now included, although an + auxiliary dehacked patch is needed (chexdeh.zip in the idgames + archive). + +### Compatibility + * The armor class is always set to 2 when picking up a megasphere + (thanks entryway). + * The quit screen prompts to quit “to dos” instead of just to quit + (thanks MikeRS) + * The “dimensional shambler” quit message was fixed. + * Fix crash related to A_BFGSpray with NULL target when using + dehacked patches - discovered with insaned2.deh (thanks CSonicGo) + * NUL characters are stripped from dehacked files, to ensure correct + behavior with some dehacked patches (eg. the one with portal.wad). + +### Bugs fixed + * “Python Image Library” should have been “Python Imaging Library” + (thanks exp(x)). + * The setup tool should no longer ask for elevated permissions on + Windows Vista (this fix possibly may not work). + * The application icon is set properly when running under Windows XP + with the “Luna” theme. + * Fix compilation under Cygwin to detect libraries and headers from + the correct environment. + * The video code does not try to read SDL events before SDL has been + properly initialised - this was causing problems with some older + versions of SDL. + +## 1.1.1 (2008-04-20) + + The previous release (v1.1.0) included a bug that broke compilation + when libsamplerate support was enabled. The only change in this + version is to fix this bug. + +## 1.1.0 (2008-04-19) + + * The video mode code has been radically restructured. The video + mode is now chosen by directly specifying the mode to use; the + scale factor is then chosen to fit the screen. This is helpful + when using widescreen monitors (thanks Linguica) + * MSVC build project files (thanks GhostlyDeath and entryway). + * Unix manpage improvements; the manpage now lists the environment + variables that Chocolate Doom uses. Manpages have been added for + chocolate-setup and chocolate-server, from the versions for the + Debian Chocolate Doom package (thanks Jon Dowland). + * INSTALL file with installation instructions for installing + Chocolate Doom on Unix systems. + * Support for high quality resampling of sound effects using + libsamplerate (thanks David Flater). + * A low pass filter is applied when doing sound resampling in an + attempt to filter out high frequency noise from the resampling + process. + * R_Main progress box is not displayed if stdout is a file (produces + cleaner output). + * Client/server version checking can be disabled to allow different + versions of Chocolate Doom to play together, or Chocolate Doom + clients to play with Strawberry Doom clients. + * Unix manpages are now generated for the Chocolate Doom + configuration files. + * The BSD PC speaker driver now works on FreeBSD. + +### Compatibility + * Use the same spechits compatibility value as PrBoom+, for + consistency (thanks Lemonzest). + * The intercepts overrun code has been refactored to work on big + endian machines. + * The default startup delay has been set to one second, to allow + time for the screen to settle before starting the game (some + monitors have a delay before they come back on after changing + modes). + * If a savegame buffer overrun occurs, the savegame does not get + saved and existing savegames are not overwritten (same behaviour + as Vanilla). + +### Bugs fixed + * Desync with STRAIN demos and dehacked Misc values not being set + properly (thanks Lemonzest) + * Don’t grab the mouse if the mouse is disabled via -nomouse or + use_mouse in the configuration file (thanks MikeRS). + * Don’t center the mouse on startup if the mouse is disabled (thanks + Siggi). + * Reset the palette when the window is restored to clear any screen + corruption (thanks Catoptromancy). + * mus2mid.c should use `MEM_SEEK_SET`, not `SEEK_SET` (thanks + Russell) + * Fast/Respawn options were not being exchanged when starting + netgames (thanks GhostlyDeath). + * Letterbox mode is more accurately described as “pillarboxed” or + “windowboxed” where appropriate (thanks MikeRS) + * Process affinity mask is set to 1 on Windows, to work around a bug + in SDL_mixer that can cause crashes on multi-core machines (thanks + entryway). + * Bugs in the joystick configuration dialog in the setup tool have + been fixed. + +## 1.0.0 (2007-12-10) + + This release is dedicated to Dylan “Toke” McIntosh, who was + tragically killed in a car crash in 2006. I knew Dylan from IRC and + the Doomworld forums for several years, and he had a deep passion + for this game. He was also a huge help for me while developing + Chocolate Doom, as he helped point out a lot of small quirks in + Vanilla Doom that I didn’t know about. His death is a great loss. + RIP Toke. + + This is the first release to reach full feature parity with Vanilla + Doom. As a result, I have made this version 1.0.0, so Chocolate + Doom is no longer beta! + +### Big new features + * Multiplayer! This version includes an entirely new multiplayer + engine, based on a packet server architecture. I’d like to thank + joe, pritch, Meph and myk, and everyone else who has helped test + the new code for their support, feedback and help in testing this. + The new code still needs more testing, and I’m eager to hear any + feedback on this. + * A working setup tool. This has the same look and feel as the + original setup.exe. I hope people like it! Note that it has some + advantages over the original setup.exe - for example, you can use + the mouse. + +### Other new features + * New mus conversion code thanks to Ben Ryves. This converts the + Doom .mus format to .mid a lot better. As one example, tnt.wad + Map02 is now a lot closer to how Vanilla says. Also, the music on + the deca.wad titlescreen now plays! + * x3, x4 and x5 display scale (thanks to MikeRS for x5 scale). + * Fullscreen “letterbox” mode allows Chocolate Doom to run on + machines where 1.6:1 aspect ratio modes are unavailable + (320x200/640x400). The game runs in 320x240/640x480 instead, with + black borders. The system automatically adjusts to this if closer + modes are unavailable. + * Aspect ratio correction: you can (also) run at 640x480 without + black borders at the top and bottom of the screen. + * PC speaker sound effect support. Chocolate Doom can output real + PC speaker sounds on Linux, or emulate a PC speaker through the + sound card. + * Working three-screen mode, as seen in early versions of Doom! To + test this out, put three computers on a LAN and type: + + chocolate-doom -server + chocolate-doom -autojoin -left + chocolate-doom -autojoin -right + + * Allow a delay to be specified on startup, to allow the display to + settle after changing modes before starting the game. + * Allow the full path and filename to be specified when loading + demos: It is now possible to type “chocolate-doom -playdemo + /tmp/foo.lmp” for example. + * Savegames are now stored in separate directories depending on the + IWAD: eg. the savegames for Doom II are stored in a different + place to those for Doom I, Final Doom, etc. (this does not affect + Windows). + * New mouse acceleration code works based on a threshold and + acceleration. Hopefully this should be closer to what the DOS + drivers do. There is a ‘test’ feature in the setup tool to help + in configuring this. + * New “-nwtmerge” command line option that emulates NWT’s “-merge” + option. This allows TiC’s Obituary TC to be played. + * The ENDOOM screen no longer closes automatically, you have to + click the window to make it go away. + * Spechit overrun fixes and improvements. Thanks to entryway for + his continued research on this topic (and because I stole your + improvements :-). Thanks to Quasar for reporting a bug as well. + * Multiple dehacked patches can be specified on the command line, in + the same way as with WADs - eg. -deh foo.deh bar.deh baz.deh. + * Default zone memory size increased to 16MB; this can be controlled + using the -mb command-line option. + * It is now possible to record demos of unlimited length (by + default, the Vanilla limit still applies, but it can now be + disabled). + * Autoadjusting the screen mode can now be disabled. + * On Windows, the registry is queried to detect installed versions + of Doom and automatically locate IWAD files. IWADs installed + through Steam are also autodetected. + * Added DOOMWADPATH that can be used like PATH to specify multiple + locations in which to search for IWAD files. Also, “-iwad” is now + enhanced, so that eg. “-iwad doom.wad” will now search all IWAD + search paths for “doom.wad”. + * Improved mouse tracking that should no longer lag. Thanks to + entryway for research into this. + * The SDL driver can now be specified in the configuration file. + The setup tool has an option on Windows to select between DirectX + and windib. + * Joystick support. + * Configuration file option to change the sound sample rate. + * More than three mouse buttons are now supported. + +### Portability improvements + * Chocolate Doom now compiles and runs cleanly on MacOS X. Huge + thanks go to Insomniak who kindly gave me an account on his + machine so that I could debug this remotely. Big thanks also go + to athanatos on the Doomworld forums for his patience in testing + various ideas as I tried to get Chocolate Doom up and running on + MacOS. + * Chocolate Doom now compiles and runs natively on AMD64. + * Chocolate Doom now compiles and runs on Solaris/SPARC, including + the Sun compiler. Thanks to Mike Spooner for some portability + fixes. + * Improved audio rate conversion, so that sound should play properly + on machines that don’t support low bitrate output. + +### Compatibility fixes + * Check for IWADs in the same order as Vanilla Doom. + * Dehacked code will now not allow string replacements to be longer + than those possible through DOS dehacked. + * Fix sound effects playing too loud on level 8 (thanks to myk for + his continued persistence in getting me to fix this) + * Save demos when quitting normally - it is no longer necessary to + press ‘q’ to quit and save a demo. + * Fix spacing of -devparm mode dots. + * Fix sky behavior to be the same as Vanilla Doom - when playing in + Doom II, the skies never change from the sky on the first level + unless the player loads from a savegame. + * Make -nomouse and config file use_mouse work again. + * Fix the -nomusic command-line parameter. Make the snd_sfxdevice + snd_musicdevice values in the configuration file work, so that it + is possible to disable sound, as with Vanilla. + * Repeat key presses when the key is held down (this is the Vanilla + behavior) - thanks to Mad_Mac for pointing this out. + * Don’t print a list of all arguments read from response files - + Vanilla doesn’t do this. + * Autorun only when joyb_speed >= 10, not >= 4. Thanks to Janizdreg + for this. + * Emulate a bug in DOS dehacked that can overflow the dehacked frame + table and corrupt the weaponinfo table. Note that this means + Batman Doom will no longer play properly (identical behavior to + Vanilla); vbatman.deh needs to also be applied to fix it. (Thanks + grazza) + * Allow dehacked 2.3 patches to be loaded. + * Add more dehacked string replacements. + * Compatibility option to enable or disable native key mappings. + This means that people with non-US keyboards can decide whether to + use their correct native mapping or behave like Vanilla mapping + (which assumes all keyboards are US). + * Emulate overflow bug in P_FindNextHighestFloor. Thanks to + entryway for the fix for this. + * Add -netdemo command line parameter, for playing back netgame + demos recorded with a single player. + * The numeric keypad now behaves like Vanilla Doom does. + * Fix some crashes when loading from savegames. + * Add intercepts overrun emulation from PrBoom-plus. Thanks again + to entryway for his research on this subject. + * Add playeringame overrun emulation. + +### Bugs fixed + * Fix crash when starting new levels due to the intermission screen + being drawn after the WI_ subsystem is shut down (thanks pritch + and joe) + * Catch failures to initialise sound properly, and fail gracefully. + * Fix crasher in 1427uv01.lmp (thanks ultdoomer) + * Fix crash in udm1.wad. + * Fix crash when loading a savegame with revenant tracer missiles. + * Fix crash when loading a savegame when a mancubus was in the + middle of firing. + * Fix Doom 1 E1-3 intermission screen animations. + * Fix loading of dehacked “sound” sections. + * Make sure that modified copyright banners always end in a newline + - this fixes a bug with av.wad (thanks myk) + * Added missing quit message (“are you sure you want to quit this + great game?”). + * Fix when playing long sound effects - the death sound in + marina.wad now plays properly, for example. + * Fix buffer overrun on the quicksave prompt screen that caused a + mysterious cycling character to appear. + * IDCLEV should not work in net games (thanks Janizdreg) + * Stop music playing at the ENDOOM screen. + * Fix sound sample rate conversion crash. + * Fix “pop” heard at the end of sound effects. + * Fix crash when playing long sounds. + * Fix bug with -timedemo accuracy over multi-level demos. + * Fix bug with the automap always following player 1 in multiplayer + mode (thanks Janizdreg). + +## 0.1.4 (2006-02-13) + + * NWT-style merging command line options (allows Mordeth to be played) + * Unix manpage (thanks Jon Dowland) + * Dehacked improvements/fixes: + * Allow changing the names of graphic lumps used in menu, status bar + intermission screen, etc. + * Allow changing skies, animated flats + textures + * Allow changing more startup strings. + * Allow text replacements on music + sfx lump names + * Fix for plutonia map12 crash. + * Fix bug with playing long sfx at odd sample rates. + * Big Endian fixes (for MacOS X). Thanks to athanatos for helping + find some of these. + * Install into /usr/games, rather than /usr/bin (thanks Jon Dowland) + +## 0.1.3 (2006-01-20) + + * Imported the spechit overrun emulation code from prboom-plus. Thanks to + Andrey Budko for this. + * New show_endoom option in the chocolate-doom.cfg config file allows + the ENDOOM screen to be disabled. + * Chocolate Doom is now savegame-compatible with Vanilla Doom. + + * Fixes for big endian machines (thanks locust) + * Fixed the behavior of the dehacked maximum health setting. + * Fix the “-skill 0” hack to play without any items (thanks to Janizdreg + for pointing out that this was nonfunctional) + * Fix playing of sounds at odd sample rates (again). Sound effects + at any sample rate now play, but only sounds with valid headers. + This is the *real* way Vanilla Doom behaves. Thanks to myk for + pointing out the incorrect behavior. + +## 0.1.2 (2005-10-29) + + * Silence sounds at odd sample rates (rather than bombing out); this + is the way Vanilla Doom behaves. + * Handle multiple replacements of the same sprite in a PWAD. + * Support specifying a specific version to emulate via the command line + (-gameversion) + * Fix help screen orderings and skull positions. Behave exactly as + the original executables do. + +## 0.1.1 (2005-10-18) + + * Display startup “banners” if they have been modified through + dehacked. + * Dehacked “Misc” section support. + +### Bugs fixed + * Doom 1 skies always using Episode 1 sky + * Crash when switching applications while running fullscreen + * Lost soul bounce logic (do not bounce in Registered/Shareware) + * Mouse buttons mapped incorrectly (button 1 is right, 2 is middle) + * Music not pausing when game is paused, when using SDL_mixer’s + native MIDI playback. + * Pink icon on startup (palette should be fully set before anything is + loaded) + +## 0.1.0 (2005-10-09) + + * Dehacked support + * WAD merging for TCs + * ENDOOM display + * Fix bug with invalid MUS files causing crashes + * Final Doom fixes + +## 0.0.4 (2005-09-27) + + * Application icon and version info included in Windows .exe files + * Fixes for non-x86 architectures + * Fix uac_dead.wad (platform drop on e1m8 should occur when all + bosses die, not just barons) + * Fix “loading” icon to work for all graphics modes + +## 0.0.3 (2005-09-17) + + * Mouse acceleration code to emulate the behaviour of old DOS mouse + drivers (thanks to Toke for information about this and + suggestions) + * Lock surfaces properly when we have to (fixes crash under + Windows 98) + +## 0.0.2 (2005-09-13) + + * Remove temporary MIDI files generated by sound code. + * Fix sound not playing at the right volume + * Allow alt-tab away while running in fullscreen under Windows + * Add second configuration file (chocolate-doom.cfg) to allow + chocolate-doom specific settings. + * Fix switches not changing in Ultimate Doom + +## 0.0.1 (2005-09-07) + + First beta release diff --git a/NOT-BUGS b/NOT-BUGS.md similarity index 66% rename from NOT-BUGS rename to NOT-BUGS.md index e0a5c29f..1ef97e3d 100644 --- a/NOT-BUGS +++ b/NOT-BUGS.md @@ -1,37 +1,32 @@ - The aim of Chocolate Doom is to behave as closely to Vanilla Doom as possible. As a result, you may experience problems that you would -also experience when using Vanilla Doom. These are not "bugs" as +also experience when using Vanilla Doom. These are not “bugs” as Chocolate Doom is behaving as intended. This is not intended to be a comprehensive list of Vanilla Doom bugs. -For more information, consult the "engine bugs" page of the Doom Wiki. +For more information, consult the “engine bugs” page of the Doom Wiki. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== Game exits after title screen with message about game version == +## Game exits after title screen with message about game version The game may exit after the title screen is shown, with a message like the following: Demo is from a different game version! - (read 106, should be 109) + (read 2, should be 109) *** You may need to upgrade your version of Doom to v1.9. *** See: https://www.doomworld.com/classicdoom/info/patches.php - This appears to be v1.6/v1.666. + This appears to be v1.0/v1.1/v1.2. This usually indicates that your IWAD file that you are using to play the game (usually named doom.wad or doom2.wad) is out of date. -Chocolate Doom only supports the v1.9 IWAD file. +Chocolate Doom only supports versions 1.666 through 1.9. -To fix the problem, you must upgrade to the v1.9 IWAD file. The URL -in the message has downloadable upgrade patches that you can use to -upgrade. +To fix the problem, you must upgrade your IWAD file, preferably +to 1.9. The URL in the message has downloadable upgrade patches that +you can use to upgrade. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== Game exits in demo loop when playing Final Doom == +## Game exits in demo loop when playing Final Doom When playing with the Final Doom IWAD files (tnt.wad, plutonia.wad), if you leave the game at the title screen to play through the demo @@ -53,11 +48,9 @@ the alternate version, run with: chocolate-doom -gameversion final2 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +## Game exits when accessing the options menu -== Game exits when accessing the options menu == - -The game may exit with the message "Bad V_DrawPatch" when accessing +The game may exit with the message “Bad V_DrawPatch” when accessing the options menu, if you have your mouse sensitivity set high. The Doom options menu has a slider that allows the mouse sensitivity @@ -73,37 +66,35 @@ same thing. One solution to the problem is to set a lower mouse sensitivity. Alternatively, all of the settings in the options menu can be -controlled through Doom's key bindings anyway: +controlled through Doom’s key bindings anyway: - End game: F7 - Messages on/off: F8 - Graphic detail high/low: F5 - Screen size smaller/larger: -/+ - Sound volume menu: F4 +Option | Key +---------------------------|----- +End game | F7 +Messages on/off | F8 +Graphic detail high/low | F5 +Screen size smaller/larger | -/+ +Sound volume menu | F4 -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== Game exits with "Savegame buffer overrun" when saving the game == +## Game exits with “Savegame buffer overrun” when saving the game If you are playing on a particularly large level, it is possible that -when you save the game, the game will quit with the message "Savegame -buffer overrun". +when you save the game, the game will quit with the message “Savegame +buffer overrun”. Vanilla Doom has a limited size memory buffer that it uses for saving games. If you are playing on a large level, the buffer may be too small for the entire savegame to fit. Chocolate Doom allows the limit -to be disabled: in the setup tool, go to the "compatibility" menu and -disable the "Vanilla savegame limit" option. +to be disabled: in the setup tool, go to the “compatibility” menu and +disable the “Vanilla savegame limit” option. If this error happens to you, your game has not been lost! A file named temp.dsg is saved; rename this to doomsav0.dsg to make it appear -in the first slot in the "load game" menu. (On Unix systems, you will +in the first slot in the “load game” menu. (On Unix systems, you will need to look in the .chocolate-doom/savegames directory in your home directory) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== Game ends suddenly when recording a demo == +## Game ends suddenly when recording a demo If you are recording a very long demo, the game may exit suddenly. Vanilla Doom has a limited size memory buffer that it uses to save the @@ -113,33 +104,27 @@ this happens, as the demo file will be around 131,072 bytes in size. You can work around this by using the -maxdemo command line parameter to specify a larger buffer size. Alternatively, the limit can be disabled: in the setup tool, go to the compatibility menu and disable -the "Vanilla demo limit" option. +the “Vanilla demo limit” option. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== Game exits with a message about "visplanes" == +## Game exits with a message about “visplanes” The game may exit with one of these messages: R_FindPlane: no more visplanes R_DrawPlanes: visplane overflow (129) -This is known as the "visplane overflow" limit and is one of the most +This is known as the “visplane overflow” limit and is one of the most well-known Vanilla Doom engine limits. You should only ever experience this when trying to play an add-on level. The level you are trying to play is too complex; it was most likely designed to work with a limit removing source port. -More information can be found here (archived link): +More information can be found here (archived link): https://archive.is/s6h7V - https://archive.is/s6h7V - -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== IDMUS## cheat doesn't work with shareware/registered Doom IWADs == +## IDMUS## cheat doesn’t work with shareware/registered Doom IWADs The IDMUS cheat allows the in-game music to be changed. However, in -the original v1.9 this cheat didn't work properly when playing with +the original v1.9 this cheat didn’t work properly when playing with the Doom 1 (shareware and registered) IWADs. This bug was fixed in the Ultimate Doom and Final Doom executables. @@ -149,9 +134,7 @@ properly. If you are playing with the Ultimate Doom IWAD, the Ultimate Doom executable is emulated by default, so the cheat works properly. -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -== Some graphics are wrong when playing with BFG Edition IWADs == +## Some graphics are wrong when playing with BFG Edition IWADs If you are playing using the IWAD files from Doom 3: BFG Edition, you may notice that certain graphics appear strange or wrong. This @@ -161,9 +144,6 @@ The IWAD files in the new BFG Edition have had some significant changes from the IWAD files in older releases. Some of the graphics lumps have been removed or changed, and the Doom 2 secret levels are also censored. Chocolate Doom includes some small workarounds that -allow the game to run, but for the best experience, it's best to get a +allow the game to run, but for the best experience, it’s best to get a copy of the classic versions of the IWADs. These are still available -to buy from Steam or Id's online store. - -# vim: tw=70 - +to buy from Steam or GOG.com. diff --git a/PHILOSOPHY b/PHILOSOPHY.md similarity index 70% rename from PHILOSOPHY rename to PHILOSOPHY.md index e84e5584..ebc3f27b 100644 --- a/PHILOSOPHY +++ b/PHILOSOPHY.md @@ -1,39 +1,38 @@ - Chocolate Doom has been designed around a careful and deliberate -philosophy that attempts to recreate the original ("Vanilla") DOS +philosophy that attempts to recreate the original (“Vanilla”) DOS executables for Doom, Heretic, Hexen and Strife. This document describes some of that philosophy and the reasoning behind it. This document is descriptive, not proscriptive. -== Vanilla behavior == +# Vanilla behavior Ideally Chocolate Doom aims to recreate the behavior of the Vanilla binaries, but different aspects of Vanilla behavior are held to -varying degrees of importance. It can be imagined as different "tiers" +varying degrees of importance. It can be imagined as different “tiers” of compatibility: * The game and gameplay itself is of central importance. Here, the Vanilla behavior ought to be maintained as accurately as possible. This includes the look, feel and sound, and things like demo compatibility. - * The surrounding aspects of the game that aren't part of the central - gameplay experience can be extended as long as there's a good + * The surrounding aspects of the game that aren’t part of the central + gameplay experience can be extended as long as there’s a good reason and Vanilla behavior is respected. * The setup tool is not required to reproduce the behavior of the Vanilla setup tool, even though it reproduces its look and feel. -"Vanilla" is defined as: +“Vanilla” is defined as: - * DOS Doom 1.9 (although there are actually multiple "1.9"s). + * DOS Doom 1.9 (although there are actually multiple “1.9”s). * DOS Heretic 1.3. * DOS Hexen 1.1. * DOS Strife 1.31. -"Vanilla" does not include ports (either official or unofficial), such +“Vanilla” does not include ports (either official or unofficial), such as console ports, Doom 95 or Doom 3: BFG Edition. -== Compatibility == +# Compatibility Chocolate Doom aims to be compatible with Vanilla Doom in several different ways. Examples are: @@ -41,12 +40,12 @@ different ways. Examples are: * Bug compatibility: the aim is to emulate compatibility of the original game down to bugs that were present in the DOS executables. This includes maintaining the limitations of the - original engine: for example, the infamous "visplane overflow" bug + original engine: for example, the infamous “visplane overflow” bug is intentionally still present, where other source ports have removed it; this allows mappers targeting Vanilla Doom to use Chocolate Doom as a faithful substitute. * Demo compatibility: Doom was one of the first games to develop a - 'speedrunning' community, and thousands of recordings of Doom + ‘speedrunning’ community, and thousands of recordings of Doom gameplay (.lmp demo files) exist in the Compet-N archive. Chocolate Doom aims for the highest standard of demo compatibility with Vanilla Doom, a goal that is often complicated by obscure behavior @@ -60,9 +59,9 @@ different ways. Examples are: file format as Vanilla, such that it should be possible to import and use existing savegame files. -== DOS tools == +# DOS tools -Chocolate Doom includes some features that aren't part of Vanilla Doom +Chocolate Doom includes some features that aren’t part of Vanilla Doom but exist for compatibility with DOS tools that interact with it. These are considered part of the Vanilla experience and ought to be treated as such. Some examples are: @@ -73,7 +72,7 @@ treated as such. Some examples are: does under DOS. Chocolate Doom imposes the same limitations that Vanilla Dehacked does. -== Exceptions == +# Exceptions Chocolate Doom differs from Vanilla Doom in a number of ways. In most cases these are subtle, minor differences. Nonetheless they deserve @@ -81,25 +80,25 @@ some explanation and justification. Here are some examples of situations where changes are considered acceptable: 1. Vanilla behavior can be broken that is harmful, eg. can damage the - player's computer, or is just outright misleading. For example: + player’s computer, or is just outright misleading. For example: - Vanilla uses unbounded sprintf and strcpy (security issue). - Vanilla has crashes that force the user to reboot the machine. - Vanilla has an out of memory message that recommends tweaking - CONFIG.SYS. As Chocolate Doom doesn't run under DOS, reproducing + CONFIG.SYS. As Chocolate Doom doesn’t run under DOS, reproducing this message would not be helpful. - 2. Subtly extending behavior is okay where it's not clear what the + 2. Subtly extending behavior is okay where it’s not clear what the Vanilla behavior is anyway. For example: - Opening the menu releases mouse grab in Chocolate Doom. - - Chocolate Hexen's graphical startup screen runs in a window. + - Chocolate Hexen’s graphical startup screen runs in a window. - 3. Supporting obsolete technology is not a goal: it's considered + 3. Supporting obsolete technology is not a goal: it’s considered acceptable that Chocolate Doom does not support every type of hardware from 1993. However, Chocolate Doom should aim to recreate the functionality in a modern way. Examples of technology that - isn't supported are: + isn’t supported are: - No support for IPX networks, but TCP/IP is supported instead. - No support for dial-up/serial connections; modern operating @@ -109,35 +108,39 @@ situations where changes are considered acceptable: 4. Changes are acceptable that allow the player to be able play the game. For example: - - There are new key bindings for actions that can't be rebound with - Vanilla Doom, because it's useful for portability to machines - that don't have a full keyboard. + - There are new key bindings for actions that can’t be rebound with + Vanilla Doom, because it’s useful for portability to machines + that don’t have a full keyboard. - There are additional mouse and joystick key bindings that let you perform actions with them that can only be done with the keyboard in Vanilla Doom. - Chocolate Doom includes some hacks to support the Doom 3: BFG Edition IWAD files. The assumption is that being able to at least - play is better than nothing, even if it's not Vanilla behavior. + play is better than nothing, even if it’s not Vanilla behavior. + - Chocolate Strife does not emulate the save bug from + Vanilla 1.31, which could corrupt saves when overwriting a slot, + if the old slot was not part of the current game’s progression. + Vanilla behavior is unexpected and potentially devastating. 5. Adding extra options to Vanilla functionality is acceptable as long - as the defaults match Vanilla, it doesn't change gameplay and - there's a good reason for it. For example: + as the defaults match Vanilla, it doesn’t change gameplay and + there’s a good reason for it. For example: - PNG screenshots are supported because PCX is an obsolete format. - Chocolate Doom has the vanilla_keyboard_mapping option that allows the user to use the native keyboard mapping for their computer, rather than always assuming a US layout. - 6. Changing configuration file defaults is acceptable where there's a + 6. Changing configuration file defaults is acceptable where there’s a very good reason. For example: - Vanilla Doom defaults to no sound or music if a configuration file is not found. Chocolate Doom defaults to having sound effects and music turned on by default, because modern computers - support these; there's no need to configure hardware IRQ settings + support these; there’s no need to configure hardware IRQ settings to get sound working. - 7. Things can be changed if they're really just inconsequential. For + 7. Things can be changed if they’re really just inconsequential. For example: - The startup messages in Chocolate Doom are not identical to @@ -146,22 +149,22 @@ situations where changes are considered acceptable: -regdev used by id internally for development; these have been removed. -A good litmus test of when it's acceptable to break from Vanilla -behavior is to ask the question: "Although this is Vanilla behavior, -is there anyone who would want this?". +A good litmus test of when it’s acceptable to break from Vanilla +behavior is to ask the question: “Although this is Vanilla behavior, +is there anyone who would want this?” For example, emulating Vanilla bugs like the visplane overflow bug is something that is useful for people making Vanilla format maps. On the other hand, painstakingly emulating Vanilla Doom by starting with no sound or music by default is not helpful to anyone. -== Minimalism == +# Minimalism Chocolate Doom aims to be minimalist and straightforward to configure; in particular, the setup tool should have a sane interface. Part of -the inspiration for Chocolate Doom came from Boom's complicated maze +the inspiration for Chocolate Doom came from Boom’s complicated maze of options menus (and a desire to avoid them). Too many preferences -lead to a bad user interface; see Havoc Pennington's essay on Free +lead to a bad user interface; see Havoc Pennington’s essay on Free Software UI: http://ometer.com/free-software-ui.html @@ -173,21 +176,21 @@ the setup tool. The assumption is that if you care enough about those obscure features, editing a configuration file by hand should not be a huge problem for you. -Also inspirational was the README file from Havoc's Metacity window +Also inspirational was the README file from Havoc’s Metacity window manager, where the list of features begins: - Boring window manager for the adult in you. Many window managers - are like Marshmallow Froot Loops; Metacity is like Cheerios. + > Boring window manager for the adult in you. Many window managers + > are like Marshmallow Froot Loops; Metacity is like Cheerios. -I'd like to think that Chocolate Doom's philosophy towards features is +I’d like to think that Chocolate Doom’s philosophy towards features is similar. The idea is for a source port that is boring. I find the best software - both proprietary and open source - is software that is -"egoless": it does a job well without pretentions about its importance +“egoless”: it does a job well without pretentions about its importance or delusions of grandeur. A couple of other notable examples of software that I feel embody this spirit of design in a beautiful way -are Marco Pesenti Gritti's Epiphany web browser and Evince PDF viewer. +are Marco Pesenti Gritti’s Epiphany web browser and Evince PDF viewer. -== Other philosophical aspects == +# Other philosophical aspects Chocolate Doom aims for maximal portability. That includes running on many different CPUs, different operating systems and different devices @@ -195,6 +198,3 @@ many different CPUs, different operating systems and different devices Chocolate Doom is and will always remain Free Software. It will never include code that is not compatible with the GNU GPL. - -# vim: tw=70 - diff --git a/README.Music b/README.Music.md similarity index 69% rename from README.Music rename to README.Music.md index 5140f5fd..2cc4482b 100644 --- a/README.Music +++ b/README.Music.md @@ -1,16 +1,15 @@ - Doom has a memorable and atmospheric soundtrack. Like many games of the era, it is MIDI-based. Chocolate Doom includes a number of different options for music playback, detailed below. -== Native MIDI playback == +## Native MIDI playback Most modern operating systems have some kind of built-in support for MIDI playback; some have very good quality MIDI playback (Mac OS X for -example). To use this, choose "Native MIDI" in the sound configuration +example). To use this, choose “Native MIDI” in the sound configuration dialog in the setup tool. -== Timidity == +## Timidity Timidity is a software-based MIDI synthesizer, and a version of it is included in the SDL_mixer library used by Chocolate Doom. To use @@ -20,17 +19,17 @@ from the idgames archive as sounds/eawpats.zip: https://www.doomworld.com/idgames/sounds/eawpats -Having installed a sound font, select "Native MIDI" in the sound -configuration dialog in the setup tool, and use the "Timidity -configuration file" widget below to enter the path to the Timidity +Having installed a sound font, select “Native MIDI” in the sound +configuration dialog in the setup tool, and use the “Timidity +configuration file” widget below to enter the path to the Timidity configuration file (normally named timidity.cfg). -== Gravis Ultrasound (GUS) == +## Gravis Ultrasound (GUS) -The Gravis Ultrasound (GUS) was a PC sound card popular in the '90s, +The Gravis Ultrasound (GUS) was a PC sound card popular in the ’90s, notable for having wavetable synthesis that provided MIDI playback that was superior to most other cards of the era. Chocolate Doom -includes a "pseudo-GUS emulation" feature that simulates the GUS +includes a “pseudo-GUS emulation” feature that simulates the GUS (using Timidity, under the hood). To use this feature you need a copy of the GUS patch files that were @@ -41,37 +40,37 @@ from the idgames archive as music/dgguspat.zip: https://www.doomworld.com/idgames/music/dgguspat -Having downloaded the patches, select "GUS (emulated)" in the sound -configuration dialog in the setup tool, and use the "GUS patch path" +Having downloaded the patches, select “GUS (emulated)” in the sound +configuration dialog in the setup tool, and use the “GUS patch path” widget to enter the path to the directory containing the patch files. By default a GUS card with 1024KB is simulated; to simulate a 256KB, 512KB or 768KB card instead, change the gus_ram_kb option in chocolate-doom.cfg. -== OPL (Soundblaster / Adlib) == +## OPL (Soundblaster / Adlib) -Most people playing Doom in the '90s had Soundblaster-compatible sound +Most people playing Doom in the ’90s had Soundblaster-compatible sound cards, which used the Yamaha OPL series of chips for FM-based MIDI synthesis. Chocolate Doom includes the ability to emulate these chips for a retro experience. OPL emulation is the default MIDI playback, -but can be selected in the setup tool as "OPL (Adlib/SB)". +but can be selected in the setup tool as “OPL (Adlib/SB)”. Most modern computers do not include an OPL chip any more, as CPUs are fast enough to do decent software MIDI synthesis. However, no software emulator sounds exactly like a real (hardware) OPL chip, and a few -cards do have real hardware OPL. If you have such a card, here's how +cards do have real hardware OPL. If you have such a card, here’s how to configure Chocolate Doom to use it. -=== Sound cards with OPL chips === +# Sound cards with OPL chips If you have an ISA sound card, it almost certainly includes an OPL -chip. Modern computers don't have slots for ISA cards though, so you +chip. Modern computers don’t have slots for ISA cards though, so you must be running a pretty old machine. -If you have a PCI sound card, you probably don't have an OPL chip. +If you have a PCI sound card, you probably don’t have an OPL chip. However, there are some exceptions to this. The following cards are -known to include "legacy" OPL support: +known to include “legacy” OPL support: * C-Media CMI8738 (*) * Forte Media FM801 @@ -93,31 +92,31 @@ one of these cards for sale cheap on eBay. For the cards listed above with (*) next to them, OPL support is disabled by default and must be explictly enabled in software. -If your machine is not a PC, you don't have an OPL chip, and you will +If your machine is not a PC, you don’t have an OPL chip, and you will have to use the software OPL. -=== Operating System support === +# Operating System support -If you're certain that you have a sound card with hardware OPL, you +If you’re certain that you have a sound card with hardware OPL, you may need to take extra steps to configure your operating system to allow access to it. To do hardware OPL, Chocolate Doom must access the chip directly, which is usually not possible in modern operating systems unless you are running as the superuser (root/Administrator). -=== Windows 9x === +## Windows 9x -If you're running Windows 95, 98 or Me, there is no need to configure +If you’re running Windows 95, 98 or Me, there is no need to configure anything. Windows allows direct access to the OPL chip. You can confirm that hardware OPL is working by checking for this message in stdout.txt: - OPL_Init: Using driver 'Win32'. + OPL_Init: Using driver 'Win32'. -=== Windows NT (including 2000, XP and later) === +## Windows NT (including 2000, XP and later) -If you're running an NT-based system, it is not possible to directly +If you’re running an NT-based system, it is not possible to directly access the OPL chip, even when running as Administrator. Fortunately, -it is possible to use the "ioperm.sys" driver developed for Cygwin: +it is possible to use the “ioperm.sys” driver developed for Cygwin: http://openwince.sourceforge.net/ioperm/ @@ -128,44 +127,41 @@ executable and it should be automatically loaded. You can confirm that hardware OPL is working by checking for this message in stdout.txt: - OPL_Init: Using driver 'Win32'. + OPL_Init: Using driver 'Win32'. -=== Linux === +## Linux If you are using a system based on the Linux kernel, you can access the OPL chip directly, but you must be running as root. You can confirm that hardware OPL is working, by checking for this message on startup: - OPL_Init: Using driver 'Linux'. + OPL_Init: Using driver 'Linux'. If you are using one of the PCI cards in the list above with a (*) next to it, you may need to manually enable FM legacy support. Add the following to your /etc/modprobe.conf file to do this: - options snd-ymfpci fm_port=0x388 - options snd-cmipci fm_port=0x388 + options snd-ymfpci fm_port=0x388 + options snd-cmipci fm_port=0x388 -=== OpenBSD/NetBSD === +## OpenBSD/NetBSD You must be running as root to access the hardware OPL directly. You can confirm that hardware OPL is working by checking for this message on startup: - OPL_Init: Using driver 'OpenBSD'. + OPL_Init: Using driver 'OpenBSD'. There is no native OPL backend for FreeBSD yet. Sorry! -== Other options == +# Other options -If you have some other favorite MIDI playback option that isn't +If you have some other favorite MIDI playback option that isn’t listed above, you can set a hook to invoke an external command for -MIDI playback using the 'snd_musiccmd' configuration file option. For +MIDI playback using the ‘snd_musiccmd’ configuration file option. For example, set: - snd_musiccmd "aplaymidi -p 128:0" + snd_musiccmd "aplaymidi -p 128:0" in your chocolate-doom.cfg file. - -# vim: set tw=70: - diff --git a/README.Strife b/README.Strife.md similarity index 68% rename from README.Strife rename to README.Strife.md index 0bd8e775..c770449b 100644 --- a/README.Strife +++ b/README.Strife.md @@ -1,6 +1,6 @@ -=============================================================================== +```````````````````````````````````````````````````````````````````````` - Samuel 'Kaiser' Villarreal and James 'Quasar' Haley Present + Samuel ‘Kaiser’ Villarreal and James ‘Quasar’ Haley Present C H O C O L A T E ______________________________._________________________ @@ -10,17 +10,17 @@ /_______ / |____| |____|_ /___|\___ / /_______ / \/ \/ \/ \/ -=============================================================================== +```````````````````````````````````````````````````````````````````````` -* What is it? * +## What is it? Chocolate Strife is the most accurate and complete recreation of Rogue -Entertainment's "Strife: Quest for the Sigil." It was created through more than -four years of reverse engineering effort with the blessings of the original -programmers of the game. +Entertainment’s “Strife: Quest for the Sigil.” It was created through more +than four years of reverse engineering effort with the blessings of the +original programmers of the game. -* Why? * +## Why? The source code for Strife was lost, which means, unlike the code for all the other commercial DOOM-engine games, it cannot be released. The only access we @@ -32,7 +32,7 @@ resulting Chocolate Doom-based executable is as close as possible to the original. -* Is it Legal? * +## Is it Legal? Chocolate Strife was originally reverse-engineered from the DOS Strife binaries. Although reverse engineering is legally a protected activity, this @@ -45,9 +45,9 @@ Edition, along with its GPL-licensed source code, constitutes tacit approval for the legal status of Chocolate Strife by its current copyright holder. -* Is it Perfect? * +## Is it Perfect? -Almost, but not entirely! That's where you come in. Help us by reporting any +Almost, but not entirely! That’s where you come in. Help us by reporting any discrepancies you may notice between this executable and the vanilla DOS program! @@ -60,16 +60,20 @@ for example by initializing pointers to NULL rather than using them without setting a value first. -* What are some known problems? * +## What are some known problems? -- The demo version is *not* supported, and there are not any current plans - to support it in the future, due to the vast number of differences (the - demo version of Strife is based on a much earlier beta version of Rogue's - codebase). You should use a commercial Strife IWAD file, preferably of - version 1.2 or later. +The demo version is *not* supported, and there are not any current plans to +support it in the future, due to the vast number of differences (the demo +version of Strife is based on an earlier version of Rogue’s +codebase). + +The commercial Strife IWAD version 1.1 may run, but also exhibit issues. Like +the demo version, there are no current plans to fully support it. Make sure +your copy is updated to at least 1.2. Strife: Veteran Edition already +includes the required version. -* How do I use it? * +## How do I use it? From the Run box or a command line, issue a command to Chocolate Strife just like you would run Chocolate Doom. Most of the same command line parameters @@ -82,27 +86,27 @@ redundant and unnecessary. Some new command-line parameters in Chocolate Strife include the following: --nograph - Disables the graphical introduction sequence. -devparm implies this. + - -nograph + - Disables the graphical introduction sequence. -devparm implies this. --novoice - Disables voices even if voices.wad can be found. + - -novoice + - Disables voices even if voices.wad can be found. --work - Enables Rogue's playtesting mode. Automatic godmode, and pressing the - inventory drop key will toggle noclipping. + - -work + - Enables Rogue’s playtesting mode. Automatic godmode, and pressing the + inventory drop key will toggle noclipping. --flip - Flips player gun graphics. This is buggy, however, because it does not - reverse the graphics' x offsets (this is an accurate emulation of the - vanilla engine's behavior). + - -flip + - Flips player gun graphics. This is buggy, however, because it does not + reverse the graphics’ x offsets (this is an accurate emulation of the + vanilla engine’s behavior). --random - Randomizes the timing and location of item respawns in deathmatch, when - item respawning is enabled. + - -random + - Randomizes the timing and location of item respawns in deathmatch, when + item respawning is enabled. -* Copyright * +## Copyright This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -113,9 +117,8 @@ This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -See the "COPYING" file for the full license text. The source code for this +See the “COPYING” file for the full license text. The source code for this program is available from the same location where you downloaded this package. Aside from Chocolate Doom, portions of the code are derived from the Eternity Engine, Copyright 2011 Team Eternity, as published under the GNU GPL. - diff --git a/TODO b/TODO.md similarity index 68% rename from TODO rename to TODO.md index 419f087d..3f40d473 100644 --- a/TODO +++ b/TODO.md @@ -1,20 +1,20 @@ -This is Chocolate Doom's "to do" list. Note that this is kind of an arbitrary +This is Chocolate Doom’s “to do” list. Note that this is kind of an arbitrary and unstructured wish list of features and improvements. The bug tracker (http://chocolate-doom.org/bugs) has more feature requests. * Multiplayer: - - Use UPnP to automatically configure port forwarding for NATted + - Use UPnP to automatically configure port forwarding for NATed networks. - Multiplayer options and configuration file (server name, etc) * Improve multiplayer startup: - - Select an IWAD automatically from the server's game type rather than + - Select an IWAD automatically from the server’s game type rather than all players having to specify -iwad. - Send list of WADs to load instead of all clients having to specify -file. - Same applies to dehacked patches and wad merging parameters. * Portability improvements: - - Test on and fix for architectures where ((-2) >> 1) != -1 - - Use size-specific types (eg. int32_t instead of int) - - Don't make structure packing assumptions when loading levels. + - Test on and fix for architectures where `((-2) >> 1) != -1` + - Use size-specific types (eg. `int32_t` instead of int) + - Don’t make structure packing assumptions when loading levels. - Port to every OS and architecture under the sun - Port to Emscripten and release a web-based version. * Video capture mode @@ -24,16 +24,13 @@ and unstructured wish list of features and improvements. The bug tracker - Merge r_draw.c to common version and delete duplicates - Heretic v1.2 emulation (if possible) - Hexen v1.0 emulation (if possible/necessary) - - Strife v1.2 emulation (for demo IWAD support) + - Strife v1.1 emulation (for demo IWAD support) - Screensaver mode Crazy pie in the sky ideas: * Automatic WAD installer - download and run TCs from a list automatically - (automating the current "instructions on wiki" system). + (automating the current “instructions on wiki” system). * Textscreen interface to the Compet-N database: menu driven system to automatically download and play speedruns. * DWANGO-like interface for finding players and setting up games. - -# vim: tw=70 - diff --git a/pkg/config.make.in b/pkg/config.make.in index 54b7bc84..023b3e9c 100644 --- a/pkg/config.make.in +++ b/pkg/config.make.in @@ -19,8 +19,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ # Documentation files to distribute with packages. -DOC_FILES = README.md \ - README.Music \ - COPYING \ - NEWS +DOC_FILES = README.md \ + README.Music.md \ + COPYING \ + NEWS.md diff --git a/pkg/osx/GNUmakefile b/pkg/osx/GNUmakefile index ff37dc5b..948350fc 100644 --- a/pkg/osx/GNUmakefile +++ b/pkg/osx/GNUmakefile @@ -6,7 +6,7 @@ include ../config.make -DOC_FILES += README.Strife NOT-BUGS +DOC_FILES += README.Strife.md NOT-BUGS.md export MACOSX_DEPLOYMENT_TARGET=10.7 @@ -72,7 +72,7 @@ $(STAGING_DIR): launcher $(TOPLEVEL_DOCS) cp $(TOPLEVEL_DOCS) "$(APP_DOC_DIR)" ln -s "$(APP_DOC_RELDIR)/COPYING" "$(STAGING_DIR)/Software License" - ln -s "$(APP_DOC_RELDIR)/README" "$(STAGING_DIR)/README" + ln -s "$(APP_DOC_RELDIR)/README.md" "$(STAGING_DIR)/README.md" ln -s /Applications "$(STAGING_DIR)" cp launcher "$(APP_BIN_DIR)" diff --git a/pkg/win32/GNUmakefile b/pkg/win32/GNUmakefile index d6f1236a..07ae74fe 100644 --- a/pkg/win32/GNUmakefile +++ b/pkg/win32/GNUmakefile @@ -27,12 +27,12 @@ $(STRIFE_ZIP): staging-strife hook-strife # Special hooks to custom modify files for particular games. hook-doom: staging-doom - cp $(TOPLEVEL)/NOT-BUGS $