[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:

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:

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 '&&'s (and's) and a '||' (or) after the string, all the conditions in the strings will be reversed (== becomes ~=, < 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:

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.