---------------------------------------------------------
                :  SoftTH v1.07 beta  :
---------------------------------------------------------

SoftTH allows using three monitor "triplehead" with some
Direct3D 8 and 9 games without special hardware. You need
three monitors attached to PCI Express video cards. Only
one card does all the rendering work, so secondary card
can be a low end card, only Direct3D support is required.

Read the quickstart.txt for quickstart instructions.

You can add new triplehead resolutions to the bottom of
SoftTH.cfg, the width will be tipled from the setting there

You can use the borderSize cfg setting to add a "dead
zone" between the monitors where the monitor bezel is.
While SoftTH attempts to make the game not render to the
dead zone area, it still increases the used render 
target resolution. Many cards have a limit of max 4096x4096
textures, so maximum border size in, for example 3840x1024
triplehead resolution is 128 pixels (3840 + 2*128 = 4096)

sideExtraWidth setting can be used to set different aspect
ratio on the secondary displays. The set value is the width
in pixels of how much extra width is added to the side screens.
For using a wider middle monitor, this setting would usually be
a negative value (such as -336 for 1360 pixel middle screen with
1024 pixel side monitors)

sideExtraWidth setting is also used together with the cylindrical
correction setting. The cylindrical correction setting requires
a wider framebuffer to work with so a positive sideExtraWidth
setting should be used with it, such as 256.

forceHorizontalFOV setting can be used with some games
that do not correctly set the display aspect ratio. It
forces the horizontal FOV to be three times as wide, 
however it can cause clipping artifacts at the sides
as the game isn't aware of the changed FOV.

forceResolutionWidth/Height can be used to force a
triplehead resolution for a game that doesn't support
selecting one. Set to 0 for normal operation.

hideNondefaultDevices setting hides all but the default
adapter from the game. Use if game attempts to initialize
the left/right monitor devices, blocking SoftTH from
using them.

sleepBeforeRead is a time value in milliseconds to sleep
before copying frame data from video card to system RAM.
Normally the copy is blocked util the data requested is
available for copying, which causes high cpu usage. 
Sleeping for a moment will reduce this by waiting before
beginning to copy the data, but in some cases it can cause
erratic performance.

swapOrder setting can be used to swap the order at which
the data is copied to the left/right monitors. Depending
on the hardware setup one order can be a bit faster than
the other.

useMultihead setting enables the use of Direct3D 9 multihead
capabilities to copy data faster. This setting only works
in Direct3D 9 games and requires that one of the side monitors
is located on the same card as the primary monitor, and that
the primary device supports multihead. This will also reduce
video memory usage, but can cause compatibility problems if
a game uses multiple swap chains. If you get graphical
artifacts with this setting enabled, set delayedPresent to 0

secondaryFormat setting has three settings, "RGB16", "RGB32" and
"YUV12". RGB32 gives the best image quality, but requires
significantly more bandwidth to transfer the image. RGB16 uses
converts the image to 16bit format which cuts the bandwidth
required in half. Normally this offers very good image quality
too, except for cards that do not properly support dithering
such as the Nvidia GeForce 8000 series cards. For these cards
the YUV12 mode is useful as a middle ground between image 
quality and performance.

autoSquash setting enables "automatic squashing" that attempts
to detect when the game is rendering only 2D GUI elements (ie.
in a menu screen) and automatically squashes the output to
the middle screen only. This works properly only if the game
renders the GUI using a pretransformed fixed vertes format in
Direct3D 9.

noHotkeys setting can be used to disable all the SoftTH
hotkeys if they cause conflicts with game hotkeys.

Currently supported hotkeys are:
- Print screen: Save screenshot to game dir in TGA format
- App key + E: Toggle debug display on left monitor
- App key + 1: Decrease sleepBeforeRead value
- App key + 2: Increase sleepBeforeRead value
- App key + W: Toggle left/right monitor data copy, can be
  used to measure performance hit from SoftTH
