From 50614ab8457c293bcebbc32ff0f0013503a07904 Mon Sep 17 00:00:00 2001 From: Aaron Robinson Date: Thu, 9 Sep 2004 08:16:39 +0000 Subject: [PATCH] panzar starting up! --- Cxbx.opt | Bin 60928 -> 58880 bytes Doc/RemovedCode.txt | 47 ++++++++++++ Include/Cxbx.h | 6 +- Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp | 51 ++++++++++++- .../CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl | 68 +++++++++--------- 5 files changed, 132 insertions(+), 40 deletions(-) diff --git a/Cxbx.opt b/Cxbx.opt index e5f0aa37b485a65e66fc2af65457aab60c307f5a..5f8138841c2abe0769e362ae53a36e93e066eda9 100644 GIT binary patch literal 58880 zcmeI5O?TAR9mX|`ZN`9&jg29sA!^bDD1|mSX;YfgFf+Cpunn~Xrm5RR)?Ayx8fhwN zVBAH^2k1-smVG}$zX6Nx+jF{Ucj+$8>8jhF)P4Ta$R3+{wFvf@=lVP&S@(b6epkjm z54u->{mbwtfBe&_e`?#(6)ma#Z@pjZtGS-QxhP0O8uHiIxDz;@gkFG7K`%mIf?k47 zLoY)Tm&5TD=vC+|&}-1^&>83~bPoC|B(Yz^@d9)a`a1Lt=nd!+G!DH9N!&Ma{1)^! z^lj)e^d0CO=)2GrNaEhb@hX&tGEf$pfF_|S=o%z(q8m7$hGw8y=q7Xv`aU!V%|jA* z8^=4)0(2Mp0rWofLue8D5hQUR;P@eAKueGbz){twI)5glx!xO3+Ur ziQ8$KLrsq6YdS`53kg#Z#bnQSw?p3*Wr5~;0CI5hY$jyqBM(d9D5bZ0Rb)JUMeiFrcp?2FpBF$9W zpTMjaFjk?klQf9-<>yq|mefuiV-i$tKY^Z0|9i~Jl6pCFdGV^@I`-l%*SW7u-&@R7 zmMZe0F6O;bq8eCf5?F}>Q>d}B>e|+;jccvkKz>v}dc{NnBtQZrKmt1^@X_DoH`*7I z{-YgC;1Aye75vs0F_8cXkN^pg014~@fu4T^zmIpJ<$clQ-;;?0{Cj3!OeF_F0v!`b zZvKysxO?>fIwr^hBtQZrKmvP(0R6wcG860v36KB@kN^pMK?Lak#R5zJFBU!)CV{Rd zkiye{Gt<}Q(N_9@T|JZRJPD8h36KE&Ki&f*KmsH{0wl1{3DEzGHNo`%V&P+966k6I z_10f6U`4Wxb;+_Wx>b4w>yKrRfN=G3d+U$CER|N*ALp=&KBs+v_4gI5gKuZW_tqXA zL;JEnK_~5>Z`giiYvpZxC+*96axqWaU4Q+S)LVD_73~Jrf!o1Ke+g=xPN99-o1v5O ze^08dwx7iM?;cs?-Jh`x&%0Al4}0I4xH)&F_H#%AWU01pN|5quGmp$E&ndg6s$X_k z%4RJ~cdKF5!h>>s`^D5`!K$g}^n&BAdL_eD`WXp7b6FqPOX1S=v);KwxTf@F6!GM= z5}pPX2b~RaYP(t!6<%)9KyBG=U28ovj35CLAORA1)&%JPK5OD^j|5171W14co-qOX zzp;SR|BZ!@g-M{R34Hij=v^KQytE7YLct!tq-WJqc_k&6!p#{|TBf=qWSzLtEk);) zr3^1Ha_hv3Rr*=4n5B~XQlsSvfsMw@QmKvRWNPHW$pqf$75TkcRZ@0d+2&eAFR$<(piwQenUisB z-zeD1jf~jPXKgo-MyTAJOe8=8PlW*ezo&wcm5=}lkN^pgz}_W5|1Z|u(Ep2tkA+E~ zs|iH@-&p2u`tFUn*=g|rbF=ac;6(cN)RD*&+Ws71gZPtC{Dzg-!VesKqCnsY%B#db z?L9qpd2z}pDsS=bl2ci{W?0T*UM(AC%fF~9N`n5~J5nd8LnEuNb5XoS@*%r20m)T z)#K7h*-w=IZ?hHY^nZhgQ~3z0{J1cY010UHe|Zy-011!)36Q`(CqVx<)&$f4jfIbe zNua9GZJ<|W% z%?0K3|LFh8&mt2EkU&U){vYoI5+DH*AORBC=LG2g#hPIHf3fhfFbQ-ufkT1&CqsA< z>eUkO_RF(Wu47%u$W_^vF@>uG(bcr8jMXRy>#QFgm*vO)T1n|M1<$YwD|S)YzLXR7 zYTDzWtEQf&AlFUDsIC(@xpWd-_DhR4T9XQ4POD#Mq?e7(U)+V>@mU72PZ;*RVH2eua?H zYDnQhA+PkMHT`|%I#C_J-VDgus$!VFj#s~6^?4NV5duzxHRS9E7<@i#qqeKRLCjzn zbMt|6mo4XERQ$Kd8Vz{S>8C7)LwW!2v zxO#Hdu}#ci!7dw17O;X#skT3_BWNV*ZMNW*9IsHD|9j+*4ko&EDq-84O3fz4TiN+!ER8X?@o5^+}o9XmDxdydXI_8~p|Ap9c4m zK53w#ji{e##m7T4PQHwxKT*ZckvW1F8JQ|ycI)J)q+b!5Yq(Ra&;iHoYI?;_PRtZc z*YTWXU(cLB|0G$2X+2Qig5jI@-iS^vMJMCY$(x$y%N7N}Plz0uNPq;M76JNyPm3h$ zApsH~0TLjAJxYN7U#y9t{}&4%3zI-s6X**(2zdgK{vZ86@!IJBg+?y@zpnm=jh%mP l3DEz0Zl|6DCjk;50TOs#2+;qFHPiI}V&P+966k6I{|8eOD{ue+ literal 60928 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 diff --git a/Doc/RemovedCode.txt b/Doc/RemovedCode.txt index d41e1c7e9..2a2e1ea33 100644 --- a/Doc/RemovedCode.txt +++ b/Doc/RemovedCode.txt @@ -1,3 +1,50 @@ +>> nice code for dumping textures inside of push buffer stuff + + /* + IDirect3DBaseTexture8 *pTexture = 0; + + g_pD3DDevice8->GetTexture(0, &pTexture); + + if(pTexture != NULL) + { + static int dwDumpTexture = 0; + + char szBuffer[256]; + + printf("Texture Time...\n"); + + switch(pTexture->GetType()) + { + case D3DRTYPE_TEXTURE: + { + printf("_TEXTURE\n"); + sprintf(szBuffer, "C:\\Aaron\\Textures\\PushBufferTex - %.03d (0x%.08X).bmp", dwDumpTexture++, pTexture); + + ((IDirect3DTexture8*)pTexture)->UnlockRect(0); + + D3DXSaveTextureToFile(szBuffer, D3DXIFF_BMP, pTexture, NULL); + } + break; + + case D3DRTYPE_CUBETEXTURE: + { + printf("_CUBETEXTURE\n"); + for(int face=0;face<6;face++) + { + sprintf(szBuffer, "C:\\Aaron\\Textures\\PushBufferTexCube%d - %.03d (0x%.08X).bmp", face, dwDumpTexture++, pTexture); + + ((IDirect3DCubeTexture8*)pTexture)->UnlockRect((D3DCUBEMAP_FACES)face, 0); + + D3DXSaveTextureToFile(szBuffer, D3DXIFF_BMP, pTexture, NULL); + } + } + break; + } + } + //*/ + +<< + >> /* TODO: Use new handle wrapping code diff --git a/Include/Cxbx.h b/Include/Cxbx.h index cf5c0b3f2..45e46f2cb 100644 --- a/Include/Cxbx.h +++ b/Include/Cxbx.h @@ -68,15 +68,15 @@ typedef signed long sint32; // define this to trace warnings #define _DEBUG_WARNINGS -// define this to dump textures @ SetTexture +// define these to dump textures //#define _DEBUG_DUMP_TEXTURE_SETTEXTURE "C:\\Aaron\\Textures\\" //#define _DEBUG_DUMP_TEXTURE_REGISTER "C:\\Aaron\\Textures\\" // version information #ifndef _DEBUG_TRACE -#define _CXBX_VERSION "0.8.0-Pre2" +#define _CXBX_VERSION "0.8.0-Pre3" #else -#define _CXBX_VERSION "0.8.0-Pre2-Trace" +#define _CXBX_VERSION "0.8.0-Pre3-Trace" #endif // round dwValue to the nearest multiple of dwMult diff --git a/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp b/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp index a2263392e..8329a1462 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp @@ -162,8 +162,6 @@ extern void XTL::EmuExecutePushBufferRaw pVertexData = ++pdwPushData; - // TODO: debug print out of vertex data - pdwPushData += dwCount; // retrieve vertex shader @@ -180,7 +178,20 @@ extern void XTL::EmuExecutePushBufferRaw dwVertexShader = -1; } + // // calculate stride + // + + dwStride = 0; + + if(!VshHandleIsVertexShader(dwVertexShader)) + { + if(dwVertexShader & D3DFVF_XYZRHW) { dwStride += sizeof(FLOAT)*4; } + if(dwVertexShader & D3DFVF_DIFFUSE) { dwStride += sizeof(DWORD); } + if(dwVertexShader & D3DFVF_SPECULAR) { dwStride += sizeof(DWORD); } + + dwStride += ((dwVertexShader & D3DFVF_TEXCOUNT_MASK) >> D3DFVF_TEXCOUNT_SHIFT)*sizeof(FLOAT)*2; + } /* // create cached vertex buffer only once, with maxed out size @@ -208,10 +219,44 @@ extern void XTL::EmuExecutePushBufferRaw } */ + #ifdef _DEBUG_TRACK_PB + if(bShowPB) + { + printf("NVPB_InlineVertexArray(...)\n"); + printf(" dwCount : %d\n", dwCount); + printf(" dwVertexShader : 0x%08X\n", dwVertexShader); + } + #endif + // render vertices if(dwVertexShader != -1) { - g_pD3DDevice8->DrawPrimitiveUP(PCPrimitiveType, dwCount / dwStride, pVertexData, dwStride); + UINT VertexCount = (dwCount*sizeof(DWORD)) / dwStride; + UINT PrimitiveCount = EmuD3DVertex2PrimitiveCount(XBPrimitiveType, VertexCount); + + VertexPatchDesc VPDesc; + + VPDesc.dwVertexCount = VertexCount; + VPDesc.PrimitiveType = XBPrimitiveType; + VPDesc.dwPrimitiveCount = PrimitiveCount; + VPDesc.dwOffset = 0; + VPDesc.pVertexStreamZeroData = pVertexData; + VPDesc.uiVertexStreamZeroStride = dwStride; + VPDesc.hVertexShader = dwVertexShader; + + VertexPatcher VertPatch; + + bool bPatched = VertPatch.Apply(&VPDesc); + + g_pD3DDevice8->DrawPrimitiveUP + ( + PCPrimitiveType, + VPDesc.dwPrimitiveCount, + VPDesc.pVertexStreamZeroData, + VPDesc.uiVertexStreamZeroStride + ); + + VertPatch.Restore(); } pdwPushData--; diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl b/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl index 82b926ea3..d6c6d8a8c 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl @@ -321,36 +321,6 @@ SOOVPA<12> XInputGetState_1_0_4928 = -1, // XRef Not Saved 0, // XRef Not Used - { - { 0x0B, 0x8B }, // (Offset,Value)-Pair #1 - { 0x0C, 0x1D }, // (Offset,Value)-Pair #2 - { 0x0D, 0xAC }, // (Offset,Value)-Pair #3 - - { 0x25, 0xF6 }, // (Offset,Value)-Pair #4 - { 0x26, 0x46 }, // (Offset,Value)-Pair #5 - { 0x27, 0x04 }, // (Offset,Value)-Pair #6 - { 0x28, 0x02 }, // (Offset,Value)-Pair #7 - - { 0x39, 0xF3 }, // (Offset,Value)-Pair #8 - { 0x3A, 0xAB }, // (Offset,Value)-Pair #9 - - { 0x90, 0xBF }, // (Offset,Value)-Pair #10 - { 0x91, 0xE8 }, // (Offset,Value)-Pair #11 - { 0x92, 0x7B }, // (Offset,Value)-Pair #12 - } -}; - -// ****************************************************************** -// * XInputSetState -// ****************************************************************** -SOOVPA<12> XInputSetState_1_0_4928 = -{ - 0, // Large == 0 - 12, // Count == 12 - - -1, // XRef Not Saved - 0, // XRef Not Used - { { 0x0E, 0x8B }, // (Offset,Value)-Pair #1 { 0x0F, 0x8A }, // (Offset,Value)-Pair #2 @@ -371,6 +341,36 @@ SOOVPA<12> XInputSetState_1_0_4928 = } }; +// ****************************************************************** +// * XInputGetCapabilities +// ****************************************************************** +SOOVPA<12> XInputGetCapabilities_1_0_4928 = +{ + 0, // Large == 0 + 12, // Count == 12 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + { 0x0B, 0x8B }, // (Offset,Value)-Pair #1 + { 0x0C, 0x1D }, // (Offset,Value)-Pair #2 + { 0x0D, 0xAC }, // (Offset,Value)-Pair #3 + + { 0x25, 0xF6 }, // (Offset,Value)-Pair #4 + { 0x26, 0x46 }, // (Offset,Value)-Pair #5 + { 0x27, 0x04 }, // (Offset,Value)-Pair #6 + { 0x28, 0x02 }, // (Offset,Value)-Pair #7 + + { 0x39, 0xF3 }, // (Offset,Value)-Pair #8 + { 0x3A, 0xAB }, // (Offset,Value)-Pair #9 + + { 0x90, 0xBF }, // (Offset,Value)-Pair #10 + { 0x91, 0xE8 }, // (Offset,Value)-Pair #11 + { 0x92, 0x7B }, // (Offset,Value)-Pair #12 + } +}; + // ****************************************************************** // * XAPI_1_0_4627 // ****************************************************************** @@ -614,14 +614,14 @@ OOVPATable XAPI_1_0_4627[] = "EmuXInputGetState" #endif }, - // XInputSetState + // XInputGetCapabilities { - (OOVPA*)&XInputSetState_1_0_4928, + (OOVPA*)&XInputGetCapabilities_1_0_4928, - XTL::EmuXInputSetState, + XTL::EmuXInputGetCapabilities, #ifdef _DEBUG_TRACE - "EmuXInputSetState" + "EmuXInputGetCapabilities" #endif }, // XInputSetState (* unchanged since 1.0.4361 *)