Initial commit

This commit is contained in:
kuntz 2021-02-09 16:47:17 -06:00
parent 60dbd48484
commit 736d1aef61
23 changed files with 7289 additions and 1 deletions

View File

@ -1,2 +1,9 @@
# gamedbg
Direct3D9 DLL Injection for debugging and hooking into games.
Direct3D9 DLL Injection
This is a personal _unreleased_ tool I have used for hacking games and dumping/ripping game content such as textures, 3D models, shaders, and animations. Although it is specific to D3D9 Interfaces, the patterns can be updated to support newer Interfaces of DirectX.
This tool can launch games with the hooks pre-installed **or** attach to already-running games and infect the vector tables as they are called in real time. The former is useful for simple games, and the latter is useful for games with anti-cheat detection as the anti-cheat can be disabled first, and then this tool injected afterwards. Easy!
There are no instructions on how to use this tool, but it's pretty straight forward if you're familiar with hooking.

155
dll/IDirect3DBaseTexture9.inc Executable file
View File

@ -0,0 +1,155 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
btQueryInterface_proto typedef proto :dword, :dword, :dword
btQueryInterface_proc typedef ptr btQueryInterface_proto
btQueryInterfaceHook proto :dword, :dword, :dword
btQUERYINTERFACE EQU 000
.data?
btQueryInterface btQueryInterface_proc ?
.code
SQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DBaseTexture9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
btAddRef_proto typedef proto :dword
btAddRef_proc typedef ptr btAddRef_proto
btAddRefHook proto :dword
btADDREF EQU 004
.data?
btAddRef btAddRef_proc ?
.code
SAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DBaseTexture9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
btRelease_proto typedef proto :dword
btRelease_proc typedef ptr btRelease_proto
btReleaseHook proto :dword
btRELEASE EQU 008
.data?
btRelease btRelease_proc ?
.code
SRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DBaseTexture9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
btGetDevice_proto typedef proto :dword, :dword
btGetDevice_proc typedef ptr btGetDevice_proto
btGetDeviceHook proto :dword, :dword
btGETDEVICE EQU 012
.data?
btGetDevice btGetDevice_proc ?
.code
SGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
btSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
btSetPrivateData_proc typedef ptr btSetPrivateData_proto
btSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
btSETPRIVATEDATA EQU 016
.data?
btSetPrivateData btSetPrivateData_proc ?
.code
SSetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
btGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
btGetPrivateData_proc typedef ptr btGetPrivateData_proto
btGetPrivateDataHook proto :dword, :dword, :dword, :dword
btGETPRIVATEDATA EQU 020
.data?
btGetPrivateData btGetPrivateData_proc ?
.code
SGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
btFreePrivateData_proto typedef proto :dword, :dword
btFreePrivateData_proc typedef ptr btFreePrivateData_proto
btFreePrivateDataHook proto :dword, :dword
btFREEPRIVATEDATA EQU 024
.data?
btFreePrivateData btFreePrivateData_proc ?
.code
SFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
btSetPriority_proto typedef proto :dword, :dword
btSetPriority_proc typedef ptr btSetPriority_proto
btSetPriorityHook proto :dword, :dword
btSETPRIORITY EQU 028
.data?
btSetPriority btSetPriority_proc ?
.code
SSetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
btGetPriority_proto typedef proto :dword
btGetPriority_proc typedef ptr btGetPriority_proto
btGetPriorityHook proto :dword
btGETPRIORITY EQU 032
.data?
btGetPriority btGetPriority_proc ?
.code
SGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
btPreLoad_proto typedef proto :dword
btPreLoad_proc typedef ptr btPreLoad_proto
btPreLoadHook proto :dword
btPRELOAD EQU 036
.data?
btPreLoad btPreLoad_proc ?
.code
SPreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
btGetType_proto typedef proto :dword
btGetType_proc typedef ptr btGetType_proto
btGetTypeHook proto :dword
btGETTYPE EQU 040
.data?
btGetType btGetType_proc ?
.code
SGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetType(%08X)</font><br>", 0
;STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
btSetLOD_proto typedef proto :dword, :dword
btSetLOD_proc typedef ptr btSetLOD_proto
btSetLODHook proto :dword, :dword
btSETLOD EQU 044
.data?
btSetLOD btSetLOD_proc ?
.code
SSetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->SetLOD(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
btGetLOD_proto typedef proto :dword
btGetLOD_proc typedef ptr btGetLOD_proto
btGetLODHook proto :dword
btGETLOD EQU 048
.data?
btGetLOD btGetLOD_proc ?
.code
SGetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetLOD(%08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
btGetLevelCount_proto typedef proto :dword
btGetLevelCount_proc typedef ptr btGetLevelCount_proto
btGetLevelCountHook proto :dword
btGETLEVELCOUNT EQU 052
.data?
btGetLevelCount btGetLevelCount_proc ?
.code
SGetLevelCount db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetLevelCount(%08X)</font><br>", 0
;STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
btSetAutoGenFilterType_proto typedef proto :dword, :dword
btSetAutoGenFilterType_proc typedef ptr btSetAutoGenFilterType_proto
btSetAutoGenFilterTypeHook proto :dword, :dword
btSETAUTOGENFILTERTYPE EQU 056
.data?
btSetAutoGenFilterType btSetAutoGenFilterType_proc ?
.code
SSetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->SetAutoGenFilterType3(%08X, %08X)</font><br>", 0
;STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
btGetAutoGenFilterType_proto typedef proto :dword
btGetAutoGenFilterType_proc typedef ptr btGetAutoGenFilterType_proto
btGetAutoGenFilterTypeHook proto :dword
btGETAUTOGENFILTERTYPE EQU 060
.data?
btGetAutoGenFilterType btGetAutoGenFilterType_proc ?
.code
SGetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GetAutoGenFilterType(%08X)</font><br>", 0
;STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
btGenerateMipSubLevels_proto typedef proto :dword
btGenerateMipSubLevels_proc typedef ptr btGenerateMipSubLevels_proto
btGenerateMipSubLevelsHook proto :dword
btGENERATEMIPSUBLEVELS EQU 064
.data?
btGenerateMipSubLevels btGenerateMipSubLevels_proc ?
.code
SGenerateMipSubLevels db "<font color=0000A0>%08X: RETURNED %08X IDirect3DBaseTexture9->GenerateMipSubLevels(%08X)</font><br>", 0

200
dll/IDirect3DCubeTexture9.inc Executable file
View File

@ -0,0 +1,200 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
cxQueryInterface_proto typedef proto :dword, :dword, :dword
cxQueryInterface_proc typedef ptr cxQueryInterface_proto
cxQueryInterfaceHook proto :dword, :dword, :dword
cxQUERYINTERFACE EQU 000
.data?
cxQueryInterface cxQueryInterface_proc ?
.code
CQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DCubeTexture9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
cxAddRef_proto typedef proto :dword
cxAddRef_proc typedef ptr cxAddRef_proto
cxAddRefHook proto :dword
cxADDREF EQU 004
.data?
cxAddRef cxAddRef_proc ?
.code
CAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DCubeTexture9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
cxRelease_proto typedef proto :dword
cxRelease_proc typedef ptr cxRelease_proto
cxReleaseHook proto :dword
cxRELEASE EQU 008
.data?
cxRelease cxRelease_proc ?
.code
CRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DCubeTexture9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
cxGetDevice_proto typedef proto :dword, :dword
cxGetDevice_proc typedef ptr cxGetDevice_proto
cxGetDeviceHook proto :dword, :dword
cxGETDEVICE EQU 012
.data?
cxGetDevice cxGetDevice_proc ?
.code
CGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
cxSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
cxSetPrivateData_proc typedef ptr cxSetPrivateData_proto
cxSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
cxSETPRIVATEDATA EQU 016
.data?
cxSetPrivateData cxSetPrivateData_proc ?
.code
CSetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
cxGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
cxGetPrivateData_proc typedef ptr cxGetPrivateData_proto
cxGetPrivateDataHook proto :dword, :dword, :dword, :dword
cxGETPRIVATEDATA EQU 020
.data?
cxGetPrivateData cxGetPrivateData_proc ?
.code
CGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetPrivateData(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
cxFreePrivateData_proto typedef proto :dword, :dword
cxFreePrivateData_proc typedef ptr cxFreePrivateData_proto
cxFreePrivateDataHook proto :dword, :dword
cxFREEPRIVATEDATA EQU 024
.data?
cxFreePrivateData cxFreePrivateData_proc ?
.code
CFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
cxSetPriority_proto typedef proto :dword, :dword
cxSetPriority_proc typedef ptr cxSetPriority_proto
cxSetPriorityHook proto :dword, :dword
cxSETPRIORITY EQU 028
.data?
cxSetPriority cxSetPriority_proc ?
.code
CSetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
cxGetPriority_proto typedef proto :dword
cxGetPriority_proc typedef ptr cxGetPriority_proto
cxGetPriorityHook proto :dword
cxGETPRIORITY EQU 032
.data?
cxGetPriority cxGetPriority_proc ?
.code
CGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
cxPreLoad_proto typedef proto :dword
cxPreLoad_proc typedef ptr cxPreLoad_proto
cxPreLoadHook proto :dword
cxPRELOAD EQU 036
.data?
cxPreLoad cxPreLoad_proc ?
.code
CPreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
cxGetType_proto typedef proto :dword
cxGetType_proc typedef ptr cxGetType_proto
cxGetTypeHook proto :dword
cxGETTYPE EQU 040
.data?
cxGetType cxGetType_proc ?
.code
CGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetType(%08X)</font><br>", 0
;STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
cxSetLOD_proto typedef proto :dword, :dword
cxSetLOD_proc typedef ptr cxSetLOD_proto
cxSetLODHook proto :dword, :dword
cxSETLOD EQU 044
.data?
cxSetLOD cxSetLOD_proc ?
.code
CSetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->SetLOD(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
cxGetLOD_proto typedef proto :dword
cxGetLOD_proc typedef ptr cxGetLOD_proto
cxGetLODHook proto :dword
cxGETLOD EQU 048
.data?
cxGetLOD cxGetLOD_proc ?
.code
CGetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetLOD(%08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
cxGetLevelCount_proto typedef proto :dword
cxGetLevelCount_proc typedef ptr cxGetLevelCount_proto
cxGetLevelCountHook proto :dword
cxGETLEVELCOUNT EQU 052
.data?
cxGetLevelCount cxGetLevelCount_proc ?
.code
CGetLevelCount db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetLevelCount(%08X)</font><br>", 0
;STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
cxSetAutoGenFilterType_proto typedef proto :dword, :dword
cxSetAutoGenFilterType_proc typedef ptr cxSetAutoGenFilterType_proto
cxSetAutoGenFilterTypeHook proto :dword, :dword
cxSETAUTOGENFILTERTYPE EQU 056
.data?
cxSetAutoGenFilterType cxSetAutoGenFilterType_proc ?
.code
CSetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->SetAutoGenFilterType(%08X, %08X)</font><br>", 0
;STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
cxGetAutoGenFilterType_proto typedef proto :dword
cxGetAutoGenFilterType_proc typedef ptr cxGetAutoGenFilterType_proto
cxGetAutoGenFilterTypeHook proto :dword
cxGETAUTOGENFILTERTYPE EQU 060
.data?
cxGetAutoGenFilterType cxGetAutoGenFilterType_proc ?
.code
CGetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetAutoGenFilterType(%08X)</font><br>", 0
;STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
cxGenerateMipSubLevels_proto typedef proto :dword
cxGenerateMipSubLevels_proc typedef ptr cxGenerateMipSubLevels_proto
cxGenerateMipSubLevelsHook proto :dword
cxGENERATEMIPSUBLEVELS EQU 064
.data?
cxGenerateMipSubLevels cxGenerateMipSubLevels_proc ?
.code
CGenerateMipSubLevels db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GenerateMipSubLevels(%08X)</font><br>", 0
;STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC *pDesc) PURE;
cxGetLevelDesc_proto typedef proto :dword, :dword, :dword
cxGetLevelDesc_proc typedef ptr cxGetLevelDesc_proto
cxGetLevelDescHook proto :dword, :dword, :dword
cxGETLEVELDESC EQU 068
.data?
cxGetLevelDesc cxGetLevelDesc_proc ?
.code
CGetLevelDesc db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetLevelDesc(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES FaceType,UINT Level,IDirect3DSurface9** ppCubeMapSurface) PURE;
cxGetCubeMapSurface_proto typedef proto :dword, :dword, :dword, :dword
cxGetCubeMapSurface_proc typedef ptr cxGetCubeMapSurface_proto
cxGetCubeMapSurfaceHook proto :dword, :dword, :dword, :dword
cxGETCUBEMAPSURFACE EQU 072
.data?
cxGetCubeMapSurface cxGetCubeMapSurface_proc ?
.code
CGetCubeMapSurface db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->GetCubeMapSurface(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES FaceType,UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
cxLockRect_proto typedef proto :dword, :dword, :dword, :dword, :dword, :dword
cxLockRect_proc typedef ptr cxLockRect_proto
cxLockRectHook proto :dword, :dword, :dword, :dword, :dword, :dword
cxLOCKRECT EQU 076
.data?
cxLockRect cxLockRect_proc ?
.code
CLockRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->LockRect(%08X, %08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES FaceType,UINT Level) PURE;
cxUnlockRect_proto typedef proto :dword, :dword, :dword
cxUnlockRect_proc typedef ptr cxUnlockRect_proto
cxUnlockRectHook proto :dword, :dword, :dword
cxUNLOCKRECT EQU 080
.data?
cxUnlockRect cxUnlockRect_proc ?
.code
CUnlockRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->UnlockRect(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES FaceType,CONST RECT* pDirtyRect) PURE;
cxAddDirtyRect_proto typedef proto :dword, :dword, :dword
cxAddDirtyRect_proc typedef ptr cxAddDirtyRect_proto
cxAddDirtyRectHook proto :dword, :dword, :dword
cxADDDIRTYRECT EQU 084
.data?
cxAddDirtyRect cxAddDirtyRect_proc ?
.code
CAddDirtyRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DCubeTexture9->AddDirtyRect(%08X, %08X, %08X)</font><br>", 0

1073
dll/IDirect3DDevice9.inc Executable file

File diff suppressed because it is too large Load Diff

128
dll/IDirect3DIndexBuffer9.inc Executable file
View File

@ -0,0 +1,128 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
ibQueryInterface_proto typedef proto :dword, :dword, :dword
ibQueryInterface_proc typedef ptr ibQueryInterface_proto
ibQueryInterfaceHook proto :dword, :dword, :dword
ibQUERYINTERFACE EQU 000
.data?
ibQueryInterface ibQueryInterface_proc ?
.code
EQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DIndexBuffer9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
ibAddRef_proto typedef proto :dword
ibAddRef_proc typedef ptr ibAddRef_proto
ibAddRefHook proto :dword
ibADDREF EQU 004
.data?
ibAddRef ibAddRef_proc ?
.code
EAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DIndexBuffer9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
ibRelease_proto typedef proto :dword
ibRelease_proc typedef ptr ibRelease_proto
ibReleaseHook proto :dword
ibRELEASE EQU 008
.data?
ibRelease ibRelease_proc ?
.code
ERelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DIndexBuffer9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
ibGetDevice_proto typedef proto :dword, :dword
ibGetDevice_proc typedef ptr ibGetDevice_proto
ibGetDeviceHook proto :dword, :dword
ibGETDEVICE EQU 012
.data?
ibGetDevice ibGetDevice_proc ?
.code
EGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
ibSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
ibSetPrivateData_proc typedef ptr ibSetPrivateData_proto
ibSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
ibSETPRIVATEDATA EQU 016
.data?
ibSetPrivateData ibSetPrivateData_proc ?
.code
ESetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
ibGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
ibGetPrivateData_proc typedef ptr ibGetPrivateData_proto
ibGetPrivateDataHook proto :dword, :dword, :dword, :dword
ibGETPRIVATEDATA EQU 020
.data?
ibGetPrivateData ibGetPrivateData_proc ?
.code
EGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->GetPrivateData(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
ibFreePrivateData_proto typedef proto :dword, :dword
ibFreePrivateData_proc typedef ptr ibFreePrivateData_proto
ibFreePrivateDataHook proto :dword, :dword
ibFREEPRIVATEDATA EQU 024
.data?
ibFreePrivateData ibFreePrivateData_proc ?
.code
EFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
ibSetPriority_proto typedef proto :dword, :dword
ibSetPriority_proc typedef ptr ibSetPriority_proto
ibSetPriorityHook proto :dword, :dword
ibSETPRIORITY EQU 028
.data?
ibSetPriority ibSetPriority_proc ?
.code
ESetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
ibGetPriority_proto typedef proto :dword
ibGetPriority_proc typedef ptr ibGetPriority_proto
ibGetPriorityHook proto :dword
ibGETPRIORITY EQU 032
.data?
ibGetPriority ibGetPriority_proc ?
.code
EGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
ibPreLoad_proto typedef proto :dword
ibPreLoad_proc typedef ptr ibPreLoad_proto
ibPreLoadHook proto :dword
ibPRELOAD EQU 036
.data?
ibPreLoad ibPreLoad_proc ?
.code
EPreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
ibGetType_proto typedef proto :dword
ibGetType_proc typedef ptr ibGetType_proto
ibGetTypeHook proto :dword
ibGETTYPE EQU 040
.data?
ibGetType ibGetType_proc ?
.code
EGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->GetType(%08X)</font><br>", 0
;STDMETHOD(Lock)(THIS_ UINT OffsetToLock,UINT SizeToLock,void** ppbData,DWORD Flags) PURE;
ibLock_proto typedef proto :dword, :dword, :dword, :dword, :dword
ibLock_proc typedef ptr ibLock_proto
ibLockHook proto :dword, :dword, :dword, :dword, :dword
ibLOCK EQU 044
.data?
ibLock ibLock_proc ?
.code
ELock db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->Lock(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(Unlock)(THIS) PURE;
ibUnlock_proto typedef proto :dword
ibUnlock_proc typedef ptr ibUnlock_proto
ibUnlockHook proto :dword
ibUNLOCK EQU 048
.data?
ibUnlock ibUnlock_proc ?
.code
EUnlock db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->Unlock(%08X)</font><br>", 0
;STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC *pDesc) PURE;
ibGetDesc_proto typedef proto :dword, :dword
ibGetDesc_proc typedef ptr ibGetDesc_proto
ibGetDescHook proto :dword, :dword
ibGETDESC EQU 052
.data?
ibGetDesc ibGetDesc_proc ?
.code
EGetDesc db "<font color=0000A0>%08X: RETURNED %08X IDirect3DIndexBuffer9->GetDesc(%08X, %08X)</font><br>", 0

47
dll/IDirect3DPixelShader9.inc Executable file
View File

@ -0,0 +1,47 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
psQueryInterface_proto typedef proto :dword, :dword, :dword
psQueryInterface_proc typedef ptr psQueryInterface_proto
psQueryInterfaceHook proto :dword, :dword, :dword
psQUERYINTERFACE EQU 000
.data?
psQueryInterface psQueryInterface_proc ?
.code
ZQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DPixelShader9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
psAddRef_proto typedef proto :dword
psAddRef_proc typedef ptr psAddRef_proto
psAddRefHook proto :dword
psADDREF EQU 004
.data?
psAddRef psAddRef_proc ?
.code
ZAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DPixelShader9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
psRelease_proto typedef proto :dword
psRelease_proc typedef ptr psRelease_proto
psReleaseHook proto :dword
psRELEASE EQU 008
.data?
psRelease psRelease_proc ?
.code
ZRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DPixelShader9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
psGetDevice_proto typedef proto :dword, :dword
psGetDevice_proc typedef ptr psGetDevice_proto
psGetDeviceHook proto :dword, :dword
psGETDEVICE EQU 012
.data?
psGetDevice psGetDevice_proc ?
.code
ZGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DPixelShader9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(GetFunction)(THIS_ void*,UINT* pSizeOfData) PURE;
psGetFunction_proto typedef proto :dword, :dword, :dword
psGetFunction_proc typedef ptr psGetFunction_proto
psGetFunctionHook proto :dword, :dword, :dword
psGETFUNCTION EQU 016
.data?
psGetFunction psGetFunction_proc ?
.code
ZGetFunction db "<font color=0000A0>%08X: RETURNED %08X IDirect3DPixelShader9->GetFunction(%08X, %08X, %08X)</font><br>", 0

74
dll/IDirect3DQuery9.inc Executable file
View File

@ -0,0 +1,74 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
qxQueryInterface_proto typedef proto :dword, :dword, :dword
qxQueryInterface_proc typedef ptr qxQueryInterface_proto
qxQueryInterfaceHook proto :dword, :dword, :dword
qxQUERYINTERFACE EQU 000
.data?
qxQueryInterface qxQueryInterface_proc ?
.code
HQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DQuery9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
qxAddRef_proto typedef proto :dword
qxAddRef_proc typedef ptr qxAddRef_proto
qxAddRefHook proto :dword
qxADDREF EQU 004
.data?
qxAddRef qxAddRef_proc ?
.code
HAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DQuery9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
qxRelease_proto typedef proto :dword
qxRelease_proc typedef ptr qxRelease_proto
qxReleaseHook proto :dword
qxRELEASE EQU 008
.data?
qxRelease qxRelease_proc ?
.code
HRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DQuery9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
qxGetDevice_proto typedef proto :dword, :dword
qxGetDevice_proc typedef ptr qxGetDevice_proto
qxGetDeviceHook proto :dword, :dword
qxGETDEVICE EQU 012
.data?
qxGetDevice qxGetDevice_proc ?
.code
HGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DQuery9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
qxGetType_proto typedef proto :dword
qxGetType_proc typedef ptr qxGetType_proto
qxGetTypeHook proto :dword
qxGETTYPE EQU 016
.data?
qxGetType qxGetType_proc ?
.code
HGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DQuery9->GetType(%08X)</font><br>", 0
;STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
qxGetDataSize_proto typedef proto :dword
qxGetDataSize_proc typedef ptr qxGetDataSize_proto
qxGetDataSizeHook proto :dword
qxGETDATASIZE EQU 020
.data?
qxGetDataSize qxGetDataSize_proc ?
.code
HGetDataSize db "<font color=0000A0>%08X: RETURNED %08X IDirect3DQuery9->GetDataSize(%08X)</font><br>", 0
;STDMETHOD(Issue)(THIS_ DWORD dwIssueFlags) PURE;
qxIssue_proto typedef proto :dword, :dword
qxIssue_proc typedef ptr qxIssue_proto
qxIssueHook proto :dword, :dword
qxISSUE EQU 024
.data?
qxIssue qxIssue_proc ?
.code
HIssue db "<font color=0000A0>%08X: RETURNED %08X IDirect3DQuery9->Issue(%08X, %08X)</font><br>", 0
;STDMETHOD(GetData)(THIS_ void* pData,DWORD dwSize,DWORD dwGetDataFlags) PURE;
qxGetData_proto typedef proto :dword, :dword, :dword, :dword
qxGetData_proc typedef ptr qxGetData_proto
qxGetDataHook proto :dword, :dword, :dword, :dword
qxGETDATA EQU 028
.data?
qxGetData qxGetData_proc ?
.code
HGetData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DQuery9->GetData(%08X, %08X, %08X, %08X)</font><br>", 0

56
dll/IDirect3DStateBlock9.inc Executable file
View File

@ -0,0 +1,56 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
sbQueryInterface_proto typedef proto :dword, :dword, :dword
sbQueryInterface_proc typedef ptr sbQueryInterface_proto
sbQueryInterfaceHook proto :dword, :dword, :dword
sbQUERYINTERFACE EQU 000
.data?
sbQueryInterface sbQueryInterface_proc ?
.code
UQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DStateBlock9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
sbAddRef_proto typedef proto :dword
sbAddRef_proc typedef ptr sbAddRef_proto
sbAddRefHook proto :dword
sbADDREF EQU 004
.data?
sbAddRef sbAddRef_proc ?
.code
UAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DStateBlock9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
sbRelease_proto typedef proto :dword
sbRelease_proc typedef ptr sbRelease_proto
sbReleaseHook proto :dword
sbRELEASE EQU 008
.data?
sbRelease sbRelease_proc ?
.code
URelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DStateBlock9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
sbGetDevice_proto typedef proto :dword, :dword
sbGetDevice_proc typedef ptr sbGetDevice_proto
sbGetDeviceHook proto :dword, :dword
sbGETDEVICE EQU 012
.data?
sbGetDevice sbGetDevice_proc ?
.code
UGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DStateBlock9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(Capture)(THIS) PURE;
sbCapture_proto typedef proto :dword
sbCapture_proc typedef ptr sbCapture_proto
sbCaptureHook proto :dword
sbCAPTURE EQU 016
.data?
sbCapture sbCapture_proc ?
.code
UCapture db "<font color=0000A0>%08X: RETURNED %08X IDirect3DStateBlock9->Capture(%08X)</font><br>", 0
;STDMETHOD(Apply)(THIS) PURE;
sbApply_proto typedef proto :dword
sbApply_proc typedef ptr sbApply_proto
sbApplyHook proto :dword
sbAPPLY EQU 020
.data?
sbApply sbApply_proc ?
.code
UApply db "<font color=0000A0>%08X: RETURNED %08X IDirect3DStateBlock9->Apply(%08X)</font><br>", 0

155
dll/IDirect3DSurface9.inc Executable file
View File

@ -0,0 +1,155 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
seQueryInterface_proto typedef proto :dword, :dword, :dword
seQueryInterface_proc typedef ptr seQueryInterface_proto
seQueryInterfaceHook proto :dword, :dword, :dword
seQUERYINTERFACE EQU 000
.data?
seQueryInterface seQueryInterface_proc ?
.code
FQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DSurface9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
seAddRef_proto typedef proto :dword
seAddRef_proc typedef ptr seAddRef_proto
seAddRefHook proto :dword
seADDREF EQU 004
.data?
seAddRef seAddRef_proc ?
.code
FAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DSurface9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
seRelease_proto typedef proto :dword
seRelease_proc typedef ptr seRelease_proto
seReleaseHook proto :dword
seRELEASE EQU 008
.data?
seRelease seRelease_proc ?
.code
FRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DSurface9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
seGetDevice_proto typedef proto :dword, :dword
seGetDevice_proc typedef ptr seGetDevice_proto
seGetDeviceHook proto :dword, :dword
seGETDEVICE EQU 012
.data?
seGetDevice seGetDevice_proc ?
.code
FGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
seSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
seSetPrivateData_proc typedef ptr seSetPrivateData_proto
seSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
seSETPRIVATEDATA EQU 016
.data?
seSetPrivateData seSetPrivateData_proc ?
.code
FSetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
seGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
seGetPrivateData_proc typedef ptr seGetPrivateData_proto
seGetPrivateDataHook proto :dword, :dword, :dword, :dword
seGETPRIVATEDATA EQU 020
.data?
seGetPrivateData seGetPrivateData_proc ?
.code
FGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetPrivateData(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
seFreePrivateData_proto typedef proto :dword, :dword
seFreePrivateData_proc typedef ptr seFreePrivateData_proto
seFreePrivateDataHook proto :dword, :dword
seFREEPRIVATEDATA EQU 024
.data?
seFreePrivateData seFreePrivateData_proc ?
.code
FFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
seSetPriority_proto typedef proto :dword, :dword
seSetPriority_proc typedef ptr seSetPriority_proto
seSetPriorityHook proto :dword, :dword
seSETPRIORITY EQU 028
.data?
seSetPriority seSetPriority_proc ?
.code
FSetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
seGetPriority_proto typedef proto :dword
seGetPriority_proc typedef ptr seGetPriority_proto
seGetPriorityHook proto :dword
seGETPRIORITY EQU 032
.data?
seGetPriority seGetPriority_proc ?
.code
FGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
sePreLoad_proto typedef proto :dword
sePreLoad_proc typedef ptr sePreLoad_proto
sePreLoadHook proto :dword
sePRELOAD EQU 036
.data?
sePreLoad sePreLoad_proc ?
.code
FPreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
seGetType_proto typedef proto :dword
seGetType_proc typedef ptr seGetType_proto
seGetTypeHook proto :dword
seGETTYPE EQU 040
.data?
seGetType seGetType_proc ?
.code
FGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetType(%08X)</font><br>", 0
;STDMETHOD(GetContainer)(THIS_ REFIID riid,void** ppContainer) PURE;
seGetContainer_proto typedef proto :dword, :dword, :dword
seGetContainer_proc typedef ptr seGetContainer_proto
seGetContainerHook proto :dword, :dword, :dword
seGETCONTAINER EQU 044
.data?
seGetContainer seGetContainer_proc ?
.code
FGetContainer db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetContainer(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC *pDesc) PURE;
seGetDesc_proto typedef proto :dword, :dword
seGetDesc_proc typedef ptr seGetDesc_proto
seGetDescHook proto :dword, :dword
seGETDESC EQU 048
.data?
seGetDesc seGetDesc_proc ?
.code
FGetDesc db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetDesc(%08X, %08X)</font><br>", 0
;STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
seLockRect_proto typedef proto :dword, :dword, :dword, :dword
seLockRect_proc typedef ptr seLockRect_proto
seLockRectHook proto :dword, :dword, :dword, :dword
seLOCKRECT EQU 052
.data?
seLockRect seLockRect_proc ?
.code
FLockRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->LockRect(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(UnlockRect)(THIS) PURE;
seUnlockRect_proto typedef proto :dword
seUnlockRect_proc typedef ptr seUnlockRect_proto
seUnlockRectHook proto :dword
seUNLOCKRECT EQU 056
.data?
seUnlockRect seUnlockRect_proc ?
.code
FUnlockRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->UnlockRect(%08X)</font><br>", 0
;STDMETHOD(GetDC)(THIS_ HDC *phdc) PURE;
seGetDC_proto typedef proto :dword, :dword
seGetDC_proc typedef ptr seGetDC_proto
seGetDCHook proto :dword, :dword
seGETDC EQU 060
.data?
seGetDC seGetDC_proc ?
.code
FGetDC db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->GetDC(%08X, %08X)</font><br>", 0
;STDMETHOD(ReleaseDC)(THIS_ HDC hdc) PURE;
seReleaseDC_proto typedef proto :dword, :dword
seReleaseDC_proc typedef ptr seReleaseDC_proto
seReleaseDCHook proto :dword, :dword
seRELEASEDC EQU 064
.data?
seReleaseDC seReleaseDC_proc ?
.code
FReleaseDC db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSurface9->ReleaseDC(%08X, %08X)</font><br>", 0

92
dll/IDirect3DSwapChain9.inc Executable file
View File

@ -0,0 +1,92 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
scQueryInterface_proto typedef proto :dword, :dword, :dword
scQueryInterface_proc typedef ptr scQueryInterface_proto
scQueryInterfaceHook proto :dword, :dword, :dword
scQUERYINTERFACE EQU 000
.data?
scQueryInterface scQueryInterface_proc ?
.code
VQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DSwapChain9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
scAddRef_proto typedef proto :dword
scAddRef_proc typedef ptr scAddRef_proto
scAddRefHook proto :dword
scADDREF EQU 004
.data?
scAddRef scAddRef_proc ?
.code
VAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DSwapChain9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
scRelease_proto typedef proto :dword
scRelease_proc typedef ptr scRelease_proto
scReleaseHook proto :dword
scRELEASE EQU 008
.data?
scRelease scRelease_proc ?
.code
VRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DSwapChain9->Release(%08X)</font><br>", 0
;STDMETHOD(Present)(THIS_ CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion,DWORD dwFlags) PURE;
scPresent_proto typedef proto :dword, :dword, :dword, :dword, :dword, :dword
scPresent_proc typedef ptr scPresent_proto
scPresentHook proto :dword, :dword, :dword, :dword, :dword, :dword
scPRESENT EQU 012
.data?
scPresent scPresent_proc ?
.code
VPresent db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->Present(%08X, %08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetFrontBufferData)(THIS_ IDirect3DSurface9* pDestSurface) PURE;
scGetFrontBufferData_proto typedef proto :dword, :dword
scGetFrontBufferData_proc typedef ptr scGetFrontBufferData_proto
scGetFrontBufferDataHook proto :dword, :dword
scGETFRONTBUFFERDATA EQU 016
.data?
scGetFrontBufferData scGetFrontBufferData_proc ?
.code
VGetFrontBufferData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->GetFrontBufferData(%08X, %08X)</font><br>", 0
;STDMETHOD(GetBackBuffer)(THIS_ UINT iBackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface9** ppBackBuffer) PURE;
scGetBackBuffer_proto typedef proto :dword, :dword, :dword, :dword
scGetBackBuffer_proc typedef ptr scGetBackBuffer_proto
scGetBackBufferHook proto :dword, :dword, :dword, :dword
scGETBACKBUFFER EQU 020
.data?
scGetBackBuffer scGetBackBuffer_proc ?
.code
VGetBackBuffer db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->GetBackBuffer(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS* pRasterStatus) PURE;
scGetRasterStatus_proto typedef proto :dword, :dword
scGetRasterStatus_proc typedef ptr scGetRasterStatus_proto
scGetRasterStatusHook proto :dword, :dword
scGETRASTERSTATUS EQU 024
.data?
scGetRasterStatus scGetRasterStatus_proc ?
.code
VGetRasterStatus db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->GetRasterStatus(%08X, %08X)</font><br>", 0
;STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE* pMode) PURE;
scGetDisplayMode_proto typedef proto :dword, :dword
scGetDisplayMode_proc typedef ptr scGetDisplayMode_proto
scGetDisplayModeHook proto :dword, :dword
scGETDISPLAYMODE EQU 028
.data?
scGetDisplayMode scGetDisplayMode_proc ?
.code
VGetDisplayMode db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->GetDisplayMode(%08X, %08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
scGetDevice_proto typedef proto :dword, :dword
scGetDevice_proc typedef ptr scGetDevice_proto
scGetDeviceHook proto :dword, :dword
scGETDEVICE EQU 032
.data?
scGetDevice scGetDevice_proc ?
.code
VGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS* pPresentationParameters) PURE;
scGetPresentParameters_proto typedef proto :dword, :dword
scGetPresentParameters_proc typedef ptr scGetPresentParameters_proto
scGetPresentParametersHook proto :dword, :dword
scGETPRESENTPARAMETERS EQU 036
.data?
scGetPresentParameters scGetPresentParameters_proc ?
.code
VGetPresentParameters db "<font color=0000A0>%08X: RETURNED %08X IDirect3DSwapChain9->GetPresentParameters(%08X, %08X)</font><br>", 0

200
dll/IDirect3DTexture9.inc Executable file
View File

@ -0,0 +1,200 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
ttQueryInterface_proto typedef proto :dword, :dword, :dword
ttQueryInterface_proc typedef ptr ttQueryInterface_proto
ttQueryInterfaceHook proto :dword, :dword, :dword
ttQUERYINTERFACE EQU 000
.data?
ttQueryInterface ttQueryInterface_proc ?
.code
AQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DTexture9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
ttAddRef_proto typedef proto :dword
ttAddRef_proc typedef ptr ttAddRef_proto
ttAddRefHook proto :dword
ttADDREF EQU 004
.data?
ttAddRef ttAddRef_proc ?
.code
AAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DTexture9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
ttRelease_proto typedef proto :dword
ttRelease_proc typedef ptr ttRelease_proto
ttReleaseHook proto :dword
ttRELEASE EQU 008
.data?
ttRelease ttRelease_proc ?
.code
ARelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DTexture9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
ttGetDevice_proto typedef proto :dword, :dword
ttGetDevice_proc typedef ptr ttGetDevice_proto
ttGetDeviceHook proto :dword, :dword
ttGETDEVICE EQU 012
.data?
ttGetDevice ttGetDevice_proc ?
.code
AGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
ttSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
ttSetPrivateData_proc typedef ptr ttSetPrivateData_proto
ttSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
ttSETPRIVATEDATA EQU 016
.data?
ttSetPrivateData ttSetPrivateData_proc ?
.code
ASetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
ttGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
ttGetPrivateData_proc typedef ptr ttGetPrivateData_proto
ttGetPrivateDataHook proto :dword, :dword, :dword, :dword
ttGETPRIVATEDATA EQU 020
.data?
ttGetPrivateData ttGetPrivateData_proc ?
.code
AGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetPrivateData(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
ttFreePrivateData_proto typedef proto :dword, :dword
ttFreePrivateData_proc typedef ptr ttFreePrivateData_proto
ttFreePrivateDataHook proto :dword, :dword
ttFREEPRIVATEDATA EQU 024
.data?
ttFreePrivateData ttFreePrivateData_proc ?
.code
AFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
ttSetPriority_proto typedef proto :dword, :dword
ttSetPriority_proc typedef ptr ttSetPriority_proto
ttSetPriorityHook proto :dword, :dword
ttSETPRIORITY EQU 028
.data?
ttSetPriority ttSetPriority_proc ?
.code
ASetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
ttGetPriority_proto typedef proto :dword
ttGetPriority_proc typedef ptr ttGetPriority_proto
ttGetPriorityHook proto :dword
ttGETPRIORITY EQU 032
.data?
ttGetPriority ttGetPriority_proc ?
.code
AGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
ttPreLoad_proto typedef proto :dword
ttPreLoad_proc typedef ptr ttPreLoad_proto
ttPreLoadHook proto :dword
ttPRELOAD EQU 036
.data?
ttPreLoad ttPreLoad_proc ?
.code
APreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
ttGetType_proto typedef proto :dword
ttGetType_proc typedef ptr ttGetType_proto
ttGetTypeHook proto :dword
ttGETTYPE EQU 040
.data?
ttGetType ttGetType_proc ?
.code
AGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetType(%08X)</font><br>", 0
;STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
ttSetLOD_proto typedef proto :dword, :dword
ttSetLOD_proc typedef ptr ttSetLOD_proto
ttSetLODHook proto :dword, :dword
ttSETLOD EQU 044
.data?
ttSetLOD ttSetLOD_proc ?
.code
ASetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->SetLOD(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
ttGetLOD_proto typedef proto :dword
ttGetLOD_proc typedef ptr ttGetLOD_proto
ttGetLODHook proto :dword
ttGETLOD EQU 048
.data?
ttGetLOD ttGetLOD_proc ?
.code
AGetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetLOD(%08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
ttGetLevelCount_proto typedef proto :dword
ttGetLevelCount_proc typedef ptr ttGetLevelCount_proto
ttGetLevelCountHook proto :dword
ttGETLEVELCOUNT EQU 052
.data?
ttGetLevelCount ttGetLevelCount_proc ?
.code
AGetLevelCount db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetLevelCount(%08X)</font><br>", 0
;STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
ttSetAutoGenFilterType_proto typedef proto :dword, :dword
ttSetAutoGenFilterType_proc typedef ptr ttSetAutoGenFilterType_proto
ttSetAutoGenFilterTypeHook proto :dword, :dword
ttSETAUTOGENFILTERTYPE EQU 056
.data?
ttSetAutoGenFilterType ttSetAutoGenFilterType_proc ?
.code
ASetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->SetAutoGenFilterType(%08X, %08X)</font><br>", 0
;STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
ttGetAutoGenFilterType_proto typedef proto :dword
ttGetAutoGenFilterType_proc typedef ptr ttGetAutoGenFilterType_proto
ttGetAutoGenFilterTypeHook proto :dword
ttGETAUTOGENFILTERTYPE EQU 060
.data?
ttGetAutoGenFilterType ttGetAutoGenFilterType_proc ?
.code
AGetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetAutoGenFilterType(%08X)</font><br>", 0
;STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
ttGenerateMipSubLevels_proto typedef proto :dword
ttGenerateMipSubLevels_proc typedef ptr ttGenerateMipSubLevels_proto
ttGenerateMipSubLevelsHook proto :dword
ttGENERATEMIPSUBLEVELS EQU 064
.data?
ttGenerateMipSubLevels ttGenerateMipSubLevels_proc ?
.code
AGenerateMipSubLevels db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GenerateMipSubLevels(%08X)</font><br>", 0
;STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DSURFACE_DESC *pDesc) PURE;
ttGetLevelDesc_proto typedef proto :dword, :dword, :dword
ttGetLevelDesc_proc typedef ptr ttGetLevelDesc_proto
ttGetLevelDescHook proto :dword, :dword, :dword
ttGETLEVELDESC EQU 068
.data?
ttGetLevelDesc ttGetLevelDesc_proc ?
.code
AGetLevelDesc db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetLevelDesc(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetSurfaceLevel)(THIS_ UINT Level,IDirect3DSurface9** ppSurfaceLevel) PURE;
ttGetSurfaceLevel_proto typedef proto :dword, :dword, :dword
ttGetSurfaceLevel_proc typedef ptr ttGetSurfaceLevel_proto
ttGetSurfaceLevelHook proto :dword, :dword, :dword
ttGETSURFACELEVEL EQU 072
.data?
ttGetSurfaceLevel ttGetSurfaceLevel_proc ?
.code
AGetSurfaceLevel db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->GetSurfaceLevel(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(LockRect)(THIS_ UINT Level,D3DLOCKED_RECT* pLockedRect,CONST RECT* pRect,DWORD Flags) PURE;
ttLockRect_proto typedef proto :dword, :dword, :dword, :dword, :dword
ttLockRect_proc typedef ptr ttLockRect_proto
ttLockRectHook proto :dword, :dword, :dword, :dword, :dword
ttLOCKRECT EQU 076
.data?
ttLockRect ttLockRect_proc ?
.code
ALockRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->LockRect(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(UnlockRect)(THIS_ UINT Level) PURE;
ttUnlockRect_proto typedef proto :dword, :dword
ttUnlockRect_proc typedef ptr ttUnlockRect_proto
ttUnlockRectHook proto :dword, :dword
ttUNLOCKRECT EQU 080
.data?
ttUnlockRect ttUnlockRect_proc ?
.code
AUnlockRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->UnlockRect(%08X, %08X)</font><br>", 0
;STDMETHOD(AddDirtyRect)(THIS_ CONST RECT* pDirtyRect) PURE;
ttAddDirtyRect_proto typedef proto :dword, :dword
ttAddDirtyRect_proc typedef ptr ttAddDirtyRect_proto
ttAddDirtyRectHook proto :dword, :dword
ttADDDIRTYRECT EQU 084
.data?
ttAddDirtyRect ttAddDirtyRect_proc ?
.code
AAddDirtyRect db "<font color=0000A0>%08X: RETURNED %08X IDirect3DTexture9->AddDirtyRect(%08X, %08X)</font><br>", 0

128
dll/IDirect3DVertexBuffer9.inc Executable file
View File

@ -0,0 +1,128 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
vlQueryInterface_proto typedef proto :dword, :dword, :dword
vlQueryInterface_proc typedef ptr vlQueryInterface_proto
vlQueryInterfaceHook proto :dword, :dword, :dword
vlQUERYINTERFACE EQU 000
.data?
vlQueryInterface vlQueryInterface_proc ?
.code
DQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexBuffer9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
vlAddRef_proto typedef proto :dword
vlAddRef_proc typedef ptr vlAddRef_proto
vlAddRefHook proto :dword
vlADDREF EQU 004
.data?
vlAddRef vlAddRef_proc ?
.code
DAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexBuffer9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
vlRelease_proto typedef proto :dword
vlRelease_proc typedef ptr vlRelease_proto
vlReleaseHook proto :dword
vlRELEASE EQU 008
.data?
vlRelease vlRelease_proc ?
.code
DRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexBuffer9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
vlGetDevice_proto typedef proto :dword, :dword
vlGetDevice_proc typedef ptr vlGetDevice_proto
vlGetDeviceHook proto :dword, :dword
vlGETDEVICE EQU 012
.data?
vlGetDevice vlGetDevice_proc ?
.code
DGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
vlSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
vlSetPrivateData_proc typedef ptr vlSetPrivateData_proto
vlSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
vlSETPRIVATEDATA EQU 016
.data?
vlSetPrivateData vlSetPrivateData_proc ?
.code
DSetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
vlGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
vlGetPrivateData_proc typedef ptr vlGetPrivateData_proto
vlGetPrivateDataHook proto :dword, :dword, :dword, :dword
vlGETPRIVATEDATA EQU 020
.data?
vlGetPrivateData vlGetPrivateData_proc ?
.code
DGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->GetPrivateData(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
vlFreePrivateData_proto typedef proto :dword, :dword
vlFreePrivateData_proc typedef ptr vlFreePrivateData_proto
vlFreePrivateDataHook proto :dword, :dword
vlFREEPRIVATEDATA EQU 024
.data?
vlFreePrivateData vlFreePrivateData_proc ?
.code
DFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
vlSetPriority_proto typedef proto :dword, :dword
vlSetPriority_proc typedef ptr vlSetPriority_proto
vlSetPriorityHook proto :dword, :dword
vlSETPRIORITY EQU 028
.data?
vlSetPriority vlSetPriority_proc ?
.code
DSetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
vlGetPriority_proto typedef proto :dword
vlGetPriority_proc typedef ptr vlGetPriority_proto
vlGetPriorityHook proto :dword
vlGETPRIORITY EQU 032
.data?
vlGetPriority vlGetPriority_proc ?
.code
DGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
vlPreLoad_proto typedef proto :dword
vlPreLoad_proc typedef ptr vlPreLoad_proto
vlPreLoadHook proto :dword
vlPRELOAD EQU 036
.data?
vlPreLoad vlPreLoad_proc ?
.code
DPreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
vlGetType_proto typedef proto :dword
vlGetType_proc typedef ptr vlGetType_proto
vlGetTypeHook proto :dword
vlGETTYPE EQU 040
.data?
vlGetType vlGetType_proc ?
.code
DGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->GetType(%08X)</font><br>", 0
;STDMETHOD(Lock)(THIS_ UINT OffsetToLock,UINT SizeToLock,void** ppbData,DWORD Flags) PURE;
vlLock_proto typedef proto :dword, :dword, :dword, :dword, :dword
vlLock_proc typedef ptr vlLock_proto
vlLockHook proto :dword, :dword, :dword, :dword, :dword
vlLOCK EQU 044
.data?
vlLock vlLock_proc ?
.code
DLock db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->Lock(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(Unlock)(THIS) PURE;
vlUnlock_proto typedef proto :dword
vlUnlock_proc typedef ptr vlUnlock_proto
vlUnlockHook proto :dword
vlUNLOCK EQU 048
.data?
vlUnlock vlUnlock_proc ?
.code
DUnlock db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->Unlock(%08X)</font><br>", 0
;STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC *pDesc) PURE;
vlGetDesc_proto typedef proto :dword, :dword
vlGetDesc_proc typedef ptr vlGetDesc_proto
vlGetDescHook proto :dword, :dword
vlGETDESC EQU 052
.data?
vlGetDesc vlGetDesc_proc ?
.code
DGetDesc db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexBuffer9->GetDesc(%08X, %08X)</font><br>", 0

View File

@ -0,0 +1,47 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
vdQueryInterface_proto typedef proto :dword, :dword, :dword
vdQueryInterface_proc typedef ptr vdQueryInterface_proto
vdQueryInterfaceHook proto :dword, :dword, :dword
vdQUERYINTERFACE EQU 000
.data?
vdQueryInterface vdQueryInterface_proc ?
.code
XQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexDeclaration9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
vdAddRef_proto typedef proto :dword
vdAddRef_proc typedef ptr vdAddRef_proto
vdAddRefHook proto :dword
vdADDREF EQU 004
.data?
vdAddRef vdAddRef_proc ?
.code
XAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexDeclaration9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
vdRelease_proto typedef proto :dword
vdRelease_proc typedef ptr vdRelease_proto
vdReleaseHook proto :dword
vdRELEASE EQU 008
.data?
vdRelease vdRelease_proc ?
.code
XRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexDeclaration9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
vdGetDevice_proto typedef proto :dword, :dword
vdGetDevice_proc typedef ptr vdGetDevice_proto
vdGetDeviceHook proto :dword, :dword
vdGETDEVICE EQU 012
.data?
vdGetDevice vdGetDevice_proc ?
.code
XGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexDeclaration9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9* pElement,UINT* pNumElements) PURE;
vdGetDeclaration_proto typedef proto :dword, :dword, :dword
vdGetDeclaration_proc typedef ptr vdGetDeclaration_proto
vdGetDeclarationHook proto :dword, :dword, :dword
vdGETDECLARATION EQU 016
.data?
vdGetDeclaration vdGetDeclaration_proc ?
.code
XGetDeclaration db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexDeclaration9->GetDeclaration(%08X, %08X, %08X)</font><br>", 0

47
dll/IDirect3DVertexShader9.inc Executable file
View File

@ -0,0 +1,47 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
vsQueryInterface_proto typedef proto :dword, :dword, :dword
vsQueryInterface_proc typedef ptr vsQueryInterface_proto
vsQueryInterfaceHook proto :dword, :dword, :dword
vsQUERYINTERFACE EQU 000
.data?
vsQueryInterface vsQueryInterface_proc ?
.code
TQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexShader9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
vsAddRef_proto typedef proto :dword
vsAddRef_proc typedef ptr vsAddRef_proto
vsAddRefHook proto :dword
vsADDREF EQU 004
.data?
vsAddRef vsAddRef_proc ?
.code
TAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexShader9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
vsRelease_proto typedef proto :dword
vsRelease_proc typedef ptr vsRelease_proto
vsReleaseHook proto :dword
vsRELEASE EQU 008
.data?
vsRelease vsRelease_proc ?
.code
TRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVertexShader9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
vsGetDevice_proto typedef proto :dword, :dword
vsGetDevice_proc typedef ptr vsGetDevice_proto
vsGetDeviceHook proto :dword, :dword
vsGETDEVICE EQU 012
.data?
vsGetDevice vsGetDevice_proc ?
.code
TGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexShader9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(GetFunction)(THIS_ void*,UINT* pSizeOfData) PURE;
vsGetFunction_proto typedef proto :dword, :dword, :dword
vsGetFunction_proc typedef ptr vsGetFunction_proto
vsGetFunctionHook proto :dword, :dword, :dword
vsGETFUNCTION EQU 016
.data?
vsGetFunction vsGetFunction_proc ?
.code
TGetFunction db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVertexShader9->GetFunction(%08X, %08X, %08X)</font><br>", 0

200
dll/IDirect3DVolumeTexture9.inc Executable file
View File

@ -0,0 +1,200 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
;STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
vaQueryInterface_proto typedef proto :dword, :dword, :dword
vaQueryInterface_proc typedef ptr vaQueryInterface_proto
vaQueryInterfaceHook proto :dword, :dword, :dword
vaQUERYINTERFACE EQU 000
.data?
vaQueryInterface vaQueryInterface_proc ?
.code
BQueryInterface db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVolumeTexture9->QueryInterface(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD_(ULONG,AddRef)(THIS) PURE;
vaAddRef_proto typedef proto :dword
vaAddRef_proc typedef ptr vaAddRef_proto
vaAddRefHook proto :dword
vaADDREF EQU 004
.data?
vaAddRef vaAddRef_proc ?
.code
BAddRef db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVolumeTexture9->AddRef(%08X)</font><br>", 0
;STDMETHOD_(ULONG,Release)(THIS) PURE;
vaRelease_proto typedef proto :dword
vaRelease_proc typedef ptr vaRelease_proto
vaReleaseHook proto :dword
vaRELEASE EQU 008
.data?
vaRelease vaRelease_proc ?
.code
BRelease db "<font color=A0A000>%08X: RETURNED %08X IDirect3DVolumeTexture9->Release(%08X)</font><br>", 0
;STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9** ppDevice) PURE;
vaGetDevice_proto typedef proto :dword, :dword
vaGetDevice_proc typedef ptr vaGetDevice_proto
vaGetDeviceHook proto :dword, :dword
vaGETDEVICE EQU 012
.data?
vaGetDevice vaGetDevice_proc ?
.code
BGetDevice db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetDevice(%08X, %08X)</font><br>", 0
;STDMETHOD(SetPrivateData)(THIS_ REFGUID refguid,CONST void* pData,DWORD SizeOfData,DWORD Flags) PURE;
vaSetPrivateData_proto typedef proto :dword, :dword, :dword, :dword, :dword
vaSetPrivateData_proc typedef ptr vaSetPrivateData_proto
vaSetPrivateDataHook proto :dword, :dword, :dword, :dword, :dword
vaSETPRIVATEDATA EQU 016
.data?
vaSetPrivateData vaSetPrivateData_proc ?
.code
BSetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->SetPrivateData(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetPrivateData)(THIS_ REFGUID refguid,void* pData,DWORD* pSizeOfData) PURE;
vaGetPrivateData_proto typedef proto :dword, :dword, :dword, :dword
vaGetPrivateData_proc typedef ptr vaGetPrivateData_proto
vaGetPrivateDataHook proto :dword, :dword, :dword, :dword
vaGETPRIVATEDATA EQU 020
.data?
vaGetPrivateData vaGetPrivateData_proc ?
.code
BGetPrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetPrivateData(%08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(FreePrivateData)(THIS_ REFGUID refguid) PURE;
vaFreePrivateData_proto typedef proto :dword, :dword
vaFreePrivateData_proc typedef ptr vaFreePrivateData_proto
vaFreePrivateDataHook proto :dword, :dword
vaFREEPRIVATEDATA EQU 024
.data?
vaFreePrivateData vaFreePrivateData_proc ?
.code
BFreePrivateData db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->FreePrivateData(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, SetPriority)(THIS_ DWORD PriorityNew) PURE;
vaSetPriority_proto typedef proto :dword, :dword
vaSetPriority_proc typedef ptr vaSetPriority_proto
vaSetPriorityHook proto :dword, :dword
vaSETPRIORITY EQU 028
.data?
vaSetPriority vaSetPriority_proc ?
.code
BSetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->SetPriority(%08X, %08X)</font><br>", 0
;STDMETHOD_(DWORD, GetPriority)(THIS) PURE;
vaGetPriority_proto typedef proto :dword
vaGetPriority_proc typedef ptr vaGetPriority_proto
vaGetPriorityHook proto :dword
vaGETPRIORITY EQU 032
.data?
vaGetPriority vaGetPriority_proc ?
.code
BGetPriority db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetPriority(%08X)</font><br>", 0
;STDMETHOD_(void, PreLoad)(THIS) PURE;
vaPreLoad_proto typedef proto :dword
vaPreLoad_proc typedef ptr vaPreLoad_proto
vaPreLoadHook proto :dword
vaPRELOAD EQU 036
.data?
vaPreLoad vaPreLoad_proc ?
.code
BPreLoad db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->PreLoad(%08X)</font><br>", 0
;STDMETHOD_(D3DRESOURCETYPE, GetType)(THIS) PURE;
vaGetType_proto typedef proto :dword
vaGetType_proc typedef ptr vaGetType_proto
vaGetTypeHook proto :dword
vaGETTYPE EQU 040
.data?
vaGetType vaGetType_proc ?
.code
BGetType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetType(%08X)</font><br>", 0
;STDMETHOD_(DWORD, SetLOD)(THIS_ DWORD LODNew) PURE;
vaSetLOD_proto typedef proto :dword
vaSetLOD_proc typedef ptr vaSetLOD_proto
vaSetLODHook proto :dword
vaSETLOD EQU 044
.data?
vaSetLOD vaSetLOD_proc ?
.code
BSetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->SetLOD(%08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLOD)(THIS) PURE;
vaGetLOD_proto typedef proto :dword
vaGetLOD_proc typedef ptr vaGetLOD_proto
vaGetLODHook proto :dword
vaGETLOD EQU 048
.data?
vaGetLOD vaGetLOD_proc ?
.code
BGetLOD db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetLOD(%08X)</font><br>", 0
;STDMETHOD_(DWORD, GetLevelCount)(THIS) PURE;
vaGetLevelCount_proto typedef proto :dword
vaGetLevelCount_proc typedef ptr vaGetLevelCount_proto
vaGetLevelCountHook proto :dword
vaGETLEVELCOUNT EQU 052
.data?
vaGetLevelCount vaGetLevelCount_proc ?
.code
BGetLevelCount db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetLevelCount(%08X)</font><br>", 0
;STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE FilterType) PURE;
vaSetAutoGenFilterType_proto typedef proto :dword, :dword
vaSetAutoGenFilterType_proc typedef ptr vaSetAutoGenFilterType_proto
vaSetAutoGenFilterTypeHook proto :dword, :dword
vaSETAUTOGENFILTERTYPE EQU 056
.data?
vaSetAutoGenFilterType vaSetAutoGenFilterType_proc ?
.code
BSetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->SetAutoGenFilterType(%08X, %08X)</font><br>", 0
;STDMETHOD_(D3DTEXTUREFILTERTYPE, GetAutoGenFilterType)(THIS) PURE;
vaGetAutoGenFilterType_proto typedef proto :dword
vaGetAutoGenFilterType_proc typedef ptr vaGetAutoGenFilterType_proto
vaGetAutoGenFilterTypeHook proto :dword
vaGETAUTOGENFILTERTYPE EQU 060
.data?
vaGetAutoGenFilterType vaGetAutoGenFilterType_proc ?
.code
BGetAutoGenFilterType db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetAutoGenFilterType(%08X)</font><br>", 0
;STDMETHOD_(void, GenerateMipSubLevels)(THIS) PURE;
vaGenerateMipSubLevels_proto typedef proto :dword
vaGenerateMipSubLevels_proc typedef ptr vaGenerateMipSubLevels_proto
vaGenerateMipSubLevelsHook proto :dword
vaGENERATEMIPSUBLEVELS EQU 064
.data?
vaGenerateMipSubLevels vaGenerateMipSubLevels_proc ?
.code
BGenerateMipSubLevels db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GenerateMipSubLevels(%08X)</font><br>", 0
;STDMETHOD(GetLevelDesc)(THIS_ UINT Level,D3DVOLUME_DESC *pDesc) PURE;
vaGetLevelDesc_proto typedef proto :dword, :dword, :dword
vaGetLevelDesc_proc typedef ptr vaGetLevelDesc_proto
vaGetLevelDescHook proto :dword, :dword, :dword
vaGETLEVELDESC EQU 068
.data?
vaGetLevelDesc vaGetLevelDesc_proc ?
.code
BGetLevelDesc db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetLevelDesc(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(GetVolumeLevel)(THIS_ UINT Level,IDirect3DVolume9** ppVolumeLevel) PURE;
vaGetVolumeLevel_proto typedef proto :dword, :dword, :dword
vaGetVolumeLevel_proc typedef ptr vaGetVolumeLevel_proto
vaGetVolumeLevelHook proto :dword, :dword, :dword
vaGETVOLUMELEVEL EQU 072
.data?
vaGetVolumeLevel vaGetVolumeLevel_proc ?
.code
BGetVolumeLevel db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->GetVolumeLevel(%08X, %08X, %08X)</font><br>", 0
;STDMETHOD(LockBox)(THIS_ UINT Level,D3DLOCKED_BOX* pLockedVolume,CONST D3DBOX* pBox,DWORD Flags) PURE;
vaLockBox_proto typedef proto :dword, :dword, :dword, :dword, :dword
vaLockBox_proc typedef ptr vaLockBox_proto
vaLockBoxHook proto :dword, :dword, :dword, :dword, :dword
vaLOCKBOX EQU 076
.data?
vaLockBox vaLockBox_proc ?
.code
BLockBox db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->LockBox(%08X, %08X, %08X, %08X, %08X)</font><br>", 0
;STDMETHOD(UnlockBox)(THIS_ UINT Level) PURE;
vaUnlockBox_proto typedef proto :dword, :dword
vaUnlockBox_proc typedef ptr vaUnlockBox_proto
vaUnlockBoxHook proto :dword, :dword
vaUNLOCKBOX EQU 080
.data?
vaUnlockBox vaUnlockBox_proc ?
.code
BUnlockBox db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->UnlockBox(%08X, %08X)</font><br>", 0
;STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX* pDirtyBox) PURE;
vaAddDirtyBox_proto typedef proto :dword, :dword
vaAddDirtyBox_proc typedef ptr vaAddDirtyBox_proto
vaAddDirtyBoxHook proto :dword, :dword
vaADDDIRTYBOX EQU 084
.data?
vaAddDirtyBox vaAddDirtyBox_proc ?
.code
BAddDirtyBox db "<font color=0000A0>%08X: RETURNED %08X IDirect3DVolumeTexture9->AddDirtyBox(%08X, %08X)</font><br>", 0

4176
dll/gamedbg.asm Executable file

File diff suppressed because it is too large Load Diff

67
dll/gamedbg.inc Executable file
View File

@ -0,0 +1,67 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
include \masm32\include\fpu.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\fpu.lib
UNSET equ 0
WAITING equ 1
SET equ 2
ONCREATE EQU 3
ONCREATETEXTURE EQU 4
ONCREATEMODEL EQU 5
pz macro
jmp @F
pstring db "Error", 0
@@: test eax, eax
jnz @F
invoke MessageBox, 0, addr pstring, 0, 0
@@:
endm
pnz macro
.data?
pbuffer db 32 dup(?)
.code
jmp @F
pstring db "Error: %u - %08X", 0
@@: test eax, eax
jz @F
invoke wsprintf, addr pbuffer, addr pstring, eax, eax
invoke MessageBox, 0, addr pbuffer, 0, 0
@@:
endm
.data?
prev_seh dd ?
framedump dd ?
tracedump dd ?
dll_lower dd ?
dll_upper dd ?
d3dx_lower dd ?
d3dx_upper dd ?
d3d9_lower dd ?
d3d9_upper dd ?
hook_hwnd dd ?
last_frame_time dq ?
frame_time dt ?
cpu_freq dt ?
wnd_name db 64 dup(?)
.code
errormsg db "There was an error loading GameDbg.", 13, 10, "The application may not be using DirectX 9.", 0
d3d9dll db "d3d9.dll", 0
LDirect3DCreate9 db "Direct3DCreate9", 0
dxprofilerdll db "gamedbg.dll", 0
cfg_name db "settings.ini", 0
appname db "Settings", 0
keyname db "Window_Name", 0
seh_er db "The following exception has occured:", 13, 10, 13, 10, "[incomplete]", 0

130
dll/log.asm Executable file
View File

@ -0,0 +1,130 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
logheader proto
logfooter proto
logframetime proto
log proto C :dword, :dword, :dword, :dword, :vararg
.data?
fhnd dd ?
com_calls dd ?
prof_num dd ?
.code
tlogheader db "<html><head><title>Frame Dump</title></head><body bgcolor=#C0C0C0 text=#000000 link=#000080 vlink=#000080 alink=#000080><pre><font face=Fixedsys>"
tlogframetime db " (<font color=00A000>Frame Time: %sms</font>)<br>", 0
tlogcrittime db " (<font color=FF0000>CRITICAL> Frame Time: %sms</font>)<br>", 0
tlogfooter db "</pre>COM Calls: %u</font></body></html>", 0
logname db "d:\prf_%03u.htm", 0
; ##########################################################################
log proc C pCount:dword, pText:dword, pAddr:dword, pEax:dword, pArgs:vararg
local filebuff[1024]:byte
local dout:dword
push eax
push ecx
push edx
mov eax, pCount
shl eax, 2
add eax, 20
@@: push [ebp+eax]
sub eax, 4
cmp eax, 20
jne @B
push pEax
push pAddr
push pText
invoke wsprintf, addr filebuff
invoke lstrlen, addr filebuff
mov ecx, eax
invoke WriteFile, fhnd, addr filebuff, ecx, addr dout, 0
inc com_calls
pop edx
pop ecx
pop eax
ret
log endp
; ##########################################################################
logheader proc
local dout:dword
local file_buff[32]:byte
push eax
push ecx
push edx
mov com_calls, 0
invoke wsprintf, addr file_buff, addr logname, prof_num
inc prof_num
invoke CreateFile, addr file_buff, FILE_WRITE_DATA, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0
mov fhnd, eax
invoke WriteFile, fhnd, addr tlogheader, sizeof tlogheader, addr dout, 0
invoke QueryPerformanceCounter, addr last_frame_time
pop edx
pop ecx
pop eax
ret
logheader endp
; ##########################################################################
logfooter proc
local filebuff[1024]:byte
local dout:dword
push eax
push ecx
push edx
invoke wsprintf, addr filebuff, addr tlogfooter, com_calls
invoke lstrlen, addr filebuff
mov ecx, eax
invoke WriteFile, fhnd, addr filebuff, ecx, addr dout, 0
invoke CloseHandle, fhnd
mov fhnd, 0
pop edx
pop ecx
pop eax
ret
logfooter endp
; ##########################################################################
logframetime proc
local li:LARGE_INTEGER
local fbuf[128]:byte
local filebuff[128]:byte
local dout:dword
push eax
push ecx
push edx
invoke QueryPerformanceCounter, addr li
sub esp, 4
fld tbyte ptr [cpu_freq]
fild qword ptr [li]
fild qword ptr [last_frame_time]
fsub
fmul
fist dword ptr [esp]
fstp tbyte ptr [frame_time]
mov eax, dword ptr [li]
mov ecx, dword ptr [li+4]
mov dword ptr [last_frame_time], eax
mov dword ptr [last_frame_time+4], ecx
pop eax
mov ecx, offset tlogcrittime
.if eax < 100
mov ecx, offset tlogframetime
.endif
invoke FpuFLtoA, addr frame_time, 3, addr fbuf, SRC1_REAL or STR_REG
invoke wsprintf, addr filebuff, ecx, addr fbuf
invoke lstrlen, addr filebuff
mov ecx, eax
invoke WriteFile, fhnd, addr filebuff, ecx, addr dout, 0
pop edx
pop ecx
pop eax
ret
logframetime endp
; ##########################################################################

20
dll/makeit.bat Executable file
View File

@ -0,0 +1,20 @@
rem Copyright © 2021 by Brett Kuntz. All rights reserved.
@echo off
if exist gamedbg.obj del gamedbg.obj
if exist gamedbg.dll del gamedbg.dll
if exist gamedbg.lib del gamedbg.lib
if exist gamedbg.exp del gamedbg.exp
if exist gamedbg.exe del gamedbg.exe
\masm32\bin\ml /c /coff gamedbg.asm
\masm32\bin\Link /SUBSYSTEM:WINDOWS /DLL gamedbg.obj
if exist gamedbg.obj del gamedbg.obj
if exist gamedbg.lib del gamedbg.lib
if exist gamedbg.exp del gamedbg.exp
if exist gamedbg.dll dir gamedbg.dll
pause

177
dll/output.asm Executable file
View File

@ -0,0 +1,177 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
custom_output proto :dword
loadlib proto
getaddresses proto
d3dx_init proto :dword
d3dx_uninit proto
draw_text proto :dword, :dword, :dword, :dword
D3DXCreateFontA_proto typedef proto :dword, :dword, :dword, :dword, :dword, :dword, :dword, :dword, :dword, :dword, :dword, :dword
D3DXCreateFontA_proc typedef ptr D3DXCreateFontA_proto
.data?
init dd ?
hmod dd ?
triangles dd ?
d3dx_normfont dd ?
D3DXCreateFontA D3DXCreateFontA_proc ?
time1 dd ?
time2 dd ?
display dd ?
.code
font_family db "Arial", 0
d3dx9_29 db "d3dx9_28.dll", 0
d3dx9_err db "The d3dx9_28.dll library could not be found. Please update your version of DirectX.", 0
addy_err db "Unable to extract the d3dx9_28.dll library procedures. Please update your version of DirectX.", 0
proc_CreateFontA db "D3DXCreateFontA", 0
dx_triangles db "Triangles: %u", 0
dx_availmem db "Available Texture Memory: %u Bytes (%u MB)", 0
dx_displaym db "Display Mode: %ux%u %u Hz", 0
dx_raster db "Scanline: %u", 0
dx_cyclecount db "Frame Time: %u Hz (%u MHz)", 0
; ##########################################################################
custom_output proc device:dword
local buff[128]:byte
local displaymode[4]:dword
local rasterstat[2]:dword
.if init == 1 && framedump != SET && display != 0
mov eax, device
push eax
mov eax, [eax]
call dword ptr [eax+164]
invoke wsprintf, addr buff, addr dx_triangles, triangles
and triangles, 0
invoke draw_text, 2, 0, addr buff, 0FF00FF00h
mov eax, device
push eax
mov eax, [eax]
call dword ptr [eax+16]
mov ecx, 1048576
xor edx, edx
push eax
div ecx
pop ecx
invoke wsprintf, addr buff, addr dx_availmem, ecx, eax
invoke draw_text, 2, 15, addr buff, 0FF00FF00h
lea eax, displaymode
push eax
push 0
mov eax, device
push eax
mov eax, [eax]
call dword ptr [eax+32]
invoke wsprintf, addr buff, addr dx_displaym, displaymode[0], displaymode[4], displaymode[8]
invoke draw_text, 2, 30, addr buff, 0FF00FF00h
lea eax, rasterstat
push eax
push 0
mov eax, device
push eax
mov eax, [eax]
call dword ptr [eax+76]
invoke wsprintf, addr buff, addr dx_raster, rasterstat[4]
invoke draw_text, 2, 45, addr buff, 0FF00FF00h
rdtsc
push edx
push eax
sub eax, time1
sbb edx, time2
pop time1
pop time2
mov ecx, 1000000
xor edx, edx
push eax
div ecx
pop ecx
invoke wsprintf, addr buff, addr dx_cyclecount, ecx, eax
invoke draw_text, 2, 60, addr buff, 0FF00FF00h
mov eax, device
push eax
mov eax, [eax]
call dword ptr [eax+168]
.endif
ret
custom_output endp
; ##########################################################################
loadlib proc
invoke LoadLibrary, addr d3dx9_29
test eax, eax
jz @F
mov hmod, eax
ret
@@: invoke MessageBox, 0, addr d3dx9_err, 0, MB_OK or MB_ICONEXCLAMATION or MB_SYSTEMMODAL
xor eax, eax
ret
loadlib endp
; ##########################################################################
getaddresses proc
invoke GetProcAddress, hmod, addr proc_CreateFontA
mov D3DXCreateFontA, eax
test eax, eax
jz @F
ret
@@: invoke MessageBox, 0, addr addy_err, 0, MB_OK or MB_ICONEXCLAMATION or MB_SYSTEMMODAL
xor eax, eax
ret
getaddresses endp
; ##########################################################################
d3dx_init proc device:dword
.if init == 0
mov init, 1
invoke D3DXCreateFontA, device, 16, 0, 400, 0, 0, 0, 0, 4, 0, addr font_family, addr d3dx_normfont
.if eax != 0
mov init, 0
ret
.endif
.endif
ret
d3dx_init endp
; ##########################################################################
d3dx_uninit proc
.if init == 1
mov eax, d3dx_normfont
push eax
mov eax, [eax]
call dword ptr [eax+8]
mov init, 0
.endif
ret
d3dx_uninit endp
; ##########################################################################
draw_text proc x:dword, y:dword, text:dword, color:dword
local rect:RECT
mov eax, x
mov rect.left, eax
mov rect.right, eax
mov eax, y
mov rect.top, eax
mov rect.bottom, eax
push color
push 100h
lea eax, rect
push eax
push -1
push text
push 0
mov eax, d3dx_normfont
push eax
mov eax, [eax]
call dword ptr [eax+56]
ret
draw_text endp
; ##########################################################################

63
gamedbg.asm Executable file
View File

@ -0,0 +1,63 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
.686p
.MMX
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
WinMain proto
.code
k32module db "Kernel32", 0
llfunc db "LoadLibraryA", 0
dll_name db "gamedbg.dll", 0
cfg_name db "settings.ini", 0
appname db "Settings", 0
keyname db "Window_Name", 0
errormsg db "Unable to find the Program.", 0
start:
invoke WinMain
; ##########################################################################
WinMain proc
local cmd_line[512]:byte
local window_name[128]:byte
local hpid:dword
invoke GetFullPathName, addr cfg_name, 512, addr cmd_line, 0
invoke GetPrivateProfileString, addr appname, addr keyname, 0, addr window_name, sizeof window_name, addr cmd_line
invoke GetFullPathName, addr dll_name, 512, addr cmd_line, 0
invoke FindWindow, 0, addr window_name
test eax, eax
jz nf
xf: mov ecx, eax
invoke GetWindowThreadProcessId, ecx, addr hpid
invoke OpenProcess, PROCESS_ALL_ACCESS, 0, hpid
mov hpid, eax
invoke VirtualAllocEx, hpid, 0, sizeof cmd_line, MEM_COMMIT, PAGE_READWRITE
mov ebx, eax
invoke WriteProcessMemory, hpid, ebx, addr cmd_line, sizeof cmd_line, 0
invoke GetModuleHandle, addr k32module
invoke GetProcAddress, eax, offset llfunc
invoke CreateRemoteThread, hpid, 0, 0, eax, ebx, 0, 0
mov esi, eax
invoke WaitForSingleObject, eax, INFINITE
invoke VirtualFreeEx, hpid, ebx, 0, MEM_RELEASE
invoke CloseHandle, esi
ex: invoke ExitProcess, 0
nf: invoke FindWindow, addr window_name, 0
test eax, eax
jnz xf
invoke MessageBox, 0, addr errormsg, 0, MB_OK or MB_ICONEXCLAMATION or MB_SYSTEMMODAL
jmp ex
WinMain endp
; ##########################################################################
end start

42
makeit.bat Executable file
View File

@ -0,0 +1,42 @@
rem Copyright © 2021 by Brett Kuntz. All rights reserved.
@echo off
if not exist rsrc.rc goto over1
\masm32\bin\rc /v rsrc.rc
\masm32\bin\cvtres /machine:ix86 rsrc.res
:over1
if exist "gamedbg.obj" del "gamedbg.obj"
if exist "gamedbg.exe" del "gamedbg.exe"
\masm32\bin\ml /c /coff "gamedbg.asm"
if errorlevel 1 goto errasm
if not exist rsrc.obj goto nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "gamedbg.obj" rsrc.res
if errorlevel 1 goto errlink
dir "gamedbg.*"
goto TheEnd
:nores
\masm32\bin\Link /SUBSYSTEM:WINDOWS "gamedbg.obj"
if errorlevel 1 goto errlink
dir "gamedbg.exe"
goto TheEnd
:errlink
echo _
echo Link error
goto TheEnd
:errasm
echo _
echo Assembly Error
goto TheEnd
:TheEnd
pause

4
settings.ini Executable file
View File

@ -0,0 +1,4 @@
; Copyright © 2021 by Brett Kuntz. All rights reserved.
[Settings]
Window_Name=Game_Window_Class