@database "WormsShell.guide" @author "Ben Hutchings " @master "WormsShell.guide.fmt" @node Main "Contents" @font courier.font 15 @{jcenter} @{b}WormsShell@{ub} Version 0.1 @{b}BETA@{ub} by @{"Ben Hutchings" link Addresses} WormsShell provides bug fixes and additional features for the popular game "Worms". @{" Legal " link Legal} @{" Background " link Background} @{" Features " link Features} @{" Requirements " link Require} @{" Installation " link Install} @{" Addresses " link Addresses} @endnode @node Legal "Legal Notices" @smartwrap The WormsShell package consists of the files: Install_WormsShell Install_WormsShell.info Worms WormsShell WormsShell.info WormsShell.guide WormsShell.guide.info (hereafter "the files"). This package is copyright © Ben Hutchings 1996. It may freely be distributed provided (i)   no charge is made for distribution above the costs of duplication, distribution and the media used, (ii)  the files are distributed together, and (iii) none of the files are altered, except, if the distributor so wishes, by converting them into an archived or compressed form from which they can be retrieved unaltered using readily-available free software tools. Software released under these conditions is often known as Freeware. As far as I am aware, the NewIcons images used in the files "Install_WormsShell.info" and "WormsShell.guide.info" are © 1996 The NewIcons Team and may freely be distributed on their own. The NewIcons image used in the file "WormsShell.info" is © 1996 Phil Vedovatti and is used with permission. COPY PROTECTION I am providing the facility to disable Worms' copy-protection routine purely to save time for legitimate users of the game. I do not condone software piracy and I take no responsibility for any action which may be taken against anyone who uses this package to facilitate copyright violations. @endnode @node Background "Background to WormsShell" @smartwrap Worms has been phenonemally popular in all formats it has been released on, but unfortunately it seems that the original Amiga version is the most buggy. This is mainly because it was compiled using Blitz Basic. Blitz Basic produces the slowest, most ridiculously bloated code I have ever seen in my life. Also, it does not support playing samples from Fast memory, which would of course make a lot of difference to Worms, which loads up to about 750K of samples. The HDWORMS executable also seems to be missing a vital trap handler which would allow Worms to exit safely if it runs out of memory. WormsShell aims to fix the above bugs and deficiencies. However, at the moment, I have yet to add any speedups or Fast-memory-playing since these may be quite complex. In addition, WormsShell provides a number of useful options, which make it easier to use some of the special features of Worms. @endnode @node Features "Features of WormsShell" @{b}Bugs fixed@{ub} @{"Problems with CD-ROM drives " link Bug_cdrom} @{"Incompatibility with MUFS " link Bug_locks} @{"Enforcer hits and crashes " link Bug_enfhits} @{"Asks you to insert disks " link Bug_wbcd} @{"Crashes if libraries missing" link Bug_libs} @{"Problems with 68010 CPU " link Bug_68010} @{"Software failure 8000 0020 " link Bug_traph} @{b}Options added@{ub} @{"Start with Sheep Mode on (SHEEPMODE tooltype) " link F_sheep} @{"Use multiple sample sets (SAMPLEDIRn tooltype)" link F_sampdir} @{"Remove copy-protection (DEPROTECT tooltype) " link F_cprot} @{"To-do list" link todo} @endnode @node Bug_cdrom "Worms thinks a CD-ROM drive is a CD³² - duh!" @smartwrap It seems that Andy Davidson (the author of Worms) couldn't be bothered to compile separate versions for CD³² and for ordinary Amigas. The executable on the two versions is the same, as far as I know. If Worms can open "cd.device" it assumes that it is running on a CD³² and consequently accepts input only from a CD³² controller and not from the keyboard. This means that if you have a CD-ROM drive, Worms will appear to have entered Helen Keller mode when you reach the code entry screen and can't type anything! WormsShell removes this check - though later versions may allow for running the CD³² version on an ordinary Amiga. @endnode @node Bug_locks "Andy Davidson thinks 0 is a valid lock type" @smartwrap Every call Worms makes to the DOS function Lock(), apart from those in the Blitz library functions, specifies the lock type as 0 instead of SHARED_LOCK, which it should be. The standard Amiga file system doesn't mind this but, for security, MultiUserFileSystem does. This means that the Lock() call fails and Worms thinks files are not there. WormsShell fixes these calls to use SHARED_LOCK. @endnode @node Bug_enfhits "Worms causes Enforcer hits and crashes" @smartwrap I checked out Worms with the excellent "Enforcer" tool written by Michael Sinz. I found several places in the Worms code where it can read or write invalid memory addresses, sometimes causing crashes: · When Worms starts, it writes "WORM" to address 0. This is just plain @{u}wrong@{uu}. Actually, this isn't just a bug but deliberate bad behaviour. WormsShell removes this code. · Sometimes when a memory allocation fails, Blitz's memory list seems to get confused and it can try to use a null pointer when freeing memory. WormsShell fixes the code used to traverse the list. · Two Blitz functions which Worms uses for timing are bugged: they attempt to pack the three bytes of a CIA clock together in a memory buffer, but instead they use the contents of the buffer (which will always be 0) as the buffer address. WormsShell fixes the functions to use the buffer correctly. Note that these functions are illegal anyway as they read and write the CIAA TOD clock, which is always reserved for the use of the operating systems. @endnode @node Bug_wbcd "Worms uses an unreliable hack to find itself" @smartwrap Instead of following the correct procedure when started from Workbench, which is to find out where it has been run from using its startup message, Worms attempts to copy the current directory of the Workbench. If it is lucky, this will work, but if you do anything with the Workbench while Worms is derunching it won't. WormsShell makes Worms use the correct directory. @endnode @node Bug_libs "Andy Davidson can't be bothered to check whether OpenLibrary() worked" @smartwrap Worms makes many calls to the OpenLibrary() and OldOpenLibrary() OS functions so that it can use various OS functions. In many cases it does not check whether the call succeeded. If the call fails, Worms will crash when it tries to use the library. This is a particular problem with diskfont.library and mathtrans.library, which are stored on disk. WormsShell should make Worms exit cleanly if it can't open a library - not all OpenLibrary/OldOpenLibrary calls are fixed, but those which open the disk-based libraries are. @endnode @node Bug_68010 "Acid Software doesn't believe in the 68010" @smartwrap Blitz appears to check the vector-base register only on a 68020 or better; this could potentially prevent Worms from working if you have a 68010 CPU. WormsShell makes it read the VBR on 68010s too. This fix has not been tested since I don't have a 68010 - I just noticed this problem while trying to understand the disassembled code. @endnode @node Bug_traph "A software company ate my trap handler!" @smartwrap If Worms encounters a fatal error, e.g. it runs out of memory, then it will issue the instruction TRAP #0, which should call an "trap handler" to deal with the problem. However, Worms does not set up such a trap handler, so instead the standard OS trap handler is invoked - which just tells you "Software Failure, Error: 8000 0020". WormsShell installs a trap handler which causes Worms to jump to its exit code if a fatal error occurs. @endnode @node F_sheep "I want exploding sheep! Exploding bananas! I want everything to explode!" @smartwrap Worms has a hidden feature called "Sheep Mode" which you can activate by typing "total wormage" while the title screen is displayed. This gives you lots of sheep, lots of dynamite and one banana bomb at the beginning of each round. If you like to play in this mode all the time, add the tooltype SHEEPMODE to the WormsShell icon and you will no longer have to enter the special code. @endnode @node F_sampdir "I love it when worms talk dirty to me" @smartwrap The Worms manual mentions the possibility of replacing the Worms speech samples. There are several reasonably large sample sets available in the public domain, including "T2: Judgement Day", "Bottom" and "Beavis and Butthead". Normally you would install these by copying the new samples over the samples in the TWENGLISH/FRENCH/GERMAN directory. But this means you can't choose to go back to the old samples without re-installing from the original Worms disks. WormsShell lets you have up to 3 named sample sets which replace the language options you normally see when starting Worms. To install a new sample set, first create a subdirectory for it in the directory you installed Worms, with a name up to 9 letters long. Then copy the new samples into the new directory. Finally add the tooltype SAMPLEDIRn=mydirname to the WormsShell icon, where n = 1 to replace the English option, 2 to replace French, or 3 to replace German, and mydirname is the name of the directory you created. @endnode @node F_cprot "The only people copy-protection frustrates are legal users" @smartwrap If you are fed up with the gloss-black-on-matt-black code booklet, you can remove the code check by adding the tooltype DEPROTECT. When the code entry screen appears, just press Return to continue. Please see the @{"legal" link legal} text for an important notice. @endnode @node ToDo "Things which I'd like to do, but won't be really easy like the others" @smartwrap · Fix the routines which check memory availability and try to recover memory from the system. I've tried to do this but this causes crashes in some configurations. · Add Fast-memory sample playing. (I have 16M Fast memory but I can't run Worms from Workbench due to lack of Chip memory!) · Speed up important routines. (Some calculations are done using very slow floating point maths which could easily be replaced by integer routines over 10× faster.) · Allow free choice of weapon availability at startup. · Fix title screen colours when using SHEEPMODE tooltype. · Allow skipping of language/sample set selection. · Add CD features for CD-ROM users without a CD³² controller. (Can anyone lend me the CD³² version so I can do this?) · Fix the many remaining bugs in Worms and WormsShell which I haven't found yet. (Every program is either trivial or contains at least one bug.) · Show a landscape list when you right-click during landscape generation. · Add a friendly installer for extra custom landscapes and sample sets. · Translate the installer and this guide - and maybe even Worms itself - into other languages. If you would like to do this, please @{"contact me" link Addresses}. @endnode @node Require "What WormsShell requires in order to run" @smartwrap · An original copy of Worms. · A hard drive. (This will not change. If you don't have one, buy one now.) · Slightly more memory than Worms normally requires. · If you @{u}still@{uu} have OS 1.3, WormsShell will require arp.library if you want to run it from a CLI. Actually, it might not run at all because OS 1.3 won't run on a 68040 machine. If it doesn't work, don't ask me to fix it - upgrade. @endnode @node Install "How to install WormsShell" @smartwrap To install WormsShell properly, you should have the official Installer program. If you are lucky, someone will have included an illegal copy on this disk but since I prefer not to get into trouble with whoever owns the Amiga this week, I have not included it in the package as released. Maybe once VIScorp gets its act together, I will be able to get a license to distribute Installer myself. If you can't find Installer anywhere, you will just have to drag the "WormsShell" icon from this package to the drawer you installed Worms in. Otherwise, read on. If you have already installed Worms, you may want to delete your existing installation. My installation script can re-install Worms much more cleanly than the installer supplied with Worms, and won't copy any unnecessary files to your hard disk. In this case, you should answer "No" when you are asked whether Worms is already installed. The installation procedure will let you select which languages to install and set up all the necessary icons for you. It will also let set the initial tooltypes for WormsShell as appropriate. Alternatively, you can install WormsShell in an existing installation of Worms. Just answer "Yes" when you are asked whether Worms is already installed. You will be given the option to delete some files which Worms installs to your hard disk which are only needed used when it boots from a floppy disk. At the end of the WormsShell installation you will be told the procedure which is needed to run WormsShell from the CLI if you have insufficient memory to run it from Workbench. @{b}If you have installed Worms before, you may find that is slightly different from what the original installer told you.@{ub} You should write it down as it will be different for different Amigas and you won't be shown it again. If you run WormsShell from the CLI, it will still read its icon tooltypes. (You can also add to or override these by adding tooltypes to the final command line, if you have either OS 2.0+ or arp.library.) In both cases, you can also choose to install this guide file in the Worms drawer. @endnode @node Addresses "Contact addresses for the author and other people" @{b}Author of WormsShell@{ub} - bug reports, suggestions, money, loans of Worms CD³² snail Ben Hutchings 43 Harrison Close Reigate Surrey RH2 7HS email benjamin.hutchings@worcester.oxford.ac.uk WWW http://users.ox.ac.uk/~worc0223 (for support pages, append /amiga/freeware) IRC wombleII (find me in #amigacafe on EFnet/Undernet) @{b}Team17@{ub} - to complain about the bugs See your manual. @endnode