This page contains very early version of simple wrapper which improves compatibility of Dangerous Waters with Windows 8 and Windows 10.

Background of the problem(s)

The Windows 8 does not directly support 16-bit display modes anymore. For old applications it provides a thin emulation layer which transparently changes the parameters used to create the default back buffer from R5G6B5 to X8R8G8B8. This works well for applications which render geometry using the standard drawing calls and do not care about the real layout of the buffer. Unfortunately DW draws its UI by locking the buffer and manually writing it here. While the game seems to contain some code to support 32bit back buffers, it was likely not tested, does not work and will crash the game.

On Windows 10 (at least Nvidia driver) the Present call will generate black screen if the device was created with D3DSWAPEFFECT_COPY swap effect.

What the wrapper does

It redirects all rendering of the game to separate new lockable 16-bit color buffer and when the game wants to show the result, it blits that buffer to the 32-bit one created by the compatibility layer. Please note that the wrapper is designed to work with DW and it only implements the minimal functionality required by the game.

It also replaces the swap effect with D3DSWAPEFFECT_DISCARD and removes unnecessary D3DPRESENTFLAG_LOCKABLE_BACKBUFFER flag just to be sure.

Installation

Unpack the archive to the game directory.

Download

Version 0.02 (3.8.2015) - Very experimental.
Source code

History

Version 0.01 (26.10.2014) - Very experimental.
Source code