From 0075eb9b1376271738a69636148fd7c89075297d Mon Sep 17 00:00:00 2001 From: gho tik Date: Mon, 3 Nov 2014 11:38:55 -0500 Subject: [PATCH] v2_02_62_src Former-commit-id: a053e9cf3708adc2b143d5c01f7d515b3594686e --- build/dxwnd.dll | 4 +- build/dxwnd.ini | 239 +++++++++++++++++++++++++++++++++- build/readme-relnotes.txt | 9 +- d3d9proxy/proxydll.vs2008.suo | Bin 8192 -> 10240 bytes dll/ddraw.cpp | 14 +- dll/dxhelper.cpp | 17 +++ dll/dxhelper.h | 3 +- dll/dxwnd.aps | Bin 37664 -> 37664 bytes dll/dxwnd.cpp | 2 +- dll/dxwnd.vs2008.suo | Bin 154112 -> 176640 bytes dll/hd3d.cpp | 22 +++- dll/hd3d7.cpp | 122 +++++++++-------- todo.txt | 37 ++++++ 13 files changed, 394 insertions(+), 75 deletions(-) create mode 100644 todo.txt diff --git a/build/dxwnd.dll b/build/dxwnd.dll index 1356ba6..2a3b826 100644 --- a/build/dxwnd.dll +++ b/build/dxwnd.dll @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c6bba6804bdeb0de0f1ff7e02150e77f737c1f1bcbab40e6b192d48a7ab00451 -size 462848 +oid sha256:d99c6a80bd9c8ad4d82a995f662236e7a452ad2317a55eda538c7d2ea4ed3bb6 +size 463872 diff --git a/build/dxwnd.ini b/build/dxwnd.ini index 6b38169..91aeb61 100644 --- a/build/dxwnd.ini +++ b/build/dxwnd.ini @@ -3458,7 +3458,7 @@ coord138=0 flag138=679493664 flagg138=1208025088 flagh138=65556 -flagi138=4 +flagi138=67596 tflag138=6403 initx138=0 inity138=0 @@ -3471,7 +3471,7 @@ posy138=50 sizx138=800 sizy138=600 maxfps138=0 -initts138=-2 +initts138=0 winver138=0 maxres138=-1 title139=New York Race @@ -3630,11 +3630,11 @@ module145= opengllib145= ver145=1 coord145=0 -flag145=134234146 +flag145=134234274 flagg145=134283520 flagh145=20 flagi145=12 -tflag145=5249 +tflag145=6163 initx145=0 inity145=0 minx145=0 @@ -3646,7 +3646,7 @@ posy145=50 sizx145=800 sizy145=600 maxfps145=0 -initts145=2 +initts145=0 winver145=0 maxres145=-1 title146=Total Soccer 2000 (3DFX) @@ -3699,8 +3699,233 @@ maxfps147=0 initts147=0 winver147=0 maxres147=-1 +title148=Titan Quest +path148=D:\Games\Titan Quest\Titan Quest.exe +module148= +opengllib148= +ver148=9 +coord148=2 +flag148=134218272 +flagg148=134217728 +flagh148=20 +flagi148=1026 +tflag148=6147 +initx148=0 +inity148=0 +minx148=0 +miny148=0 +maxx148=0 +maxy148=0 +posx148=50 +posy148=50 +sizx148=800 +sizy148=600 +maxfps148=0 +initts148=0 +winver148=4 +maxres148=-1 +title149=Titan Quest Immortal Throne +path149=D:\Games\Titan Quest Immortal Throne\Tqit.exe +module149= +opengllib149= +ver149=9 +coord149=0 +flag149=134218272 +flagg149=1207959552 +flagh149=20 +flagi149=4 +tflag149=0 +initx149=0 +inity149=0 +minx149=0 +miny149=0 +maxx149=0 +maxy149=0 +posx149=50 +posy149=50 +sizx149=800 +sizy149=600 +maxfps149=0 +initts149=0 +winver149=0 +maxres149=-1 +title150=Darius Gaiden +path150=D:\Games\Darius_gaiden\DARIUS.EXE +module150= +opengllib150= +ver150=0 +coord150=0 +flag150=671089184 +flagg150=1207959552 +flagh150=20 +flagi150=4 +tflag150=0 +initx150=0 +inity150=0 +minx150=0 +miny150=0 +maxx150=0 +maxy150=0 +posx150=50 +posy150=50 +sizx150=800 +sizy150=600 +maxfps150=0 +initts150=2 +winver150=0 +maxres150=-1 +title151=Dark Colony +path151=D:\Games\DarkColony\DCOLONY\DC.EXE +module151= +opengllib151= +ver151=0 +coord151=0 +flag151=136315424 +flagg151=1207959552 +flagh151=20 +flagi151=4 +tflag151=0 +initx151=0 +inity151=0 +minx151=0 +miny151=0 +maxx151=0 +maxy151=0 +posx151=50 +posy151=50 +sizx151=800 +sizy151=600 +maxfps151=0 +initts151=0 +winver151=0 +maxres151=-1 +title152=Dark Reign 2 +path152=D:\Games\Dr2\dr2.exe +module152= +opengllib152= +ver152=0 +coord152=0 +flag152=671088672 +flagg152=1207959552 +flagh152=20 +flagi152=4 +tflag152=0 +initx152=0 +inity152=0 +minx152=0 +miny152=0 +maxx152=0 +maxy152=0 +posx152=50 +posy152=50 +sizx152=800 +sizy152=600 +maxfps152=0 +initts152=0 +winver152=0 +maxres152=-1 +title153=Dark Planet: Battle for Natrolis +path153=D:\Games\DarkPlanet\Dark.exe +module153= +opengllib153= +ver153=0 +coord153=0 +flag153=671088673 +flagg153=1208025088 +flagh153=20 +flagi153=12 +tflag153=0 +initx153=0 +inity153=0 +minx153=0 +miny153=0 +maxx153=0 +maxy153=0 +posx153=50 +posy153=50 +sizx153=800 +sizy153=600 +maxfps153=0 +initts153=0 +winver153=0 +maxres153=-1 +title154=Geneforge +path154=D:\Games\Geneforge\Geneforge.exe +module154= +opengllib154= +ver154=0 +coord154=0 +flag154=134234660 +flagg154=1207959680 +flagh154=20 +flagi154=131076 +tflag154=0 +initx154=0 +inity154=0 +minx154=0 +miny154=0 +maxx154=0 +maxy154=0 +posx154=50 +posy154=50 +sizx154=800 +sizy154=600 +maxfps154=0 +initts154=0 +winver154=0 +maxres154=-1 +title155=Geneforge (GOG) +path155=D:\Games\GOG.com\Geneforge\Geneforge\Geneforge.exe +module155= +opengllib155= +ver155=0 +coord155=0 +flag155=134234656 +flagg155=1208025088 +flagh155=20 +flagi155=12 +tflag155=0 +initx155=0 +inity155=0 +minx155=0 +miny155=0 +maxx155=0 +maxy155=0 +posx155=50 +posy155=50 +sizx155=800 +sizy155=600 +maxfps155=0 +initts155=-8 +winver155=0 +maxres155=-1 +title156=Jumpgate Classic +path156=D:\Games\Jumpgate\Jumpgate\jumpgate.exe +module156= +opengllib156= +ver156=0 +coord156=0 +flag156=134218272 +flagg156=1207959568 +flagh156=84 +flagi156=2 +tflag156=0 +initx156=0 +inity156=0 +minx156=0 +miny156=0 +maxx156=0 +maxy156=0 +posx156=50 +posy156=50 +sizx156=1200 +sizy156=900 +maxfps156=0 +initts156=0 +winver156=0 +maxres156=-1 [window] -posx=1010 -posy=145 +posx=963 +posy=147 sizx=638 sizy=618 diff --git a/build/readme-relnotes.txt b/build/readme-relnotes.txt index 3511506..9bff007 100644 --- a/build/readme-relnotes.txt +++ b/build/readme-relnotes.txt @@ -406,4 +406,11 @@ fixed ZBUFFER surface creation to handle GOG Incoming troubles on some cards fixed handling of special effects (wireframe, no fogging, zbuffer always) to be valid on all d3d versions v2.02.61 -added directx "Compensate Flip emulation" flag: used primarily to get rid of mouse artifacts due to emulated Flip rpocedure in windowed mode. Fixes Gruntz issues and some other games... \ No newline at end of file +added directx "Compensate Flip emulation" flag: used primarily to get rid of mouse artifacts due to emulated Flip rpocedure in windowed mode. Fixes Gruntz issues and some other games... + +v2.02.62 +fixed d3d7 CreateDevice hook and d3d7 rendering options (wireframe, disablefogging, zbufferalways) +fixed doublebuffer emulation - avoid returning the backbuffer when zbuffer is requested. Fixes rendering problems of many games! + + + diff --git a/d3d9proxy/proxydll.vs2008.suo b/d3d9proxy/proxydll.vs2008.suo index a2377130c7228dcc29314ee3353255faa0c575ae..99172ba07305f8ceee07e91c802055344f215bbf 100644 GIT binary patch delta 2001 zcmb`IT}+!*7{{Ntye}(-0j0Fi7Frl6D5I9o!Q5CoilTrkYIGXS!pNqWIVNcn2V2^C zp^MRE94y_5Xi+>cc^jfS>H|uTv!#P^Gk29iU3w$dGg9wO%HqZ`YAP(5C z6Ml~=cf*f@d%?KT*ynzf`@mk%4-()3kOV_u5U}5{$m23%D*NEaOnE>2gQk2CegYf< zDUb$-!6e84PV^A`!(f{A%kw|p@}9J+MrBa1M&f$0<`dnrle$@h82DzYg@M}b2I00Z z>o(M;`w9v-pp0Ud%k&aoGJ%87wTF?!d&pHm;eSEyy zW|Y47;7>#k1wPlCfrKVPf9iZgXuWw_zqI!{L9`9)+2%DXq<5N+I0#Xxg@dgQ%?FP- zJVqYYZAMSWTHe&xLKEweZWFXQKlgkZ@!c=a2{(CM)3JCZr16*KtUQ9&C0UUZvWQ0> zLTwz0UX(L(Mh`}#x*1Kaw`QCG1_#}xyENar?JzF&tZOb@4BUfS!o>IJHUf@4twqK) z)$p!aY@pyyDd+H8!y-wUk^vlo5gdR~1n)4G9>LQ62;~$QKxrK6D0=pzZ3rc{58^io z(r)QISCXLo+E!*8>kLKG7RnaZVe(=U7BjQ9Znu*uBtifghyAyd#s^yv(M(`;!L68cl|In zqg(9fgb?VaiwFd6|i(qg|D=W^M?ah>QG)lxJ}Z=C8qMPr^4E zt;1+sk>4<`$kD9x8^wb`gq$djE&{Gc_;F3x}i)uhf z+z_5mfRq~tXe)6-B5*{Ys$YU*xwH}o6!Ujt$E%-r_P^tq*;yN1qxGrb5kt$ehP$gD z`MdR$DYdzvIVl^`R$hIM$p_ra7#mE{GwFwzfhp5_HAk8hB*Q1s6VWC;s?i`M(O7`O_}B?WJeedT zCwI2lHrrxNc8guXyY5h7*I;X)!fF^gs9>+ju0ySW@wh!wu0p*5pE`SvD~u~L3g%8C z$*K3(heqtr@W`S=sYpiHFk=HVzQhCWnME3o3O$W)@iTN1?+E)k!|pCG(dJA?M4_E_ zwV-_wPINj9SLrDBkMdH&OuVFfg#|OEix9RwuD@BteWZSp9+@X&wim2mb7TBHeNB|m zy9Q0GX+Ima`w`RWZ7$=g^gDZh^tZLt2h=Y`NE0#oo?I}MCCP0xuhOQn!! 1)){ + if (IsBack && (DDSD_Prim.dwBackBufferCount > 1) && (lpddsc->dwCaps & DDSCAPS_BACKBUFFER)){ + //if (IsBack && (DDSD_Prim.dwBackBufferCount > 1)){ *lplpddas = lpDDSBack; - OutTraceDW("GetAttachedSurface(%d): DOUBLEBUFFER attached=%x\n", dxversion, *lplpddas); - return 0; + OutTraceDW("GetAttachedSurface(%d): DOUBLEBUFFER attached to BACK=%x\n", dxversion, *lplpddas); + return DD_OK; } // on primary surface return the lpDDSBack surface coming from either an explicit @@ -2834,7 +2838,7 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet if (lpDDSBack) { *lplpddas = lpDDSBack; OutTraceDW("GetAttachedSurface(%d): BACKBUFFER attached=%x\n", dxversion, *lplpddas); - return 0; + return DD_OK; } else { *lplpddas = NULL; @@ -2842,7 +2846,7 @@ HRESULT WINAPI extGetAttachedSurface(int dxversion, GetAttachedSurface_Type pGet return DDERR_NOTFOUND; } } - + // proxy the call... res=(*pGetAttachedSurface)(lpdds, lpddsc, lplpddas); diff --git a/dll/dxhelper.cpp b/dll/dxhelper.cpp index 90b8119..a2bbba1 100644 --- a/dll/dxhelper.cpp +++ b/dll/dxhelper.cpp @@ -1662,3 +1662,20 @@ char *ExplainD3DRenderState(DWORD c) } return p; } + +char *ExplainRenderstateValue(DWORD Value) +{ + char *p; + switch(Value){ + case D3DCMP_NEVER : p="D3DCMP_NEVER"; break; + case D3DCMP_LESS : p="D3DCMP_LESS"; break; + case D3DCMP_EQUAL : p="D3DCMP_EQUAL"; break; + case D3DCMP_LESSEQUAL : p="D3DCMP_LESSEQUAL"; break; + case D3DCMP_GREATER : p="D3DCMP_GREATER"; break; + case D3DCMP_NOTEQUAL : p="D3DCMP_NOTEQUAL"; break; + case D3DCMP_GREATEREQUAL : p="D3DCMP_GREATEREQUAL"; break; + case D3DCMP_ALWAYS : p="D3DCMP_ALWAYS"; break; + default : p="???"; break; + } + return p; +} \ No newline at end of file diff --git a/dll/dxhelper.h b/dll/dxhelper.h index 1ef6d57..a9a3e8d 100644 --- a/dll/dxhelper.h +++ b/dll/dxhelper.h @@ -46,4 +46,5 @@ extern char *ExplainPeekRemoveMsg(DWORD); extern char *ExplainGetDCExFlags(DWORD); extern char *ExplainPaletteUse(UINT); extern char *ExplainRasterCaps(DWORD); -extern char *ExplainD3DRenderState(DWORD); \ No newline at end of file +extern char *ExplainD3DRenderState(DWORD); +extern char *ExplainRenderstateValue(DWORD); diff --git a/dll/dxwnd.aps b/dll/dxwnd.aps index e290c46378e7a73038d6dc6ab312383ba7f9695f..c0206be06ad175a0173346e26247be98007cdd12 100644 GIT binary patch delta 28 icmZ3mjA_9#rU~JUW*Z|!`WekO=k}{I0jbFodl>Iwt^ delta 28 icmZ3mjA_9#rU~JUCL1F}`Wa0&=k}{I0jbFodl>. #include "dxwnd.h" #include "dxwcore.hpp" -#define VERSION "2.02.61" +#define VERSION "2.02.62" #define DDTHREADLOCK 1 diff --git a/dll/dxwnd.vs2008.suo b/dll/dxwnd.vs2008.suo index 78dec3310ac46f8fec06ddcc52504c27494152a2..0fa49066b19c83cc72d0fef589548648254b3bcc 100644 GIT binary patch delta 15568 zcmeI3d3;nww#RSXbV6q_bV5i%fY4dl0wjTi9Xc!_Vn7lh>`P=5WQh<#0qL;lsDl!? zK!FMbP~1?#piyT&W5#6`M@MwrP)2bFMFxF{%R_j--@T`sb{XV-p8oZwoXR=(dr#e4 zx0X|VjOK=d5mQs-B7IewYL*fUwLS6+_jil`*O}vIX_9Fg zMjx~OOx%$$ylUM<)kb$rHdE@oiBsI+U5#l*536XzXzT6N^ssrxaIH#I8tsm#7Gcwk zIraV9xLnrL(S5C&j6vc2GSiByY^FW?RB~inyefvZ(5hDT)ZSw%p?+v)p|VzH6EERDJE?@3oEopzT^|ULm{$%@0@d7B-om+*w&fpF88@lGkgonYb zRj^e3$^NAtYklf)J^3RQYyHX7Ijqpg*OiA=hD{Rt7*)n}V}a4xmJ!$-n6F=&fXAHZrc(5Yqj>srOA0M> zX$PxrRIF7~=Cf+!;`uhTewyA}0E6NYgC1U%yhOcP-{RCeZdWGSz&d@VmHM;Q;%vR= zBwqd{as+S^a{ZyRnXS}s^i^3Z!>%($i*RP6F$@*+d=WgIFp75o3 z#t7?=vj?);@p@XW>TEq&=~aXHq%3{-2uhvERi2Bwz;GyfvX?Qz7^M9zRhx#?RFxj4 z40~9Fx553Hj+z2B)>aGhp)!RImJ_&+MU@BrfPakM_!>FC;qf#z#MI>*RIwUisTqBB z?gmt2T8-+b-(IH@v@1`g>#8l#dgZA^730)3*tV)ruh^(YsbZ@rDNWa;s?>(mZ1rBG zwR1|U_LV5NuGxq}H-3!gSL@1LeCOX=q0f#Nd3EMyRk42fa@dq@1)qYZvl?f{Hl2^k zmIglGxTfK3o>HcM@0jYK4{SlbP@4{{m)B|hBdUGaDs=o&*h2MDlkhjt2JVJ$`l>eWm@a51H*zAf&Ma2l-0h)x zc{Qb2d8dzt#t9Qh-G6XRo&(kq`3uyc6J%%PuE-_GdC2+57bAB=ES2_GwUjwH76bldi zF}N6^S583hjd<7Ty{Lx9(aL99xmhVHQs=EzdHO__@>o?%Vw)JocvQJWt0lI(xT-Zq z^fLC>!1V)SRd1&W&#(zywdnJ`(Cj|%sXbW=Z@)uj+Py*7msE+)TVzyX*3Jr@d%#R7b0@bOp2S!-FF}dOFM71u~eHVP+@6cs> z^Bnb9^8L_W19=_!4djE!Y_Wzb=Bmx%n@Uu=Sn9z?O1*5)hfjwSTA;=&|}Ey z$f2&G5Z9L?(}RTaFVTw0Xj!gtp?nC~Y~+|9@b7RPh4$o18Dd{;D$!&r&@L$0C?qcw619k)=m)!u~|gn>T^E~6)$7}}&JvN;!wdB#j*PRO8Z zVGki^P0rADtpNiSIA9R?O&Rb@qBOwE~5599LX>1f#)r%DyA2(7JKP zpzzixF&zFkY4;{&Mo%_!4a^vW%PCiV%%%jj*m(?=m>iiGoTwVZ%&q&Cs3>)f-gi`8 zswW*)6>7M(!dswk{Y0gxBrap)t;SA1%eT;@XP2SwQ?{r~UE4~v($!g98(QN_pDBP- zum^2_U6u!b@d{~8fl9IFt%|oAJ4ETiOqH!`C&CrkcICkji@}t$7za_NLzwLtaIXSb?KKj->wXgtb0L~avVCvvCAJ4Nmmd5_5ZMDBrn z0Qo`WhlDjiJ}mlvk&i;Yhx}NW5obIOE z6YG{I7hf@QtL>ZE2Q3z3%ua)+SzydZsBk(AcfL${(eAp=c08d^kHcW983)G7=(-YE&d}eDGRG=JI9Z5753f+JN8eK? zRq`%0>NLEZX`v(Rzq)ai>ZXQtIKx>eSY7h5dMs`M*1g3c-8jnj z)NFW!zaOvkP_Fy#jSYe3!uYdAQW&Sal=YMJM9H647aY zw3(*8$5lJEDL9BCj^icE+tGP&zxjf z-~wKFk=UdZ+-iD>c?ox4`Ktj4Sw z9r20!MEh2$GL|`S%6& zf>r7PiAQwNYSmv)7;7f=HL&rkY4Swa&y;2rg4M9=fYlznEfr?X9GmjBnXXEUyzw1|!RD_PsFFiW=$B6O3}Le{%J64SQ(s zwN~kZZa*=VVv4IDV>Iu)Cy;nNA_ojLROkaO z%<+0{lId=HfumR_eyG+rFGr}h&=?GNKFg?vx15g!u-aPT?iiVDnD#+P%izSdPPS_o zo`;ww*GlW05q>Kwx*>QoVjpIFh2sVac;CGd_xXuDu`wSBvrd(F!0cd29#pIimW-}P z$uU4k*kYQ`V7*%f{pO&BKH0;3#rjKZPRucw&bBQL- zLVgXI>7U4C%aGqjX5yG88;g7r*-ijt7b6EwqoM)WoQ5$PBZ_xfy|6K6=z43fp!P0{ zE2zE8;>SAWSf&s1K8{GF-B2_pvRx_z<1($6IKwy3WfCwVZDX*kH)y+VTLf9M73&7qIrtp3v56!|OpnOPHW&m;-bTpnZTG({x(@==%MqzBm z9nkwi?i9xI`=N6%KO$@r^qZhF9Theb`ln=gzj0C^3x5rL2;{fI_$3`La%N`^ByIX5 zpJHL8-oi#h?*pA_s4(i62rCtq1ID5A4aNa|dqZlq%2h>tY*XY&WTp)mR)Lwt5ynYR z8+sNlyVN;y18lf1N=Jl}y-Fo?W|gm%d-Qblue94NvK8cQqSqPLOYS6DDWZe%vN6k9 zCmv{JHamZ8WpH`0V=HIp8WRka+BFTtR(v^tS>U?S$<7S8S64(4Mf#w~vVO^1EVjyuj!fy~X+cy>!OV541FIaOZb6xP2;h zj@$yflVqj1smajZQ`mA&b#$Ejb5!kM@41`tal?k-NuM zI)0qJH4Ls{F7M(YTiMYKmp_BkzlOq8^KW6+PEV#DxLWmPxZhlNOffGyU)w&BWO9=b zIGl-Rk4!#afo)^W%k}Tan7vUduw$F1=eIonYh*7Hc#VAqNY?iP&A#AR&st|USuxeqLP{tzYd@i?I_#c)JELvAXAoh4>unX$OrBb z!@ry}G(LdNZ}?EyHPHVmc1MH(8ApYEB8*@11@sw^Cx!8J;8WWU-`@i}G8)Z9?#bO5 zQiZUA&_@d!AHpUGn<8vB>?(!T3M&R%Cv0N~+a&BZGQ8hTw+q}ZhDD%t!k!k!$~+_N zWnrxN8_?4s-x5{;{U2iYc8J~k&>6veAZ#df|2txMQXrV|rLa@N7&3e%%!Sy3FJ)vC z!8ik{i7@hP=v^S&3A+rs8#+^gFxvHo4%h5A`U*r8WB8yChg=%MmOsz$e9!m1z|Hxe)db=sw(gErh)eeJ(|4wqL%e?5e~0iEfPFxJ_aA_KSu6R#*kt8e!W)*mhz2;xMFG>)yx@ z3w%-xfh3K9^m3FTWkIq8a|h_TkR63x0zF&oI)&Kfi(S_cyUvcC-zX56jlzWvH2Ml_ z3)WBAU}4+Ah6pPY)&ZY8P2GJ~fVq8ihP}2w#sEZ8>*1aS$_Jjv(yAiLUku#_ceQKWDTTM*QapNVZY8zzIgg zhq$v@=@rM-Kr7ePL_c#}^{ZdG?R1#`bMyrV%6~xyKJ+d24-$V%CSwj_!5;jN}H@$;}l?r1w z4-+;?m=A2Suqt7!>{Y^Uu$kZSp}!G$ix_faeygwz!War|6t-O$zl6Ut4u|B=iENn? zWd451^i+r)e^jL1Az?i0dD<_A>>w8A$p1*#C&D<&KNa?+uyn9f!cGeVGQJZQi8!6l zV^>5;%$_Zbc5Q|EdkN%9(p%s-VeHTG!e$6#6V4QNrLYXJIl{II12Ue1&c*Q=VH{`M z#O|QO{095@O@UvDA)D!IVd=IkDzmDrP-7Hf#VdOoaa|!DujPIaFWf~@o zl^Gt6{%4vfkfU{y7)}@F1)Cvkwy+v7x=N-+!gvC+SXhm)EU*>AHV9*PZWMOUP=W0C zdj-BIj05R_up`0-f*lq1Eo9)_;@mHP{F%gBxisE7J~>`rb4=yhzbyv#Sst}Wr+ubI z>YeZ6=N9~figTw1?u_6TuubR>Xn_%6;0Ltv-#b2N*PznPb^kfF{C{|A8M?3JuG1KW z{0na^FLYn&|CKhD7rL*65BXI#mS|C?pWRo|htV(m(i_VQ-Be#@8uR2%8D^sj$<+cue%2un25p=%go4$DbzL(;#^SZigNxthcZQV0}dIAHs^DGYu9t z6?(C-;gC)^($JV`-lzPW6hq{=Zj?wC9>c96(pX^(w#N(OIb>itsS>tSSUK#L3ELu! z0r+0%49-Q#Kd70Zq~W zfm)XUUV)oKA;~x}he00>d1DB>2|CBbt->CLJ`g(7W??+1+#+nNFrHIx6Sh;>bdJAW z0v`~_7d|NLd10&!&l*`VoX=(2^+*%LNUmAjiwnkrl$Sg%t?n6f1)6g&ZhsHFTa?GEEf5XHJD)2{{we4hzF@ zu>u#|Uh*80Mm(pS1f6NEuqx=a!nO(H{%5TE^(@|k869;!X7&1XzEKfB*5xW+`27uuN6AA6#Rv?cx z+u0CX1z~h5`NC?1vDgaeUdWZg=ieT`!PHFPWatUPS_|6_mMW}7 z*aEPNMK29uTws{Wg-wNinXvJYfxR%h>dq!I|LLuEH*soppGXeIJ)-Xu*#_(h(Hlj2 z!JZQR&mnftiT<+44A{LQ`oW+b+W(MTyeBdlhM$RkLL@8mh3H?2>YMQ3A({EC;I;eWpkb)LEj>6G?wwCHgfYc?P;%^wlDLU^k1tP9!Sh zH!QihT_j(!L-cz^GH|$G^!*~)O;3paXOV1~zl#2n$VI$|G5q_ypZ%vG=^Fo6oCH1ZnCkUY zM`fd|cCKWe%lE{Qdt0T0$L$e31Rm%7o5LRVaXkMW)#h{ex1PJ-9rrJbzTF1)x7z3P S{CBOF#oUPncD>UA#{U2s+~t!1 delta 12280 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\n", ExplainRenderstateValue(Value)); Value = D3DCMP_ALWAYS; } - if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRS_FILLMODE)) Value=D3DFILL_WIREFRAME; - if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRS_FOGENABLE)) Value=FALSE; - //if(1 && (State == D3DRS_SPECULARENABLE)) Value=TRUE; - return (*pSetRenderState)(pd3dd, State, Value); + if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRS_FILLMODE)){ + OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=%x->D3DFILL_WIREFRAME\n", Value); + Value = D3DFILL_WIREFRAME; + } + if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRS_FOGENABLE)){ + OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=%x->FALSE\n", Value); + Value = FALSE; + } + + res=(*pSetRenderState)(pd3dd, State, Value); + if(res) OutTraceE("SetRenderState: res=%x(%s)\n", res, ExplainDDError(res)); + return res; } HRESULT WINAPI extGetRenderState(void *pd3dd, D3DRENDERSTATETYPE State, DWORD Value) diff --git a/dll/hd3d7.cpp b/dll/hd3d7.cpp index 4223947..44026ec 100644 --- a/dll/hd3d7.cpp +++ b/dll/hd3d7.cpp @@ -77,11 +77,14 @@ AddViewport3_Type pAddViewport3 = NULL; Scene3_Type pBeginScene1 = NULL; Scene3_Type pBeginScene2 = NULL; Scene3_Type pBeginScene3 = NULL; +Scene3_Type pBeginScene7 = NULL; Scene3_Type pEndScene1 = NULL; Scene3_Type pEndScene2 = NULL; Scene3_Type pEndScene3 = NULL; +Scene3_Type pEndScene7 = NULL; SetRenderState3_Type pSetRenderState2 = NULL; SetRenderState3_Type pSetRenderState3 = NULL; +SetRenderState3_Type pSetRenderState7 = NULL; GetViewport7_Type pGetViewport7 = NULL; SetViewport7_Type pSetViewport7 = NULL; SetLightState_Type pSetLightState3 = NULL; @@ -148,14 +151,17 @@ HRESULT WINAPI extQueryInterfaceD3(void *, REFIID, LPVOID *); HRESULT WINAPI extD3DInitialize(void *, LPDIRECT3D , LPGUID, LPD3DDEVICEDESC); HRESULT WINAPI extD3DGetCaps(void *, LPD3DDEVICEDESC ,LPD3DDEVICEDESC); -HRESULT WINAPI extSetRenderState2(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extBeginScene1(void *); HRESULT WINAPI extEndScene1(void *); HRESULT WINAPI extBeginScene2(void *); HRESULT WINAPI extEndScene2(void *); -HRESULT WINAPI extSetRenderState3(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extBeginScene3(void *); HRESULT WINAPI extEndScene3(void *); +HRESULT WINAPI extBeginScene7(void *); +HRESULT WINAPI extEndScene7(void *); +HRESULT WINAPI extSetRenderState2(void *, D3DRENDERSTATETYPE, DWORD); +HRESULT WINAPI extSetRenderState3(void *, D3DRENDERSTATETYPE, DWORD); +HRESULT WINAPI extSetRenderState7(void *, D3DRENDERSTATETYPE, DWORD); HRESULT WINAPI extGetCaps3(void *, LPD3DDEVICEDESC, LPD3DDEVICEDESC); HRESULT WINAPI extSetLightState3(void *d3dd, D3DLIGHTSTATETYPE d3dls, DWORD t); HRESULT WINAPI extSetViewport3(void *, LPD3DVIEWPORT); @@ -269,7 +275,7 @@ void HookDirect3DSession(LPDIRECTDRAW *lplpdd, int d3dversion) case 7: SetHook((void *)(**(DWORD **)lplpdd + 0), extQueryInterfaceD3, (void **)&pQueryInterfaceD3, "QueryInterface(D3S)"); SetHook((void *)(**(DWORD **)lplpdd + 12), extEnumDevices7, (void **)&pEnumDevices7, "EnumDevices(7)"); - SetHook((void *)(**(DWORD **)lplpdd + 32), extCreateDevice7, (void **)&pCreateDevice7, "CreateDevice(D3D7)"); + SetHook((void *)(**(DWORD **)lplpdd + 16), extCreateDevice7, (void **)&pCreateDevice7, "CreateDevice(D3D7)"); break; } } @@ -302,6 +308,7 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS); + //if(1) (*pSetRenderState2)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_LESSEQUAL); } break; case 3: @@ -317,11 +324,21 @@ void HookDirect3DDevice(void **lpd3ddev, int d3dversion) if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS); + //if(1) (*pSetRenderState3)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_LESSEQUAL); } break; case 7: + SetHook((void *)(**(DWORD **)lpd3ddev + 20), extBeginScene7, (void **)&pBeginScene7, "BeginScene(7)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 24), extEndScene7, (void **)&pEndScene7, "EndScene(7)"); SetHook((void *)(**(DWORD **)lpd3ddev + 52), extSetViewport7, (void **)&pSetViewport7, "SetViewport(7)"); SetHook((void *)(**(DWORD **)lpd3ddev + 60), extGetViewport7, (void **)&pGetViewport7, "GetViewport(7)"); + SetHook((void *)(**(DWORD **)lpd3ddev + 80), extSetRenderState7, (void **)&pSetRenderState7, "SetRenderState(7)"); + if(pSetRenderState7){ + if(dxw.dwFlags2 & WIREFRAME)(*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_FILLMODE, D3DFILL_WIREFRAME); + if(dxw.dwFlags4 & DISABLEFOGGING) (*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_FOGENABLE, FALSE); + if(dxw.dwFlags4 & ZBUFFERALWAYS) (*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_ALWAYS); + //if(1) (*pSetRenderState7)(*lpd3ddev, D3DRENDERSTATE_ZFUNC, D3DCMP_LESSEQUAL); + } break; } } @@ -773,67 +790,42 @@ HRESULT WINAPI extD3DGetCaps(void *d3dd, LPD3DDEVICEDESC lpd3dd ,LPD3DDEVICEDESC return res; } -char *ExplainRenderstateValue(DWORD Value) +HRESULT WINAPI extSetRenderState(SetRenderState3_Type pSetRenderState, int version, void *d3dd, D3DRENDERSTATETYPE State, DWORD Value) { - char *p; - switch(Value){ - case D3DCMP_NEVER : p="D3DCMP_NEVER"; break; - case D3DCMP_LESS : p="D3DCMP_LESS"; break; - case D3DCMP_EQUAL : p="D3DCMP_EQUAL"; break; - case D3DCMP_LESSEQUAL : p="D3DCMP_LESSEQUAL"; break; - case D3DCMP_GREATER : p="D3DCMP_GREATER"; break; - case D3DCMP_NOTEQUAL : p="D3DCMP_NOTEQUAL"; break; - case D3DCMP_GREATEREQUAL : p="D3DCMP_GREATEREQUAL"; break; - case D3DCMP_ALWAYS : p="D3DCMP_ALWAYS"; break; - default : p="???"; break; + HRESULT res; + OutTraceD3D("SetRenderState(%d): d3dd=%x State=%x(%s) Value=%x\n", version, d3dd, State, ExplainD3DRenderState(State), Value); + + if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) { + OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(Value)); + Value = D3DCMP_ALWAYS; } - return p; + if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){ + OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=%x->D3DFILL_WIREFRAME\n", Value); + Value = D3DFILL_WIREFRAME; + } + if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){ + OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=%x->FALSE\n", Value); + Value = FALSE; + } + + res=(*pSetRenderState)(d3dd, State, Value); + if(res) OutTraceE("SetRenderState: res=%x(%s)\n", res, ExplainDDError(res)); + return res; } HRESULT WINAPI extSetRenderState2(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value) { - HRESULT res; - OutTraceD3D("SetRenderState(2): d3dd=%x State=%x(%s) Value=%x\n", d3dd, State, ExplainD3DRenderState(State), Value); - if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) { - DWORD OldValue; - OldValue = Value; - Value = D3DCMP_ALWAYS; - OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(OldValue)); - } - if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){ - Value = D3DFILL_WIREFRAME; - OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n"); -} - if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){ - OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=FALSE\n"); - Value = FALSE; - } - res=(*pSetRenderState2)(d3dd, State, Value); - if(res) OutTraceE("SetRenderState(2): res=%x(%s)\n", res, ExplainDDError(res)); - return res; + return extSetRenderState(pSetRenderState2, 2, d3dd, State, Value); } HRESULT WINAPI extSetRenderState3(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value) { - HRESULT res; - OutTraceD3D("SetRenderState(3): d3dd=%x State=%x(%s) Value=%x\n", d3dd, State, ExplainD3DRenderState(State), Value); - if((dxw.dwFlags4 & ZBUFFERALWAYS) && (State == D3DRENDERSTATE_ZFUNC)) { - DWORD OldValue; - OldValue = Value; - Value = D3DCMP_ALWAYS; - OutTraceD3D("SetRenderState: FIXED State=ZFUNC Value=%s->D3DCMP_ALWAYS\n", ExplainRenderstateValue(OldValue)); - } - if((dxw.dwFlags2 & WIREFRAME) && (State == D3DRENDERSTATE_FILLMODE)){ - Value = D3DFILL_WIREFRAME; - OutTraceD3D("SetRenderState: FIXED State=FILLMODE Value=D3DFILL_WIREFRAME\n"); - } - if((dxw.dwFlags4 & DISABLEFOGGING) && (State == D3DRENDERSTATE_FOGENABLE)){ - OutTraceD3D("SetRenderState: FIXED State=FOGENABLE Value=FALSE\n"); - Value = FALSE; - } - res=(*pSetRenderState3)(d3dd, State, Value); - if(res) OutTraceE("SetRenderState(3): res=%x(%s)\n", res, ExplainDDError(res)); - return res; + return extSetRenderState(pSetRenderState3, 3, d3dd, State, Value); +} + +HRESULT WINAPI extSetRenderState7(void *d3dd, D3DRENDERSTATETYPE State, DWORD Value) +{ + return extSetRenderState(pSetRenderState7, 7, d3dd, State, Value); } HRESULT WINAPI extBeginScene1(void *d3dd) @@ -898,6 +890,18 @@ HRESULT WINAPI extBeginScene3(void *d3dd) return res; } +HRESULT WINAPI extBeginScene7(void *d3dd) +{ + HRESULT res; + OutTraceD3D("BeginScene(7): d3dd=%x\n", d3dd); + + // there is no Clear method for Viewport object in D3D7 !!! + + res=(*pBeginScene7)(d3dd); + if(res) OutTraceE("BeginScene(7): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + HRESULT WINAPI extEndScene1(void *d3dd) { HRESULT res; @@ -928,6 +932,16 @@ HRESULT WINAPI extEndScene3(void *d3dd) return res; } +HRESULT WINAPI extEndScene7(void *d3dd) +{ + HRESULT res; + OutTraceD3D("EndScene(7): d3dd=%x\n", d3dd); + res=(*pEndScene7)(d3dd); + //dxw.ShowOverlay(); + if(res) OutTraceE("EndScene(7): res=%x(%s)\n", res, ExplainDDError(res)); + return res; +} + HRESULT WINAPI extGetCaps3(void *d3dd, LPD3DDEVICEDESC hd, LPD3DDEVICEDESC sd) { HRESULT res; diff --git a/todo.txt b/todo.txt new file mode 100644 index 0000000..fedbe5e --- /dev/null +++ b/todo.txt @@ -0,0 +1,37 @@ + int WINAPI D3DPERF_BeginEvent(D3DCOLOR col, LPCWSTR wszName) +{ + if (!gl_hOriginalDll) LoadOriginalDll(); // looking for the "right d3d9.dll" + + typedef int (WINAPI* D3DPERF_BE)(D3DCOLOR,LPCWSTR); + D3DPERF_BE D3DPERF_BeginEvent_fn = (D3DPERF_BE) GetProcAddress( gl_hOriginalDll, "D3DPERF_BeginEvent"); + + return D3DPERF_BeginEvent_fn(col, wszName); +} + +int WINAPI D3DPERF_EndEvent() +{ + if (!gl_hOriginalDll) LoadOriginalDll(); // looking for the "right d3d9.dll" + + typedef int (WINAPI* D3DPERF_EE)(void); + D3DPERF_EE D3DPERF_EndEvent_fn = (D3DPERF_EE) GetProcAddress( gl_hOriginalDll, "D3DPERF_EndEvent"); + + return D3DPERF_EndEvent_fn(); +} + +void WINAPI D3DPERF_SetMarker(D3DCOLOR col, LPCWSTR wszName) +{ + if (!gl_hOriginalDll) LoadOriginalDll(); // looking for the "right d3d9.dll" + + typedef void (WINAPI* D3DPERF_SM)(D3DCOLOR,LPCWSTR); + D3DPERF_SM D3DPERF_SetMarker_fn = (D3DPERF_SM) GetProcAddress( gl_hOriginalDll, "D3DPERF_SetMarker"); + + D3DPERF_SetMarker_fn(col, wszName); +} + +LIBRARY "d3d9" + +EXPORTS + Direct3DCreate9 @1 + D3DPERF_BeginEvent @2 + D3DPERF_EndEvent @3 + D3DPERF_SetMarker @4 \ No newline at end of file