DMDX Help.

Command Line Options.

    There are a few command line options that DMDX will use, these are set in the command line in the shortcut to run DMDX.  To make a shortcut that you can modify (the default ones the installer makes are uneditable unfortunately) right click the desktop, select New / Shortcut, browse to / Program Files / DMDX and select DMDX.exe.  The command line is actually labeled Target:

    This switch forces both DMDX and TimeDX to use the Direct3D rendering path built into them instead of the original DirectDraw path.  When either program is run for the first time on Windows 8 (unless Auto Mode is in use) they will prompt for the use of Direct3D rather than requiring a command line switch (and will remember that choice so it only need be made once) so the -d3d switch is only useful on Windows 7 and earlier OSes should people decide they want to use Direct3D.

    This switch forces DMDX and later to use the legacy DirectDraw rendering path instead of the Direct3D one and is about the only way to get DMDX to use both auto mode and DirectDraw at the same time on a later OS without firing up TimeDX and using it's Change Render command.  Why would someone want to do that you ask?  They would if they wanted to build a remote testing task using the DirectDraw renderer.  Why would someone want to do that?  They wouldn't, only I would as I'm investigating why some people stubbornly cling to the DirectDraw renderer despite it's timing errors and other foibles.

-buffer n
    Some video card drivers are f..., well, broken and return errors (or cause crashes) if DMDX requests large numbers of back buffers when not using Direct3D (when using 3D there's always only a single back buffer). This may be caused by some confusion over what is video memory and what is not, in any event the user needs a way to override DMDX's calculation of the number of video buffers available and this is it.  Version 3's install creates several shortcuts that make needing to do this option less likely. Windows 8 (if it wasn't using the Direct3D rendering path) OTOH would appear to always need it's buffers limited to 1.

-run \path\itemfilename.itm.rtf
    DMDX will automatically run the item file name following -run. Data will be automatically saved and DMDX terminated if the run is successful, otherwise no data will be saved. This should be the last option on a command line as everything following -run is used for a file name (to easily deal with spaces in names and so forth). Should DMDX exit immediately and you are unable to tell what error has occurred consult diagnostics.txt to find out what happened.  Note that both DMDX.EXE and the item file should be in the same folder, if not the item file will need a path name to it.

    If you are running DMDX from the command line in a batch file to automatically process it's output files then the following syntax is convenient to note for use in batch files:

start /wait dmdx.exe -run whatever.rtf

    Here the MS-DOS prompt will wait until DMDX exits before processing the next line in the batch file, without the start /wait it would immediately continue on concurrent with DMDX was executing.

    If you want to use non-ASCII characters in your item file name in a batch file running DMDX (a) you'll have to make sure you're using version or later of DMDX (b) you'll want to make sure the text encoding of your batch file is UTF-8 and (c) you'll want to change the active code page before the start command to UTF-8 which is code page 65001 with chcp 65001.  You'll also probably want to force DMDX to use the Unicode option with -unicode (below).  So your batch file (assuming your item file's name is 지시문.rtf) would have:

chcp 65001
start /wait dmdx.exe -unicode -run 지시문.rtf
    Windows shortcuts require no such code page shenanigans.

    DMDX runs in EZ (or easy) mode with this option.  Use of TimeDX to time displays is not required however displays are no longer synchronized with the raster.  Facilitates demonstrations of DMDX with minimal setup (especially when used with <vm desktop>) and should not be used to gather time sensitive data.  As of DMDX EZ mode also only uses triple buffering (same as -buffer 2) unless overridden by -buffer later on the command line. No point having EZ mode hammering people's display drivers asking for oodles of back buffers and thus exposing unstable drivers unnecessarily.  As of EZ mode also sets Soldier On mode (below) that restores surfaces after focus is lost (usually because another application has popped up window).

    Because the duration of a frame is no longer accurate use of the frame option % or <%> is inadvisable and instead <%ms> should be used. When an unknown display refresh rate is requested as always happens under 98/ME or when something like <vm 1024,768,16,0> is used then a 60Hz rate is assumed (even if the actual display rate is completely different). 

    The need for EZ mode if it wasn't already deprecated enough with the likes of auto mode (below) the advent of the freesync modifier to the video mode pretty much nails it dead as here you can just change the item file instead of having to make a new shortcut.  Without an appropriate display freesync will function just like EZ mode it's just that DMDX will be burning a bit more of the CPU's power to do so...

    If both EZ mode and auto mode are specified as of version of DMDX relaxed polling of the vertical blank status will be used instead of completely simulating the retrace.  See -auto below.  Note, as of version this is all but superfluous as DMDX now saves the relaxed raster tracking status across runs so if your machine hit it once it will continue to use it.

