[Please note, URLs and links are only available in the HTML version of
this document]
 
                 <Disinformation (DIM) Instructions Index:>
<
| 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 <best> 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. <If you're a Unix user, read on:>
 
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] -
<click here for details of switches>.
 
                            _<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.
