This header file specifies the version number for this copy of NetHack. It also specifies the oldest version from which this NetHack will accept save files and bones files. The makedefs program will use both patchlevel.h and config.h to generate another header, date.h, that contains the version string and more version information.
NetHack 3.2.0/patchlevel.h introduces this header file in its modern form. Before that, patchlevel.h only contains a PATCHLEVEL definition and some comments.
Top of file Edit
1. /* SCCS Id: @(#)patchlevel.h 3.4 2003/12/06 */ 2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4.
|The NetHack General Public License applies to screenshots, source code and other content from NetHack.|
This header file does not have a guard against multiple inclusion. All other header files must not include patchlevel.h; only those few source files that need it should include it.
Version number Edit
5. /* NetHack 3.4.3 */ 6. #define VERSION_MAJOR 3 7. #define VERSION_MINOR 4 8. /* 9. * PATCHLEVEL is updated for each release. 10. */ 11. #define PATCHLEVEL 3
Together, the major version number, minor version number and patch level identify the 3.4.3 release. If the DevTeam would release 3.4.4, then it would increment PATCHLEVEL to 4; but if it would release 4.0.0, then it would increment VERSION_MAJOR to 4 and reset both VERSION_MINOR and PATCHLEVEL to 0.
Edit level Edit
12. /* 13. * Incrementing EDITLEVEL can be used to force invalidation of old bones 14. * and save files. 15. */ 16. #define EDITLEVEL 0 17.
The edit level is part of the version number stored in save files, and you may increment it without changing the displayed "3.4.3" number. To actually invalidate the older bones and saves, you need to disable the VERSION_COMPATIBILITY feature below.
Most releases from the DevTeam have EDITLEVEL set to 0. However, NetHack 3.3.0/patchlevel.h has EDITLEVEL set to 19. There may have been beta versions of 3.3.0 with lower edit levels; adding a "#define BETA" would cause makedefs to produce a version string like "3.3.0-19".
18. #define COPYRIGHT_BANNER_A \ 19. "NetHack, Copyright 1985-2003" 20. 21. #define COPYRIGHT_BANNER_B \ 22. " By Stichting Mathematisch Centrum and M. Stephenson." 23. 24. #define COPYRIGHT_BANNER_C \ 25. " See license for details." 26.
You may recall seeing this familiar copyright banner when you start NetHack.
27. /* 28. * If two or more successive releases have compatible data files, define 29. * this with the version number of the oldest such release so that the 30. * new release will accept old save and bones files. The format is 31. * 0xMMmmPPeeL 32. * 0x = literal prefix "0x", MM = major version, mm = minor version, 33. * PP = patch level, ee = edit level, L = literal suffix "L", 34. * with all four numbers specified as two hexadecimal digits. 35. */ 36. #define VERSION_COMPATIBILITY 0x03040000L /* 3.4.0-0 */ 37. 38.
The VERSION_COMPATIBILITY feature specifies an older version of NetHack with compatible bones and saves. This field specifies an upper bound. The makedefs program will compute an upper bound VERSION_NUMBER and store it in date.h. NetHack 3.4.3 will accept bones and saves files from any version in the range from 0x03040000L to 0x03040300UL.
When VERSION_COMPATIBILITY is undefined (for example with an "#if 0 ... #endif" block as in NetHack 3.4.0/patchlevel.h), NetHack accepts bones and saves from only one version. SLASH'EM releases also do not define VERSION_COMPATIBILITY.
A SLASH'EM release that preserves bones compatibility and save compatibility will increment its fix level, the number after the "F". SLASH'EM does not store the fix level in its bones or saves. For example, SLASH'EM 0.0.7E7F3 (patch level 7, fix level 3) may exchange bones and saves with SLASH'EM 0.0.7E7F2 (patch level 7, fix level 2).
Comments about changes Edit
When the DevTeam increments PATCHLEVEL, it leaves a comment in patchlevel.h about the changes in the new release. The DevTeam has provided more information about these changes in the doc/fixes??.? files in the source code archive.
NetHack 3.4.3 Edit
39. /*****************************************************************************/ 40. /* Version 3.4.x */ 41. 42. /* Patch 3, December 7, 2003 43. * Several dozen general bug fixes including at least one fatal bug 44. * Correct several inconsistencies 45. * Handle level completely filled with monsters better 46. * Performance enhancements for win32tty port on Windows 98 and Me 47. * win32gui player selection fixes 48. * X11 player selection fixes, one of which could be fatal 49. * Eliminated a gold-in-shop-container cheat 50. * Include bones file version compatibility info in options file 51. */ 52.
NetHack 3.4.2 Edit
53. /* Patch 2, August 30, 2003 54. * Fix a fatal bug that caused a crash when applying figurine, candle, or 55. * bell that gets used up 56. * Fix a fatal bug that triggered a panic when your secondary weapon was 57. * cursed during bones file creation 58. * Several dozen general bug fixes 59. * Fixed some Gnome compilation problems on Redhat 7.2 and 8.0 60. * Fixed a problem in the util Makefile 61. * Use random() by default under linux instead of lrand48() 62. * win32 tty adjustments and support for loading alternative key handlers 63. */ 64.
NetHack 3.4.1 Edit
65. /* Patch 1, February 22, 2003 66. * Fix a few fatal errors including one for reentering shops, one 67. * involving land mines and boulders/statues, one for delayed 68. * polymorph, and one from a chest trap exploding ball and chain 69. * Fix a buffer overflow that could lead to security problems 70. * Hundreds of general bug fixes 71. * Several message and other glitches corrected 72. * Travel command adjustments and ability to disable travel command 73. * message recall window extensions (by Christian Cooper) 74. * win32: some interface improvements 75. * unix: improved tile support 76. * gnome: some fixes, and some enhancements by Dylan Alex Simon 77. * winCE: Windows CE port included (by Alex Kompel) 78. */ 79.
NetHack 3.4.0 Edit
80. /* 81. * NetHack 3.4.0, March 20, 2002 82. * 83. * Hundreds of general bug fixes including some for sliming, zapping, conduct, 84. * and several more for riding 85. * Eliminated a few potentially fatal bugs including one for stone-to-flesh, 86. * trouble-fixing during prayer, riding down stairs while punished, 87. * polyd player demon summoning, throwing digging tools into shops, and 88. * a couple from having the vision system enabled at inappropriate times 89. * Corrected some incorrect calculations in final scoring 90. * Enhanced config file processing and alert to duplication of entries 91. * Player selection prompt enhancements for TTY and X11 92. * Objects merge in containers 93. * Wish for "nothing", and genocide "none" to preserve your conduct 94. * Changes to Wizard quest 95. * Added the travel command which works by mouse click or '_' command 96. * Config file BOULDER option to specify the symbol for displaying boulders 97. * Incorporate modified versions of several 3.3.1 patches that have been 98. * in circulation in the NetHack community 99. * New Gnomish Mines levels (courtesy Kelly Bailey) 100. * Mac: command-key shortcuts in the player selection dialog 101. * Amiga: screenmode requester, and several amiga specific bug fixes 102. * Win32 graphical port contributed by Alex Kompel is now included 103. */ 104. 105. /* Version 3.4 */ 106.
NetHack 3.3.1 Edit
107. /*****************************************************************************/ 108. /* Version 3.3.x */ 109. 110. /* Patch 1, August 9, 2000 111. * Many, many general fixes, including a number for riding, twoweapon, 112. * and invisible monsters 113. * A security fix for a couple of potentially exploitable buffer overflows 114. * in previous versions 115. * Redo Ranger quest 116. * Introduction of differentiation between different causes of blindness 117. * Overhaul of warning 118. * Functionality restored to Amiga (courtesy Janne Salmijarvi) and Atari 119. * (courtesy Christian "Marvin" Bressler) ports 120. * Mac: multiple interface fixes 121. * win32: fixed bug that caused messages to stop displaying after escape 122. * tty: use ANSI color (AF) over standard color (Sf) when given the choice 123. * several ports: offer for player selection only choices consistent with 124. * those already made by config file/command line (e.g., only offer roles 125. * that are compatible with specified race) 126. */ 127.
NetHack 3.3.0 Edit
128. /* 129. * NetHack 3.3.0, December 10, 1999 130. * 131. * Implement the differentiation of character class or role from the 132. * character race. 133. * Removal of the Elf class, in preference to the Elf as a race. 134. * Introduction of Dwarves, Elves, Gnomes and Orcs as distinct races in 135. * addition to the Human "norm". 136. * Addition of the Monk and Ranger classes. 137. * Integrate some of the features of several branch versions of the game, 138. * notably NetHack--, NHplus, SLASH, and Slash'em. 139. * Adopt "the wizard patch" spellcasting system. 140. * Support for the Qt widget set. 141. * Y2K fix: use 4 digit year values for the dates in the score file 142. * updated COPYRIGHT_BANNER_A to reflect year of release. 143. * Dozens of other bug fixes, and minor improvements. 144. */ 145. 146. /* Version 3.3 */ 147.
NetHack 3.2.3 Edit
148. /*****************************************************************************/ 149. /* Version 3.2.x */ 150. 151. /* Patch 3, December 10, 1999 152. * Released simultaneously with 3.3.0 for the benefit of 153. * ports and platforms that were unable to get working 154. * versions of 3.3.0 ready prior to the year 2000. It 155. * consisted of just a few bug fixes and offered no new 156. * functionality changes over 3.2.2. 157. * 158. * Y2K fix: use 4 digit year values for the dates in the score file 159. * updated COPYRIGHT_BANNER_A to reflect year of release 160. * Fatal Mac bug removed 161. * DOS Makefile problem removed 162. * several bugs that could potentially trigger crashes removed 163. */ 164.
NetHack 3.2.2 Edit
165. /* Patch 2, December 10, 1996 166. * fix the `recover' utility 167. * fix priest/minion name overflow which could cause Astral Plane crashes 168. * avoid crash when hit by own thrown boomerang 169. * " " " worn blindfold pushed off by applying cursed towel 170. * handle returning live Wizard correctly in deep dungeon levels 171. * don't occasionally display unseen areas of new levels during level change 172. * other minor display fixes 173. * fix several minor reason for death inconsistencies and shop bugs 174. * high dexterity doesn't guarantee that thrown eggs & potions will hit 175. * 176. * Selected platform- or configuration-specific changes: 177. * Mac: update `mrecover' 178. * MSDOS: don't switch into tiles mode when resuming play on rogue level 179. * tty: support object class characters for 'I' command in menu mode 180. * Unix: work around several <curses.h> compilation problems 181. * X11: as tty above, plus implement tty-style count handling in menus; 182. * better window placement support for old window managers 183. */ 184.
NetHack 3.2.1 Edit
185. /* Patch 1, May 28, 1996 186. * eliminate `#qualifications'; fix weapon proficiency handling for missiles 187. * keep Medusa from continuing to move after she's been killed by reflection 188. * of her own gaze (fixes relmon panic) 189. * make monsters a little smarter; assorted eating and chatting changes 190. * fix object amnesia for spellbooks; fix Nazgul's sleep gas attack 191. * fix bullwhip usage for case of having recently been in a trap 192. * egg hatching fixes, oil potion fixes, magic marker fixes 193. * support object class chars as selection accelerators for some menus 194. * stricter parsing of run-time options at startup time 195. * interactive setting of options via menu (courtesy Per Liboriussen) 196. * 197. * Selected platform- or configuration-specific changes: 198. * Amiga: fix panic for tiles display in Gnomish mines 199. * BeOS: preliminary support for new BeBox platform; initially tty only 200. * DLB: avoid excessive fseek calls (major performance hit for MSDOS) 201. * HPUX: workaround for gcc-2.6.3 bug adversely affecting monster generation 202. * Mac: avoid MW 68K struct copy optimization bug which caused crashes; 203. * fix dragging of scrollbar; boost partitions to 2MB minimum 204. * MSDOS: wasn't safe to enter endgame for MFLOPPY configuration; 205. * fix re-entry into game after "!" (shell escape) + chdir + EXIT; 206. * F3/F4/F5 display interface swapping improvements; 207. * add support for preloading all tiles in protected mode environment 208. * TERMINFO: colors were wrong for some systems, such as Linux 209. * X11: display help files properly 210. */ 211.
NetHack 3.2.0 Edit
212. /* 213. * NetHack 3.2.0, April 11, 1996 214. * enhancements to the windowing systems including "tiles" or icons to 215. * visually represent monsters and objects (courtesy Warwick Allison) 216. * window based menu system introduced for inventory and selection 217. * moving light sources besides the player 218. * improved #untrap (courtesy Helge Hafting) 219. * spellcasting logic changes to balance spellcasting towards magic-using 220. * classes (courtesy Stephen White) 221. * many, many bug fixes and abuse eliminations 222. */ 223. 224. /* Version 3.2 */ 225.
NetHack 3.1.3 Edit
226. /*****************************************************************************/ 227. /* Version 3.1.x */ 228. 229. /* 230. * Patch 3, July 12, 1993 231. * further revise Mac windowing and extend to Think C (courtesy 232. * Barton House) 233. * fix confusing black/gray/white display on some MSDOS hardware 234. * remove fatal bugs dealing with horns of plenty and VMS bones levels, 235. * as well as more minor ones 236. */ 237.
NetHack 3.1.2 Edit
238. /* 239. * Patch 2, June 1, 1993 240. * add tty windowing to Mac and Amiga ports and revise native windowing 241. * allow direct screen I/O for MS-DOS versions instead of going through 242. * termcap routines (courtesy Michael Allison and Kevin Smolkowski) 243. * changes for NEC PC-9800 and various termcap.zip fixes by Yamamoto Keizo 244. * SYSV 386 music driver ported to 386BSD (courtesy Andrew Chernov) and 245. * SCO UNIX (courtesy Andreas Arens) 246. * enhanced pickup and disclosure options 247. * removed fatal bugs dealing with cursed bags of holding, renaming 248. * shopkeepers, objects falling through trapdoors on deep levels, 249. * and kicking embedded objects loose, and many more minor ones 250. */ 251.
NetHack 3.1.1 Edit
252. /* 253. * Patch 1, February 25, 1993 254. * add Windows NT console port (courtesy Michael Allison) 255. * polishing of Amiga, Mac, and X11 windowing 256. * fixing many small bugs, including the infamous 3.0 nurse relmon bug 257. */ 258.
NetHack 3.1.0 Edit
259. /* 260. * NetHack 3.1.0, January 25, 1993 261. * many, many changes and bugfixes -- some of the highlights include: 262. * display rewrite using line-of-sight vision 263. * general window interface, with the ability to use multiple interfaces 264. * in the same executable 265. * intelligent monsters 266. * enhanced dungeon mythology 267. * branching dungeons with more special levels, quest dungeons, and 268. * multi-level endgame 269. * more artifacts and more uses for artifacts 270. * generalization to multiple shops with damage repair 271. * X11 interface 272. * ability to recover crashed games 273. * full rewrite of Macintosh port 274. * Amiga splitter 275. * directory rearrangement (dat, doc, sys, win, util) 276. */ 277. 278. /* Version 3.1 */ 279.
NetHack 3.0.10 Edit
280. /*****************************************************************************/ 281. /* Version 3.0 */ 282. 283. /* 284. * Patch 10, February 5, 1991 285. * extend overlay manager to multiple files for easier binary distribution 286. * allow for more system and compiler variance 287. * remove more small insects 288. */ 289.
NetHack 3.0.9 Edit
290. /* 291. * Patch 9, June 26, 1990 292. * clear up some confusing documentation 293. * smooth some more rough edges in various ports 294. * and fix a couple more bugs 295. */ 296.
NetHack 3.0.8 Edit
297. /* 298. * Patch 8, June 3, 1990 299. * further debug and refine Macintosh port 300. * refine the overlay manager, rearrange the OVLx breakdown for better 301. * efficiency, rename the overlay macros, and split off the overlay 302. * instructions to Install.ovl 303. * introduce NEARDATA for better Amiga efficiency 304. * support for more VMS versions (courtesy Joshua Delahunty and Pat Rankin) 305. * more const fixes 306. * better support for common graphics (DEC VT and IBM) 307. * and a number of simple fixes and consistency extensions 308. */ 309.
NetHack 3.0.7 Edit
310. /* 311. * Patch 7, February 19, 1990 312. * refine overlay support to handle portions of .c files through OVLx 313. * (courtesy above plus Kevin Smolkowski) 314. * update and extend Amiga port and documentation (courtesy Richard Addison, 315. * Jochen Erwied, Mark Gooderum, Ken Lorber, Greg Olson, Mike Passaretti, 316. * and Gregg Wonderly) 317. * refine and extend Macintosh port and documentation (courtesy Johnny Lee, 318. * Kevin Sitze, Michael Sokolov, Andy Swanson, Jon Watte, and Tom West) 319. * refine VMS documentation 320. * continuing ANSIfication, this time of const usage 321. * teach '/' about differences within monster classes 322. * smarter eating code (yet again), death messages, and treatment of 323. * non-animal monsters, monster unconsciousness, and naming 324. * extended version command to give compilation options 325. * and the usual bug fixes and hole plugs 326. */ 327.
NetHack 3.0.6 Edit
328. /* 329. * Patch 6, November 19, 1989 330. * add overlay support for MS-DOS (courtesy Pierre Martineau, Stephen 331. * Spackman, and Norm Meluch) 332. * refine Macintosh port 333. * different door states show as different symbols (courtesy Ari Huttunen) 334. * smarter drawbridges (courtesy Kevin Darcy) 335. * add CLIPPING and split INFERNO off HARD 336. * further refine eating code wrt picking up and resumption 337. * make first few levels easier, by adding :x monsters and increasing initial 338. * attribute points and hitting probability 339. * teach '/' about configurable symbols 340. */ 341.
NetHack 3.0.5 Edit
342. /* 343. * Patch 5, October 15, 1989 344. * add support for Macintosh OS (courtesy Johnny Lee) 345. * fix annoying dependency loop via new color.h file 346. * allow interruption while eating -- general handling of partially eaten food 347. * smarter treatment of iron balls (courtesy Kevin Darcy) 348. * a handful of other bug fixes 349. */ 350.
NetHack 3.0.4 Edit
351. /* 352. * Patch 4, September 27, 1989 353. * add support for VMS (courtesy David Gentzel) 354. * move monster-on-floor references into functions and implement the new 355. * lookup structure for both objects and monsters 356. * extend the definitions of objects and monsters to provide "living color" 357. * in the dungeon, instead of a single monster color 358. * ifdef varargs usage to satisfy ANSI compilers 359. * standardize on the color 'gray' 360. * assorted bug fixes 361. */ 362.
NetHack 3.0.3 Edit
363. /* 364. * Patch 3, September 6, 1989 365. * add war hammers and revise object prices 366. * extend prototypes to ANSI compilers in addition to the previous MSDOS ones 367. * move object-on-floor references into functions in preparation for planned 368. * data structures to allow faster access and better colors 369. * fix some more bugs, and extend the portability of things added in earlier 370. * patches 371. */ 372.
NetHack 3.0.2 Edit
373. /* 374. * Patch 2, August 16, 1989 375. * add support for OS/2 (courtesy Timo Hakulinen) 376. * add a better makefile for MicroSoft C (courtesy Paul Gyugyi) 377. * more accomodation of compilers and preprocessors 378. * add better screen-size sensing 379. * expand color use for PCs and introduce it for SVR3 UNIX machines 380. * extend '/' to multiple identifications 381. * allow meta key to be used to invoke extended commands 382. * fix various minor bugs, and do further code cleaning 383. */ 384.
NetHack 3.0.1 Edit
385. /* 386. * Patch 1, July 31, 1989 387. * add support for Atari TOS (courtesy Eric Smith) and Andrew File System 388. * (courtesy Ralf Brown) 389. * include the uuencoded version of termcap.arc for the MSDOS versions that 390. * was included with 2.2 and 2.3 391. * make a number of simple changes to accommodate various compilers 392. * fix a handful of bugs, and do some code cleaning elsewhere 393. * add more instructions for new environments and things commonly done wrong 394. */ 395.
NetHack 3.0.0 Edit
396. /* 397. * NetHack 3.0 baseline release, July, 1989 398. */ 399. 400. /* Version 3.0 */ 401. 402. /*****************************************************************************/ 403. 404. /*patchlevel.h*/