home *** CD-ROM | disk | FTP | other *** search
/ Action Ware 12: Heretic & Hexen / actionware12.iso / acware12 / utility / dm2conv.doc < prev    next >
Text File  |  1995-05-24  |  27KB  |  679 lines

  1.                        =======================
  2.                             DM2CONV v3.0
  3.                          by Vincenzo Alcamo
  4.                        =======================
  5.  
  6.  
  7. ** DESCRIPTION
  8. --------------
  9. This program converts DOOM/DOOM2/HERETIC levels to run with one of the
  10. other games: a total of six different conversion types.
  11. Some of DM2CONV's features are:
  12.    - DOOM, DOOM II, HERETIC support
  13.    - level conversion and remapping
  14.    - music conversion, remapping and mixing
  15.    - linedef/sector types remapping
  16.    - wall/floor textures remapping
  17.    - resource renaming
  18.    - object substitution with difficulty level & conditional substitution
  19.    - fully programmable via response files
  20.    - GFXMAKER utility to use one game's textures inside another one
  21.  
  22. PLEASE, take the time to read this entire documentation because v3.0 is
  23. a totally new program. It has a different syntax and many new features.
  24.  
  25.  
  26.  
  27. ** WHY I MUST CONVERT A PWAD?
  28. -----------------------------
  29. Levels designed for DOOM are incompatible with DOOM II or HERETIC
  30. because some resources (ie: graphic bitmap) and objects only exist
  31. inside the DOOM main wad file: DOOM.WAD.
  32. Nevertheless, if you have played DOOM II or HERETIC you should have seen
  33. new monsters and things (the SuperShotgun, the Ethereal Crossbow...).
  34.  
  35. DM2CONV handles the conversion process in a very easy way.
  36. Let's introduce some conventional names:
  37.     D  = DOOM
  38.     D2 = DOOM II
  39.     H  = HERETIC
  40. If you want to convert from game1 to game2 you should type:
  41.     DM2CONV source destination @:(game1)TO(game2)
  42.  
  43. Let suppose you want to run SNIPER.WAD (a well-made level by Eric C.
  44. Reuter) with DOOM II; just execute the following command:
  45.     DM2CONV SNIPER.WAD SNIPER2.WAD @:DTOD2
  46. For HERETIC you have to execute:
  47.     DM2CONV SNIPER.WAD SNIPERH.WAD @:DTOH
  48.  
  49. NOTE: DM2CONV requires the DEFAULT.RSP file, place it in the same
  50.       directory where DM2CONV.EXE resides.
  51.       Please, read carefully the KNOWN PROBLEMS paragraph.
  52.  
  53.  
  54.  
  55. ** HOW THE CONVERSION WORKS
  56. ---------------------------
  57. The differences between DOOM / DOOM II / HERETIC are the following:
  58.    - many resources have different names
  59.    - most wall/floor textures are different
  60.    - new things or missing things
  61.    - incompatible linedef/sector types
  62. DM2CONV renames the resource to their appropriate names, remaps the
  63. textures to similar ones, changes the objects, etc...
  64.  
  65. The general syntax is:
  66.  
  67. DM2CONV <input> [output] [/symbol[=[value]]]... <@response>...
  68.  
  69. input
  70.    This parameter is required: it specifies the name of the wad to
  71.    convert. The .WAD extension is optional.
  72.    The input file must be a PWAD or a IWAD file.
  73.  
  74. output
  75.    This is the name of the output wad. The .WAD extension is optional.
  76.    If a file of the same name already exists, it is deleted.
  77.    If this parameter is omitted, the input file is overwritten (you
  78.    should make a backup copy of the source file).
  79.  
  80. /symbol[=[value]]
  81.    You can define or undefine a symbol.
  82.    /name        The symbol 'name' is defined with the 'name' value
  83.    /name=value  The symbol 'name' is defined with the value 'value'
  84.    /name=       The symbol 'name' is undefined.
  85.  
  86. @response
  87.    response is the name of a text file containing additional parameters
  88.    for DM2CONV. The .RSP extension is optional.
  89.    If the response file is not found in the specified directory, it will
  90.    be searched in the same directory where DM2CONV.EXE resides.
  91.  
  92.  
  93.  
  94. ** RESPONSE FILES
  95. -----------------
  96. If you have read the above paragraphs, you may think that DM2CONV is
  97. rather simple. You may also think that simple programs can do only
  98. simple things: THIS IS COMPLETELY WRONG.
  99. DM2CONV has a simple syntax because it is an interpreter:
  100. all conversion logic is contained inside response files.
  101.  
  102. I have supplied a basic response file, DEFAULT.RSP, that handles all the
  103. conversion process. If you want to customize the conversion, you should
  104. edit the DEFAULT.RSP file, or create a new one.
  105.  
  106. Response files are a sort of batch files, a set of commands have been
  107. provided to handle response files.
  108.  
  109. @[response][:label]
  110.    This command calls the specified response file (like DOS CALL).
  111.    If a label is supplied, the execution of the response file
  112.    will start at the specified label: a label is defined with a
  113.    colon, like in DOS batch files.
  114.    If the response name is omitted, the current response file is
  115.    used or, if in command-line mode, the DEFAULT.RSP is used.
  116.    The maximum number of nested response files is 10.
  117.    Examples:
  118.         @TEST           ;call the TEST.RSP file
  119.         @TEST:NO1       ;call the TEST.RSP file at line :NO1
  120.         @:SUB2          ;call the current response file at line :SUB2
  121.  
  122. :label
  123.    This command defines a label inside a response file.
  124.  
  125. ;comment
  126.    All text in a line after the semicolon is a comment and is discarded.
  127.  
  128. RETURN
  129.    This command terminates the current response file and returns
  130.    control to the calling response file.
  131.  
  132. ABORT
  133.    This command terminates the program, control returns to DOS.
  134.  
  135. ECHO text
  136.    This command displays the specified text.
  137.  
  138. IFDEF symbol
  139. IFNDEF symbol
  140. ELSE
  141. ENDIF
  142.    These commands implement conditional parsing of response files.
  143.    If a symbol is defined (IFDEF) or undefined (IFNDEF) parsing
  144.    will continue on the True branch or in the False (ELSE) branch.
  145.    IFDEF/IFNDEF can be nested. There is no limit for nesting level.
  146.    Example:
  147.         IFDEF TEST
  148.            ECHO TEST is defined
  149.            @TRUE                        ;do something
  150.         ELSE
  151.            ECHO TEST is not defined
  152.         ENDIF
  153.  
  154. SET symbol[=[value]] ...
  155.    This command defines or undefines a specified symbol.
  156.    It is equivalent to the /symbol command, but it is for response files.
  157.    Use SET alone to display the symbols currently defined.
  158.    Examples:
  159.         SET TEST=2 PIC=GIF      ;defines TEST and PIC
  160.         SET GFX=                ;undefines GFX
  161.         SET                     ;display all symbols
  162.  
  163.  
  164.  
  165. ** SYMBOLS
  166. Symbols are a new features of DM2CONV and are used primarily for
  167. conditional parsing (IFDEF/IFNDEF).
  168. Symbols can be defined with the SET or / commands (see the general
  169. syntax). Any symbol can be redefined or undefined.
  170. There are two types of symbols: environmental and private.
  171. Private symbols are those defined using DM2CONV, environmental symbols
  172. are the environment variables of the DOS shell.
  173. An environmental symbol cannot be redefined or undefined, but a private
  174. symbol of the same name has the precedence over it.
  175. The SET command will display only the private symbols.
  176.  
  177. Although you can use any name for a symbol, there are some symbols
  178. that performs special functions:
  179.  
  180. SOURCE
  181.    This symbol contains the name of the source file, as specified in
  182.    the command line of DM2CONV.
  183.    Can be (re)defined in a response file.
  184.  
  185. DEST
  186.    This symbol contains the name of the destination file, as specified
  187.    in the command line of DM2CONV.
  188.    Can be (re)defined in a response file.
  189.  
  190. HELP
  191.    This symbol, if set, will skip the conversion process, and displays
  192.    the help page of DM2CONV.
  193.    It is the same as to type DM2CONV with no parameters.
  194.  
  195. FROM
  196.    This symbol specify the format of the source file.
  197.    Valid values are:
  198.      D or DOOM          for DOOM wads
  199.      D2 or DOOM2        for DOOM II wads
  200.      H or HERETIC       for HERETIC wads
  201.    Currently this symbol has no use since no checking is performed
  202.    on the source file format.
  203.    Default value is DOOM.
  204.  
  205. TO
  206.    This symbol specify the format of the destination file.
  207.    Values are the same for the FROM symbol.
  208.    Default value is DOOM2.
  209.    This symbol is needed to change the names for levels and musics.
  210.  
  211. REMAP
  212.    This symbol enables the level remapping feature.
  213.    Just define it with the number of the first level, and all
  214.    levels in a wad are remapped.
  215.    Examples:
  216.       /REMAP=5          ;start from E1M5 or MAP05
  217.       /REMAP=10         ;start from E2M1 or MAP10
  218.       /REMAP=28         ;start from E4M1 or MAP28
  219.    Musics are remapped automatically: if E1M1 is mapped to E2M1, then
  220.    D_E1M1 is mapped to D_E2M1.
  221.  
  222. DEBUG
  223.    This symbol, if set, will enable the debug mode.
  224.    In debug mode, detailed information are shown: currently only
  225.    statistics about the object conversion are displayed.
  226.    Be warned: debug mode could generate a large amount of text.
  227.  
  228. MIX
  229.    This symbol enable the music mix feature.
  230.    If it is defined, all musics in a wad are mixed (randomized).
  231.    You can have a wad with several musics and mix them before running
  232.    DOOM to play musics in a random order.
  233.  
  234. SEED
  235.    This symbol pertains to the object substitution algorithm.
  236.    It defines the value for the random number generator's seed.
  237.    Default is 0.
  238.    Each level is randomized with the specified seed.
  239.  
  240. ONCE
  241.    This symbol pertains to the object substitution algorithm.
  242.    The value of the symbol specify the objects suitable for conversion:
  243.       0         all objects can be converted
  244.       1         only objects not already converted
  245.       2         only objects already converted
  246.       others    same as 1
  247.    /ONCE means /ONCE=ONCE, so the default value of 1 is used.
  248.    Example:
  249.       /ONCE=    ;with ONCE undefined (or ONCE=0)
  250.       8=3       ; objects type 8 becomes type 3
  251.       3=4       ; all objects type 3 becomes type 4 -> no type 3 remains
  252.       /ONCE     ;with ONCE defined (ONCE=1)
  253.       8=3       ; objects type 8 becomes type 3
  254.       3=4       ; objects type 3 (not the former type 8) becomes type 4
  255.  
  256. GFX
  257.    This symbol is used by DEFAULT.RSP: it specify to not convert
  258.    textures and floors names.
  259.    You must define this symbol if you use the wad built by GFXMAKER.
  260.    See GFXMAKER for more details.
  261.  
  262. HANGS
  263.    This symbol is used by DEFAULT.RSP: it specify to convert hanging
  264.    objects (valid only for HERETIC to DOOM/DOOM2 conversions).
  265.    In HERETIC, players can walk under hanging objects, but not in
  266.    DOOM/DOOM2.
  267.  
  268.  
  269.  
  270. ** REPLACEMENTS
  271. To convert a level several things must be replaced: texture names,
  272. floor names, directory entry names, objects types, linedef and sector
  273. actions.
  274. All of these replacements can be specified in a response file.
  275. A replacement expression must not contain spaces, thus more than
  276. one expression is allowed on the same line.
  277. A section tag specifies the type of replace expression.
  278. Valid section tags are:
  279.    [TEXTURES]           ;texture name replaces
  280.    [FLOORS]             ;floor name replaces
  281.    [NAMES]              ;directory entry names replaces
  282.    [THINGS]             ;object replacement expressions
  283.    [LINEDEFS]           ;linedef replacement expressions
  284.    [SECTORS]            ;sector replacement expressions
  285.    [OBJECTS]            ;object names (see OBJECTS.RSP)
  286.  
  287. Only the first 3 characters of a section name are used.
  288.  
  289. [TEXTURE] [FLOORS] and [NAMES] expressions
  290.    oldname=newname
  291.  
  292. [LINEDEFS] and [SECTORS] expressions
  293.    action1,action2,...=newaction
  294.    action1-action2,...=newaction
  295.  
  296. [OBJECTS] expressions
  297.    number=[(radius,height)]game,name
  298.      Game is a combination of game ids: D for DOOM, D2 for DOOM II
  299.      and H for HERETIC.
  300.      Radius and height are optional and are currently unused.
  301.      Example: 2001=DD2,Shotgun
  302.               82=(20,32)D2,Super Shotgun
  303.      NOTE: spaces are allowed after the equal sign, only one object
  304.            per line can be defined.
  305.  
  306. [THINGS] expressions are discussed in the following paragraph.
  307.  
  308.  
  309.  
  310. ** OBJECT SUBSTITUTIONS
  311. -----------------------
  312. All things in DOOM are objects: lamps, monsters, weapons, power-ups,
  313. obstacles, other players, etc..
  314. DOOM II supports all DOOM objects plus others: the super shotgun, the
  315. megasphere, many new monsters, etc..
  316. HERETIC hasn't any of the DOOM objects.
  317. With DM2CONV you can transform specified DOOM objects into DOOM II or
  318. HERETIC objects. The object substitution is such a process and is
  319. enabled by specifying at least one replacement expression.
  320.  
  321. A replacement is a string describing what objects to transform and how
  322. to transform them. The simplest replacement string is of the format:
  323.    object1=object2
  324. This replacement will transform each object of the type object1 to one
  325. of the type object2.
  326. An object is specified by its number or its name.
  327. Spaces in name aren't allowed: you must discard them; also, you can
  328. specify only the first characters of the name.
  329. Example: SUPER SHOTGUN must be entered as SUPERSHOTGUN or as SUPER
  330.  
  331. WARNING: if you want to specify objects by name, you must first include
  332.          the OBJECTS.RSP file.
  333.          Example: DM2CONV in out @OBJECTS SHOTGUN=SUPERSHOTGUN @:DTOD2
  334.  
  335. You can change multiple objects:
  336.    obj1,obj2=obj3
  337. all objects of type obj1 and obj2 are transformed into obj3 objects.
  338.    obj1=obj2,obj3
  339. all obj1 objects becomes obj2 and obj3 (they are chosen randomly in
  340. equal proportions: this is why the /SEED parameter exists).
  341.    obj1-obj2=obj3
  342. all objects with types in range obj1 to obj2 becomes types obj3.
  343. You can specify any number of source objects and any number of
  344. destination objects.
  345.  
  346. You can also specify quantities (only for the destination objects):
  347.    IMP=DEMON@5
  348. In the above example, only 5 IMPs become DEMONs; the others remain IMPs.
  349.    IMP=DEMON@5,SPECTRE@10
  350. Five IMPs become DEMONs and ten become SPECTREs.
  351. If the number of source objects is less than the destination, the
  352. quantities are adjusted proportionally.
  353. In the above example if there are only 9 IMPS, 3 become DEMONs (33%)
  354. and 6 become SPECTREs (66%).
  355. Another example:
  356.    IMP=DEMON@5,SPECTRE
  357. 5 IMPs become DEMONs, the remaining become SPECTRE: if there are less
  358. than 5 IMPs, all of them become DEMONs.
  359. That is, if you don't specify a quantity the remaining objects are used.
  360.  
  361. The quantity can be a percentual:
  362.    IMP=DEMONS@50%
  363. In this way, 50% of IMPs become DEMONs.
  364. You can mix all of the above rules:
  365.    IMP,DEMON=BARON@2,LOSTSOUL@50%,TROOPER
  366.  
  367. In DOOM/DOOM II/HERETIC the difficulty level chosen when you start a new
  368. game will affect the objects in a considerable manner:
  369.    - new objects may appear
  370.    - other objects disappear
  371. The reason is that each object has flags that specify in which level of
  372. difficulty it should appear.
  373. There are five flags:
  374.    1 - object appears on difficulty levels 1 and 2
  375.    2 - object appears on difficulty level 3
  376.    3 - object appears on difficulty levels 4 and 5
  377.    D - object is deaf (useful only for monsters)
  378.    M - object appears ONLY in multiplayer mode
  379. Starting from version 1.5, DM2CONV supports these flags in the
  380. substitution rules; the complete syntax is:
  381.    sobj1[:flags]...=dobj1[@quantity[%]][:flags]...
  382. Additional flags are introduced by DM2CONV v3.0:
  383.    0 - object does not appear at all (if 123 flags are not specified)
  384.        This is useful to remove an object from a level.
  385.    A - process all objects
  386.    O - process only objects not already converted
  387.    C - process only objects already converted
  388.        The AOC flags overrides the ONCE symbol.
  389.  
  390. Each object can have one or more of the above flags.
  391. If difficulty flags are specified in the source, only the objects
  392. that have those flags are changed.
  393.    IMP:1=STIMPACK
  394. means that all IMP that will appear (at least) in difficulty level 1
  395. will be transformed into STIMPACK.
  396. This affects all IMP that have the '1' flag, not the ones that
  397. have only the '1' flag.
  398.  
  399. If difficulty flags are specified in the destination, the object
  400. remapped will have the specified flags.
  401.    IMP=STIMPACK:123
  402. means that all IMP will be transformed into STIMPACK and will appear
  403. on any level (except multiplayer mode).
  404.  
  405. The 'D' flag has no means if used in a source object.
  406. The 'M' flag works in different ways if used in source or destination
  407.    source:      only multiplayer-mode objects are changed
  408.    destination: the object appear only on multiplayer mode
  409.  
  410.  
  411.  
  412. ** CONDITIONAL OBJECT SUBSTITIONS
  413. With DM2CONV v3.0 you can specify to perform an object substitution if
  414. and only if a specified condition is true.
  415. Three new object expressions are available:
  416.    ?objectlist relational_operator value
  417.    ?ELSE
  418.    ?END
  419.  
  420. I will explain these with examples:
  421.    ?3003>10             ;if there are more than ten baron of hell(=3003)
  422.      3003=69@50%        ;converts 50% of baron into hellknight
  423.    ?ELSE
  424.      3003=64@1          ;else converts 1 baron into an archvile
  425.    ?ENDIF
  426.  
  427. Another example:
  428.    ?82=0 2001=82@1 ?ENDIF
  429.    If there is no supershotgun, a shotgun is converted into a supershotgun.
  430.  
  431. In details:
  432.    objectlist is a list of objects, like any object expression.
  433.       obj1,obj2,...
  434.       obj1:flags,obj2-obj3:flags,...
  435.    relational_operator is one of the following:
  436.       = <> > >= < <=
  437.    value is an integer in the range 0-16383.
  438.    DM2CONV will count the number of objects specified in the object list.
  439.    If this number is in relation with the value specified, the expressions
  440.    in the true branch are executed, otherwise the other branch is executed
  441.    (the one between ?ELSE and ?END, this is optional).
  442.  
  443. This works like the IFDEF/IFNDEF commands.
  444. The ?ELSE command is optional, but the ?END command is mandatory.
  445. Conditional expressions can be nested.
  446.  
  447. The primary use of conditional substitutions is to ensure a specific
  448. amount of an object; example:
  449.    ?BFG>2                       ;this is only an example
  450.        BFG=BFG@2,CELLPACK
  451.    ?ELSE
  452.        ?BFG<2
  453.           BFG,PLASMA,CELLPACK,CELLCHARGE=BFG@2
  454.        ?END
  455.    ?END
  456.  
  457.  
  458.  
  459. ** TEXTURE REPLACEMENTS
  460. -----------------------
  461. The texture replacement lists were the hardest part to write.
  462. When choosing a texture replacement you must follow these rules:
  463.  1- the two textures must have the same height, alternatively
  464.     the second must be 128 pixels high.
  465.     This is because textures are repeated vertically every 128 pixels
  466.     (otherwise you have the TUTTIFRUTTI effect).
  467.  2- if the source texture has only one patch, the second must have
  468.     only one patch.
  469.     This is because fake walls can have only this type of texture
  470.     (otherwise you have the MEDUSA effect).
  471. I recommend you to use EDMAP: this awesome editor has a powerful viewer
  472. that shows textures/patches/floors/sprites. Texture info are also shown.
  473.  
  474.  
  475.  
  476. ** GFXMAKER
  477. -----------
  478. GFXMAKER can create a wad file that contains all the textures of a
  479. specified set of games.
  480. For example: you can create a wad that contains DOOM II and HERETIC
  481. textures for DOOM.
  482. You will need the registered version of the selected games.
  483. Please, execute GFXMAKER and follow its instructions.
  484.  
  485. The wad built by GFXMAKER has a name defined by the set of games used.
  486. A wad for one game (DOOM's GFXD_H.WAD for example) cannot be used with
  487. another game (DOOM II or HERETIC).
  488. If you use the GFX* wad, you can convert levels mantaining the original
  489. textures/floors by specify the /GFX parameter.
  490.  
  491.   For example:
  492.      DM2CONV SNIPER SNIPERH /GFX @:DTOH
  493.      HERETIC -FILE GFXH_D.WAD SNIPERH.WAD
  494.  
  495. SPECIAL CONSIDERATION ABOUT GFXMAKER:
  496.  - DOOM and DOOM II have the same color palette, but not HERETIC.
  497.    If you specify HERETIC as source/destination to GFXMAKER, the
  498.    colors of patches/floors need to be converted.
  499.    Most of the time there is no exact match, so another similar colour
  500.    must be used. This is why the textures look different.
  501.  - I have noticed that HERETIC will hang the computer if the external
  502.    files have too many resources. (HERETIC has lot of bugs)
  503.    This happen if you use (for example) GFXH_D.WAD and all the three
  504.    episodes of DOOM.
  505.    I recommend you to use only one level at a time with GFXH_D.WAD
  506.  - For the above reason, I have not implemented the DOOM II textures
  507.    for HERETIC.
  508.    However, you can specify the /GFX parameter if you use GFXH_D.WAD:
  509.    DOOM textures are mantained, only DOOM II textures are converted.
  510.  - The effect that shows when a switch or button is pressed, is
  511.    implemented inside the executable, so buttons will not change when
  512.    you press them, although they will work as usual.
  513.  
  514.  
  515.  
  516. ** DMT
  517. ------
  518. Included in this version of DM2CONV is DMT: my first program developed
  519. for DOOM.
  520. DMT fully supports DOOM, but not DOOM2 or HERETIC although many options
  521. will work well.
  522. Brief instructions are included with DMT: just type DMT -HELP
  523.  
  524. DMT can be used to extract DOOM/DOOM II/HERETIC resources: like levels,
  525. musics, sprites and so on.
  526. Example:
  527.    DMT -OPEN DOOM.WAD -NEW EPISODE1 -COPY #2 #1 E1*.L
  528.       Copy first episode of DOOM to EPISODE1.WAD
  529.    DMT -OPEN DOOM2.WAD -NEW MUSICS2 -COPY #2 #1 *.M
  530.       Copy all DOOM II's musics to MUSICS2.WAD
  531.    DMT -OPEN HERETIC.WAD -NEW MUSICSH -COPY #2 #1 MUS_*
  532.       Copy all HERETIC's musics to MUSICSH.WAD
  533.  
  534.  
  535.  
  536. ** KNOWN PROBLEMS
  537. -----------------
  538. Multi-level pwads can create problems with DOOM II because the level
  539. sequence cannot be replicated: DOOM has 3 episodes, each with 8 levels
  540. and 1 secret level, while DOOM II has 30 levels, 1 secret level and 1
  541. super-secret level.
  542. This means that accessing the secret level in a wad will load the
  543. 31th level of DOOM II instead of the ExM9 level of DOOM.
  544. For the same reason, DOOM II level converted for HERETIC must consist
  545. of less than nine maps. HERETIC has the same level scheme of DOOM.
  546.  
  547. Monster substituition has a weak spot. When you change monsters with
  548. bigger ones, if these new monsters are too near a wall they cannot move
  549. because they collide with the scenario. It is the same as you type
  550. IDSPISPOPD (or IDCLIP for DOOM II, KITTY for HERETIC), then move into a
  551. wall and retype the code.
  552.  
  553. Levels converted to HERETIC could have the FOS bug (FLASH OF SKY): when
  554. you stand over a linedef you will see the sky.
  555. This is probably due to some limitation of the HERETIC graphic engine,
  556. it is not a DM2CONV's bug, perhaps it could be removed with the use of a
  557. node builder (currently no known nodebuilders can remove this bug).
  558.  
  559. HERETIC has another strange bug: it does not support more than 1 maces in
  560. a level. If a level has more than 8 maces it exits to DOS with the error:
  561.   Too many mace spots
  562. But if a level has 8 or less maces, all the maces (except one) are
  563. converted into monsters: this conversion is made on-the-fly by HERETIC.
  564. For this reason, DEFAULT.RSP has an instruction to limit the number of
  565. maces in a level: if more than 1 mace is found, all but 1 are converted
  566. into phoenix rods and hellstaffs.
  567.  
  568. Due to the many differences of these three great games, the only
  569. conversions ensured at 100% are those from DOOM to DOOM2/HERETIC.
  570. All the other conversions may produce unplayable levels.
  571. Some of the most common problems:
  572.   - objects are of different sizes, so a converted object may block
  573.     a passage, or it may not block a passage it was meant to block.
  574.     example: HERETIC level E1M1 to DOOM2, secret room near the start
  575.   - many linedefs are not supported by all games: fast doors, raising
  576.     stairs by 16 pixels, etc...
  577.     example: HERETIC level E1M1 to DOOM, raising stairs near the exit
  578.   - monster conversion: some levels rely on the destruction of a
  579.     specific monster (BOSS BRAIN, COMMANDER KEEN, etc..) to open the
  580.     exit. This feature could not work once the level is converted, so
  581.     it will be impossible to exit.
  582. Most of these problems can be skipped with the use of cheat codes:
  583. that works only in single player mode! DEATHMATCHERS are warned!
  584.  
  585.  
  586.  
  587. ** DISTRIBUTION LICENSE
  588. -----------------------
  589. All files in the original distribution package are PUBLIC DOMAIN.
  590. You can freely distribute these files (also separately) in any form.
  591. The files included inside DM2CNV30.ZIP are:
  592.    DM2CONV.EXE   the converter!
  593.    DM2CONV.PAS   source for DM2CONV
  594.    DM2CONV.DOC   documentation
  595.    GFXMAKER.EXE  the wad builder
  596.    GFXMAKER.PAS  source for GFXMAKER
  597.    DEFAULT.RSP   the official default response file
  598.    OBJECTS.RSP   response to use names in object expressions
  599.    OBJECTS.TXT   object table for DOOM/DOOM2/HERETIC
  600.    DMT.EXE       manipulation tool
  601.    FILE_ID.DIZ   package description
  602.  
  603. For comments, bug reports, suggestions, etc.. please contact the author:
  604.  
  605.   snail-mail:
  606.     Vincenzo Alcamo
  607.     via Verdi 185
  608.     40059 Medicina (BO)
  609.     ITALY
  610.  
  611.   e-mail:
  612.     alcamo@arci01.bo.cnr.it
  613.     (I am always glad to receive E-mails, but I can use this account
  614.      only on Tuesdays and Saturdays: don't expect fast replies)
  615.  
  616. You can ask me by e-mail the latest version of DM2CONV:
  617. please state your current version and I will send you a newer version
  618. when it will be available (or I can inform you where to find the latest
  619. release, please specify which option you prefer).
  620.  
  621.  
  622.  
  623. ** ADDITIONAL CREDITS
  624. ---------------------
  625. Matt Fell                         author of the DOOM specs - vital info
  626. Raphael Quinet,Brendon J Wyber    authors of DEU - first DOOM editor
  627. Jeff Rabenhorst                   author of EDMAP - awesome DOOM editor
  628. Greg Lewis                        author of DEHACKED
  629.  
  630. v3.0 beta testers: Jack Hartman, Bradford Youngkin, Glenn Willing
  631.  
  632.  
  633.  
  634. ** PROGRAM HISTORY
  635. ------------------
  636. 05/23/95  v3.0  Totally rewritten version: syntax has changed.
  637.                 New conversions: HERETIC to DOOM/DOOM2, DOOM2 to DOOM.
  638.                 Conversion driven by response files: no tables are
  639.                 included in the executable program.
  640.                 Conditional parsing, conditional object expressions.
  641.                 Symbols instead of switches.
  642.                 New ONCE feature: replace objects once.
  643.                 New MIX feature to scramble music order.
  644.                 DM2MKWAD obsolete: GFXMAKER now supports DOOM/DOOMII/HERETIC.
  645.                 Many other enhancements: find them by yourself.
  646.                 Special thanks to Bradford Youngkin: HERETIC's mace bug
  647.                 and problems with hanging objects.
  648.  
  649. 04/01/95  v2.0  Registered HERETIC support (shareware is no longer supported)
  650.                 DOOM textures and floors inside HERETIC.
  651.                 DOOM II to HERETIC conversion.
  652.                 Many little improvements: IWAD support, no RSP extension
  653.                    needed in response files, nested response files,
  654.                    /NOTEXTURE and /NOFLOOR switch.
  655.  
  656. 03/04/95  v1.7b Special bug fix version:
  657.                 - texture names were case sensitive
  658.                   (reported by Thomas Beckmann)
  659.                 - strange substitutions with multi-level pwads
  660.                   (reported by Rick Weber,Jack Hartman,Georg Deppe)
  661.  
  662. 01/21/95  v1.6b Resource renaming.
  663.                 Improved documentation.
  664.  
  665. 01/14/95  v1.5b Sky resource remapping.
  666.                 Heretic support.
  667.                 External texture tables.
  668.                 Difficulty level supported.
  669.                 Some code rewritten.
  670.  
  671. 12/14/94  v1.2  Music remapping. Other minor changes.
  672.                 Sources released in the public domain.
  673.                 DMT tool distributed to check reactions.
  674.  
  675. 11/12/94  v1.0  The first release.
  676.                 DM2CONV.PAS should be in the distribution package:
  677.                 it wasn't for my fault.
  678.  
  679.