[Please note, URLs and links are only available in the HTML version of this document] < | 0.Games Tested> < | 0.5.Requirements for MS-DOS version.> < | [0.7.Command Line Switches (external document)> < | 1.Running the Program.> < | 2.Some Known Bugs> < | 3.Thanks & Etc> < | 4.Contacting the Author> < | 5.Look at my Webpage> < | 6.Disclaimer> < | 7.Distribution> < | 8.C Source Code distribution> < | 9.License Agreement: Terms & Conditions of Use.> < INSTRUCTIONS FOR DISINFORMATION> <[Updates to the source code, development information and MS-DOS executable are regularly uploaded to:> _The Disinformation homepage_.] This program will de-compile Z-machine datafiles that can be disassembled with TXD. It works with Inform 6/7 games, but Infocom games are decompiled into very readable Inform source, and the program has no problems with other versions of Inform. (In other words, Inform 5.5, and Inform 4 games, with which DIM has been tested... Please note, Inform 5 games are not decompilable for now, until the MS-DOS TXD has been updated to work properly...). For the moment, it will only de-compile the source code, and rather rudimentarily. However, sometime in the near-distant future, it will also print out all the objects, their arrays, objectloops, attributes, classes and properties, in an Inform syntax. And everything will be compilable. But not yet. _<0.Tested> _ Tested on:  Bureaucracy (the only Infocom Z5 file I have) (Infocom)  Planetfall (a Z3 file) (Infocom)  The Meteor, the Stone and a Long Glass of Sherbet (Inform 6/7)  Bear's Night Out (Inform 6/7)  Primes.dat (very early Inform?)  The Tempest (Inform 6/7)  Zork: The Underground Empire (Inform 6/2)  Time: All Things Come to an End (Inform 5/12)  Heist (Inform 5/12)  Jigsaw (Z8)(Inform 6/1)  Curses Beta 2.930326 (Inform v488)  So Far (Inform 5/12) This list includes Z3, Z5 and Z8 files, and lots of Inform stuff. Basically, if TXD can disassemble it, my program can decompile it. This makes it future-proof, as if, say Z9 games come out (16 megs of memory, 16 million objects etc) and TXD is updated to work with these, then DIM shouldn't have much of a problem. Well, not many anyway. One problem: TXD 7.2 for DOS can't dissassemble Inform 5 games. 7.1 for Win32 will, but the problem is, there isn't a version of 7.2 for Win32, and this is needed as it puts '->' in before results. You'll have to use the old version (assuming you've still got it... I haven't!!). _<0.5.The MS-DOS version requires:> _  Requires 60k of memory (just some big arrays... could be less).  Requires a 8088 or above, MS-DOS 2.0 or above PC.  1 megabyte of disk space recommended. Hard disk or RAM disk also recommended.  Requires TXD and Infodump (Ztools). TXD must be version 7.2.  Save all work first... However, most fatal bugs are now fixed.  Infodump and TXD available from _Here_. Make sure you get the DOS version, 7.2. 7.1 works on Inform 5 games, 7.2 doesn't at the moment. _<1.Running the Program.> _ Okay, the program used to care about Inform-only games, but doesn't care anymore. If you're a DOS user, run the batch file: DEINFORM By typing DEINFORM zork1.z3 zork1.inf -aol (for instance) and hitting enter. Thanks to Jason C.Penney (author of V6Lib), the batchfile now lets you enter filenames, by typing them afterwards. Thanks Jason! It also allows you to enter CLI switches, by putting them after the output filename. You can also put more than one block of CLI switches together, like this: "deinform zork1.z3 zinfoout -ajo -Izinfoobj -Dglark" There is a lot of file I/O, so don't run Disinformation from a floppy disk or you'll be there all day. Type (replacing GAME.Z5 with the required file): TXD >TXDOUT -adnw0 GAME.Z5 Then: INFODUMP >ZINFOOBJ -fw0 GAME.Z5 (Please note the change in switches from the original 'adw0'. -f prints a lot more information, including the Serial Number, which the program needs. Then: UNINFORM -switches TXDOUT DONEIT DEFS Call 'DONEIT' what you want (this is the output filename), and switches are detailed above. Call 'DEFS' what you want, this is the name of the definitions file, and must come after the output filename, at least for now. If there is no filename other than the input filename, the program defaults to 'ZINFOOUT' for the output filename. If there is nothing specifying the name of the definitions file, the program defaults to 'ZORKATTS.TXT'. The Infodump output name is not definable yet. And that's it!! No Infodef file, no messing. Well, there's the 'ZORKATTS.TXT' file, but that's not really very functional yet (at least, not functional enough for Inform games). Warning: You must have adequate diskspace for this. A 100k .Z5 file may TXD to 600k or so, so ensure you have enough diskspace beforehand. This is only really a problem for people with no hard disk, and who haven't got enough memory to use the RAMdisk (ie, me when I used my Amiga 1200). Disinformation outputs Usage: UNINFORM (switches) (input filename) (output filename) Switches: -lhjaop -D[definitions filename] -I[infodump output filename] - . _<2.Some Known Bugs> _ Have you got a while? ;-) *Switch: [*Removed due to bugs as of 19th Jan, will be re-instated:*] *Speed, Memory allocation & Open files On a Pentium 166 (as I use), it takes about 10-20 seconds to do a long (1 meg or so) program, about the same as TXD. On a 286 or low-end Amiga (is there such a thing?), you could be looking at about 90 seconds-2 minutes a run. This is mainly file input/output, so it could be improved in speed drastically by buffering. The only memory allocation used is in character arrays, and a few 'long' arrays, so these should be handled by the compiler. All files are closed at the end of the program. *Compilability Let's face it, the output is not compilable yet, it's just rather readable and 'gleanable'. However, give me time... ;-) *Or/And I've done a lot of work on this. However, if there is a string of '& (and's) and a '||' (or) after the string, all the conditions in the strings will be reversed (== becomes ~=, and so on). Also, there are not the right brackets round the right places in an 'IF (etc)&&(etc)||(etc)'. *Names of Globals, Attributes, Properties are all wrong Not much I can do about this, I'm afraid, at the moment anyway. The program at present uses a handful of default Global variables such as Player and Self. Eventually I will make it look for a version of Parserm.H for whatever version of Inform it is decompiling, and find out all the Global variables it can. There is a definitions file for Infocom games, so you can name the Attributes, Properties etc after working out what they are. *Lack of some opcodes This has been vastly improved. It can now handle a large number of Z-machine opcodes. And these are being updated all the time. *It's indenting but I don't want it to... Well, it pays to be patient. The 'i10' switch is what you need. Set it to 0 to not indent, and 1-32767 for the number of spaces you want to indent. < 3.Thanks & Etc:> >  Implementors of the Z-machine, for such a neat idea (Joel Berez, Marc Blank, Dave Lebling, Brian Moriarty, Tim Anderson, Dave Lebling).  Graham Nelson for his excellent work on Inform. And, without Inform, there'd be nothing to decompile (in other words, if he hadn't written the syntax for Inform, I'd have nothing to decompile the Z-code *to*). If you haven't got here from his page, check out the _Inform page_, from which he has generously linked to here.  The InfoTaskForce (David Beazley, George Janczuk, Peter Lisle, Russell Hoare and Chris Tham), Matthias Pfaller, Mike Threepoint, Mark Howell and Paul David Doherty and all who helped decipher the Z-machine.  Mark Howell, for TXD and Infodump (which are both excellent) and Ztools.  Matthew T.Russotto for comments, help and 'Programming Karma' (!). And for maintaining Ztools.  Ethan Dicks, for offering to help with making the program more portable (and for helping).  Mark Knibbs for the name 'Disinformation'. Cheers!! < 4.Contacting the Author> > If you have noticed any bugs, then bear in mind that this is the BETA version, and I am aware of several bugs, but haven't the time to change them at present. If your bug is not listed above, or Disinformation crashes your machine (at the worst), you may e-mail bugs to me at: _jeremyasmith@hotmail.com_ Which is most convenient for huge amounts of e-mails, as I don't have to download them all at once. And please, no attachments: ask first. When telling the bug, please say the name of the game, and the Inform version the game reports back. If you have any requests (other than 'Make it decompile old Infocom games better'), praise, (anything but bugs!!), or if you're really stuck running the program (make sure you read the docs thoroughly) please send e-mail to: _jeremy@lwtcdi.prestel.co.uk_ If this doesn't work, try the hotmail address above. < 5.Look at my Webpage> > Heck, I spent hours writing this program (days???), so I think, as the program is free, that you could do me the service of looking at my (and a friend's) webpage (Look What the Cat Dragged in... 2 megabytes of original, funny text): _Here_ or, any problems with that, try: _Geocities_ And read the many articles there... Give me some hits!! < 6.Disclaimer> > I can't take any responsibility if my program trashes one of your files. It's your fault if it happens!! This can only happen if you put, say: UNINFORM BLAH AUTOEXEC.BAT Disinformation will warn you if it is about to overwrite a file that already exists. Press 'Y' to do so anyway. If you use the -o switch after the output filename, it will do so without asking (for batchfile purposes). See above. < 7.Distribution> > At this is the BETA version, please don't distribute it anywhere. The latest DOS version (34k ZIPfile) will be uploaded to: _The ZIPPED DOS package_ at the DIM homepage. Check the page occasionally for updates (which are regular, like, every day!). When a bug-free version is done, it will be uploaded to GMD, probably in: _The IF-archive at GMD_ < 8.C Source Code Distribution> > I made the C source code available, but please bear in mind that it could be an old version of the code, so please keep it to yourself after downloading. This is to prevent any buggy source floating across the Internet. The latest updates of the ANSI(ish) C Source, plus these instructions, (in a 16k ZIPfile) are available at: _The ZIPPED C Source package_, again on the DIM homepage. And Disinformation should now *DEFINITELY* run on any machine, no matter the linefeed method. Okay, so I said it would do this before, but now I *know* it. Yup. < 9.License Agreement: Terms & Conditions of Use. > By running DisInforMation, you are agreeing to these terms: i. You may not distribute source code created with DisInforMation without the permission of the game's author, if the text in the game that was decompiled is copyrighted, unless it is within the number of words quotable by law for academic or private use. ii. You may do what you like with source code created with DisInforMation, provided it is for your own use, and is not for commercial use (unless you have the permission of the author of the game you decompiled). iii. You may not put the BETA version of Disinformation on a coverdisk or cover CD without contacting the author first (to prevent unfinished versions of DIM being distributed and thus embarrassing the author ;-) ). iv. You may not distribute Disinformation without the permission of the author, and you may not charge money for Disinformation.