- App key + T: Toggle forceHorizontalFOV setting
- App key + S: Toggle squashing, draws whole frame to middle
  monitor only, helpful for using UI with games that stretch
  the UI to all three monitors (Direct3D 9 games only)
- App key + A: Increase cylindrical correction value
- App key + Z: Decrease cylindrical correction value
- App key + M: Output "- MARK -" to SoftTH.log
- App key + F4: Force application quit

(App key is the application key next to the right windows key)


---------------------------------------------------------
  credits
---------------------------------------------------------

SoftTH is made by Kegetys <kegetys[t]dnainternet.net> 

---------------------------------------------------------
  changelog
---------------------------------------------------------

* 1.07beta
 - Autodetection for various settings such as secondary
   resolution, device ID, etc. (default)
 - Support for D3D9 swap chains (for Call of Duty 2, 
   Company of Heroes...)
 - Persistent win32api hooks for more reliable hooking
 - Uses debug access to write memory if regular access
   fails (requires admin/debug privileges from user)
 - Some default settings adjusted for better compatibility
 - Improved device release detection & handling
 - Mouse compatibility fixes
 - Config file settings separated for OpenGL & Direct3D
 - Global config file support in user home directory
 - Autosquash option for automatic squashing when no 3D
   elements drawn
 - Forced multihead use (useMultihead=2) for games that
   do not immediately initialize the device with the
   triplehead resolution (Such as Test Drive Unlimited)
 - Misc fixes & improvements
 
* 1.06beta
 - Fixed crash when no depth buffer requested by application
   (for Nascar Racing 2003)
 - Fixed log output path when app changes current directory
 - Fixed config read path when app changes current directory
 - Using D3DCREATE_FPU_PRESERVE flag in secondary devices if
   requested for primary device (for Bioshock)
 - Added doScaleFromLeftScreen setting to scale mouse
   coordinates from left screen to full width (for netKar Pro)
 - Misc minor fixes and improvements

* 1.05beta
 - Fixed task switching crash in 1.04
 - Fixed refresh rate check
 - Added support for D3D9 multihead acceleration if primary
   device supports it (dual head cards)
 - Added mouseXoffset hook setting to fix misplaced mouse
   cursor position (for Armed Assault)
 - Fixed forceHorizontalFOV when using border setting
 - Added sideExtraWidth setting
 - Added cylindrical correction setting
 - Added SoftTH identifier to primary device description
 - Improved DLL load handling (for Stalker Shadow of Chernobyl)

* 1.04beta
 - Improved keyboard shortcut handling
 - Improved screenshot handling
 - Improved anti-aliasing support (Game-requested setting
   is detected by SoftTH and used automatically)
 - Experimental Win32 API hooks
 - Added hook option for scaling getCursorPos coordinates
   (For Test Drive Unlimited)
 - Added hotkey for 'squashing' output to middle monitor
 - Improved settings validation (Supported resolution check)
 - Fixed resolution returned by CreateDevice for improved
   border setting compatibility (ISI racing sims)

* 1.03beta
 - Improved performance and compatibility
 - Improved mouse compatibility
 - Added sleepBeforeRead config setting
 - Added hotkeys and setting to disable them
 - Added setting to change left/right monitor copy order

* 1.01beta
 - Some D3D9 compatibility fixes
 - Forced resolution override
 - Option to hide non-default devices
 - Set multithreading flag for D3D device
 - Option to disable multithreading flag

* 1.0beta
 - first version
 
---------------------------------------------------------
  license & disclaimer
---------------------------------------------------------

You are permitted to install and use this software for 
personal entertainment purposes only. Any commercial,
military or educational use is strictly forbidden without
permission from the author. 

You are free to distribute this software as you wish, as 
long as it is kept 100% free of charge, it is not modified 
in any way and this readme file is distributed with it.

The author takes no responsibility for any damages this 
program may cause, use at your own risk.

---------------------------------------------------------