-subjid xxxx
    This option specifies the subject ID when the -run option is used.  Available in item files with macro S.  If you wish to use non-ASCII characters in a batch file the same sort of shenanigans that are needed for the -run switch are required (using version or later of DMDX, setting the code page to 65001 and so on).

-display n
    Causes DMDX to use display driver number n, handy in a multi monitor system with a subjects display in another room say when you want to test something without going to the subjects display, you can have two shortcuts to DMDX, one that uses the normal subjects display and another with the command line parameter -display 0 for using the primary display for output. The n comes from the number that is the first part of any display driver name as displayed by
TimeDX's Video Driver selection dialog and it's worth noting here that those numbers are different when using the Direct3D rendering path (-d3d above).  Using the classic DirectDraw 2D rendering path displays 0 and 1 are the same display, with Direct3D they did away with this idiocy and displays are numbered sequentially from zero as you'd expect .

    Causes DMDX to no longer check for Microsoft Word's Smart Quotes, this is needed for extended double byte code page character fonts (such as Asian ones) that DMDX doesn't know about.  Word in it's infinite wisdom unless specifically told to not do so replaces normal quotes with matching left and right quotes (extended characters \'93 and \'94) so DMDX normally has to know about them, however Asian fonts are full of extended characters and tend to use those codes for other things besides fancy quote marks, so DMDX wrongly interprets them as text delimiters.  DMDX currently knows about three character sets (128, 134, 136) that are Asian that need DMDX's support for Word's Smart Quotes turned off, -nosmartquotes is provided for other new ones that turn up from time to time.  See -unicode below.

    This option overrides the non-use of the millisecond callback for video retrace synchronization. It's being an utter pig to implement and preliminary results show that benefits are negligible to none, more like none. In a nut shell, you don't want to use this, it's in there so I can continue development of it when I've nothing better to do.

    This option turns on the Unicode code path through DMDX.  Use of the command line option overrides the dialog box Unicode control. 


    As of version SoldierOn is on by default as Direct3D recovery is pretty smooth and machines are fast enough these days that so long as the focus isn't lost DMDX is largely unaffected by other other processes (unless they're extreme CPU hogs of course) so -nosoldieron was added should someone need a way to turn it off.  Prior to version of DMDX if another application popped up a window or DMDX otherwise somehow lost it's focus (sticky keys anyone?) it would basically hang up.  Control of the machine was possible to get back with Alt-TAB and you could kill off DMDX with the task manager but that run of DMDX was toast.  Onus was always on the experimenter to make sure an experimental machine was free of such software, after all if DMDX just recovered from such situations data integrity was sure to suffer, not to mention display integrity (it is possible to have display elements from previous items remain on the screen).  Given the advent of remote internet testing it behooves us to make DMDX behave a little better so now the dreaded DDERR_SURFACELOST is caught and the job is terminated gracefully unless SoldierOn mode is activated with -soldieron in which case all display surfaces will be set to the default background color and DMDX will resume execution flagging that an error occurred in the output file (.AZK or .ZIL).  Only real issue remaining is Alt-TABbing to the menu window of DMDX where it won't do anything (unless you're using the Direct3D rendering path), one has to Alt-TAB to the first DMDX window (the DX window) and then the job will resume.  Use of safe mode 3 will make DMDX repeat the item that was interrupted.

    Similar to EZ mode -auto turns on DMDX's Auto mode largely to aid remote testing with tachistoscopic displays (you knew it was coming).  Sets -soldieron and -buffer 2 like EZ mode and as of version if the DirectDraw legacy renderer is in use under Windows 8 or later the number of back buffers will be reduced to one as it appears every third display is lost when two buffers are used with the emulated renderer.  With auto mode active DMDX will assume that the display is running at the frequency the display drivers report or 60 Hz if the display drivers don't report any refresh rate and will set it's timing parameters accordingly, nothing needs to be timed with TimeDX and no device selections need be made.  The actual values used are fairly conservative so will waste more time looking for the raster than if TimeDX has been used but given the speed of today's CPUs that's less of a concern than it used to be.

    If both EZ mode (above) and auto mode are specified with -ez -auto on the command line as of version of DMDX relaxed polling of the vertical blank status will be used instead of completely simulating the retrace (something I tend to refer to as relaxed raster tracking).  Note, as of version this is all but superfluous as DMDX now saves the relaxed raster tracking status across runs so if your machine hit it once it will continue to use it.

    This option forces the Ignore Unknown RTF check box to remain checked and for the machine to ignore any settings for this in the registry.  In some remote testing setups run on machines with DMDX installed that have (for reasons difficult to fathom) turned Ignore Unknown RTF off this allows them to force it on for the duration of the remote test. 

DMDX Index.