DxCapture 1.1
Platform: Windows 95/98/Me/NT/2000 DxCapture captures all the calls to DirectX in a task. Records the calls and the parameters. It's a powerful tool for exploring the way game works and seeing how to use DirectX. Generation of this tool How to use Recorded File FAQ Release History Generation of this tool I write this tool for the needs of game localization. I have localized game several years. When localizing 2D games, usually you should only move font dots form one memory area to another. However, for the localization of 3D games, it's much difficult. You have to learn DirectX, and get to know like Render, Excute Buffer, Z-Buffer, etc. It's hard to learn DirectX. And the sample is complicated, so widely used macros make you confused. Also you can't know excatly functions call order when running. After a long time hardly learn, you come to the the real localization work. When tracing the game, you find a call to DirectX, if you want to know the function name, you have to count the offset of functions in include file. So many troubles. Then I find that it's a good idea to write a tool to monitor the calls of directX, so has this tool. How to use Simply run dxcap.exe. Then you'll find the GUI like below. ![]() If you want to check which DirectX functions are called when c:\game\game.exe running, just input c:\game\game.exe into the top edit and c:\game\game.log into the bottom edit, then click Run. game.exe is running now. When game.exe is finished, you can find all the calls to DirectX logged at c:\game\game.log. Recorded File The recorded file is like below:
Each line of the recorded file means one DirectX function was called. The ret 0 at head of line means 0 was returned in this call. The following Ixxxxxxxx is the interface of this call, the next is the type of interface, then the name of function, then the parameters. Maybe you have recognized some lines are ended with Ixxxxxxxx, it means a new interface is created. For example, you can see the second line ended with I85C3B020, it means the new interface is 85C3B020, the foregoing Direct3D: is the interface's type. For the last line, there is no type for I85B3EAE0, just because Direct3DDevice::CreateExecuteBuffer method can only create Direct3DExecuteBuffer interface, so the type is omitted. To avoid too leng of lines, I reduce the name of parameters. For example, size:3FC0 means lpDesc->dwBufferSize=0x3CF0, you can't see other parameters, because I think other parameters is not so import - like lpDesc->dwSiz is always sizeof(D3DEXECUTEBUFFERDESC). Note: All numbers appers in recorded file are hexadecimal. FAQ I find there is nothing in recorded file when game ended, why? Because DxCapture didn't capture DirectX's initialization. The most possible reason is the main program of game has been packed or encrypted. For this instance, there is an earlier version can capture calls. But it depend on Platform. Please Email me and tell me the version of your OS to ask for it. Can I use DxCapture to capture calls of DirectX 8? No, you could't. I haven't write the part of program which support DiretX 8. If you use this version to capture DirectX 8 calls, error will occur. I noticed that some functions's parameters have been logged, but others haven't. The tool is expanded for my work. When find a function is used for the localizing, I add code to log parameters for this function. Please be attention to our website for new version. Release History 1.1 - 2001.3.30 Modified the time of dll injection to object process creation. 1.0 - 2002.3.25
First release. |