From b129645128dfc7b2568f40125c53d346692cb2f0 Mon Sep 17 00:00:00 2001 From: Robert Krawczyk Date: Thu, 5 Sep 2019 20:52:45 +0200 Subject: [PATCH] Some minor changes and refactoring --- Common/WinUtil.h | 2 +- MinHook/build/VC15/libMinHook.vcxproj | 1 + d3d9ex/AutoFix.cpp | 7 +++--- d3d9ex/Context.h | 2 +- d3d9ex/IDirect3DVertexBuffer9.cpp | 8 ++++--- d3d9ex/IDirect3DVertexBuffer9.h | 32 ++++++++++++++------------- d3d9ex/d3d9ex.vcxproj | 1 + 7 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Common/WinUtil.h b/Common/WinUtil.h index c27e9c6..f9b566c 100644 --- a/Common/WinUtil.h +++ b/Common/WinUtil.h @@ -80,7 +80,7 @@ inline void StringPathAppend(std::wstring* path, const std::wstring& more) inline bool FileExists(const std::string& path) { FILE* filep; - if (fopen_s(&filep, path.c_str(), "rb") == 0) + if (fopen_s(&filep, path.c_str(), "rb") == 0 && filep != 0) { fclose(filep); return true; diff --git a/MinHook/build/VC15/libMinHook.vcxproj b/MinHook/build/VC15/libMinHook.vcxproj index e4e953f..b90c0c1 100644 --- a/MinHook/build/VC15/libMinHook.vcxproj +++ b/MinHook/build/VC15/libMinHook.vcxproj @@ -30,6 +30,7 @@ Unicode true v142 + false StaticLibrary diff --git a/d3d9ex/AutoFix.cpp b/d3d9ex/AutoFix.cpp index 80c2d4c..829c4e0 100644 --- a/d3d9ex/AutoFix.cpp +++ b/d3d9ex/AutoFix.cpp @@ -30,7 +30,7 @@ void MainContext::EnableAutoFix() const std::map MainContext::behaviorflags_fixes = { { RESIDENT_EVIL_4, D3DCREATE_SOFTWARE_VERTEXPROCESSING }, - { KINGS_BOUNTY_LEGEND, D3DCREATE_MIXED_VERTEXPROCESSING }, + { KINGS_BOUNTY_LEGEND, D3DCREATE_MIXED_VERTEXPROCESSING } }; void MainContext::FixBehaviorFlagConflict(const DWORD flags_in, DWORD* flags_out) @@ -73,8 +73,9 @@ HRESULT APIENTRY MainContext::ApplyVertexBufferFix(IDirect3DDevice9 *pIDirect3DD // Final Fantasy XIII if (autofix == FINAL_FANTASY_XIII) { - if (Length == 358400 && FVF == 0 && Pool == D3DPOOL_MANAGED) { - Usage = D3DUSAGE_DYNAMIC; Pool = D3DPOOL_SYSTEMMEM; + if (Length == 358400 && Pool == D3DPOOL_MANAGED) { + Usage = D3DUSAGE_DYNAMIC | D3DUSAGE_WRITEONLY; + Pool = D3DPOOL_SYSTEMMEM; //IDirect3DVertexBuffer9* buffer = nullptr; //HRESULT hr = pIDirect3DDevice9->CreateVertexBuffer(Length, Usage, FVF, Pool, &buffer, NULL); diff --git a/d3d9ex/Context.h b/d3d9ex/Context.h index 42965b9..7bdf7c3 100644 --- a/d3d9ex/Context.h +++ b/d3d9ex/Context.h @@ -26,7 +26,7 @@ public: }; #define DECLARE_HOOK(type, callconv, name, ...) \ - public: type(callconv* True##name)(__VA_ARGS__); \ + public: type(callconv* True##name)(__VA_ARGS__) = name; \ private: static type callconv Hook##name(__VA_ARGS__); class MainContext diff --git a/d3d9ex/IDirect3DVertexBuffer9.cpp b/d3d9ex/IDirect3DVertexBuffer9.cpp index b7c34f9..61f15fe 100644 --- a/d3d9ex/IDirect3DVertexBuffer9.cpp +++ b/d3d9ex/IDirect3DVertexBuffer9.cpp @@ -8,9 +8,10 @@ #include "IDirect3DDevice9.h" #include "IDirect3DVertexBuffer9.h" -#define IDirect3DVertexBuffer9_PrintLog(format, ...) //PrintLog(format, __VA_ARGS__); +#define IDirect3DVertexBuffer9_PrintLog(format, ...) PrintLog(format, __VA_ARGS__); HRESULT APIENTRY hkIDirect3DVertexBuffer9::QueryInterface(REFIID riid, void** ppvObj) { + IDirect3DVertexBuffer9_PrintLog(__FUNCTION__); if (ppvObj == nullptr) return E_POINTER; if (riid == __uuidof(IUnknown) || @@ -32,6 +33,7 @@ ULONG APIENTRY hkIDirect3DVertexBuffer9::AddRef() { } ULONG APIENTRY hkIDirect3DVertexBuffer9::Release() { + IDirect3DVertexBuffer9_PrintLog(__FUNCTION__); const LONG ref = _InterlockedDecrement(&m_refCount); if (ref == 0) { @@ -52,12 +54,12 @@ HRESULT APIENTRY hkIDirect3DVertexBuffer9::GetDevice(IDirect3DDevice9** ppDevice } HRESULT APIENTRY hkIDirect3DVertexBuffer9::SetPrivateData(REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags) { - IDirect3DVertexBuffer9_PrintLog(__FUNCTION__); + IDirect3DVertexBuffer9_PrintLog(__FUNCTION__ " %s", GUIDtoStringA(refguid)); return m_pWrapped->SetPrivateData(refguid, pData, SizeOfData, Flags); } HRESULT APIENTRY hkIDirect3DVertexBuffer9::GetPrivateData(REFGUID refguid, void* pData, DWORD* pSizeOfData) { - IDirect3DVertexBuffer9_PrintLog(__FUNCTION__); + IDirect3DVertexBuffer9_PrintLog(__FUNCTION__ " %s", GUIDtoStringA(refguid)); return m_pWrapped->GetPrivateData(refguid, pData, pSizeOfData); } diff --git a/d3d9ex/IDirect3DVertexBuffer9.h b/d3d9ex/IDirect3DVertexBuffer9.h index 03e16d2..61840c4 100644 --- a/d3d9ex/IDirect3DVertexBuffer9.h +++ b/d3d9ex/IDirect3DVertexBuffer9.h @@ -6,21 +6,23 @@ interface hkIDirect3DVertexBuffer9 final : public IDirect3DVertexBuffer9 { public: - // original interface - STDMETHOD(QueryInterface)(REFIID riid, void** ppvObj); - STDMETHOD_(ULONG, AddRef)(); - STDMETHOD_(ULONG, Release)(); - STDMETHOD(GetDevice)(IDirect3DDevice9** ppDevice); - STDMETHOD(SetPrivateData)(REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags); - STDMETHOD(GetPrivateData)(REFGUID refguid, void* pData, DWORD* pSizeOfData); - STDMETHOD(FreePrivateData)(REFGUID refguid); - STDMETHOD_(DWORD, SetPriority)(DWORD PriorityNew); - STDMETHOD_(DWORD, GetPriority)(); - STDMETHOD_(void, PreLoad)(); - STDMETHOD_(D3DRESOURCETYPE, GetType)(); - STDMETHOD(Lock)(UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags); - STDMETHOD(Unlock)(); - STDMETHOD(GetDesc)(D3DVERTEXBUFFER_DESC *pDesc); + /*** IUnknown methods ***/ + STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj); + STDMETHOD_(ULONG, AddRef)(THIS); + STDMETHOD_(ULONG, Release)(THIS); + + /*** IDirect3DResource9 methods ***/ + STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice); + STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid, CONST void* pData, DWORD SizeOfData, DWORD Flags); + STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid, void* pData, DWORD* pSizeOfData); + STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid); + STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew); + STDMETHOD_(DWORD, GetPriority)(THIS); + STDMETHOD_(void, PreLoad)(THIS); + STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS); + STDMETHOD(Lock)(THIS_ UINT OffsetToLock, UINT SizeToLock, void** ppbData, DWORD Flags); + STDMETHOD(Unlock)(THIS); + STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC* pDesc); public: hkIDirect3DVertexBuffer9(IDirect3DDevice9* pIDirect3DDevice9, IDirect3DVertexBuffer9* pIDirect3DVertexBuffer9) diff --git a/d3d9ex/d3d9ex.vcxproj b/d3d9ex/d3d9ex.vcxproj index ca2cc31..3a9589f 100644 --- a/d3d9ex/d3d9ex.vcxproj +++ b/d3d9ex/d3d9ex.vcxproj @@ -45,6 +45,7 @@ MultiByte true v142 + false DynamicLibrary