C#スレから出張してきました。

とりあえず、何故かコメントアウトされている以下の4行を稼動させれば
bltAlphaFastは一応動くと思いますよ。

AlphaBlender.cpp - bltAlphaFast
--------------------------

137: memset( &ddsdTarget, 0, sizeof ddsdTarget );
138: ddsdTarget.dwSize = sizeof ddsdTarget;

144: memset( &ddsdSource, 0, sizeof ddsdSource );
145: ddsdSource.dwSize = sizeof ddsdSource;

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

このコードがないと構造体が初期化されず、正しい値を返してくれません。
Lockの返り値を見るとおそらく失敗しているはずです。
(Lockの返り値でエラーチェックされていないので、見逃してしまったのでしょう)

メモリの読み取りエラーも、偶然のメモリ配置により偶然成功し、Lock範囲を超えて
書き込んでしまったせいだと思います。

ちなみに、0.9.0でgetDisplayModeが失敗するのも同じ原因です。
DDSURFACEDESC2構造体が初期化されていなかったため、
GetSurfaceDescがDDERR_INVALIDPARAMSを返して失敗しています。

0.9.0.1ではコメントアウトしているようですが、Fixed riorio 2010.03.16の部分を復活させると
正しく動作すると思います。

それでは、お邪魔しました。