home *** CD-ROM | disk | FTP | other *** search
/ Demon Gate Mega Collection / DemonGateMegaCollection.bin / utils / dm2conv / dm2conv.doc < prev    next >
Text File  |  1995-07-22  |  29KB  |  738 lines

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