From 962567b2fa1664f80c8dd990974ae505c8943fc8 Mon Sep 17 00:00:00 2001 From: Elisha Riedlinger Date: Sat, 7 Sep 2024 11:35:41 -0700 Subject: [PATCH] Change some return values --- Dllmain/BuildNo.rc | 2 +- ddraw/IDirect3DDeviceX.cpp | 110 +++++++++++++++++++------------------ 2 files changed, 58 insertions(+), 54 deletions(-) diff --git a/Dllmain/BuildNo.rc b/Dllmain/BuildNo.rc index ff495efd..4db10b60 100644 --- a/Dllmain/BuildNo.rc +++ b/Dllmain/BuildNo.rc @@ -1 +1 @@ -#define BUILD_NUMBER 7119 +#define BUILD_NUMBER 7120 diff --git a/ddraw/IDirect3DDeviceX.cpp b/ddraw/IDirect3DDeviceX.cpp index e7deada0..aeb1b4ed 100644 --- a/ddraw/IDirect3DDeviceX.cpp +++ b/ddraw/IDirect3DDeviceX.cpp @@ -307,7 +307,7 @@ HRESULT m_IDirect3DDeviceX::SetTransform(D3DTRANSFORMSTATETYPE dtstTransformStat // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dtstTransformStateType) @@ -369,7 +369,7 @@ HRESULT m_IDirect3DDeviceX::GetTransform(D3DTRANSFORMSTATETYPE dtstTransformStat // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dtstTransformStateType) @@ -652,7 +652,7 @@ HRESULT m_IDirect3DDeviceX::EnumTextureFormats(LPD3DENUMPIXELFORMATSCALLBACK lpd // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, false))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } LPDIRECT3D9 d3d9Object = ddrawParent->GetDirect3D9Object(); @@ -767,7 +767,7 @@ HRESULT m_IDirect3DDeviceX::GetTexture(DWORD dwStage, LPDIRECT3DTEXTURE2* lplpTe if (!pTextureX) { LOG_LIMIT(100, __FUNCTION__ << " Error: could not get texture!"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } // Add ref to texture @@ -799,7 +799,7 @@ HRESULT m_IDirect3DDeviceX::GetTexture(DWORD dwStage, LPDIRECTDRAWSURFACE7* lplp return DDERR_INVALIDPARAMS; } - HRESULT hr = DDERR_INVALIDOBJECT; + HRESULT hr = DDERR_GENERIC; *lplpTexture = nullptr; @@ -855,7 +855,7 @@ HRESULT m_IDirect3DDeviceX::SetTextureHandle(DWORD tHandle, m_IDirect3DTextureX* if (!tHandle || !lpTexture) { LOG_LIMIT(100, __FUNCTION__ << " Error: NULL pointer found! " << lpTexture << " -> " << tHandle); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } TextureHandleMap[tHandle] = lpTexture; @@ -891,7 +891,7 @@ HRESULT m_IDirect3DDeviceX::SetTexture(DWORD dwStage, LPDIRECT3DTEXTURE2 lpTextu if (!pSurfaceX) { LOG_LIMIT(100, __FUNCTION__ << " Error: could not get surface!"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } return SetTexture(dwStage, (LPDIRECTDRAWSURFACE7)pSurfaceX->GetWrapperInterfaceX(7)); @@ -919,7 +919,7 @@ HRESULT m_IDirect3DDeviceX::SetTexture(DWORD dwStage, LPDIRECTDRAWSURFACE7 lpSur // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } m_IDirectDrawSurfaceX* lpDDSrcSurfaceX = nullptr; @@ -949,7 +949,7 @@ HRESULT m_IDirect3DDeviceX::SetTexture(DWORD dwStage, LPDIRECTDRAWSURFACE7 lpSur if (!pTexture9) { LOG_LIMIT(100, __FUNCTION__ << " Error: could not get texture!"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } hr = (*d3d9Device)->SetTexture(dwStage, pTexture9); @@ -997,7 +997,7 @@ HRESULT m_IDirect3DDeviceX::SetRenderTarget(LPDIRECTDRAWSURFACE7 lpNewRenderTarg // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } m_IDirectDrawSurfaceX* lpDDSrcSurfaceX = nullptr; @@ -1102,7 +1102,7 @@ HRESULT m_IDirect3DDeviceX::GetTextureStageState(DWORD dwStage, D3DTEXTURESTAGES // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dwState) @@ -1119,9 +1119,9 @@ HRESULT m_IDirect3DDeviceX::GetTextureStageState(DWORD dwStage, D3DTEXTURESTAGES } else { - LOG_LIMIT(100, __FUNCTION__ << " Error: AddressU and AddressV don't match"); + LOG_LIMIT(100, __FUNCTION__ << " Warning: AddressU and AddressV don't match"); *lpdwValue = 0; - return DDERR_GENERIC; + return D3D_OK; } } case D3DTSS_ADDRESSU: @@ -1207,7 +1207,7 @@ HRESULT m_IDirect3DDeviceX::SetTextureStageState(DWORD dwStage, D3DTEXTURESTAGES // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dwState) @@ -1341,7 +1341,7 @@ HRESULT m_IDirect3DDeviceX::GetCaps(LPD3DDEVICEDESC7 lpD3DDevDesc) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } D3DCAPS9 Caps9 = {}; @@ -1663,7 +1663,7 @@ HRESULT m_IDirect3DDeviceX::SetViewport(LPD3DVIEWPORT7 lpViewport) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->SetViewport((D3DVIEWPORT9*)lpViewport); @@ -1697,7 +1697,7 @@ HRESULT m_IDirect3DDeviceX::GetViewport(LPD3DVIEWPORT7 lpViewport) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->GetViewport((D3DVIEWPORT9*)lpViewport); @@ -1825,7 +1825,7 @@ HRESULT m_IDirect3DDeviceX::BeginScene() // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } // Set 3D Enabled @@ -1867,7 +1867,7 @@ HRESULT m_IDirect3DDeviceX::EndScene() // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } // The IDirect3DDevice7::EndScene method ends a scene that was begun by calling the IDirect3DDevice7::BeginScene method. @@ -1912,7 +1912,7 @@ HRESULT m_IDirect3DDeviceX::Clear(DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlag // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } // Clear primary surface @@ -1961,7 +1961,7 @@ HRESULT m_IDirect3DDeviceX::GetDirect3D(LPDIRECT3D7* lplpD3D, DWORD DirectXVersi // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, false))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } m_IDirect3DX** lplpD3DX = ddrawParent->GetCurrentD3D(); @@ -2057,7 +2057,7 @@ HRESULT m_IDirect3DDeviceX::GetLightState(D3DLIGHTSTATETYPE dwLightStateType, LP if (!RenderState) { LOG_LIMIT(100, __FUNCTION__ << " Error: unknown LightStateType: " << dwLightStateType); - return DDERR_HEIGHTALIGN; + return DDERR_INVALIDPARAMS; } return GetRenderState((D3DRENDERSTATETYPE)RenderState, lpdwLightState); @@ -2098,13 +2098,13 @@ HRESULT m_IDirect3DDeviceX::SetLightState(D3DLIGHTSTATETYPE dwLightStateType, DW if (!pMaterialX) { LOG_LIMIT(100, __FUNCTION__ << " Error: could not get material wrapper!"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } Material.dwSize = sizeof(D3DMATERIAL); if (FAILED(pMaterialX->GetMaterial(&Material))) { - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } } else @@ -2159,7 +2159,7 @@ HRESULT m_IDirect3DDeviceX::SetLightState(D3DLIGHTSTATETYPE dwLightStateType, DW if (!RenderState) { LOG_LIMIT(100, __FUNCTION__ << " Error: unknown LightStateType: " << dwLightStateType); - return DDERR_HEIGHTALIGN; + return DDERR_INVALIDPARAMS; } return SetRenderState((D3DRENDERSTATETYPE)RenderState, dwLightState); @@ -2250,7 +2250,7 @@ HRESULT m_IDirect3DDeviceX::SetLight(m_IDirect3DLight* lpLightInterface, LPD3DLI if (dwLightIndex == 0) { LOG_LIMIT(100, __FUNCTION__ << " Error: Failed to find an available Light Index"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } // Add light to index map @@ -2287,14 +2287,14 @@ HRESULT m_IDirect3DDeviceX::SetLight(DWORD dwLightIndex, LPD3DLIGHT7 lpLight) if (lpLight->dltType == D3DLIGHT_PARALLELPOINT || lpLight->dltType == D3DLIGHT_GLSPOT) { - LOG_LIMIT(100, __FUNCTION__ << " Error: Light Type: " << lpLight->dltType << " Not Implemented"); - return DDERR_UNSUPPORTED; + LOG_LIMIT(100, __FUNCTION__ << " Warning: Light Type: " << lpLight->dltType << " Not Implemented"); + return D3D_OK; } // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } D3DLIGHT9 Light = *(D3DLIGHT9*)lpLight; @@ -2341,7 +2341,7 @@ HRESULT m_IDirect3DDeviceX::GetLight(DWORD dwLightIndex, LPD3DLIGHT7 lpLight) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->GetLight(dwLightIndex, (D3DLIGHT9*)lpLight); @@ -2359,7 +2359,7 @@ HRESULT m_IDirect3DDeviceX::LightEnable(DWORD dwLightIndex, BOOL bEnable) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } HRESULT hr = (*d3d9Device)->LightEnable(dwLightIndex, bEnable); @@ -2402,7 +2402,7 @@ HRESULT m_IDirect3DDeviceX::GetLightEnable(m_IDirect3DLight* lpLightInterface, B if (dwLightIndex == 0) { LOG_LIMIT(100, __FUNCTION__ << " Error: Failed to find an available Light Index"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } return GetLightEnable(dwLightIndex, pbEnable); @@ -2422,7 +2422,7 @@ HRESULT m_IDirect3DDeviceX::GetLightEnable(DWORD dwLightIndex, BOOL* pbEnable) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->GetLightEnable(dwLightIndex, pbEnable); @@ -2440,7 +2440,7 @@ HRESULT m_IDirect3DDeviceX::MultiplyTransform(D3DTRANSFORMSTATETYPE dtstTransfor // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dtstTransformStateType) @@ -2524,7 +2524,8 @@ HRESULT m_IDirect3DDeviceX::SetMaterial(LPD3DMATERIAL lpMaterial) if (FAILED(hr)) { - return D3DERR_MATERIAL_SETDATA_FAILED; + LOG_LIMIT(100, __FUNCTION__ << " Error: Failed to set material: " << (D3DERR)hr); + return hr; } if (lpMaterial->dwRampSize) @@ -2554,7 +2555,7 @@ HRESULT m_IDirect3DDeviceX::SetMaterial(LPD3DMATERIAL7 lpMaterial) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->SetMaterial((D3DMATERIAL9*)lpMaterial); @@ -2577,7 +2578,7 @@ HRESULT m_IDirect3DDeviceX::GetMaterial(LPD3DMATERIAL7 lpMaterial) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->GetMaterial((D3DMATERIAL9*)lpMaterial); @@ -2595,7 +2596,7 @@ HRESULT m_IDirect3DDeviceX::SetRenderState(D3DRENDERSTATETYPE dwRenderStateType, // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dwRenderStateType) @@ -2612,14 +2613,14 @@ HRESULT m_IDirect3DDeviceX::SetRenderState(D3DRENDERSTATETYPE dwRenderStateType, if (!pTextureX) { LOG_LIMIT(100, __FUNCTION__ << " Error: could not get texture wrapper!"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } IDirect3DTexture2* lpTexture = (IDirect3DTexture2*)pTextureX->GetWrapperInterfaceX(2); if (!lpTexture) { LOG_LIMIT(100, __FUNCTION__ << " Error: could not get texture address!"); - return DDERR_GENERIC; + return DDERR_INVALIDPARAMS; } rsTextureHandle = dwRenderState; @@ -2679,6 +2680,7 @@ HRESULT m_IDirect3DDeviceX::SetRenderState(D3DRENDERSTATETYPE dwRenderStateType, case D3DFILTER_LINEAR: return (*d3d9Device)->SetSamplerState(0, D3DSAMP_MAGFILTER, dwRenderState); default: + LOG_LIMIT(100, __FUNCTION__ << " Warning: unsupported 'D3DRENDERSTATE_TEXTUREMAG' state: " << dwRenderState); return DDERR_INVALIDPARAMS; } case D3DRENDERSTATE_TEXTUREMIN: // 18 @@ -2703,6 +2705,7 @@ HRESULT m_IDirect3DDeviceX::SetRenderState(D3DRENDERSTATETYPE dwRenderStateType, (*d3d9Device)->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); return (*d3d9Device)->SetSamplerState(0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR); default: + LOG_LIMIT(100, __FUNCTION__ << " Warning: unsupported 'D3DRENDERSTATE_TEXTUREMIN' state: " << dwRenderState); return DDERR_INVALIDPARAMS; } case D3DRENDERSTATE_SRCBLEND: // 19 @@ -2836,6 +2839,7 @@ HRESULT m_IDirect3DDeviceX::SetRenderState(D3DRENDERSTATETYPE dwRenderStateType, rsTextureMapBlend = dwRenderState; return D3D_OK; default: + LOG_LIMIT(100, __FUNCTION__ << " Warning: unsupported 'D3DRENDERSTATE_TEXTUREMAPBLEND' state: " << dwRenderState); return DDERR_INVALIDPARAMS; } case D3DRENDERSTATE_ALPHAREF: // 24 @@ -3005,7 +3009,7 @@ HRESULT m_IDirect3DDeviceX::GetRenderState(D3DRENDERSTATETYPE dwRenderStateType, // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } switch ((DWORD)dwRenderStateType) @@ -3168,7 +3172,7 @@ HRESULT m_IDirect3DDeviceX::BeginStateBlock() // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->BeginStateBlock(); @@ -3191,7 +3195,7 @@ HRESULT m_IDirect3DDeviceX::EndStateBlock(LPDWORD lpdwBlockHandle) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } // ToDo: Validate BlockHandle @@ -3225,7 +3229,7 @@ HRESULT m_IDirect3DDeviceX::DrawPrimitive(D3DPRIMITIVETYPE dptPrimitiveType, DWO // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } dwFlags = (dwFlags & D3DDP_FORCE_DWORD); @@ -3345,7 +3349,7 @@ HRESULT m_IDirect3DDeviceX::DrawPrimitiveVB(D3DPRIMITIVETYPE dptPrimitiveType, L // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } dwFlags = (dwFlags & D3DDP_FORCE_DWORD); @@ -3459,7 +3463,7 @@ HRESULT m_IDirect3DDeviceX::DrawIndexedPrimitive(D3DPRIMITIVETYPE dptPrimitiveTy // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } dwFlags = (dwFlags & D3DDP_FORCE_DWORD); @@ -3579,7 +3583,7 @@ HRESULT m_IDirect3DDeviceX::DrawIndexedPrimitiveVB(D3DPRIMITIVETYPE dptPrimitive // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } dwFlags = (dwFlags & D3DDP_FORCE_DWORD); @@ -3725,7 +3729,7 @@ HRESULT m_IDirect3DDeviceX::ValidateDevice(LPDWORD lpdwPasses) // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->ValidateDevice(lpdwPasses); @@ -3814,7 +3818,7 @@ HRESULT m_IDirect3DDeviceX::CreateStateBlock(D3DSTATEBLOCKTYPE d3dsbtype, LPDWOR // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } // ToDo: Validate BlockHandle @@ -3840,7 +3844,7 @@ HRESULT m_IDirect3DDeviceX::SetClipStatus(LPD3DCLIPSTATUS lpD3DClipStatus) if (lpD3DClipStatus->dwFlags & D3DCLIPSTATUS_EXTENTS3) { LOG_LIMIT(100, __FUNCTION__ << " Error: only clip status flag is supported. Using unsupported dwFlags combination: " << Logging::hex(lpD3DClipStatus->dwFlags)); - return DDERR_UNSUPPORTED; + return DDERR_INVALIDPARAMS; } else if (lpD3DClipStatus->dwFlags & D3DCLIPSTATUS_EXTENTS2) { @@ -3867,7 +3871,7 @@ HRESULT m_IDirect3DDeviceX::SetClipStatus(LPD3DCLIPSTATUS lpD3DClipStatus) // Check for device interface /*if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } // Calculate the center of the bounding box @@ -4002,7 +4006,7 @@ HRESULT m_IDirect3DDeviceX::SetClipPlane(DWORD dwIndex, D3DVALUE* pPlaneEquation // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->SetClipPlane(dwIndex, pPlaneEquation); @@ -4025,7 +4029,7 @@ HRESULT m_IDirect3DDeviceX::GetClipPlane(DWORD dwIndex, D3DVALUE* pPlaneEquation // Check for device interface if (FAILED(CheckInterface(__FUNCTION__, true))) { - return DDERR_GENERIC; + return DDERR_INVALIDOBJECT; } return (*d3d9Device)->SetClipPlane(dwIndex, pPlaneEquation);