Path: uunet!news.tek.com!saab!billr From: billr@saab.CNA.TEK.COM (Bill Randle) Newsgroups: comp.sources.games Subject: v18i034: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch3a/18 Date: 20 Jul 1993 22:24:42 GMT Organization: Tektronix, Inc, Redmond, OR, USA Lines: 1787 Approved: billr@saab.CNA.TEK.COM Message-ID: <22hrba$9m2@ying.cna.tek.com> NNTP-Posting-Host: saab.cna.tek.com Xref: uunet comp.sources.games:1834 Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller) Posting-number: Volume 18, Issue 34 Archive-name: nethack31/patch3a Patch-To: nethack31: Volume 16, Issue 1-116 Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11 [Here's patch 3 to nethack3.1 in a series of 18 shar files. There are both new files, replacement files and patch files. Run the 'patchit3.sh' script after unpacking everything to apply the patches. You may then want to go in and cleanup things by removing the .orig files. -br] [From the development team:] [[Mac windowing was further revised, and the Macintosh code was ported to Think C by Barton House. Amiga windowing was also touched up. The MSDOS black/gray/white intensities were changed again to avoid confusing displays on some PC hardware. New video options were added to allow configuration around any other oddities. Bugs were fixed. In particular, an elusive bug dealing with horns of plenty was finally found, along with a couple VMS-specific ones such as fetching some bones files. A number of messages were revised and updated as well. Bones files and saved NetHack 3.1.2 games will not work with NetHack 3.1.3. Delete them, to avoid problems.]] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'MANIFEST_P3' <<'END_OF_FILE' X File Name Archive # Description X----------------------------------------------------------- X MANIFEST_P3 1 This shipping list X UPDATE3 3 X dat 1 X dat/quest.txt1 8 X dat/quest.txt2 9 X include 1 X include/unixconf.h 6 X patches03a 5 X patches03b 3 X patches03c 2 X patches03d 1 X patches03e 4 X patches03f.uu1 10 X patches03f.uu2 11 X patches03g 16 X patches03h 6 X patchit3.sh 7 X sys 1 X sys/amiga 1 X sys/amiga/amifont8.uu 5 X sys/mac 1 X sys/mac/DCproj.hqx 12 X sys/mac/Install.thk 8 X sys/mac/LCproj.hqx 14 X sys/mac/MDproj.hqx 9 X sys/mac/NHproj.hqx1 12 X sys/mac/NHproj.hqx2 13 X sys/mac/NHrsrc.hqx 17 X sys/mac/NetHack.r 6 X sys/mac/macmenu.c 15 X sys/msdos 1 X sys/msdos/MakeGCC.src 7 X sys/msdos/msdos.hlp 4 X sys/share 1 X sys/share/NOTE 2 X sys/share/dgn_comp.h 7 X sys/share/dgn_yacc.c 15 X sys/share/lev_comp.h 3 X sys/share/lev_yacc.c1 7 X sys/share/lev_yacc.c2 18 X sys/unix 1 X sys/unix/snd86unx.shr 17 END_OF_FILE if test 1416 -ne `wc -c <'MANIFEST_P3'`; then echo shar: \"'MANIFEST_P3'\" unpacked with wrong size! fi # end of 'MANIFEST_P3' if test ! -d 'dat' ; then echo shar: Creating directory \"'dat'\" mkdir 'dat' fi if test ! -d 'include' ; then echo shar: Creating directory \"'include'\" mkdir 'include' fi if test -f 'patches03d' -a "${1}" != "-c" ; then echo shar: Renaming existing file \"'patches03d'\" to \"'patches03d.orig'\" mv -f 'patches03d' 'patches03d.orig' fi echo shar: Extracting \"'patches03d'\" \(53022 characters\) sed "s/^X//" >'patches03d' <<'END_OF_FILE' X*** /tmp/da20422 Mon Jul 12 17:29:30 1993 X--- ./Files Fri Jul 9 15:44:08 1993 X*************** X*** 94,101 **** X X sys/mac: X (files for Macintosh versions) X! Install.mpw MacHelp NHDeflts NHmake.hqx NHrez.hqx X! NHrsrc.hqx NHsound.hqx News dprintf.c hack.h X maccurs.c macerrs.c macfile.c macmain.c macmenu.c X macsnd.c mactopl.c mactty.c macunix.c macwin.c X mgetline.c mhdump.c mmodal.c mrecover.c mrecover.hqx X--- 94,102 ---- X X sys/mac: X (files for Macintosh versions) X! DCproj.hqx Install.mpw Install.thk MacHelp LCproj.hqx X! MDproj.hqx NHDeflts NHmake.hqx NHproj.hqx NHrsrc.hqx X! NHsound.hqx NetHack.r News dprintf.c hack.h X maccurs.c macerrs.c macfile.c macmain.c macmenu.c X macsnd.c mactopl.c mactty.c macunix.c macwin.c X mgetline.c mhdump.c mmodal.c mrecover.c mrecover.hqx X*************** X*** 105,112 **** X (files for MSDOS version) X Install.dos MakeGCC.src MakeGCC.utl MakeMSC.src MakeMSC.utl X Makefile.dat exesmurf.c exesmurf.doc maintovl.doc msdos.c X! ovlmgr.asm ovlmgr.doc ovlmgr.uu setup.bat trampoli.c X! video.c X (files for running MSDOS binary under Windows) X nhico.uu nhpif.uu X X--- 106,113 ---- X (files for MSDOS version) X Install.dos MakeGCC.src MakeGCC.utl MakeMSC.src MakeMSC.utl X Makefile.dat exesmurf.c exesmurf.doc maintovl.doc msdos.c X! msdos.hlp ovlmgr.asm ovlmgr.doc ovlmgr.uu setup.bat X! trampoli.c video.c X (files for running MSDOS binary under Windows) X nhico.uu nhpif.uu X X*** /tmp/da20638 Mon Jul 12 17:30:24 1993 X--- dat/history Mon Jul 12 13:14:37 1993 X*************** X*** 52,64 **** X Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen X Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC. X X! Jon W{tte, with help from Ross Brown, Mike Engber, David Hairston, Michael X! Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke, Andy Swanson, and X! especially from Hao-yang Wang, developed NetHack 3.1 for the Macintosh. X X Timo Hakulinen ported NetHack 3.1 to OS/2. Eric Smith ported NetHack 3.1 X to the Atari. Pat Rankin, with help from Joshua Delahunty, is responsible X! for the VMS version of NetHack 3.1. X X Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11. X X--- 52,66 ---- X Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen X Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC. X X! Jon W{tte and Hao-yang Wang, with help from Ross Brown, Mike Engber, David X! Hairston, Michael Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke, X! and Andy Swanson developed NetHack 3.1 for the Macintosh, porting it for X! MPW. Building on their development, Barton House added a Think C port. X X Timo Hakulinen ported NetHack 3.1 to OS/2. Eric Smith ported NetHack 3.1 X to the Atari. Pat Rankin, with help from Joshua Delahunty, is responsible X! for the VMS version of NetHack 3.1. Michael Allison ported NetHack 3.1 to X! Windows NT. X X Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11. X X*************** X*** 70,94 **** X in this, the list of Dungeoneers: X X Richard Addison Eric Hendrickson Mike Passaretti X! Tom Almy Bruce Holloway Pat Rankin X! Ken Arromdee Richard P. Hughey Eric S. Raymond X! Eric Backus Ari Huttunen Frederick Roeber X! John S. Bien John Kallen John Rupley X! Ralf Brown Del Lamb Carl Schelin X! Ross Brown Greg Laskin Olaf Seibert X! David Cohrs Johnny Lee Kevin Sitze X! Jean-Christophe Collet Tim Lennan Eric R. Smith X! Steve Creps Merlyn LeRoy Kevin Smolkowski X! Kevin Darcy Steve Linhart Michael Sokolov X! Matthew Day Ken Lorber Stephen Spackman X! Joshua Delahunty Dean Luick Andy Swanson X! Bill Dyer Benson I. Margulies Kevin Sweet X! Mike Engber Pierre Martineau Scott R. Turner X! Jochen Erwied Roland McGrath Steve VanDevender X! Mike Gallop Norm Meluch Janet Walz X! David Gentzel Rob Menke Hao-yang Wang X! Mark Gooderum Deron Meranda Jon W{tte X! David Hairston Bruce Mewborne Tom West X! Timo Hakulinen Izchak Miller Paul Winner X! Michael Hamel Gil Neiger Gregg Wonderly X Jonathan Handler Greg Olson X--- 72,97 ---- X in this, the list of Dungeoneers: X X Richard Addison Eric Hendrickson Mike Passaretti X! Michael Allison Bruce Holloway Pat Rankin X! Tom Almy Barton House Eric S. Raymond X! Ken Arromdee Richard P. Hughey Frederick Roeber X! Eric Backus Ari Huttunen John Rupley X! John S. Bien John Kallen Carl Schelin X! Ralf Brown Del Lamb Olaf Seibert X! Ross Brown Greg Laskin Kevin Sitze X! David Cohrs Johnny Lee Eric R. Smith X! Jean-Christophe Collet Tim Lennan Kevin Smolkowski X! Steve Creps Merlyn LeRoy Michael Sokolov X! Kevin Darcy Steve Linhart Stephen Spackman X! Matthew Day Ken Lorber Andy Swanson X! Joshua Delahunty Dean Luick Kevin Sweet X! Bill Dyer Benson I. Margulies Scott R. Turner X! Mike Engber Pierre Martineau Steve VanDevender X! Jochen Erwied Roland McGrath Janet Walz X! Mike Gallop Norm Meluch Hao-yang Wang X! David Gentzel Rob Menke Jon W{tte X! Mark Gooderum Deron Meranda Tom West X! David Hairston Bruce Mewborne Paul Winner X! Timo Hakulinen Izchak Miller Gregg Wonderly X! Michael Hamel Gil Neiger X Jonathan Handler Greg Olson X*** /tmp/da20711 Mon Jul 12 17:30:48 1993 X--- dat/rumors.fal Fri Jul 2 13:19:26 1993 X*************** X*** 256,262 **** X They say that minotaurs get lost outside of the mazes. X They say that most trolls are born again. X They say that naming your cat Garfield will make you more attractive. X- They say that no one has ever walked to hell. X They say that no one knows everything about everything in the dungeon. X They say that no one plays NetHack just for the fun of it. X They say that no one really subscribes to rec.games.hack. X--- 256,261 ---- X*************** X*** 275,281 **** X They say that queen bees get that way by eating royal jelly. X They say that reading a scare monster scroll is the same as saying Elbereth. X They say that real hackers always are controlled. X- They say that real hackers never burn in hell. X They say that real hackers never sleep. X They say that shopkeepers never carry more than 20 gold pieces, at night. X They say that shopkeepers never sell blessed potions of invisibility. X--- 274,279 ---- X*************** X*** 326,332 **** X They say that you should always store your tools in the cellar. X They say that you should be careful while climbing the ladder to success. X They say that you should call your armor `rustproof'. X- They say that you should keep your hands in your pockets around the gypsies. X They say that you should name your dog Spuds to have a cool pet. X They say that you should name your weapon after your first monster kill. X They say that you should never introduce a rope golem to a succubus. X--- 324,329 ---- X*************** X*** 351,357 **** X When in a maze follow the right wall and you will never get lost. X When you have a key, you don't have to wait for the guard. X Why are you wasting time reading fortunes? X- Why bother casting fireballs in hell? X Wish for a master key and open the Magic Memory Vault! X Wizard expects every monster to do its duty. X Wow! You could've had a potion of fruit juice! X--- 348,353 ---- X*** /tmp/da20719 Mon Jul 12 17:30:50 1993 X--- dat/rumors.tru Wed Jul 7 16:01:08 1993 X*************** X*** 6,12 **** X A nymph knows how to unlock chains. X A potion of blindness lets you see invisible things. X A priest can get the gods to listen easily. X- A priest can go to hell just like the rest of us. X A priestess and a virgin you might be, but that unicorn won't care. X A ring of conflict is a bad thing if there is a nurse in the room. X A short sword is not as good as a long sword. X--- 6,11 ---- X*************** X*** 209,215 **** X They say that grid bugs only exist in a strictly Cartesian sense. X They say that hackers often feel jumpy about eating nymphs. X They say that having polymorph control won't shock you. X- They say that hell hath no fury like Medusa scorned. X They say that if it's hard getting your food down another bite could kill. X They say that if you don't wear glasses why bother with carrots? X They say that if you notice a loose board beneath you, don't step on it. X--- 208,213 ---- X*************** X*** 276,283 **** X They say that the local shopkeeper frowns upon the rude tourist. X They say that the only door to the vampire's tower is on its lowest level. X They say that the only good djinni is a grateful djinni. X- They say that the road through hell is a one-way street. X- They say that the road to hell begins with Medusa. X They say that the thing about genocide is that it works both ways. X They say that the unicorn horn rule is if it ain't broke then don't fix it. X They say that the view from a fog cloud is really very moving. X--- 274,279 ---- X*************** X*** 319,330 **** X Vampires hate garlic. X Vault guards never disturb their Lords. X Visitors are requested not to apply genocide to shopkeepers. X- Warning: people who eat red dragons can go to hell! X Watch out, the Wizard might come back. X Water traps have no effect on dragons. X What is a cockatrice going to eat when it gets hungry? X- Where do you think all those demons come from? From hell, of course. X- Where do you think hell is located? It must be deep, deep down. X Why do you suppose they call them MAGIC markers? X Why would anybody in his sane mind engrave "Elbereth"? X Wishing too much may bring you too little. X--- 315,323 ---- X*** /tmp/da21642 Mon Jul 12 17:37:04 1993 X--- sys/amiga/Install.ami Mon Jul 12 14:14:17 1993 X*************** X*** 2,11 **** X Using, Compiling, and Installing Amiga NetHack 3.1 X (or Everything You Never Wanted to Know Before NetHacking) X X! Last Revision: 12 May 1993 for NetHack 3.1.2 X X X! 0. Pre-intro for NetHack 3.1.2. X New for 3.1.2: X Addition of asksavedisk option to eliminate need for savedir;n syntax X Scrolling message window if screen is tall enough. X--- 2,16 ---- X Using, Compiling, and Installing Amiga NetHack 3.1 X (or Everything You Never Wanted to Know Before NetHacking) X X! Last Revision: 18 June 1993 for NetHack 3.1.3 X X X! 0. Pre-intro for NetHack 3.1.3. X! New for 3.1.3: X! Updated this file: new binary release organization and missing options. X! Fixed PAL screen calculation error. X! Improved font characters for walls, floor, wands, doors, and swallowed. X! Support for individual icons per character type. X New for 3.1.2: X Addition of asksavedisk option to eliminate need for savedir;n syntax X Scrolling message window if screen is tall enough. X*************** X*** 51,57 **** X you are playing the Amiga version. Finally, if you are having trouble X compiling NetHack, you may use the same address, or, for compiler X specific problems, send mail to: X! Greg Olson (golson@sundown.sun.com) for Manx X Richard Addison (addison@pollux.usc.edu) for SAS/C. X We do not currently have a contact for the DICE port. X X--- 56,62 ---- X you are playing the Amiga version. Finally, if you are having trouble X compiling NetHack, you may use the same address, or, for compiler X specific problems, send mail to: X! Greg Olson (golson@sundown.sun.com) for Manx. X Richard Addison (addison@pollux.usc.edu) for SAS/C. X We do not currently have a contact for the DICE port. X X*************** X*** 103,108 **** X--- 108,118 ---- X * SCORE - Display the record of scores. Options as X available on the CLI command line after a -s flag. X X+ * FONT=name.font:size - Set font used for text on screens which are X+ tall enough (>250 lines). X+ X+ * PENS=col0/col1/.../col7 - Set palette colors. X+ X Note that the NetHack.cnf file is read first, then the ToolTypes. This X means that the options specified in the NetHack.cnf act as defaults X which can be overridden by an individual's personal icon's ToolTypes. X*************** X*** 115,121 **** X NetHack.cnf file or on an OPTIONS line: flush and silent. When enabled, X flush discards all characters in the queue except the first, which limits X typeahead accidents. The default setting is noflush. Silent turns off X! the (new for 3.1.1) audio output. X X Usually, most of the confusing options will be set in the NetHack.cnf X file once when the game is installed and can be ignored after that. X--- 125,131 ---- X NetHack.cnf file or on an OPTIONS line: flush and silent. When enabled, X flush discards all characters in the queue except the first, which limits X typeahead accidents. The default setting is noflush. Silent turns off X! the audio output. X X Usually, most of the confusing options will be set in the NetHack.cnf X file once when the game is installed and can be ignored after that. X*************** X*** 138,156 **** X each archive in the appropriate directory will put the files in the X places they belong (note that the archives may have been split X for distribution). If you are installing from source, most of this X! work will be done by the time the build is finished. X X IF YOU ALREADY HAVE A PREVIOUS VERSION INSTALLED YOU MUST DELETE THE X OLD SAVE AND BONES FILES - THEY WILL NOT WORK! This includes save X! and bones files from NetHack 3.1.0. X X Will NetHack fit on your machine? X NetHack 3.1 is large. NetHack 3.1 is very large. You will need: X! > Amiga 500, 1000, 2000, 2500, or 3000. The A600, A1200, and A4000 X should work, but have not been tested. X! > WorkBench 1.3 or 2.04. WorkBench 1.2 will NOT work; we will NOT X! be fixing that. WorkBench 2.1 and 3.0 should work but have not been X! tested. X > At least 2 meg of RAM. NetHack will NOT run in 1 meg. X > Mass storage: NetHack will run on one floppy - but it won't be nice. X Two floppies are almost enough. A hard drive with over 3 meg of X--- 148,166 ---- X each archive in the appropriate directory will put the files in the X places they belong (note that the archives may have been split X for distribution). If you are installing from source, most of this X! work will be done by the time the build is finished. See below for X! complete installation instructions. X X IF YOU ALREADY HAVE A PREVIOUS VERSION INSTALLED YOU MUST DELETE THE X OLD SAVE AND BONES FILES - THEY WILL NOT WORK! This includes save X! and bones files from NetHack 3.1.0 and 3.1.1. X X Will NetHack fit on your machine? X NetHack 3.1 is large. NetHack 3.1 is very large. You will need: X! > Amiga 500, 1000, 2000, 2500, 3000, or 4000. The A600, and A1200 X should work, but have not been tested. X! > WorkBench 1.3 or 2.04 or later. WorkBench 1.2 or 2.02 will NOT work; X! we will NOT be fixing that. X > At least 2 meg of RAM. NetHack will NOT run in 1 meg. X > Mass storage: NetHack will run on one floppy - but it won't be nice. X Two floppies are almost enough. A hard drive with over 3 meg of X*************** X*** 158,239 **** X X Find space for the files X Floppy installation: X! Format four disks named: X NetHack X HackExe X NHsave X NHlevels X Hard Disk installation: X cd to wherever you want to install NetHack X make a new directory to be the main NetHack directory: X! makedir NetHack X! and the subdirectories: X! makedir NetHack/save X! makedir NetHack/levels X! In s:User-Sequence (under 2.0 or later) or s:Startup (under 1.3), X! assign NetHack: to the NetHack directory you created above. X! assign HackExe: to the same directory. X Install the files X! Unpack the archives in the directories or onto the disks (you can X! tell what to unpack where by the file names) by cd'ing to HackExe: X! and unpacking archive 1 and then to NetHack: and unpacking archive 2. X Use the table in the next section to see where things should end up. X Be sure that the file 8 ends up in NetHack:hack/8 and that the sounds X files end up in the NetHack:sounds directory. X X Configuration X Using your favorite text editor, edit NetHack:NetHack.cnf to match X your system. Check HackExe:NetHack.dir and be sure that the paths X are correct (note that the C or D beginning the line is required and X is not part of the file path). The HackWB program uses two standard X! Amiga programs that must be installed in their standard places: c:copy, X! c:rename. X X III.B. File Location Table X! NetHack: X A-filla.lev A-fillb.lev A-goal.lev A-locate.lev X A-start.lev air.lev asmodeus.lev astral.lev X B-filla.lev B-fillb.lev B-goal.lev B-locate.lev X B-start.lev baalz.lev bigroom.lev C-filla.lev X C-fillb.lev C-goal.lev C-locate.lev C-start.lev X! castle.lev cmdhelp data default.icon X! dungeon E-filla.lev E-fillb.lev E-goal.lev X E-locate.lev E-start.lev earth.lev fakewiz1.lev X! fakewiz2.lev fire.lev Guidebook Guidebook.info X! H-filla.lev H-fillb.lev H-goal.lev H-locate.lev X! H-start.lev hack.font HackWB HackWB.info X! HackCli help hh history X! juiblex.lev K-filla.lev K-fillb.lev K-goal.lev X! K-locate.lev K-start.lev knox.lev license X! logfile ManPage ManPage.info medusa-1.lev X! medusa-2.lev minefill.lev minetown.lev mine_end.lev X! NetHack.cnf NetHack.c01 NetHack.d00 news X! NewGame.info opthelp options oracle.lev X! oracles orcus.lev P-filla.lev P-fillb.lev X! P-goal.lev P-locate.lev P-start.lev perm X! quest.dat R-filla.lev R-fillb.lev R-goal.lev X! R-locate.lev R-start.lev ReadMe ReadMe.info X! record recover rumors S-filla.lev X! S-fillb.lev S-goal.lev S-locate.lev S-start.lev X! sanctum.lev T-filla.lev T-fillb.lev T-goal.lev X! T-locate.lev T-start.lev tower1.lev tower2.lev X! tower3.lev V-filla.lev V-fillb.lev V-goal.lev X! V-locate.lev V-start.lev valley.lev W-filla.lev X! W-fillb.lev W-goal.lev W-locate.lev W-start.lev X! water.lev wizard1.lev wizard2.lev wizard3.lev X! wizhelp X X! NetHack:hack X! 8 X! X! NetHack:sounds X! Bell Bugle Drum_Of_Earthquake X! Fire_Horn Frost_Horn Leather_Drum X! Magic_Flute Magic_Harp Tooled_Horn X! Wooden_Flute Wooden_Harp X! X! HackExe: X! NetHack.dir X NetHack.c00 X X X--- 168,284 ---- X X Find space for the files X Floppy installation: X! Format five disks named: X NetHack X HackExe X+ HackExe2 X NHsave X NHlevels X Hard Disk installation: X cd to wherever you want to install NetHack X make a new directory to be the main NetHack directory: X! makedir NH313 X! makedir NH313/NetHack X! makedir NH313/HackExe X! makedir NH313/HackExe2 X! In S:User-Startup (under 2.0 or later) or S:Startup-Sequence X! (under 1.3): X! assign NetHack: to the NetHack directory you created above. X! assign HackExe: to the HackExe directory. X! assign HackExe2: to the HackExe2 directory. X! X Install the files X! Unpack the archives in the directories or onto the disks. Cd to X! the appropriate places then unpack the files: X! Archive 1 (the one this ReadMe came in), should be unpacked into X! NetHack:. If you are installing to hard disk, cd to the NH313 directory X! before unpacking. X! lz x NH31P3-1.lzh X! Archive 2 unpacks in two sections to two different places. If you are X! installing to hard disk, cd to the NH313 directory before unpacking; if X! you are installing to floppies, unpack each section to a different disk. X! lz x NH31P3-2.lzh HackExe/#? X! lz x NH31P3-2.lzh HackExe2/#? X! X Use the table in the next section to see where things should end up. X Be sure that the file 8 ends up in NetHack:hack/8 and that the sounds X files end up in the NetHack:sounds directory. X X+ Floppy fixup X+ If you are installing to floppies the files on each disk are probably one X+ level too far down (for example NetHack:NetHack.cnf is probably X+ NetHack:NetHack/NetHack.cnf). This is how to fix that: X+ Put the following lines into the file ram:fixit (be sure to delete the X+ blanks from the start of the lines or this will NOT work!) X+ .key x X+ rename / X+ X+ For each of the disks NH313, NetHack, and HackExe, cd into the "inner" X+ directory (for example "cd NetHack:NetHack") and execute these commands: X+ list >ram:x lformat="execute ram:fixit %s" #? X+ execute ram:x X+ X Configuration X Using your favorite text editor, edit NetHack:NetHack.cnf to match X your system. Check HackExe:NetHack.dir and be sure that the paths X are correct (note that the C or D beginning the line is required and X is not part of the file path). The HackWB program uses two standard X! Amiga programs that must be installed in their standard places: c:copy X! and c:rename. The icons for the documentation invoke SYS:Utilities/More X! and will probably need to be updated for your installation. X X+ Create the save file directory (makedir NetHack:save) and the levels file X+ directory (makedir NetHack:levels) - if you use floppies than these X+ directories will each be a different floppy. X+ X+ Create the score file (echo to NetHack:record) and, if desired, the log X+ file (echo to NetHack:logfile). X+ X III.B. File Location Table X! NetHack: X! amii.hlp cmdhelp data default.icon X! dungeon Guidebook Guidebook.info hack.font X! hack/8 HackCli HackCli.info HackWB X! HackWB.hlp HackWB.info help hh X! history license ManPage ManPage.info X! NetHack.cnf NewGame.info opthelp options X! oracles quest.dat ReadMe ReadMe.info X! Recover Recover.info RecoverMan RecoverMan.info X! rumors X! sounds/Bell sounds/Bugle X! sounds/Drum_Of_Earthquake sounds/Fire_Horn X! sounds/Frost_Horn sounds/Leather_Drum X! sounds/Magic_Flute sounds/Magic_Harp X! sounds/Tooled_Horn sounds/Wooden_Flute X! sounds/Wooden_Harp X! wizhelp X! X! HackExe: X A-filla.lev A-fillb.lev A-goal.lev A-locate.lev X A-start.lev air.lev asmodeus.lev astral.lev X B-filla.lev B-fillb.lev B-goal.lev B-locate.lev X B-start.lev baalz.lev bigroom.lev C-filla.lev X C-fillb.lev C-goal.lev C-locate.lev C-start.lev X! castle.lev E-filla.lev E-fillb.lev E-goal.lev X E-locate.lev E-start.lev earth.lev fakewiz1.lev X! fakewiz2.lev fire.lev H-filla.lev H-fillb.lev X! H-goal.lev H-locate.lev H-start.lev juiblex.lev X! K-filla.lev K-fillb.lev K-goal.lev K-locate.lev X! K-start.lev knox.lev medusa-1.lev medusa-2.lev X! minefill.lev minetown.lev mine_end.lev NetHack.c01 X! NetHack.d00 NetHack.dir oracle.lev orcus.lev X! P-filla.lev P-fillb.lev P-goal.lev P-locate.lev X! P-start.lev R-filla.lev R-fillb.lev R-goal.lev X! R-locate.lev R-start.lev S-filla.lev S-fillb.lev X! S-goal.lev S-locate.lev S-start.lev sanctum.lev X! T-filla.lev T-fillb.lev T-goal.lev T-locate.lev X! T-start.lev tower1.lev tower2.lev tower3.lev X! V-filla.lev V-fillb.lev V-goal.lev V-locate.lev X! V-start.lev valley.lev W-filla.lev W-fillb.lev X! W-goal.lev W-locate.lev W-start.lev water.lev X! wizard1.lev wizard2.lev wizard3.lev X X! HackExe2: X NetHack.c00 X X X*************** X*** 249,255 **** X IV.B. Basic Compilation X NetHack can be built with SAS/C version 6.2, Manx/Aztec version 5, X or the registered version of DICE. The "official" compiler for NetHack 3.1 X! patchlevel 1 is SAS/C 6.2 - we have dropped support for SAS/C 5.x. X X IV.B.1. Introduction to Compiling NetHack X Before doing any compilation, read the README files distributed X--- 294,300 ---- X IV.B. Basic Compilation X NetHack can be built with SAS/C version 6.2, Manx/Aztec version 5, X or the registered version of DICE. The "official" compiler for NetHack 3.1 X! patchlevel 3 is SAS/C 6.2 - we have dropped support for SAS/C 5.x. X X IV.B.1. Introduction to Compiling NetHack X Before doing any compilation, read the README files distributed X*************** X*** 354,363 **** X be the correct contents for a floppy based system. X X IV.C.2 TTY Interface X! There is a basic tty interface available under 3.1.2. This is a X preliminary version and it will change in the future. Expect bugs. X (Due to the instability of the interface it will not be in the X! official binaries for 3.1.2). The TTY mode is designed for use in X a BBS setting - it is specifically not recommended for use on the X console. The TTY interface is not currently compatible with split X binaries - invoke NetHack directly as NetHack. In addition, you should X--- 399,408 ---- X be the correct contents for a floppy based system. X X IV.C.2 TTY Interface X! There is a basic tty interface available since 3.1.2. This is a X preliminary version and it will change in the future. Expect bugs. X (Due to the instability of the interface it will not be in the X! official binaries for 3.1.3). The TTY mode is designed for use in X a BBS setting - it is specifically not recommended for use on the X console. The TTY interface is not currently compatible with split X binaries - invoke NetHack directly as NetHack. In addition, you should X*** /tmp/da21650 Mon Jul 12 17:37:07 1993 X--- sys/amiga/Makefile.ami Fri Jul 2 13:13:17 1993 X*************** X*** 358,364 **** X copy $(NHGSTFILE) to $(GSTFILE) X X Amiga:ami.lnk: Amiga:Makefile.ami X! list to Amiga:ami.lnk OBJ:\#?.o QUICK NOHEAD X X obj: $(HOBJ) X obja: $(AMIGAOBJ) X--- 358,364 ---- X copy $(NHGSTFILE) to $(GSTFILE) X X Amiga:ami.lnk: Amiga:Makefile.ami X! list to Amiga:ami.lnk lformat="OBJ:%s" OBJ:\#?.o QUICK NOHEAD X X obj: $(HOBJ) X obja: $(AMIGAOBJ) X*** /tmp/da21666 Mon Jul 12 17:37:11 1993 X--- sys/amiga/NetHack.cnf Mon Jul 12 13:32:09 1993 X*************** X*** 88,94 **** X X # An example using the hack.font graphics character set: X GRAPHICS = 032 192 193 194 195 196 197 198 216 214 \ X! 215 213 046 193 192 198 198 046 229 035 \ X 060 062 060 062 094 034 095 092 035 123 \ X 125 042 125 042 042 035 035 046 035 125 \ X 241 240 242 243 042 033 123 125 064 038 \ X--- 88,94 ---- X X # An example using the hack.font graphics character set: X GRAPHICS = 032 192 193 194 195 196 197 198 216 214 \ X! 215 213 217 145 146 147 148 217 218 229 \ X 060 062 060 062 094 034 095 092 035 123 \ X 125 042 125 042 042 035 035 046 035 125 \ X 241 240 242 243 042 033 123 125 064 038 \ X*** /tmp/da21684 Mon Jul 12 17:37:15 1993 X--- sys/amiga/amidos.c Tue Jul 6 15:10:57 1993 X*************** X*** 194,202 **** X eraseall(path, files) X const char *path, *files; X { X! char buf[FILENAME]; X! short i; X! BPTR fileLock, dirLock, dirLock2; X struct FileInfoBlock *fibp; X int chklen; X #ifdef BETA X--- 194,200 ---- X eraseall(path, files) X const char *path, *files; X { X! BPTR dirLock, dirLock2; X struct FileInfoBlock *fibp; X int chklen; X #ifdef BETA X*************** X*** 422,428 **** X static BPTR OrgDirLock = NO_LOCK; X X chdir(dir) X! char *dir; X { X if (dir == orgdir) { X /* We want to go back to where we came from. */ X--- 420,426 ---- X static BPTR OrgDirLock = NO_LOCK; X X chdir(dir) X! const char *dir; X { X if (dir == orgdir) { X /* We want to go back to where we came from. */ X*** /tmp/da21725 Mon Jul 12 17:37:27 1993 X--- sys/amiga/amii.hlp Mon Jul 12 14:14:29 1993 X*************** X*** 1,4 **** X! Amiga specific help file for NetHack 3.1.2 X X The Amiga port of NetHack supports a number of additional commands X and facilities specific to the Amiga. Listed below are the things X--- 1,4 ---- X! Amiga specific help file for NetHack 3.1.3 X X The Amiga port of NetHack supports a number of additional commands X and facilities specific to the Amiga. Listed below are the things X*************** X*** 12,17 **** X--- 12,28 ---- X these settings of the pens to allow X the game to be resumed with the X same palette at a later date. X+ X+ Separate Icon types for saved games: X+ Each character class can have a X+ separate icon. The first letter X+ of the character class is used X+ for deriving the name. e.g. a X+ Wizard saved game would use X+ Nethack:w.icon if it is present. X+ The NetHack:default.icon is used X+ if the associated character class X+ icon is not present. X X Amiga-specific run-time option: X flush throw away keyboard type-ahead X*** /tmp/da21749 Mon Jul 12 17:37:33 1993 X--- sys/amiga/amirip.c Tue Jul 6 15:11:01 1993 X*************** X*** 45,50 **** X--- 45,51 ---- X static void strand ( int x , int y , int dir ); X static void tomb_text ( char *p ); X void draw_moon(int phase); X+ void FDECL( amii_outrip, ( winid, int ) ); X X extern char *killed_by_prefix[]; X struct Window *ripwin; X*** /tmp/da21773 Mon Jul 12 17:37:39 1993 X--- sys/amiga/amiwbench.c Tue Jul 6 15:11:05 1993 X*************** X*** 405,411 **** X ami_default_icon( defname ) X char *defname; X { X- long lock; X static char name[ 300 ]; X X strcpy( name, "NetHack:x.icon" ); X--- 405,410 ---- X*** /tmp/da21901 Mon Jul 12 17:38:11 1993 X--- sys/amiga/wb.c Tue Jul 6 15:01:45 1993 X*************** X*** 2124,2133 **** X X fp = fopen( StrConf, "r" ); X if( !fp ) X fp = fopen( "NetHack:NetHack.cnf", "r" ); X if( !fp ) X { X! errmsg( FLASH, "Can't open nethack.cnf" ); X break; X } X X--- 2124,2136 ---- X X fp = fopen( StrConf, "r" ); X if( !fp ) X+ { X fp = fopen( "NetHack:NetHack.cnf", "r" ); X+ strcpy( StrConf, "NetHack:NetHack.cnf" ); X+ } X if( !fp ) X { X! errmsg( FLASH, "Can't open config file" ); X break; X } X X*************** X*** 2147,2153 **** X nfp = fopen( nname, "w" ); X if( !nfp ) X { X! errmsg( FLASH, "Can't open new_nethack.cnf for write" ); X fclose( fp ); X break; X } X--- 2150,2156 ---- X nfp = fopen( nname, "w" ); X if( !nfp ) X { X! errmsg( FLASH, "Can't open new config file for write" ); X fclose( fp ); X break; X } X*************** X*** 2212,2217 **** X--- 2215,2221 ---- X FILE *fp, *nfp; X char buf[ 300 ]; X char path=0,option=0,dir=0,pens=0,levels=0,save=0; X+ char oname[ 300 ], nname[ 300 ]; X X setoneopt( PATH_IDX, StrPath ); X PutOptions( curopts ); X*************** X*** 2220,2235 **** X setoneopt( LEVELS_IDX, StrLevels ); X setoneopt( SAVE_IDX, StrSave ); X X! fp = fopen( "nethack.cnf", "r" ); X if( !fp ) X { X errmsg( FLASH, "Can't open nethack.cnf" ); X return; X } X! nfp = fopen( "new_nethack.cnf", "w" ); X if( !nfp ) X { X! errmsg( FLASH, "Can't open new_nethack.cnf for write" ); X fclose( fp ); X return; X } X--- 2224,2253 ---- X setoneopt( LEVELS_IDX, StrLevels ); X setoneopt( SAVE_IDX, StrSave ); X X! strcpy( oname, dirname( StrConf ) ); X! if( oname[ strlen(oname)-1 ] != ':' ) X! { X! sprintf( nname, "%s/new_nethack.cnf", oname ); X! strcat( oname, "/" ); X! strcat( oname, "old_nethack.cnf" ); X! } X! else X! { X! sprintf( nname, "%snew_nethack.cnf", oname ); X! strcat( oname, "old_nethack.cnf" ); X! } X! X! fp = fopen( StrConf, "r" ); X if( !fp ) X { X errmsg( FLASH, "Can't open nethack.cnf" ); X return; X } X! nfp = fopen( nname, "w" ); X if( !nfp ) X { X! sprintf( buf, "Can't open %s for write", nname ); X! errmsg( FLASH, buf ); X fclose( fp ); X return; X } X*************** X*** 2288,2296 **** X /* Close up and rename files */ X fclose( fp ); X fclose( nfp ); X! unlink( "old_nethack.cnf" ); X! rename( "nethack.cnf", "old_nethack.cnf" ); X! rename( "new_nethack.cnf", "nethack.cnf" ); X } X X void do_gadgetup( imsg ) X--- 2306,2340 ---- X /* Close up and rename files */ X fclose( fp ); X fclose( nfp ); X! unlink( oname ); X! if( filecopy( StrConf, oname ) == 0 ) X! filecopy( nname, StrConf ); X! } X! X! filecopy( from, to ) X! char *from, *to; X! { X! char *buf; X! int i = 0; X! X! buf = malloc( strlen(to) + strlen(from) + 20 ); X! if( buf ) X! { X! sprintf( buf, "c:copy \"%s\" \"%s\" clone", from, to ); X! X! /* Check SysBase instead? Shouldn't matter */ X! if( IntuitionBase->LibNode.lib_Version >= 37 ) X! i = System( buf, NULL ); X! else X! Execute( buf, NULL, NULL ); X! free( buf ); X! } X! else X! { X! errmsg( FLASH, "Failed to allocate memory for copy command" ); X! return( -1 ); X! } X! return( i ); X } X X void do_gadgetup( imsg ) X*** /tmp/da21909 Mon Jul 12 17:38:15 1993 X--- sys/amiga/wbcli.c Thu Jul 1 15:00:51 1993 X*************** X*** 218,224 **** X run_game(gptr); X X /* wait for game to end */ X! WaitEOG(gptr); X FreeGITEM(gptr); X #endif /* TESTCMDLINE */ X /* ask about another? */ X--- 218,227 ---- X run_game(gptr); X X /* wait for game to end */ X! if(gptr->wbs) X! WaitEOG(gptr); X! /* else load failed */ X! X FreeGITEM(gptr); X #endif /* TESTCMDLINE */ X /* ask about another? */ X*************** X*** 958,963 **** X--- 961,967 ---- X { X vprintf( str, vp ); X va_end( vp ); X+ printf("\n"); X return; X } X X*** /tmp/da21933 Mon Jul 12 17:38:22 1993 X--- sys/amiga/wbprotos.h Fri Jul 2 13:12:55 1993 X*************** X*** 105,109 **** X--- 105,110 ---- X void UpdateCnfFile( void ); X char *basename( char * ); X void flushIDCMP( struct MsgPort *); X+ filecopy( char *, char * ); X X #undef P X*** /tmp/da21965 Mon Jul 12 17:38:33 1993 X--- sys/amiga/winami.c Thu Jul 8 14:19:59 1993 X*************** X*** 159,164 **** X--- 159,166 ---- X X struct Rectangle lastinvent, lastmsg; X X+ static int FDECL( put_ext_cmd, ( char *, int, struct amii_WinDesc *, int ) ); X+ X #ifdef SHAREDLIB X WinamiBASE *WinamiBase; X X*************** X*** 445,450 **** X--- 447,453 ---- X { SA_PubName, (ULONG)"NetHack" }, X { SA_Overscan, OSCAN_TEXT }, X { SA_Pens, (ULONG)scrnpens }, X+ { SA_DisplayID, 0 }, X { TAG_DONE, 0 }, X }; X #endif X*************** X*** 770,786 **** X if( WIN_MESSAGE == WIN_ERR || ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL ) X panic(winpanicstr, WIN_MESSAGE, "get_ext_cmd"); X amii_clear_nhwindow( NHW_MESSAGE ); X! pline("# "); X colx = 3; X w = cw->win; X X if( bigscreen ) X { X! bottom = w->Height - w->BorderTop - w->BorderBottom; X! bottom /= w->RPort->TxHeight; X! if( bottom > 0 ) X! --bottom; X } X while((c = WindowGetchar()) != EOF) X { X amii_curs( WIN_MESSAGE, colx, bottom ); X--- 773,795 ---- X if( WIN_MESSAGE == WIN_ERR || ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL ) X panic(winpanicstr, WIN_MESSAGE, "get_ext_cmd"); X amii_clear_nhwindow( NHW_MESSAGE ); X! if( scrollmsg ) X! { X! pline("#"); X! amii_putstr( WIN_MESSAGE, -1, " " ); X! } X! else X! { X! pline("# "); X! } X colx = 3; X w = cw->win; X X if( bigscreen ) X { X! bottom = amii_msgborder( w ); X } X+ X while((c = WindowGetchar()) != EOF) X { X amii_curs( WIN_MESSAGE, colx, bottom ); X*************** X*** 789,794 **** X--- 798,813 ---- X int win, i, sel; X char buf[ 100 ]; X X+ if(did_comp){ X+ while(bufp!=obufp){ X+ bufp--; X+ amii_curs(WIN_MESSAGE, --colx, bottom); X+ Text(w->RPort,spaces,1); X+ amii_curs(WIN_MESSAGE,colx,bottom); X+ did_comp=0; X+ } X+ } X+ X win = amii_create_nhwindow( NHW_MENU ); X amii_start_menu( win ); X X*************** X*** 808,813 **** X--- 827,833 ---- X { X *obufp = '\33'; X obufp[ 1 ] = 0; X+ return; X } X else X { X*************** X*** 818,831 **** X } X X /* copy in the text */ X! amii_clear_nhwindow( WIN_MESSAGE ); X! strcpy( obufp, extcmdlist[ i ].ef_txt ); X! colx = 0; X! pline( "# " ); X! pline( obufp ); X! bufp = obufp + 2; X } X- return; X } X else if(c == '\033') X { X--- 838,853 ---- X } X X /* copy in the text */ X! if( extcmdlist[ i ].ef_txt != NULL ) X! { X! amii_clear_nhwindow( WIN_MESSAGE ); X! strcpy( obufp = bufp, extcmdlist[ i ].ef_txt ); X! (void) put_ext_cmd( obufp, colx, cw, bottom ); X! return; X! } X! else X! DisplayBeep( NULL ); X } X } X else if(c == '\033') X { X*************** X*** 884,900 **** X { X Strcpy(obufp, extcmdlist[com_index].ef_txt); X /* finish printing our string */ X! Text( w->RPort, bufp, strlen( bufp ) ); X! amii_curs( WIN_MESSAGE, colx += strlen( bufp ), bottom); X bufp = obufp; /* reset it */ X if(strlen(obufp) < BUFSZ-1 && strlen(obufp) < COLNO) X bufp += strlen(obufp); X! did_comp=1; X } X else X { X! Text( w->RPort, bufp, strlen( bufp ) ); X! amii_curs( WIN_MESSAGE, colx += strlen( bufp ), bottom); X if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO) X bufp++; X } X--- 906,920 ---- X { X Strcpy(obufp, extcmdlist[com_index].ef_txt); X /* finish printing our string */ X! colx = put_ext_cmd( obufp, colx, cw, bottom ); X bufp = obufp; /* reset it */ X if(strlen(obufp) < BUFSZ-1 && strlen(obufp) < COLNO) X bufp += strlen(obufp); X! did_comp=1; X } X else X { X! colx = put_ext_cmd( obufp, colx, cw, bottom ); X if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO) X bufp++; X } X*************** X*** 910,915 **** X--- 930,985 ---- X } X *bufp = 0; X return; X+ } X+ X+ static int X+ put_ext_cmd( obufp, colx, cw, bottom ) X+ char *obufp; X+ int colx, bottom; X+ struct amii_WinDesc *cw; X+ { X+ struct Window *w = cw->win; X+ char *t; X+ X+ t = malloc( strlen( obufp ) + 7 ); X+ if( t != NULL ) X+ { X+ if( scrollmsg ) X+ { X+ sprintf( t, "xxx%s", obufp ); X+ t[0] = 1; X+ t[1] = -1; X+ t[2] = ' '; X+ amii_curs( WIN_MESSAGE, 0, bottom); X+ SetAPen( w->RPort, C_WHITE ); X+ Text(w->RPort, "># ", 3 ); X+ SetAPen( w->RPort, C_RED ); X+ Text(w->RPort, t+3, strlen( t ) - 3 ); X+ } X+ else X+ { X+ sprintf( t, "# %s", obufp ); X+ amii_curs( WIN_MESSAGE, 0, bottom); X+ SetAPen( w->RPort, C_WHITE ); X+ Text(w->RPort, t, strlen( t ) ); X+ } X+ if( scrollmsg ) X+ SetAPen( w->RPort, C_WHITE ); X+ if( cw->data[ cw->maxrow - 1 ] ) X+ free( cw->data[ cw->maxrow - 1 ] ); X+ cw->data[ cw->maxrow - 1 ] = t; X+ } X+ else X+ { X+ amii_curs( WIN_MESSAGE, 0, bottom); X+ SetAPen( w->RPort, C_WHITE ); X+ Text(w->RPort, "# ", 2 ); X+ SetAPen( w->RPort, C_RED ); X+ Text(w->RPort, obufp, strlen( obufp ) ); X+ SetAPen( w->RPort, C_WHITE ); X+ } X+ amii_curs( WIN_MESSAGE, colx = strlen( obufp ) + 3 + ( scrollmsg != 0 ), bottom); X+ return( colx ); X } X #endif /* COM_COMPL */ X X*** /tmp/da21981 Mon Jul 12 17:38:38 1993 X--- sys/amiga/windefs.h Tue Jul 6 15:45:52 1993 X*************** X*** 67,72 **** X--- 67,76 ---- X #include "amiga:lib/libmacs.h" X #endif X X+ #ifdef INTUI_NEW_LOOK X+ #include X+ #endif X+ X /* cw->data[x] contains 2 characters worth of special information. These X * characters are stored at the offsets as described here. X */ X*** /tmp/da21997 Mon Jul 12 17:38:42 1993 X--- sys/amiga/winfuncs.c Tue Jul 6 15:45:58 1993 X*************** X*** 8,15 **** X #include "incl:patchlevel.h" X X int topl_addspace=1; X X- X void X amii_destroy_nhwindow(win) /* just hide */ X register winid win; X--- 8,15 ---- X #include "incl:patchlevel.h" X X int topl_addspace=1; X+ extern struct TagItem scrntags[]; X X void X amii_destroy_nhwindow(win) /* just hide */ X register winid win; X*************** X*** 224,229 **** X--- 224,237 ---- X nw->TopEdge = 1; X nw->Height = HackScreen->WBorTop + 1 + X ((txheight+1)*(1+(scrollmsg != 0))) + 1 + HackScreen->WBorBottom; X+ if( ( HackScreen->Height - 1 - X+ ( ( TextsFont->tf_YSize + X+ HackScreen->WBorTop + 1 + HackScreen->WBorBottom ) * 2 ) - X+ ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 ) - maph < X+ TextsFont->tf_YSize + 3 ) X+ { X+ scrollmsg = 0; X+ } X if( scrollmsg ) X { X nw->FirstGadget = &MsgScroll; X*************** X*** 234,243 **** X /* Text space in status window */ X ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 - X maph; X! nw->Flags |= WINDOWSIZING; X! #ifdef VIEWWINDOW X! nw->Flags |= WINDOWDRAG; X! #endif X } X #ifdef INTUI_NEW_LOOK X if( IntuitionBase->LibNode.lib_Version >= 37 ) X--- 242,248 ---- X /* Text space in status window */ X ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 - X maph; X! nw->Flags |= WINDOWSIZING|WINDOWDRAG; X } X #ifdef INTUI_NEW_LOOK X if( IntuitionBase->LibNode.lib_Version >= 37 ) X*************** X*** 248,254 **** X /* Just allow height adjustments */ X nw->MinWidth = w->Width; X nw->MinHeight = HackScreen->WBorTop + X! HackScreen->WBorBottom + ((w->RPort->TxHeight+1)*2) + 3; X } X X nw->IDCMPFlags |= MENUPICK; X--- 253,259 ---- X /* Just allow height adjustments */ X nw->MinWidth = w->Width; X nw->MinHeight = HackScreen->WBorTop + X! HackScreen->WBorBottom + ((TextsFont->tf_YSize+1)*2) + 3; X } X X nw->IDCMPFlags |= MENUPICK; X*************** X*** 294,300 **** X { X char buf[ 100 ]; X X! sprintf( buf, "nw is l: %d, t: %d, w: %d, h: %d", X nw->LeftEdge, nw->TopEdge, X nw->Width, nw->Height ); X raw_print( buf ); X--- 299,306 ---- X { X char buf[ 100 ]; X X! sprintf( buf, "nw(%d) is l: %d, t: %d, w: %d, h: %d", X! type, X nw->LeftEdge, nw->TopEdge, X nw->Width, nw->Height ); X raw_print( buf ); X*************** X*** 520,525 **** X--- 526,533 ---- X void X amii_init_nhwindows() X { X+ int forcenobig = 0; X+ X if (HackScreen) X panic( "init_nhwindow() called twice", 0 ); X X*************** X*** 572,590 **** X NewHackScreen.ViewModes |= LACE; X bigscreen = 1; X } X! else if( GfxBase->NormalDisplayRows >= 240 ) X { X bigscreen = 1; X } X } X else if( bigscreen == -1 ) X bigscreen = 0; X else if( bigscreen ) X { X /* If bigscreen requested and we don't have enough rows in X * noninterlaced mode, switch to interlaced... X */ X! if( GfxBase->NormalDisplayRows < 240 ) X { X amiIDisplay->ypix *= 2; X NewHackScreen.ViewModes |= LACE; X--- 580,601 ---- X NewHackScreen.ViewModes |= LACE; X bigscreen = 1; X } X! else if( GfxBase->NormalDisplayRows >= 270 ) X { X bigscreen = 1; X } X } X else if( bigscreen == -1 ) X+ { X bigscreen = 0; X+ forcenobig = 1; X+ } X else if( bigscreen ) X { X /* If bigscreen requested and we don't have enough rows in X * noninterlaced mode, switch to interlaced... X */ X! if( GfxBase->NormalDisplayRows < 270 ) X { X amiIDisplay->ypix *= 2; X NewHackScreen.ViewModes |= LACE; X*************** X*** 679,688 **** X } X NewHackScreen.BlockPen = C_CYAN; X #ifdef INTUI_NEW_LOOK X! if( IntuitionBase->LibNode.lib_Version >= 37 && bigscreen ) X { X NewHackScreen.Width = STDSCREENWIDTH; X NewHackScreen.Height = STDSCREENHEIGHT; X } X #endif X X--- 690,734 ---- X } X NewHackScreen.BlockPen = C_CYAN; X #ifdef INTUI_NEW_LOOK X! if( IntuitionBase->LibNode.lib_Version >= 37 ) X { X+ int i; X+ long modeid; X+ struct Screen *wbscr; X+ X+ for( i = 0; scrntags[i].ti_Tag != SA_DisplayID && X+ scrntags[i].ti_Tag != TAG_DONE; ++i ) X+ { X+ continue; X+ } X+ X NewHackScreen.Width = STDSCREENWIDTH; X NewHackScreen.Height = STDSCREENHEIGHT; X+ X+ if( forcenobig == 0 ) X+ { X+ wbscr = LockPubScreen( "Workbench" ); X+ if( wbscr ) X+ modeid = GetVPModeID( &wbscr->ViewPort ); X+ X+ if( ( wbscr != NULL ) && ( modeid != INVALID_ID ) ) X+ { X+ if( wbscr->ViewPort.Modes & LACE ) X+ NewHackScreen.ViewModes |= LACE; X+ UnlockPubScreen( NULL, wbscr ); X+ if( scrntags[i].ti_Tag == SA_DisplayID ) X+ { X+ scrntags[i].ti_Data = (ULONG)modeid; X+ } X+ } X+ } X+ else X+ { X+ if( scrntags[i].ti_Tag == SA_DisplayID ) X+ { X+ scrntags[i].ti_Tag = TAG_IGNORE; X+ } X+ } X } X #endif X X*************** X*** 1082,1088 **** X TextsFont13.ta_Name = nname; X TextsFont13.ta_YSize = size; X X! /* No alternate text font allowed for 640x250 or smaller */ X if( !HackScreen || !bigscreen ) X return; X X--- 1128,1134 ---- X TextsFont13.ta_Name = nname; X TextsFont13.ta_YSize = size; X X! /* No alternate text font allowed for 640x269 or smaller */ X if( !HackScreen || !bigscreen ) X return; X X*** /tmp/da22021 Mon Jul 12 17:38:49 1993 X--- sys/amiga/winproto.h Thu Jul 8 14:20:03 1993 X*************** X*** 12,17 **** X--- 12,20 ---- X void amii_getlin ( const char *prompt , char *bufp ); X void getlind ( const char *prompt , char *bufp , const char *dflt ); X char *amii_get_color_string( void ); X+ int filecopy( char *from, char *to ); X+ char *basename( char *str ); X+ char *dirname( char *str ); X X /* winstr.c */ X void amii_putstr ( winid window , int attr , const char *str ); X*************** X*** 23,28 **** X--- 26,32 ---- X void amii_remember_topl ( void ); X int amii_doprev_message ( void ); X void flushIDCMP( struct MsgPort * ); X+ int amii_msgborder( struct Window * ); X X /* winkey.c */ X int amii_nh_poskey ( int *x , int *y , int *mod ); X*** /tmp/da22029 Mon Jul 12 17:38:51 1993 X--- sys/amiga/winreq.c Tue Jul 6 15:01:54 1993 X*************** X*** 162,169 **** X else if( gd->GadgetID == GADCOLSAVE ) X { X FILE *fp, *nfp; X! char buf[ 300 ]; X! int once = 0; X X fp = fopen( configfile, "r" ); X if( !fp ) X--- 162,169 ---- X else if( gd->GadgetID == GADCOLSAVE ) X { X FILE *fp, *nfp; X! char buf[ 300 ], nname[ 300 ], oname[ 300 ]; X! int once = 0; X X fp = fopen( configfile, "r" ); X if( !fp ) X*************** X*** 172,178 **** X break; X } X X! nfp = fopen( "New_NetHack.cnf", "w" ); X if( !nfp ) X { X pline( "can't write to New_NetHack.cnf" ); X--- 172,191 ---- X break; X } X X! strcpy( oname, dirname( configfile ) ); X! if( oname[ strlen(oname)-1 ] != ':' ) X! { X! sprintf( nname, "%s/New_NetHack.cnf", oname ); X! strcat( oname, "/" ); X! strcat( oname, "Old_NetHack.cnf" ); X! } X! else X! { X! sprintf( nname, "%sNew_NetHack.cnf", oname ); X! strcat( oname, "Old_NetHack.cnf" ); X! } X! X! nfp = fopen( nname, "w" ); X if( !nfp ) X { X pline( "can't write to New_NetHack.cnf" ); X*************** X*** 213,221 **** X } X fclose( fp ); X fclose( nfp ); X! unlink( "Old_NetHack.cnf" ); X! rename( configfile, "Old_NetHack.cnf" ); X! rename( "New_NetHack.cnf", configfile ); X done = 1; X okay = 1; X } X--- 226,234 ---- X } X fclose( fp ); X fclose( nfp ); X! unlink( oname ); X! if( filecopy( configfile, oname ) == 0 ) X! filecopy( nname, configfile ); X done = 1; X okay = 1; X } X*************** X*** 279,284 **** X--- 292,360 ---- X X LoadRGB4( &scrn->ViewPort, flags.amii_curmap, 1L << DEPTH ); X CloseWindow( nw ); X+ } X+ X+ char *dirname( str ) X+ char *str; X+ { X+ char *t, c; X+ static char dir[ 300 ]; X+ X+ t = strrchr( str, '/' ); X+ if( !t ) X+ t = strrchr( str, ':' ); X+ if( !t ) X+ t = str; X+ else X+ { X+ c = *t; X+ *t = 0; X+ strcpy( dir, str ); X+ *t = c; X+ } X+ return( dir ); X+ } X+ X+ char *basename( str ) X+ char *str; X+ { X+ char *t; X+ X+ t = strrchr( str, '/' ); X+ if( !t ) X+ t = strrchr( str, ':' ); X+ if( !t ) X+ t = str; X+ else X+ ++t; X+ return( t ); X+ } X+ X+ filecopy( from, to ) X+ char *from, *to; X+ { X+ char *buf; X+ int i = 0; X+ X+ buf = malloc( strlen(to) + strlen(from) + 20 ); X+ if( buf ) X+ { X+ sprintf( buf, "c:copy \"%s\" \"%s\" clone", from, to ); X+ X+ /* Check SysBase instead? Shouldn't matter */ X+ #ifdef INTUI_NEW_LOOK X+ if( IntuitionBase->LibNode.lib_Version >= 37 ) X+ i = System( buf, NULL ); X+ else X+ #endif X+ Execute( buf, NULL, NULL ); X+ free( buf ); X+ } X+ else X+ { X+ return( -1 ); X+ } X+ return( i ); X } X X /* The colornames, and the default values for the pens */ X*** /tmp/da22037 Mon Jul 12 17:38:54 1993 X--- sys/amiga/winstr.c Thu Jul 8 14:20:07 1993 X*************** X*** 16,22 **** X { X struct Window *w; X register struct amii_WinDesc *cw; X! register char *ob; X int i, j, n0, bottom, totalvis, wheight; X X #ifdef VIEWWINDOW X--- 16,22 ---- X { X struct Window *w; X register struct amii_WinDesc *cw; X! char *ob; X int i, j, n0, bottom, totalvis, wheight; X X #ifdef VIEWWINDOW X*************** X*** 72,81 **** X #define MORE_FUDGE 10 /* 8 for --more--, 1 for preceeding sp, 1 for */ X /* putstr pad */ X case NHW_MESSAGE: X! bottom = w->Height - w->BorderTop - w->BorderBottom - 2; X! bottom /= w->RPort->TxHeight; X! if( bottom > 0 ) X! --bottom; X X wheight = ( w->Height - w->BorderTop - X w->BorderBottom - 3 ) / w->RPort->TxHeight; X--- 72,79 ---- X #define MORE_FUDGE 10 /* 8 for --more--, 1 for preceeding sp, 1 for */ X /* putstr pad */ X case NHW_MESSAGE: X! /* Calculate the bottom line */ X! bottom = amii_msgborder( w ); X X wheight = ( w->Height - w->BorderTop - X w->BorderBottom - 3 ) / w->RPort->TxHeight; X*************** X*** 267,272 **** X--- 265,284 ---- X } X } X X+ int X+ amii_msgborder( w ) X+ struct Window *w; X+ { X+ register int bottom; X+ X+ /* There is a one pixel border at the borders, so subtract two */ X+ bottom = w->Height - w->BorderTop - w->BorderBottom - 2; X+ bottom /= w->RPort->TxHeight; X+ if( bottom > 0 ) X+ --bottom; X+ return( bottom ); X+ } X+ X void X outmore( cw ) X register struct amii_WinDesc *cw; X*************** X*** 278,293 **** X if( scrollmsg ) X { X int bottom; X! bottom = w->Height - w->BorderTop - w->BorderBottom; X! bottom /= w->RPort->TxHeight; X! if( bottom > 0 ) X! --bottom; X ScrollRaster( w->RPort, 0, w->RPort->TxHeight, X w->BorderLeft-1, w->BorderTop+1, X w->Width - w->BorderRight-1, X w->Height - w->BorderBottom - 1 ); X amii_curs( WIN_MESSAGE, 1, bottom ); X! Text( w->RPort, "--more--", 9 ); X } X else X Text( w->RPort, " --more--", 9 ); X--- 290,304 ---- X if( scrollmsg ) X { X int bottom; X! X! bottom = amii_msgborder( w ); X! X ScrollRaster( w->RPort, 0, w->RPort->TxHeight, X w->BorderLeft-1, w->BorderTop+1, X w->Width - w->BorderRight-1, X w->Height - w->BorderBottom - 1 ); X amii_curs( WIN_MESSAGE, 1, bottom ); X! Text( w->RPort, "--more--", 8 ); X } X else X Text( w->RPort, " --more--", 9 ); END_OF_FILE if test 53022 -ne `wc -c <'patches03d'`; then echo shar: \"'patches03d'\" unpacked with wrong size! fi # end of 'patches03d' if test ! -d 'sys' ; then echo shar: Creating directory \"'sys'\" mkdir 'sys' fi if test ! -d 'sys/amiga' ; then echo shar: Creating directory \"'sys/amiga'\" mkdir 'sys/amiga' fi if test ! -d 'sys/mac' ; then echo shar: Creating directory \"'sys/mac'\" mkdir 'sys/mac' fi if test ! -d 'sys/msdos' ; then echo shar: Creating directory \"'sys/msdos'\" mkdir 'sys/msdos' fi if test ! -d 'sys/share' ; then echo shar: Creating directory \"'sys/share'\" mkdir 'sys/share' fi if test ! -d 'sys/unix' ; then echo shar: Creating directory \"'sys/unix'\" mkdir 'sys/unix' fi echo shar: End of archive 1 \(of 18\). cp /dev/null ark1isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 18 archives. echo "Now execute ./patchit3.sh" rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0