From 5639284a817b9b845fb0cadecf4d3a427c0cdc3a Mon Sep 17 00:00:00 2001 From: zeromus Date: Sun, 27 Jul 2014 06:25:59 +0000 Subject: [PATCH] jabo-fix antialiasing --- .../D3D8Interceptor/Direct3D8Functions.cpp | 2 +- .../D3D8Interceptor/d3d8Wrapper.cpp | 18 ++++++++++++------ output/dll/d3d8.dll | Bin 20480 -> 20480 bytes 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libmupen64plus/D3D8Interceptor/Direct3D8Functions.cpp b/libmupen64plus/D3D8Interceptor/Direct3D8Functions.cpp index 58fcc26b2d..8ceb211342 100644 --- a/libmupen64plus/D3D8Interceptor/Direct3D8Functions.cpp +++ b/libmupen64plus/D3D8Interceptor/Direct3D8Functions.cpp @@ -144,7 +144,7 @@ extern "C" D3D8Base::IDirect3DSurface8 *f2 = NULL; // make a new render target - HRESULT hr2 = base_device->CreateRenderTarget(pPresentationParameters->BackBufferWidth,pPresentationParameters->BackBufferHeight,D3D8Base::D3DFMT_X8R8G8B8,pPresentationParameters->MultiSampleType,TRUE,&f2); + HRESULT hr2 = base_device->CreateRenderTarget(pPresentationParameters->BackBufferWidth,pPresentationParameters->BackBufferHeight,D3D8Base::D3DFMT_X8R8G8B8,pPresentationParameters->MultiSampleType,FALSE,&f2); render_surface = D3D8Wrapper::IDirect3DSurface8::GetSurface(f2); // Return our wrapped object diff --git a/libmupen64plus/D3D8Interceptor/d3d8Wrapper.cpp b/libmupen64plus/D3D8Interceptor/d3d8Wrapper.cpp index 13a37a2a6c..bce9cde378 100644 --- a/libmupen64plus/D3D8Interceptor/d3d8Wrapper.cpp +++ b/libmupen64plus/D3D8Interceptor/d3d8Wrapper.cpp @@ -64,10 +64,6 @@ extern "C" return; } - // get back buffer (surface) - //D3D8Base::IDirect3DSurface8 *backbuffer; - //D3D8Wrapper::last_device->GetD3D8Device()->GetBackBuffer(0,D3D8Base::D3DBACKBUFFER_TYPE_MONO,&backbuffer); - // surface... // make a D3DSURFACE_DESC, pass to GetDesc D3D8Base::D3DSURFACE_DESC desc; @@ -87,10 +83,18 @@ extern "C" entire_buffer.right = desc.Width; entire_buffer.bottom = desc.Height; - //X8R8G8B8 or fail -- A8R8G8B8 will malfunction (is it because the source surface format isnt matching?) + //resolve rendertarget to a system memory texture, for locking + //TODO! UNACCEPTABLE CODE! THIS IS HORRIBLE! + //X8R8G8B8 or fail -- A8R8G8B8 will malfunction (is it because the source surface format isnt matching? I think so) static D3D8Wrapper::IDirect3DTexture8* tex = NULL; - if(!tex) + static RECT texRect; + if(!tex || (texRect.right != entire_buffer.right) || (texRect.bottom != entire_buffer.bottom)) + { + if(tex) + tex->Release(); + texRect = entire_buffer; D3D8Wrapper::last_device->CreateTexture(desc.Width, desc.Height, 1, 0, D3D8Base::D3DFMT_X8R8G8B8, D3D8Base::D3DPOOL_SYSTEMMEM, &tex); + } D3D8Wrapper::IDirect3DSurface8* surf; tex->GetSurfaceLevel(0,&surf); @@ -102,6 +106,8 @@ extern "C" //this loop was reversed from the original. //it should be faster anyway if anything since the reading can be prefetched forwardly. + //TODO - allow bizhawk to handle flipped images.... nonetheless, it might not handle images with unusual pitches, although maybe we should consider that. + //so this code will probably remain for quite some time int dest_row = desc.Height - 1; for (int from_row = 0; from_row < desc.Height; from_row++) { diff --git a/output/dll/d3d8.dll b/output/dll/d3d8.dll index fa6dd1327caa843568fa85c28df2a47217d107d8..ae7e7f38b73403cefb148567546d362ec3a6d7be 100644 GIT binary patch delta 2360 zcmbW&4{#LK9S88Y$6bi!64%xQOh~wpOF}|OcK7Y>-Tt}ri~-*Eljxz1B1o(qz;3V0@rEK*lH)yObia~^}Emx z(b^fOnfbiE_uGBH_kO>Lu)BuE~~N#OiEKTzg{3_5tVoQ63?Yd#};A#!6glz`nBB`9NeB-&=e- z3#-ZL+1A*$?!m}PcYvN9JHp283+Lq0slmC%rCa+8I9BAiqov2C<$SoA@V(hu-Z-v3 zYa-c^Z)P`V&PCR^y;v$o?s1zPY1|qf#ems8owm;W;jtT&=KF`O6a^MgxAGYZ+le(SDwUXS#q zGv|j9xaz)_TgH}`tyyG+5h48Usa^+72G*VED<@;8(4vk%dk8=FtxP6!+U`EgPLu_> zX=X34!AQ#&ag(gId;!Lt<%^U_oQ#gNXb(AivsXWm$!iV}UMsqWXwUo(>oWF3By8E8 z?8(XW^7m(Yvom?u*t_K-wN~~`+j??37mVeivn?OQQBg**julbXB9B#tb9eIA{=Vxs zaCl#Z{KJBlk*Tf7RO@cP6p5`Xa}L*~*$) zF3NUdjIl!)B&TD!}s)gJc2uI?os4=n#cCq}WIF!BDCgg+XuuqL2pOg;WrPFvK7UY2Zsx26RCj z#=*4^F$h8!;*bWu6mjT+ad5e@JH#Oc<8Bh-`7%5NT@Zs5kaEKBS%yRWyJtzv1L&94 zvncwMgfKq4tR6xdc=Ra%U10Sr3F#R*!sv0J8qdRja-^$5*laNpfv^PqsYC*ZLdWu( z2l(>E|9dSFun}^MgUi|&j(u6a(C1F``Gi4KX&okr#m@Shhe_kG|5XX{Sl=LmBCJBz z&Un5V^Ejlz`i{Od<6h|hsVr54c4M;uL{aJVjD%k$-;BaSe0{^s%7WJW{^C3OLSL!KfHPP!aJZ zwzhA3yyM$DHfb#GsZ3n(%(LTXXu_!FnpugtAh%4p(bWl=@D7DFnfY0_;Wt+Iuuij> zdyWm7g;|R=!uz$vLGy7t{(B|L@4A%5^)p9(X-F6A#D~Ooahv#<*e?!>&x?n}Ux_=U z1JX(9FVd7$M0e3WbU*zyJx4FlQOe0qd6j&h+$wL7H_MO87nEtmtp+^;2vSsDH0N?#IpoA z(13VWJTH!jX>m%lNu`n~`K7z1jnX4hpR`YkOTUngN`I6tNTbrE^qIubd9;{HbOmjv z9rOvhj~=4Gq{r#|^zZZ&I!!awDHqAQyj*URe=c8^E0i{6y|PK^R(2@6lzt_mJge+g zV#-gI*OVj5Ze2>T0!BZC5+cu4mK{HLXsl zt2}YfanDK570+KiFMEIHJ?_2eo$!9@U8g;)b!uJOliJhT0qvyrwsujwqJ5-Y)fVbi zx~iLconEgu>FxSs`gipKJ)*y&zlJ_H9M#{|FX`{;f75RDMH{Bc5JLdcT4dwyr%y|ZVa3E}VD!k{4x!lbq#gw`z> zCTM4?1iCD2b$AtGV;!y%*wl5MnOg=M8fIO~rm@PER!~zo*}Ozkgrf*|CHaOGxn>j>(_PkFRcyIvm@I?uApX0N#8U&$}g4l{*{P|!WpFz*Q=SY61m^kmF*#Nx1)R7 zs%}ZVRM_scu1)^VP_3P#KcC7KmQ9zW)Rc-}O>}(HBYs!gSo{g@=g;-E4Ch&{M@V&z z&M{9Un?E-Qhf%joDiSZ&t*p1*@DO?TXrz#)gX`Yj8@wPh^ObeyS2Q_HY59y zuzh!WYjHjzugXUzSvE3k3EHRce_}UpSZQ)(Ea8XATB*&7kVM)M z+@~G)DJGFSK^&w(4!AgxLm&o{APZ!R$mo3R^MXp`f$E1U-dgjg6}H0x7JzTH052hD zTZpWSYD%NIFCgkcWCfvzka;$d!?1CXXaLPb&S0Oj&q{Fzgh6LLs>0@gG7WwZ262$J z_tS9(!e4|1!5KIMS)i059>mH>nVi8!o{0n?4B{XIa^ec@h`Ora1qqM=IpA_39q0rx zkN_D#s*xImK@wyEslj~^1YwW>89-*?E=Ynb2-V^o#6c2d0I4HUS*b%I5C>`Sax0qn zpJp*PEZ04KlvayAYi7|kACYhQQmix0z zJ#VdVp>N1{#@B0}58Mh67a=k9zMj57r+At?m)SKoS+COTbX8xhuh6^oL;7L;b^Vxr zQh!^&8ufkZTW>yY_L$qu=geK^1U`k&;a}!0{1M*GxA1TCQ~Vu%mY?Gn_+>uJT4Xi* zncwoa`j`4w_%Hjf`6mae0(Aj35DK&h!U0rP2st1TGD)ddHYq!mJ<49?kn*N-O8G$f zr}A$_Q(M)&>VEa0noy6a(ch?-)sNI$>I7|$rfCbb4lS%jw4IvJ4roK#o7yk6)7qc4 zOWMcU1GI+LQ%*Z*58Y0q^hfj!nxe<)DX4Ri-lP*fRi0-(hdlrARIxfXm#NIl{On=2 zggwgIStomvJ;k=MZ?ZjXA3Mkr>TE9^s-W24NeKd6`MHF`bdTCN|| z6Z%oT#2fZTy}jPU-q*ZczRkXH3p1VjKjuHjT6S- zjSr1c<1@oyPBN#OHKt((%vN)WxzT(II`1^UXa3MUV*bSZy}9f?^PG9!{EvCdEE