GrabDuck

* SoftTH v2.08b alpha test version *

:

Here's an early test version of a completely new SoftTH. Some things are missing or broken, but it works quite well for me so I decided to release an early test version as this has been in development for a very long time now.

Quick facts:
- Almost completely rewritten from scratch
- Requires Windows 7 with WDDM display drivers (may work in Vista but I haven't tried it). Windows XP will not work.
- Supports any number of outputs in any configuration (two monitors, three monitors, 7 monitors, etc.)
- Only Direct3D 9 is supported for now, others may come later. Direct3D 9 is actually wrapped to Direct3D 9Ex, which causes some compatiblity problems.
- Configuration is entirely different, you now specify a target render resolution (that can be any size) and then source rectangles from this buffer which are copied to the outputs
- Because of the above, manual configuration is a bit difficult. I have done some prototyping for a configurator app (something like this (http://junk.kegetys.fi/softth_config_prototype.png)) which hopefully helps a bit assuming I will get it done at some point
- All the secondary outputs keep their native desktop resolution, you can freely specify a "transport resolution" which is not limited to screenmodes
- No default config is included, when you first run a SoftTH app it will be automatically generated to cover all attached monitors in the layout they are set in the desktop

Download v2.08b from:
http://www.kegetys.fi/dl.php/SoftTH208balpha.zip (latest version, for 32bit x86 programs)
http://www.kegetys.fi/dl.php/SoftTH208balpha_x64.zip (latest version, for 64bit x64 programs)

Note: Even if you are running a 64bit OS, most games require the 32bit x86 version since the games themselves are 32bit executables.

Download v2.07 from:
http://www.kegetys.fi/dl.php/SoftTH207alpha.zip (old version, for 32bit x86 programs)
http://www.kegetys.fi/dl.php/SoftTH207alpha_x64.zip (old version, for 64bit x64 programs)

Download v2.06 from:
http://www.kegetys.fi/dl.php/SoftTH206alpha.zip (old version, for 32bit x86 programs)
http://www.kegetys.fi/dl.php/SoftTH206alpha_x64.zip (old version, for 64bit x64 programs)

Download v2.05 from:
http://www.kegetys.fi/dl.php/SoftTH205alpha.zip (old version, for 32bit x86 programs)
http://www.kegetys.fi/dl.php/SoftTH205alpha_x64.zip (old version, for 64bit x64 programs)

Download v2.04 from:
http://www.kegetys.fi/dl.php/SoftTH204alpha.zip (old version, for 32bit x86 programs)
http://www.kegetys.fi/dl.php/SoftTH204alpha_x64.zip (old version, for 64bit x64 programs)

Download v2.03 from:
http://www.kegetys.fi/dl.php/SoftTH203alpha.zip (old version, for 32bit x86 programs)
http://www.kegetys.fi/dl.php/SoftTH203alpha_x64.zip (old version, for 64bit x64 programs)

Download v2.02 from: http://www.kegetys.fi/dl.php/SoftTH202alpha.zip (old version)
Download v2.01 from: http://www.kegetys.fi/dl.php/SoftTH201alphatest.zip (old version)
Download v2.0 from: http://www.kegetys.fi/dl.php/SoftTH20alphatest.zip (old version)

See the readme for more information. It needs better documentation but hopefully you will be able to figure out how it works.

A quick start:
- Place the d3d9.dll like before to the game dir
- Run the game. A dialog asking if you want to create a default config should pop up.
- Pick the new resolution in-game (or set it in game config)
- The generated default config goes to the same dir the d3d9.dll is in, it will be configured to match the Windows desktop monitor configuration
- You can edit the config with a text editor like before
- If you change the renderResolution setting, remember to re-select the resolution in game as well
- Log file is now written in My Documents/SoftTH/SoftTH.log

See here (http://junk.kegetys.fi/softth2_triplehead_config_sample.txt) for an basic triple-monitor config using 5760x1200 resolution with a few comments.

Some games I have tested as working:
- Team Fortress 2
- ArmA 2
- Crysis demo
- rFactor
- Mount & Blade
- Lock On Flaming Cliffs 2
- Test Drive Unlimited
- Trackmania United Forever
- Call of Duty 2
- Rise of Flight
- Company of Heroes
- Risen
- Civilization 4
- Dirt 2 demo
- HAWX demo
- DCS A10C
- C.A.R.S
- NetKar Pro
- F1 2010
- Trackmania 2
Some known incompatibilities are listed in the readme.

A few special examples of what is possible:

Four monitors in Lock On Flaming Cliffs 2:
Render resolution is 5888x2100, see config (http://junk.kegetys.fi/softth2_lomac_config_sample.txt)

Something completely stupid, laptop with two monitors:
Render resolution is 3286x1772, see config (http://junk.kegetys.fi/soffth2_laptop_config_sample.txt)

Version history:
* 2.08 alpha
- GetContainer support for textures (TES Skyrim)
- Improved index- and vertexbuffer emulation
- Quirk support for invalid VB locks disabled by default
- Fix discard flag use with emulated index buffers (DCS A-10C)
- Config settings to disable various manage-emulation modes

* 2.07 alpha
- Fixed GetTexture behaviour (NFS Shift 2, C.A.R.S, Rfactor, ...)
- Workaround for D3D9Ex non-primary swapchain backbuffer
rendering (Falcon 4 BMS)
- Device reset to windowed mode is no longer incorrectly
used as SoftTH mode (Falcon 4 BMS)

* 2.06 alpha
- fpsLimit setting for non-primary heads
- Managed volume texture fixes (Rise of Flight)
- Fixed memory leak with GetSwapChain
- Fixed memory leak with GetSurfaceLevel
- SoftTH no longer incorrectly activates on windowed mode device

* 2.05 alpha
- Improved local head performance for AMD cards
- Fixed RGB16D nonlocal mode on AMD cards
- Slightly improved nonlocal performance for Nvidia
cards (Restored to v2.02 level)
- Reduced CPU use when waiting for gpu synchronization
- Framerate smoothing is always disabled if all heads
are local
- Fixed potential crash with hooks

* 2.04 alpha
- Improved mouse cursor hooking (World of Warcraft)
- Fixed QueryInterface behaviour for non-D39Ex device
(Rise of Flight, Netkar Pro, Mount & Blade, ...)
- Fixed volume surface locking behaviour

* 2.03 alpha
- Fixed nonlocal performance on ATI cards
- Fixed crash with steam overlay introduced in v2.02
(Left 4 Dead 2, Team Fortress 2, ...)
- Added support for Direct3D 9Ex games (Fallout New Vegas)

* 2.02 alpha
- Fixed non-managed volume texture handling
- Improved performance with partial texture locks
- Quirk support for invalid vertex buffer locks (DCS A10C Beta)
- x64 support

* 2.01 pre-alpha
- Improved manage texture emulation (Richard Burns Rally,
X3 Terran Conflict, Bioshock 2, ...)
- Volume texture manage-emulation fixes (Portal, Left 4 Dead 2)
- Various COM interface compatibility fixes
- GetCursorInfo hook (ArmA2 v1.07)
- TrackMouseEvent messages handling (Dragon Age: Origins)

* 2.0 pre-alpha
- Re-written almost completely from scratch
- Supports any number of outputs in any configuration
- New configuration method