ReMooD is a Doom Source Port based off Doom Legacy 1.42 which is under the GNU General Public License (at least version 2). Thank you for playing ReMooD, we hope you enjoy it! -- The ReMooD Team
The ReMooD Team recommends that you meet the following system requirements:
ReMooD has been tested on these systems and has been confirmed it works:
You may either use the installer or install it manually via the ZIP file. Note to Windows Vista Users: ReMooD can be placed in Program Files. Configurations will be placed in your home folder (ex: C:\Users\UserName\ReMooD
, C:\Documents and Settings\UserName\ReMooD
, ...).
After downloading the Debian packages, you may use the `dpkg -i package
` command to install ReMooD where package is the .deb you downloaded.
After downloading and extracting the source code, you can use the make command to build ReMooD. Please note you require libSDL. Any built binaries will be placed in bin/.
! = Note/Warning/Bug
* = Change/Fix
+ = Addition
- = Removal
From: ReMooD 0.7c "Baker's Dozen" [Wednesday, December 31, 2008]
To : ReMooD 0.8a "Chicken Noodle Soup" [Saturday, February 28, 2009]
===============================================================================
* Backend/Memory: Use segmented memory manager. [GhostlyDeath]
* Backend/SDL: New SDL Sound Code. [GhostlyDeath]
* Backend/WAD: Fix W_CacheRawAsPic logical error which caused Heretic to crash at the title screen. [GhostlyDeath]
* Game/Console: Deprecated "legacymouse", use "m_legacymouse" instead. [GhostlyDeath]
* Game/Console: Deprecated "mousesens", use "m_xsensitivity" instead. [GhostlyDeath]
* Game/Console: Deprecated "mouseseny", use "m_ysensitivity" instead. [GhostlyDeath]
* Game/Heretic: Tomed Wand effect is now correct. [GhostlyDeath]
* Game/Items: Unified Doom and Heretic weaponry and ammo, if desired, it will be possible to get every weapon including doom ones, as long as there are sprites. [GhostlyDeath]
* Game/Items: Infinite ammo no longer constantly sets the ammunition of a fired gun to 100. [GhostlyDeath]
* Game/Menus: Fixed menus to work in Heretic. [GhostlyDeath]
* Game/Menus: Video Options Menu Title is now spelt correctly. [GhostlyDeath]
* Game/Menus: Changed "Frag's Weapon Falling" to "Drop Weapons when you die", the latter makes more sense. [GhostlyDeath]
* Game/Menus: Don't try to play Doom 2 sounds when quitting a Doom game. [GhostlyDeath]
* Game/Mouse: Maximum Mouse sensitivity increased from 40 to 160. [GhostlyDeath]
* Game/Profiles: Fix near buffer overflow when changing profile names. [GhostlyDeath]
* Game/Video: Everything is now scaled by floating point math. [GhostlyDeath]
* Resources/WAD: Recreated TRANSMED, TRANSMOR, TRANSHI. [GhostlyDeath]
* Source/Global: Fix typo in doomstat.h. [GhostlyDeath]
* Source/Global: Clean d_clisrv.h. [GhostlyDeath]
* Source/Interface: Move interface code in src/ to sdl/ and palmos/. [GhostlyDeath]
* Source/Interface: Move interface code (from sdl/, oldsdl/, palmos/) into isrc/. [GhostlyDeath]
* Source/Makefile: Renamed "makefile" to "GNUmakefile" to favor GNU make. [GhostlyDeath]
* Source/Utilities: Move master/ and launcher/ into util/. [GhostlyDeath]
* Source/Renderer: Changed visplane code to not use padding. [GhostlyDeath].
+ Backend/Memory: Add -lowmem parameter, which reduces memory usage. [GhostlyDeath].
+ Backend/SDL: Add ability to play analog sounds (in Sine, Square, Rectangle, Sawtooth, Sine Square (Sine with Square rules), and Absolute Sine waveforms). [GhostlyDeath]
+ Backend/SDL: If a DPxxxxxx lump is not found try a xxxxxx~P (name suffixed) lump instead. [GhostlyDeath]
+ Backend/Video: Add -highcolor for 16-bit color mode (if it is ever finished). [GhostlyDeath]
+ Game/Menus: Added a new option to change your cursor blinking rate (Under Miscellaneous). [Demyx]
+ Game/Cheats: Added "gimme otherweapons" for weapons not in the game. [GhostlyDeath]
+ Game/Cheats: Added "gimme all" which gives you everything. [GhostlyDeath]
+ Game/Configuration: Game setup options are now saved (M_Init() was moved back before FirstLoadConfig()). [GhostlyDeath]
+ Game/Console: Added aliases and deprecation support for command. [GhostlyDeath]
+ Game/Console: Added an option to allow the console box to not be drawn. [GhostlyDeath]
+ Game/Heretic: Heretic is now supported. [GhostlyDeath]
+ Game/Renderer: Added color bars between players. [GhostlyDeath]
+ Game/Weapons: Added slot based weaponry. [GhostlyDeath]
+ Resources/Icon: Added R-less ReMooD Globe Icon. [GhostlyDeath]
+ Resources/Launcher: Added splash screen graphic for the launcher which is based on my splash screen style. [GhostlyDeath]
+ Resources/WAD: Took Odamex's Large Font and renamed it to FONTC (Because FONTB is used by Heretic and loading remood.wad would conflict). [GhostlyDeath]
+ Resources/WAD: Add analog version of DSJUMP resulting in DPJUMP. [GhostlyDeath]
+ Source/Interface: Add Palm OS Interface. [GhostlyDeath]
+ Source/Projects: Add x64 target to Visual C++ 9 Project, thanks StasBFG. [GhostlyDeath]
- Game/Levels: Removed -devparm flat list code. [GhostlyDeath]
- Game/Renderer: Remove resolution cap of 1280x1024. [GhostlyDeath]
- Source/Global: Remove rdf. [GhostlyDeath]
- Source/Global: Remove d_netfil. [GhostlyDeath]
- Source/Global: Remove filesrch. [GhostlyDeath]
- Source/Global: Remove searchp. [GhostlyDeath]
- Source/Global: Remove i_sound_sdl.h. [GhostlyDeath]
From: ReMooD 0.7b "Pancakes!" [Saturday, July 12, 2008]
To : ReMooD 0.7c "Baker's Dozen" [Wednesday, December 31, 2008]
===============================================================================
* Backend/SDL: Stereo Reverse now works. [GhostlyDeath]
* Backend/WAD: Rewrote IWAD finding code to be more efficient (search order: doom2, doom2f, udoom, doom, plutonia, tnt, chex1, doom1, freedoom, freedm). [GhostlyDeath]
* Backend/WAD: Rewrote PWAD finding code to be more efficient. [GhostlyDeath]
* Game/Input: Fixed speed turning in split-screen mode. [GhostlyDeath]
* Game/Input: Fixed Next/Prev Weapon toggling. [GhostlyDeath]
* Game/Logic: Hitscan autoaim is now correct. [GhostlyDeath]
* Game/Logic: The player's viewheight is now corrected when standing on a Z moving object. [GhostlyDeath]
* Game/Configuration: Configuration settings now load in the following order: -config, -cdrom (Windows Only), Working Directory then your Home Directory. [GhostlyDeath]
* Game/Configuration: Configurations are now saved regardless of whether it was correctly loaded or not. [GhostlyDeath]
* Game/Console: Restartlevel can no longer be used on demo's, as it screws them up. [Demyx]
* Game/Console: You can no longer use the console command "exitgame" when you are playing a demo or on the titlescreen. [Demyx]
* Game/Console: "Pause" is no longer allowed anywhere except when you are playing in game or in intermission. [Demyx]
* Game/Console: Changed version internal version from Doom Legacy 1.42 to ReMooD 0.7c "Baker's Dozen". [Demyx]
* Game/Console: Fixed broken "exitlevel" command. [Demyx]
* Game/Menus: Added missing y or n on Endgame. [Demyx]
* Game/Menus: Added missing Nightmare verification on skill selection. [Demyx]
* Game/Renderer: Just return from some renderer functions if some of the values are incorrect. [GhostlyDeath]
* Game/Renderer: When looking up patch's lump numbers, search between marker lumps (PP_, P3_, P2_, then P1_), if no lumps are found, do a W_GetNumForName for Legacy compatibility; this fixes problems where flats or other lumps share the same names as patches. [GhostlyDeath]
* Game/Renderer: Do not draw flats at or past the viewheight. [GhostlyDeath]
* Game/Scripting: Renamed FraggleScript to Legacy Script to emphasize Legacy more. [GhostlyDeath]
* Game/Setup: Detect for HeXeN maps, if the map turns out to be one, go back to the titlescreen. [GhostlyDeath]
* Game/Timing: Better performance, uses less CPU when not needed, however it gets sluggish a bit but it's better than before. [GhostlyDeath]
* Game/Video: Fullscreen now defaults to "No". [GhostlyDeath]
* Resources/WAD: Use "free" smoke sprites. [GhostlyDeath]
* Source/Global: Corrected headers to fit the ReMooD Standard Header. [GhostlyDeath]
* Source/Makefile: Remade makefile. [GhostlyDeath]
* Source/Resource: Version information should now show version information for Non-US English users (Windows). [GhostlyDeath]
+ Backend/Memory: Added "clearcache" command, which will free everything PU_PURGELEVEL and up. [GhostlyDeath]
+ Backend/SDL: Caps Lock can now be used as a bindable key. [GhostlyDeath]
+ Backend/SDL: Added an icon to the SDL Window. [GhostlyDeath]
+ Backend/WAD: Enable full support for DOOMWADDIR and DOOMWADPATH. [GhostlyDeath]
+ Backend/WAD: Enable Odamex style -waddir parameter. [GhostlyDeath]
+ Backend/WAD: Added -remoodwad to specify the location of remood.wad (mainly for the launcher). [GhostlyDeath]
+ Game/Controls: Add Mouse Axis Control, specify what axis on the mouse moves what. [GhostlyDeath]
+ Game/Demos: Added base RDF Demo support. [GhostlyDeath]
+ Game/HUD: Added multiple key indicators as in Boom (ex: Card and Skull instead of just Skull). [GhostlyDeath]
+ Game/Input: Added support for 4 mice with 8 buttons and 4 joysticks with 32 buttons. [GhostlyDeath]
+ Game/Menus: Added Classic Menu. [GhostlyDeath]
+ Game/Music: Music is now supported in Windows. [GhostlyDeath]
+ Game/Options: New Game Options are now saved (they are the ng_ cvars). [GhostlyDeath]
+ Game/Options: Added Infinite Ammo option. [Demyx]
+ Game/Profiles: Added Autoaim option. [GhostlyDeath]
+ Other/Installer: Add NSIS Installer script. [GhostlyDeath]
+ Other/Launcher: Added Win32 Launcher. [GhostlyDeath]
+ Resources/WAD: Took WAD Building code from Odamex. [GhostlyDeath]
+ Resources/WAD: Took DIG* Font from Boom/PrBoom. [GhostlyDeath]
+ Resources/WAD: Took STKEYS# from Boom/PrBoom. [GhostlyDeath]
+ Resources/WAD: Took STRBR12# from Boom/PrBoom. [GhostlyDeath]
+ Source/Debian: "make debian" will create a Debian package for your system. [GhostlyDeath]
+ Source/Misc: Add Multi-Threaded Source Code. [GhostlyDeath]
+ Source/Projects: Added Microsoft Visual C++ 6.0 Project (see PROJECTS for more details). [GhostlyDeath]
+ Source/Projects: Added Bloodshev Dev-C++ Project (see PROJECTS for more details). [GhostlyDeath]
+ Source/Projects: Added Code::Blocks Project (see PROJECTS for more details). [GhostlyDeath]
- Game/Input: Removed mouse scaling. [GhostlyDeath]
- Source/Bots: Removed old bot code. [GhostlyDeath]
- Source/Documentation: Removed RULES, it had bad spelling and grammer and doesn't quite fit in ReMooD as of now. [GhostlyDeath]
- Source/Documentation: Removed TODO. [GhostlyDeath]
- Source/Documentation: Removed some of the old Legacy Documents. [GhostlyDeath]
- Source/Heretic: Removed deprecated Heretic files. [GhostlyDeath]
- Source/Music: Removed unused qmus2mid Code. [GhostlyDeath]
- Source/Network: Removed deprecated code. [GhostlyDeath]
- Source/Projects: Microsoft Visual C++ 9.0 w/ SDL no longer requires DirectX libs. [GhostlyDeath]
- Source/Renderer: Removed profiling code. [GhostlyDeath]
- Source/Renderer: Removed hwsym_sdl, was deprecated. [GhostlyDeath]
- Source/Renderer: Removed deprecated r_draw8.c and r_draw16.c. [GhostlyDeath]
From: ReMooD 0.7a "Banana Cream Pie" [Saturday, March 22, 2008]
To : ReMooD 0.7b "Pancakes!" [Saturday, July 12, 2008]
===============================================================================
! % 0.7a % The sector limit of 256/512 was for 64-bit versions only and is fixed in this version. [GhostlyDeath]
! % 0.7a % The crash that would happens when ReMooD attempted to load something inside a WAD but got another lump in another WADs data has been fixed (Reading bad data). [GhostlyDeath]
* Backend/Memory: Reverted new memory code, it worked on Linux but not on Windows. The old code has been adjusted to work on 64-bit systems also. [GhostlyDeath]
* Backend/SDL: 22Khz Sounds are now downsampled to 11Khz. [GhostlyDeath]
* Backend/SDL: Things can now only emit a single sound at once. [GhostlyDeath]
* Backend/SDL: Sounds are now updated when the listener and object positions change. [GhostlyDeath]
* Backend/SDL: Fixed some random sound related crashes. [GhostlyDeath]
* Backend/WAD: Fixed logical error in W_LumpsSoFar(), which caused 0.7a to crash when a sprite from an addon WAD as attempted to be drawn. [GhostlyDeath]
* Backend/WAD: Ultimate Doom is now detected correctly. [GhostlyDeath]
* Compiler/VC++: Executables are now "remood.exe" and "remood-dbg.exe" like in the makefile. [GhostlyDeath]
* Game/Cheats: IDDQD now works. [Demyx]
* Game/Cheats: Cheats can now only be used in-game. [GhostlyDeath]
* Game/Menus: Remade all menus. [GhostlyDeath]
* Game/Menus: Reorganized menus and added more options. [GhostlyDeath]
* Game/Misc: "legacy.cfg" is now "remood.cfg". [GhostlyDeath]
* Game/Renderer: Fixed sprite missing rotation(s) crash. [GhostlyDeath]
* Game/Renderer: Fixed crashes due to ylookup being NULL. [GhostlyDeath]
* Game/Renderer: Invisible 3D Floor (LineDef type #306) no longer casts a shadow. [GhostlyDeath]
* Game/Renderer: Monsters with the MF_SHADOW flag set are now drawn using the Doom Fuzz effect like in Classic Doom. [GhostlyDeath]
* Game/Renderer: Improved text colormap creation method. [GhostlyDeath]
* Game/Language: Changed "exit to DOS" strings to match the system the game was compiled for. [GhostlyDeath]
* Game/Levels: If a colormap is not found between C_START and C_END, every WAD is searched for one. [GhostlyDeath]
* Game/Logic: Shooting 2-sided lines without backsectors no longer crashes the game. [GhostlyDeath]
* Game/Logic: Fist and chainsaw now changes the player's view angle like in Classic Doom. [GhostlyDeath]
* Game/Logic: Fixed a bug where when you teleported, you were not stuck for a short time. [GhostlyDeath]
* Game/Skins: Skins are now loaded correctly. [GhostlyDeath]
* Game/Sound: Random sound pitch no longer effects DSRADIO. [GhostlyDeath]
* Source/Global: Major Code Cleanup [GhostlyDeath and Demyx].
* Source/makefile: Remade makefile. [GhostlyDeath]
* System/Linux: Executable is now "remood" instead of "lsdldoom". [GhostlyDeath]
+ Backend/SDL: Added more windowed modes. [GhostlyDeath]
+ Backend/WAD: When an IWAD is not found, the message now tells you where you can get FreeDoom. [GhostlyDeath]
+ Backend/WAD: ReMooD now searches for freedoom.wad and freedm.wad. [GhostlyDeath]
+ Compiler/Anjuta: Added Anjuta Project. [GhostlyDeath]
+ Compiler/KDevelop: Added KDevelop Project. [GhostlyDeath]
+ Compiler/Mingw32: Mingw32 Executables now include resources. [GhostlyDeath]
+ Compiler/VC++: Added Microsoft Visual C++ 2005 Express Project. [Demyx]
+ Game/Automap: Automap can now be overlayed. [GhostlyDeath]
+ Game/Automap: Improved "iddt" cheat in 2nd mode, thing triangles now match the thing's radius and colors indicate what kind of thing it is. [GhostlyDeath]
+ Game/Cheats: Added "summon" cheat which can be used to spawn monsters via Eternity class names. [GhostlyDeath]
+ Game/Demos: Internal demos can now be played via -playdemo. [GhostlyDeath]
+ Game/HUD: Added option which allows the status bar to be transparent. [GhostlyDeath]
+ Game/Menus: Menus now scroll. [GhostlyDeath]
+ Game/Menus: When modifying string values, shift now allows you to use alternate characters (such as '!', '@', etc.). [GhostlyDeath]
+ Game/Misc: Added support for personal profiles (Although it is still in beta stages). [GhostlyDeath]
+ Game/Misc: Added option to disable demos playing on the titlescreen. [Demyx]
+ Game/Multiplayer: Added support for 4-player split screen. [GhostlyDeath]
+ Game/Options: Added options to emulate Classic Doom better. [GhostlyDeath]
+ Game/Renderer: Added Experimental underwater ripple effect when you are under water. [GhostlyDeath]
+ Game/Sound: When swimming underwater, the DSFLOUSH sound is now played. [GhostlyDeath]
+ Source/Menus: Added IT_DISABLED2 menu item flag. [GhostlyDeath]
+ Source/Menus: Added IT_CENTERSTRING menu iten flag. [GhostlyDeath]
- Backend/SDL: Cursor is no longer shown in the ReMooD Window. [GhostlyDeath]
- Backend/SDL_mixer: Dumped support and removed code, it never worked properly anyway. [GhostlyDeath]
- Compiler/VC++: Removed Microsoft Visual C++ 6.0 Project. [GhostlyDeath]
- Game/Heretic: Removed tons of Heretic Code. [GhostlyDeath and Demyx]
- Source/Network: Removed CLIENTPREDICTION2 code. [GhostlyDeath]
- Source/Network: Removed network code. [GhostlyDeath]
- Source/Renderer: Removed hardware renderer support. [GhostlyDeath]
- Source/Renderer: Removed HORIZONTALDRAW, TILTVIEW, PERSPCORRECT and OLDWATER code. [GhostlyDeath]
- Source/Sound: Removed hardware sound support. [GhostlyDeath]
From: Doom Legacy 1.42 "Birthday Edition" [Thursday, April 15, 2004]
To : ReMooD 0.7a "Banana Cream Pie" [Saturday, March 22, 2008]
===============================================================================
! Levels with more than 256 sectors won't work.
! Can't host or join network games yet (linked to old WAD handling code).
! Save games have not been tested and may or may not work.
! Skies don't seem to work on 64-bit builds.
! 22Khz sounds play at half speed, There appears to be no handling of non 11Khz sounds currently.
! Due to a bug on level precaching, the textures and such are loaded during gameplay.
* Changed CONSBACK to ReMooD Picture.
* Console background is now Red instead of Green.
* ReMooD works on 64-bit systems.
* When starting a server, WADs are no longer check since they would match anyway!
* Updated Most of the headers to the new ReMooD header.
* Switched to SDL for Windows and Linux builds.
* "legacy.dat" is now "remood.wad".
* Linux: Settings are saved in "~/.remood" instead of "~/.legacy".
* Fixed Byte Pointer Reading and Writing Code.
+ Added Advanced Menu.
+ Added Scripts Menu in the Advanced Menu.
+ Added cvar "scr_allowcommandexec", this cvar if enabled allows scripts to execute console commands. Defaults to "No".
+ New WAD Handling Code.
+ New Memory Managing Code.
+ Added Microsoft Visual C++ 2008 Project.
+ Added Non-Functional Code::Blocks Project.
+ Added ReMooD Script Document (incomplete currently) for later implementation.
+ Added "-nodrawsprites" which would not draw any sprites, this was used for testing since there was a problem with sprites, it shouldn't be used anymore.
- Removed Hardware Rendering for now.
- Disabled Bots for now.
- Removed all USEASM and Assembly Code.
- Removed CBLEFT and CBRIGHT.
ReMooD contains project files for the following build environments for your convenience.
To compile ReMooD, you need a C Compiler and libSDL. For a list of suggested C compilers and IDEs, please look at the above list. This guide will not help you setup the IDE or it's settings as it is up to you.
TIP for Debian/Ubuntu/Xandros Users: Compiling ReMooD requires libsdl1.2-dev, make, libc6-dev, gcc, and the packages they depend on. If these packages are installed you may open a terminal to the location of the ReMooD Source Code and type in "make".
After installing and setting up GCC (or compatible compiler) along with SDL you may type in "make" via a terminal with the directory containing the ReMooD Source Code as the current working directory. If for some reason your system does not have sdl-config you may add SDL_INCLUDE=Location and SDL_LIB=Location to the make command. Location is the exact or relative path to the SDL headers and libraries.
After installing and setting up a compiler listed above along with SDL, you may open up the corresponding project file and build with it. If you are using Mingw32 compiler then you will need to place the SDL headers and libraries in the Mingw32 include/ and lib/ directories or you may place them in SDL/ inside of the ReMooD Source Code directory.
Compiling ReMooD on non-Intel architectures or systems not listed here may or may not work. The basis of support is allowing ReMooD to compile on these systems. The second stage would be fixing any bugs if any exist that only occur on this certain system. Instructions for compilation can not be provided for these cases. However, you may contribute any project files and/or patches to the code to enable support for these systems.
A: You may have selected the incorrect ReMooD program (the launcher instead of the actual game).
If "remood-launcher.cfg" does not exist in the current directory then configurations will be placed in your home folder (ex: C:\Users\UserName\ReMooD
, C:\Documents and Settings\UserName\ReMooD
, ...).
A: Once you change the resolution, you have to press D to save it.
A: Anything can cause the game to crash, either the game itself or parts of the system that help the game run. The best way to report crashes is using the information from a debugger, but if that is not available then it is best to determine what steps it takes to reproduce the crash. If you've determined what you have to do to crash the game, report it on the forums, there is a sub-forum for bug posts. This report will be looked at and should be fixed in the next version. DEBUGGERS: If you use the GCC makefile to compile the program, you can add "DEBUG=1" to the parameters and it will create remood-dbg which will contain debugging information. If the crash occurs, please also copy the output of bt and the initial crash message (example: "remood-dbg received signal SIGSEGV at Somewhere()"). If you use Microsoft Visual C+++, please copy the contents of the Call Stack and the initial crash message if possible (example: "Segmentation violation at 0x00000000").
A: High resolutions have been tested and most of the crashes were due to Doom's fixed point limitation, there is no fix for this unless the fixed point number limitation is increased.
A: If the game is running fullscreen then it may not support the selection resolution (default: 320x200). You should disable fullscreen mode by either modifying remood.cfg and set fullscreen off or increase the resolution to something above 320x240 or your desktop resolution (example: 640x480, scr_height is for the screen height and scr_width is the screen width).
A: The name of the lump was changed to "THING_H" because deutex does not like periods in the names. When an include is not found, all of the periods in the file are converted into underscores. Scripts that include things.h will still work.
Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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 Foundation; either version 2 of the License, or
(at your option) any later version.
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.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.