//special stuff for skinning, not originally included in the exe. //from rpskin.h void __rxD3D9SkinVertexShaderSetBeginCallBack(RxPipelineNode *node,_rxD3D9VertexShaderBeginCallBack beginCallback) { /* //ripped from a sample app that *DOES* have the function .text:00407340 unknown_libname_1 proc near ; CODE XREF: sub_406100+CDp .text:00407340 .text:00407340 arg_0 = dword ptr 4 .text:00407340 arg_4 = dword ptr 8 .text:00407340 .text:00407340 mov eax, [esp+arg_0] .text:00407344 mov edx, [esp+arg_4] .text:00407348 mov ecx, [eax+14h] .text:0040734B mov [ecx+8], edx .text:0040734E retn .text:0040734E unknown_libname_1 endp */ _asm { mov eax, [esp+node] mov edx, [esp+beginCallback] mov ecx, [eax+14h] mov [ecx+8], edx retn } } void __rxD3D9SkinVertexShaderSetLightingCallBack(RxPipelineNode *node,_rxD3D9VertexShaderLightingCallBack lightingCallback) { /* .text:004217E0 unknown_libname_6 proc near ; CODE XREF: sub_406100+99p .text:004217E0 ; sub_406100+D9p .text:004217E0 .text:004217E0 arg_0 = dword ptr 4 .text:004217E0 arg_4 = dword ptr 8 .text:004217E0 .text:004217E0 mov eax, [esp+arg_0] .text:004217E4 mov edx, [esp+arg_4] .text:004217E8 mov ecx, [eax+14h] .text:004217EB mov [ecx+0Ch], edx .text:004217EE retn .text:004217EE unknown_libname_6 endp */ //TODO: add assembly _asm { mov eax, [esp+node] mov edx, [esp+lightingCallback] mov ecx, [eax+14h] mov [ecx+0Ch], edx retn } } void __rxD3D9SkinVertexShaderSetGetMaterialShaderCallBack(RxPipelineNode *node,_rxD3D9VertexShaderGetMaterialShaderCallBack getmaterialshaderCallback) { /* .text:00407380 __rxD3D9SkinVertexShaderSetGetMaterialShaderCallBack proc near .text:00407380 ; CODE XREF: sub_406100+E5p .text:00407380 .text:00407380 arg_0 = dword ptr 4 .text:00407380 arg_4 = dword ptr 8 .text:00407380 .text:00407380 mov eax, [esp+arg_0] .text:00407384 mov edx, [esp+arg_4] .text:00407388 mov ecx, [eax+14h] .text:0040738B mov [ecx+10h], edx .text:0040738E retn .text:0040738E __rxD3D9SkinVertexShaderSetGetMaterialShaderCallBack endp */ //TODO: add assembly _asm { mov eax, [esp+node] mov edx, [esp+getmaterialshaderCallback] mov ecx, [eax+14h] mov [ecx+10h], edx retn } } void __rxD3D9SkinVertexShaderSetMeshRenderCallBack(RxPipelineNode *node,_rxD3D9VertexShaderMeshRenderCallBack meshRenderCallback) { /* .text:00407390 __rxD3D9SkinVertexShaderSetMeshRenderCallBack proc near .text:00407390 ; CODE XREF: sub_406100+F1p .text:00407390 .text:00407390 arg_0 = dword ptr 4 .text:00407390 arg_4 = dword ptr 8 .text:00407390 .text:00407390 mov eax, [esp+arg_0] .text:00407394 mov edx, [esp+arg_4] .text:00407398 mov ecx, [eax+14h] .text:0040739B mov [ecx+14h], edx .text:0040739E retn .text:0040739E __rxD3D9SkinVertexShaderSetMeshRenderCallBack endp */ //TODO: add assembly //DWORD* nodeadd = (DWORD*)node; __asm { mov eax, [esp + node] mov edx, [esp + meshRenderCallback] mov ecx, [eax + 14h] mov [ecx + 14h], edx retn // - crashy } } void __rxD3D9SkinVertexShaderSetEndCallBack(RxPipelineNode *node,_rxD3D9VertexShaderEndCallBack endCallback) { /* .text:004073A0 __rxD3D9SkinVertexShaderSetEndCallBack proc near ; CODE XREF: sub_406100+FDp .text:004073A0 .text:004073A0 arg_0 = dword ptr 4 .text:004073A0 arg_4 = dword ptr 8 .text:004073A0 .text:004073A0 mov eax, [esp+arg_0] .text:004073A4 mov edx, [esp+arg_4] .text:004073A8 mov ecx, [eax+14h] .text:004073AB mov [ecx+18h], edx .text:004073AE retn .text:004073AE __rxD3D9SkinVertexShaderSetEndCallBack endp */ //TODO: add assembly _asm { mov eax, [esp+node] mov edx, [esp+endCallback] mov ecx, [eax+14h] mov [ecx+18h], edx retn } }