d3dx9: Start implementation of d3dx9_36.
diff --git a/Makefile.in b/Makefile.in
index 6e20dc7..f22b6a0 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -203,6 +203,7 @@
 	dlls/d3drm/tests/Makefile \
 	dlls/d3dx8/Makefile \
 	dlls/d3dx8/tests/Makefile \
+	dlls/d3dx9_36/Makefile \
 	dlls/d3dxof/Makefile \
 	dlls/dbghelp/Makefile \
 	dlls/dciman32/Makefile \
@@ -589,6 +590,7 @@
 dlls/d3drm/tests/Makefile: dlls/d3drm/tests/Makefile.in dlls/Maketest.rules
 dlls/d3dx8/Makefile: dlls/d3dx8/Makefile.in dlls/Makedll.rules
 dlls/d3dx8/tests/Makefile: dlls/d3dx8/tests/Makefile.in dlls/Maketest.rules
+dlls/d3dx9_36/Makefile: dlls/d3dx9_36/Makefile.in dlls/Makedll.rules
 dlls/d3dxof/Makefile: dlls/d3dxof/Makefile.in dlls/Makedll.rules
 dlls/dbghelp/Makefile: dlls/dbghelp/Makefile.in dlls/Makedll.rules
 dlls/dciman32/Makefile: dlls/dciman32/Makefile.in dlls/Makedll.rules
diff --git a/configure b/configure
index c359928..940ad51 100755
--- a/configure
+++ b/configure
@@ -21197,6 +21197,8 @@
 
 ac_config_files="$ac_config_files dlls/d3dx8/tests/Makefile"
 
+ac_config_files="$ac_config_files dlls/d3dx9_36/Makefile"
+
 ac_config_files="$ac_config_files dlls/d3dxof/Makefile"
 
 ac_config_files="$ac_config_files dlls/dbghelp/Makefile"
@@ -22460,6 +22462,7 @@
     "dlls/d3drm/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/d3drm/tests/Makefile" ;;
     "dlls/d3dx8/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/d3dx8/Makefile" ;;
     "dlls/d3dx8/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/d3dx8/tests/Makefile" ;;
+    "dlls/d3dx9_36/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/d3dx9_36/Makefile" ;;
     "dlls/d3dxof/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/d3dxof/Makefile" ;;
     "dlls/dbghelp/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/dbghelp/Makefile" ;;
     "dlls/dciman32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/dciman32/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index f0fd49c..328dfc8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1700,6 +1700,7 @@
 AC_CONFIG_FILES([dlls/d3drm/tests/Makefile])
 AC_CONFIG_FILES([dlls/d3dx8/Makefile])
 AC_CONFIG_FILES([dlls/d3dx8/tests/Makefile])
+AC_CONFIG_FILES([dlls/d3dx9_36/Makefile])
 AC_CONFIG_FILES([dlls/d3dxof/Makefile])
 AC_CONFIG_FILES([dlls/dbghelp/Makefile])
 AC_CONFIG_FILES([dlls/dciman32/Makefile])
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 31759cc..452a444 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -48,6 +48,7 @@
 	d3dim \
 	d3drm \
 	d3dx8 \
+	d3dx9_36 \
 	d3dxof \
 	dbghelp \
 	dciman32 \
diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in
new file mode 100644
index 0000000..b2a4f4c
--- /dev/null
+++ b/dlls/d3dx9_36/Makefile.in
@@ -0,0 +1,14 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = d3dx9_36.dll
+IMPORTS   = d3d9 d3dx8 kernel32
+EXTRALIBS = -ldxguid -luuid
+
+C_SRCS = \
+	d3dx9_36_main.c
+
+@MAKE_DLL_RULES@
+
+@DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
new file mode 100644
index 0000000..8113557
--- /dev/null
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -0,0 +1,336 @@
+@ stub D3DXAssembleShader
+@ stub D3DXAssembleShaderFromFileA
+@ stub D3DXAssembleShaderFromFileW
+@ stub D3DXAssembleShaderFromResourceA
+@ stub D3DXAssembleShaderFromResourceW
+@ stdcall D3DXBoxBoundProbe(ptr ptr ptr ptr) d3dx8.D3DXBoxBoundProbe
+@ stub D3DXCheckCubeTextureRequirements
+@ stub D3DXCheckTextureRequirements
+@ stub D3DXCheckVersion
+@ stub D3DXCheckVolumeTextureRequirements
+@ stub D3DXCleanMesh
+@ stdcall D3DXColorAdjustContrast(ptr ptr long) d3dx8.D3DXColorAdjustContrast
+@ stdcall D3DXColorAdjustSaturation(ptr ptr long) d3dx8.D3DXColorAdjustSaturation
+@ stub D3DXCompileShader
+@ stub D3DXCompileShaderFromFileA
+@ stub D3DXCompileShaderFromFileW
+@ stub D3DXCompileShaderFromResourceA
+@ stub D3DXCompileShaderFromResourceW
+@ stub D3DXComputeBoundingBox
+@ stub D3DXComputeBoundingSphere
+@ stub D3DXComputeIMTFromPerTexelSignal
+@ stub D3DXComputeIMTFromPerVertexSignal
+@ stub D3DXComputeIMTFromSignal
+@ stub D3DXComputeIMTFromTexture
+@ stub D3DXComputeNormalMap
+@ stdcall D3DXComputeNormals(ptr ptr) d3dx8.D3DXComputeNormals
+@ stub D3DXComputeTangent
+@ stub D3DXComputeTangentFrame
+@ stub D3DXComputeTangentFrameEx
+@ stub D3DXConcatenateMeshes
+@ stub D3DXConvertMeshSubsetToSingleStrip
+@ stub D3DXConvertMeshSubsetToStrips
+@ stub D3DXCreateAnimationController
+@ stub D3DXCreateBox
+@ stdcall D3DXCreateBuffer(long ptr) d3dx8.D3DXCreateBuffer
+@ stub D3DXCreateCompressedAnimationSet
+@ stub D3DXCreateCubeTexture
+@ stub D3DXCreateCubeTextureFromFileA
+@ stub D3DXCreateCubeTextureFromFileExA
+@ stub D3DXCreateCubeTextureFromFileExW
+@ stub D3DXCreateCubeTextureFromFileInMemory
+@ stub D3DXCreateCubeTextureFromFileInMemoryEx
+@ stub D3DXCreateCubeTextureFromFileW
+@ stub D3DXCreateCubeTextureFromResourceA
+@ stub D3DXCreateCubeTextureFromResourceExA
+@ stub D3DXCreateCubeTextureFromResourceExW
+@ stub D3DXCreateCubeTextureFromResourceW
+@ stub D3DXCreateCylinder
+@ stub D3DXCreateEffect
+@ stub D3DXCreateEffectCompiler
+@ stub D3DXCreateEffectCompilerFromFileA
+@ stub D3DXCreateEffectCompilerFromFileW
+@ stub D3DXCreateEffectCompilerFromResourceA
+@ stub D3DXCreateEffectCompilerFromResourceW
+@ stub D3DXCreateEffectEx
+@ stub D3DXCreateEffectFromFileA
+@ stub D3DXCreateEffectFromFileExA
+@ stub D3DXCreateEffectFromFileExW
+@ stub D3DXCreateEffectFromFileW
+@ stub D3DXCreateEffectFromResourceA
+@ stub D3DXCreateEffectFromResourceExA
+@ stub D3DXCreateEffectFromResourceExW
+@ stub D3DXCreateEffectFromResourceW
+@ stub D3DXCreateEffectPool
+@ stub D3DXCreateFontA
+@ stub D3DXCreateFontIndirectA
+@ stub D3DXCreateFontIndirectW
+@ stub D3DXCreateFontW
+@ stub D3DXCreateFragmentLinker
+@ stub D3DXCreateFragmentLinkerEx
+@ stub D3DXCreateKeyframedAnimationSet
+@ stub D3DXCreateLine
+@ stdcall D3DXCreateMatrixStack(long ptr) d3dx8.D3DXCreateMatrixStack
+@ stub D3DXCreateMesh
+@ stub D3DXCreateMeshFVF
+@ stub D3DXCreateNPatchMesh
+@ stub D3DXCreatePMeshFromStream
+@ stub D3DXCreatePatchMesh
+@ stub D3DXCreatePolygon
+@ stub D3DXCreatePRTBuffer
+@ stub D3DXCreatePRTBufferTex
+@ stub D3DXCreatePRTCompBuffer
+@ stub D3DXCreatePRTEngine
+@ stub D3DXCreateRenderToEnvMap
+@ stub D3DXCreateRenderToSurface
+@ stdcall D3DXCreateSPMesh(ptr ptr ptr ptr ptr) d3dx8.D3DXCreateSPMesh
+@ stub D3DXCreateSkinInfo
+@ stub D3DXCreateSkinInfoFromBlendedMesh
+@ stub D3DXCreateSkinInfoFVF
+@ stub D3DXCreateSphere
+@ stub D3DXCreateSprite
+@ stub D3DXCreateTeapot
+@ stub D3DXCreateTextA
+@ stub D3DXCreateTextW
+@ stub D3DXCreateTexture
+@ stub D3DXCreateTextureFromFileA
+@ stub D3DXCreateTextureFromFileExA
+@ stub D3DXCreateTextureFromFileExW
+@ stub D3DXCreateTextureFromFileInMemory
+@ stub D3DXCreateTextureFromFileInMemoryEx
+@ stub D3DXCreateTextureFromFileW
+@ stub D3DXCreateTextureFromResourceA
+@ stub D3DXCreateTextureFromResourceExA
+@ stub D3DXCreateTextureFromResourceExW
+@ stub D3DXCreateTextureFromResourceW
+@ stub D3DXCreateTextureGutterHelper
+@ stub D3DXCreateTextureShader
+@ stub D3DXCreateTorus
+@ stub D3DXCreateVolumeTexture
+@ stub D3DXCreateVolumeTextureFromFileA
+@ stub D3DXCreateVolumeTextureFromFileExA
+@ stub D3DXCreateVolumeTextureFromFileExW
+@ stub D3DXCreateVolumeTextureFromFileInMemory
+@ stub D3DXCreateVolumeTextureFromFileInMemoryEx
+@ stub D3DXCreateVolumeTextureFromFileW
+@ stub D3DXCreateVolumeTextureFromResourceA
+@ stub D3DXCreateVolumeTextureFromResourceExA
+@ stub D3DXCreateVolumeTextureFromResourceExW
+@ stub D3DXCreateVolumeTextureFromResourceW
+@ stub D3DXDebugMute
+@ stub D3DXDeclaratorFromFVF
+@ stub D3DXDisassembleEffect
+@ stub D3DXDisassembleShader
+@ stub D3DXFileCreate
+@ stub D3DXFillCubeTexture
+@ stub D3DXFillCubeTextureTX
+@ stub D3DXFillTexture
+@ stub D3DXFillTextureTX
+@ stub D3DXFillVolumeTexture
+@ stub D3DXFillVolumeTextureTX
+@ stub D3DXFilterTexture
+@ stub D3DXFindShaderComment
+@ stub D3DXFloat16To32Array
+@ stub D3DXFloat32To16Array
+@ stub D3DXFrameAppendChild
+@ stub D3DXFrameCalculateBoundingSphere
+@ stub D3DXFrameDestroy
+@ stub D3DXFrameFind
+@ stub D3DXFrameNumNamedMatrices
+@ stub D3DXFrameRegisterNamedMatrices
+@ stdcall D3DXFresnelTerm(long long) d3dx8.D3DXFresnelTerm
+@ stub D3DXFVFFromDeclarator
+@ stub D3DXGatherFragments
+@ stub D3DXGatherFragmentsFromFileA
+@ stub D3DXGatherFragmentsFromFileW
+@ stub D3DXGatherFragmentsFromResourceA
+@ stub D3DXGatherFragmentsFromResourceW
+@ stub D3DXGenerateOutputDecl
+@ stdcall D3DXGeneratePMesh(ptr ptr ptr ptr long long ptr) d3dx8.D3DXGeneratePMesh
+@ stub D3DXGetDeclLength
+@ stub D3DXGetDeclVertexSize
+@ stub D3DXGetDriverLevel
+@ stdcall D3DXGetFVFVertexSize(long) d3dx8.D3DXGetFVFVertexSize
+@ stdcall D3DXGetImageInfoFromFileA(ptr ptr) d3dx8.D3DXGetImageInfoFromFileA
+@ stdcall D3DXGetImageInfoFromFileInMemory(ptr long ptr) d3dx8.D3DXGetImageInfoFromFileInMemory
+@ stdcall D3DXGetImageInfoFromFileW(ptr ptr) d3dx8.D3DXGetImageInfoFromFileW
+@ stdcall D3DXGetImageInfoFromResourceA(long ptr ptr) d3dx8.D3DXGetImageInfoFromResourceA
+@ stdcall D3DXGetImageInfoFromResourceW(long ptr ptr) d3dx8.D3DXGetImageInfoFromResourceW
+@ stub D3DXGetPixelShaderProfile
+@ stub D3DXGetShaderConstantTable
+@ stub D3DXGetShaderConstantTableEx
+@ stub D3DXGetShaderInputSemantics
+@ stub D3DXGetShaderOutputSemantics
+@ stub D3DXGetShaderSamplers
+@ stub D3DXGetShaderSize
+@ stub D3DXGetShaderVersion
+@ stub D3DXGetVertexShaderProfile
+@ stdcall D3DXIntersect(ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) d3dx8.D3DXIntersect
+@ stdcall D3DXIntersectSubset(ptr long ptr ptr ptr ptr ptr ptr ptr ptr ptr) d3dx8.D3DXIntersectSubset
+@ stdcall D3DXIntersectTri(ptr ptr ptr ptr ptr ptr ptr ptr) d3dx8.D3DXIntersectTri
+@ stub D3DXLoadMeshFromXA
+@ stub D3DXLoadMeshFromXInMemory
+@ stub D3DXLoadMeshFromXResource
+@ stub D3DXLoadMeshFromXW
+@ stub D3DXLoadMeshFromXof
+@ stub D3DXLoadMeshHierarchyFromXA
+@ stub D3DXLoadMeshHierarchyFromXInMemory
+@ stub D3DXLoadMeshHierarchyFromXW
+@ stub D3DXLoadPatchMeshFromXof
+@ stub D3DXLoadPRTBufferFromFileA
+@ stub D3DXLoadPRTBufferFromFileW
+@ stub D3DXLoadPRTCompBufferFromFileA
+@ stub D3DXLoadPRTCompBufferFromFileW
+@ stub D3DXLoadSkinMeshFromXof
+@ stub D3DXLoadSurfaceFromFileA
+@ stub D3DXLoadSurfaceFromFileInMemory
+@ stub D3DXLoadSurfaceFromFileW
+@ stub D3DXLoadSurfaceFromMemory
+@ stub D3DXLoadSurfaceFromResourceA
+@ stub D3DXLoadSurfaceFromResourceW
+@ stub D3DXLoadSurfaceFromSurface
+@ stub D3DXLoadVolumeFromFileA
+@ stub D3DXLoadVolumeFromFileInMemory
+@ stub D3DXLoadVolumeFromFileW
+@ stub D3DXLoadVolumeFromMemory
+@ stub D3DXLoadVolumeFromResourceA
+@ stub D3DXLoadVolumeFromResourceW
+@ stub D3DXLoadVolumeFromVolume
+@ stdcall D3DXMatrixAffineTransformation(ptr long ptr ptr ptr) d3dx8.D3DXMatrixAffineTransformation
+@ stub D3DXMatrixAffineTransformation2D
+@ stub D3DXMatrixDecompose
+@ stdcall D3DXMatrixDeterminant(ptr) d3dx8.D3DXMatrixfDeterminant
+@ stdcall D3DXMatrixInverse(ptr ptr ptr) d3dx8.D3DXMatrixInverse
+@ stdcall D3DXMatrixLookAtLH(ptr ptr ptr ptr) d3dx8.D3DXMatrixLookAtLH
+@ stdcall D3DXMatrixLookAtRH(ptr ptr ptr ptr) d3dx8.D3DXMatrixLookAtRH
+@ stdcall D3DXMatrixMultiply(ptr ptr ptr) d3dx8.D3DXMatrixMultiply
+@ stdcall D3DXMatrixMultiplyTranspose(ptr ptr ptr) d3dx8.D3DXMatrixMultiplyTranspose
+@ stdcall D3DXMatrixOrthoLH(ptr long long long long) d3dx8.D3DXMatrixOrthoLH
+@ stdcall D3DXMatrixOrthoOffCenterLH(ptr long long long long long long) d3dx8.D3DXMatrixOrthoOffCenterLH
+@ stdcall D3DXMatrixOrthoOffCenterRH(ptr long long long long long long) d3dx8.D3DXMatrixOrthoOffCenterRH
+@ stdcall D3DXMatrixOrthoRH(ptr long long long long) d3dx8.D3DXMatrixOrthoRH
+@ stdcall D3DXMatrixPerspectiveFovLH(ptr long long long long) d3dx8.D3DXMatrixPerspectiveFovLH
+@ stdcall D3DXMatrixPerspectiveFovRH(ptr long long long long) d3dx8.D3DXMatrixPerspectiveFovRH
+@ stdcall D3DXMatrixPerspectiveLH(ptr long long long long) d3dx8.D3DXMatrixPerspectiveLH
+@ stdcall D3DXMatrixPerspectiveOffCenterLH(ptr long long long long long long) d3dx8.D3DXMatrixPerspectiveOffCenterLH
+@ stdcall D3DXMatrixPerspectiveOffCenterRH(ptr long long long long long long) d3dx8.D3DXMatrixPerspectiveOffCenterRH
+@ stdcall D3DXMatrixPerspectiveRH(ptr long long long long) d3dx8.D3DXMatrixPerspectiveRH
+@ stdcall D3DXMatrixReflect(ptr ptr) d3dx8.D3DXMatrixReflect
+@ stdcall D3DXMatrixRotationAxis(ptr ptr long) d3dx8.D3DXMatrixRotationAxis
+@ stdcall D3DXMatrixRotationQuaternion(ptr ptr) d3dx8.D3DXMatrixRotationQuaternion
+@ stdcall D3DXMatrixRotationX(ptr long) d3dx8.D3DXMatrixRotationX
+@ stdcall D3DXMatrixRotationY(ptr long) d3dx8.D3DXMatrixRotationY
+@ stdcall D3DXMatrixRotationYawPitchRoll(ptr long long long) d3dx8.D3DXMatrixRotationYawPitchRoll
+@ stdcall D3DXMatrixRotationZ(ptr long) d3dx8.D3DXMatrixRotationZ
+@ stdcall D3DXMatrixScaling(ptr long long long) d3dx8.D3DXMatrixScaling
+@ stdcall D3DXMatrixShadow(ptr ptr ptr) d3dx8.D3DXMatrixShadow
+@ stdcall D3DXMatrixTransformation(ptr ptr ptr ptr ptr ptr ptr) d3dx8.D3DXMatrixTransformation
+@ stub D3DXMatrixTransformation2D
+@ stdcall D3DXMatrixTranslation(ptr long long long) d3dx8.D3DXMatrixTranslation
+@ stdcall D3DXMatrixTranspose(ptr ptr) d3dx8.D3DXMatrixTranspose
+@ stub D3DXOptimizeFaces
+@ stub D3DXOptimizeVertices
+@ stdcall D3DXPlaneFromPointNormal(ptr ptr ptr) d3dx8.D3DXPlaneFromPointNormal
+@ stdcall D3DXPlaneFromPoints(ptr ptr ptr ptr) d3dx8.D3DXPlaneFromPoints
+@ stdcall D3DXPlaneIntersectLine(ptr ptr ptr ptr) d3dx8.D3DXPlaneIntersectLine
+@ stdcall D3DXPlaneNormalize(ptr ptr) d3dx8.D3DXPlaneNormalize
+@ stdcall D3DXPlaneTransform(ptr ptr ptr) d3dx8.D3DXPlaneTransform
+@ stub D3DXPlaneTransformArray
+@ stub D3DXPreprocessShader
+@ stub D3DXPreprocessShaderFromFileA
+@ stub D3DXPreprocessShaderFromFileW
+@ stub D3DXPreprocessShaderFromResourceA
+@ stub D3DXPreprocessShaderFromResourceW
+@ stdcall D3DXQuaternionBaryCentric(ptr ptr ptr ptr long long) d3dx8.D3DXQuaternionBaryCentric
+@ stdcall D3DXQuaternionExp(ptr ptr) d3dx8.D3DXQuaternionExp
+@ stdcall D3DXQuaternionInverse(ptr ptr) d3dx8.D3DXQuaternionInverse
+@ stdcall D3DXQuaternionLn(ptr ptr) d3dx8.D3DXQuaternionLn
+@ stdcall D3DXQuaternionMultiply(ptr ptr ptr) d3dx8.D3DXQuaternionMultiply
+@ stdcall D3DXQuaternionNormalize(ptr ptr) d3dx8.D3DXQuaternionNormalize
+@ stdcall D3DXQuaternionRotationAxis(ptr ptr long) d3dx8.D3DXQuaternionRotationAxis
+@ stdcall D3DXQuaternionRotationMatrix(ptr ptr) d3dx8.D3DXQuaternionRotationMatrix
+@ stdcall D3DXQuaternionRotationYawPitchRoll(ptr long long long) d3dx8.D3DXQuaternionRotationYawPitchRoll
+@ stdcall D3DXQuaternionSlerp(ptr ptr ptr long) d3dx8.D3DXQuaternionSlerp
+@ stdcall D3DXQuaternionSquad(ptr ptr ptr ptr ptr long) d3dx8.D3DXQuaternionSquad
+@ stdcall D3DXQuaternionSquadSetup(ptr ptr ptr ptr ptr ptr ptr) d3dx8.D3DXQuaternionSquadSetup
+@ stdcall D3DXQuaternionToAxisAngle(ptr ptr ptr) d3dx8.D3DXQuaternionToAxisAngle
+@ stub D3DXRectPatchSize
+@ stub D3DXSaveMeshHierarchyToFileA
+@ stub D3DXSaveMeshHierarchyToFileW
+@ stub D3DXSaveMeshToXA
+@ stub D3DXSaveMeshToXW
+@ stub D3DXSavePRTBufferToFileA
+@ stub D3DXSavePRTBufferToFileW
+@ stub D3DXSavePRTCompBufferToFileA
+@ stub D3DXSavePRTCompBufferToFileW
+@ stub D3DXSaveSurfaceToFileA
+@ stub D3DXSaveSurfaceToFileInMemory
+@ stub D3DXSaveSurfaceToFileW
+@ stub D3DXSaveTextureToFileA
+@ stub D3DXSaveTextureToFileInMemory
+@ stub D3DXSaveTextureToFileW
+@ stub D3DXSaveVolumeToFileA
+@ stub D3DXSaveVolumeToFileInMemory
+@ stub D3DXSaveVolumeToFileW
+@ stub D3DXSHAdd
+@ stub D3DXSHDot
+@ stub D3DXSHEvalConeLight
+@ stub D3DXSHEvalDirection
+@ stub D3DXSHEvalDirectionalLight
+@ stub D3DXSHEvalHemisphereLight
+@ stub D3DXSHEvalSphericalLight
+@ stub D3DXSHMultiply2
+@ stub D3DXSHMultiply3
+@ stub D3DXSHMultiply4
+@ stub D3DXSHMultiply5
+@ stub D3DXSHMultiply6
+@ stub D3DXSHProjectCubeMap
+@ stub D3DXSHPRTCompSplitMeshSC
+@ stub D3DXSHPRTCompSuperCluster
+@ stub D3DXSHRotate
+@ stub D3DXSHRotateZ
+@ stub D3DXSHScale
+@ stdcall D3DXSimplifyMesh(ptr ptr ptr ptr long long ptr) d3dx8.D3DXSimplifyMesh
+@ stdcall D3DXSphereBoundProbe(ptr long ptr ptr) d3dx8.D3DXSphereBoundProbe
+@ stdcall D3DXSplitMesh(ptr ptr long long ptr ptr ptr ptr ptr) d3dx8.D3DXSplitMesh
+@ stdcall D3DXTessellateNPatches(ptr ptr long long ptr ptr) d3dx8.D3DXTessellateNPatches
+@ stub D3DXTessellateRectPatch
+@ stub D3DXTessellateTriPatch
+@ stub D3DXTriPatchSize
+@ stub D3DXUVAtlasCreate
+@ stub D3DXUVAtlasPack
+@ stub D3DXUVAtlasPartition
+@ stdcall D3DXValidMesh(ptr ptr ptr) d3dx8.D3DXValidMesh
+@ stub D3DXValidPatchMesh
+@ stdcall D3DXVec2BaryCentric(ptr ptr ptr ptr long long) d3dx8.D3DXVec2BaryCentric
+@ stdcall D3DXVec2CatmullRom(ptr ptr ptr ptr ptr long) d3dx8.D3DXVec2CatmullRom
+@ stdcall D3DXVec2Hermite(ptr ptr ptr ptr ptr long) d3dx8.D3DXVec2Hermite
+@ stdcall D3DXVec2Normalize(ptr ptr) d3dx8.D3DXVec2Normalize
+@ stdcall D3DXVec2Transform(ptr ptr ptr) d3dx8.D3DXVec2Transform
+@ stub D3DXVec2TransformArray
+@ stdcall D3DXVec2TransformCoord(ptr ptr ptr) d3dx8.D3DXVec2TransformCoord
+@ stub D3DXVec2TransformCoordArray
+@ stdcall D3DXVec2TransformNormal(ptr ptr ptr) d3dx8.D3DXVec2TransformNormal
+@ stub D3DXVec2TransformNormalArray
+@ stdcall D3DXVec3BaryCentric(ptr ptr ptr ptr long long) d3dx8.D3DXVec3BaryCentric
+@ stdcall D3DXVec3CatmullRom(ptr ptr ptr ptr ptr long) d3dx8.D3DXVec3CatmullRom
+@ stdcall D3DXVec3Hermite(ptr ptr ptr ptr ptr long) d3dx8.D3DXVec3Hermite
+@ stdcall D3DXVec3Normalize(ptr ptr) d3dx8.D3DXVec3Normalize
+@ stdcall D3DXVec3Project(ptr ptr ptr ptr ptr ptr) d3dx8.D3DXVec3Project
+@ stub D3DXVec3ProjectArray
+@ stdcall D3DXVec3Transform(ptr ptr ptr) d3dx8.D3DXVec3Transform
+@ stub D3DXVec3TransformArray
+@ stdcall D3DXVec3TransformCoord(ptr ptr ptr) d3dx8.D3DXVec3TransformCoord
+@ stub D3DXVec3TransformCoordArray
+@ stdcall D3DXVec3TransformNormal(ptr ptr ptr) d3dx8.D3DXVec3TransformNormal
+@ stub D3DXVec3TransformNormalArray
+@ stdcall D3DXVec3Unproject(ptr ptr ptr ptr ptr ptr) d3dx8.D3DXVec3Unproject
+@ stub D3DXVec3UnprojectArray
+@ stdcall D3DXVec4BaryCentric(ptr ptr ptr ptr long long) d3dx8.D3DXVec4BaryCentric
+@ stdcall D3DXVec4CatmullRom(ptr ptr ptr ptr ptr long) d3dx8.D3DXVec4CatmullRom
+@ stdcall D3DXVec4Cross(ptr ptr ptr ptr) d3dx8.D3DXVec4Cross
+@ stdcall D3DXVec4Hermite(ptr ptr ptr ptr ptr long) d3dx8.D3DXVec4Hermite
+@ stdcall D3DXVec4Normalize(ptr ptr) d3dx8.D3DXVec4Normalize
+@ stdcall D3DXVec4Transform(ptr ptr ptr) d3dx8.D3DXVec4Transform
+@ stub D3DXVec4TransformArray
+@ stub D3DXWeldVertices
diff --git a/dlls/d3dx9_36/d3dx9_36_main.c b/dlls/d3dx9_36/d3dx9_36_main.c
new file mode 100644
index 0000000..c5d6716
--- /dev/null
+++ b/dlls/d3dx9_36/d3dx9_36_main.c
@@ -0,0 +1,53 @@
+/*
+ * Direct3D X 9 main file
+ *
+ * Copyright (C) 2007 David Adam
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+
+#include "config.h"
+#include "wine/port.h"
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "wine/debug.h"
+
+#include "d3dx9.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
+
+/***********************************************************************
+ * DllMain.
+ */
+BOOL WINAPI DllMain(HINSTANCE inst, DWORD reason, LPVOID reserved)
+{
+    switch(reason)
+    {
+    case DLL_WINE_PREATTACH:
+        return FALSE; /* prefer native version */
+    case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(inst);
+        break;
+    case DLL_PROCESS_DETACH:
+        break;
+    }
+    return TRUE;
+}