From c25862b27e554cae6dc1d954f674b3400b741c83 Mon Sep 17 00:00:00 2001 From: Aaron Robinson Date: Sun, 8 Feb 2004 06:46:06 +0000 Subject: [PATCH] redid pushbuffers,4432+4361+etc --- Cxbx.opt | Bin 67072 -> 68096 bytes Include/Cxbx.h | 4 +- Include/Win32/CxbxKrnl/EmuD3D8.h | 17 + Include/Win32/CxbxKrnl/EmuD3D8Types.h | 8 + Source/Win32/CxbxKrnl/Emu.cpp | 2 + Source/Win32/CxbxKrnl/EmuD3D8.cpp | 75 ++++ Source/Win32/CxbxKrnl/EmuD3D8/Convert.cpp | 6 + Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp | 177 ++++----- Source/Win32/CxbxKrnl/EmuKrnl.cpp | 13 + .../CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl | 336 ++++++++++++++++++ .../CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl | 79 +--- .../CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl | 8 +- 12 files changed, 536 insertions(+), 189 deletions(-) diff --git a/Cxbx.opt b/Cxbx.opt index 43bcb521e06b4057d710163d6c0b674ea473e9a0..f02a43403dfb170cbceb8c896b3aa18b76a9f6d4 100644 GIT binary patch literal 68096 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 literal 67072 zcmeHQTXWn-b{?7+Q)7viELpO>@or}}S=&)Glt|f2GYVJY3@MLIii)UP>~XXhpg98* z1I*$g4xL2SzVH3^l$ZR3JnhRqsA_*e@(Z?{*R9GgNO_g-G=Lcp#DJjUb+Xcd>IjYQ z)7`*9vwQIMx%|h!pZNS=|LwK^ETxX6(s=0)kB^k568X;|Jr-XdFQNSLW4esbl->a$ zn~y&c34DS36nJOjpb5|UIr20 z8Ju4My$X5_^fl0*fnEoF9rO(l@qK`E1@ukOUx5A+^exaEpf^Epf&L0aynl`JIZzce z3px+F0Gb2MgD!%I?;V`K4O#%b3t9yI4d@c+Z$V2S;=7FV70@!M2C9QrK&zmup!Yxx z(EA|bzmM}e=o)APbRG0}pc|k~&`r=S&~4Bi5Y_p6oIeD81Zsjl2K@u*9_YIu4Mco8 z&IU+=wm@xA2V{ai0d0ebuZyz{azH)M_dqVl1Noo;M0`Z_Zg+A0Dd-tT-*BcL%eUhu%nzhdqv$o*NrSCHk8w z+W%4Ng#K7?tl+Jicvh0alN>YXpZ-RvZ#s&!ahjN-{>SkC=>8}4eoKC%w%EL)xsKhu z?mC}H-S?WceydOa$*SS?#v;ak4r4!NoJNcNZP&KGIl9&U2Pls#*wj1`Wclb=!xq=I zwiGL_>$q{r>nJ(duq@fuEYYw%-wkx%bOtqlfby5GxURMVFh>QBKl6Y^}_m+qG3?8Mc7hN2T;(WbBI+oINy`gUCUbCkXq zmfo_By)`lGK00#E5$m$+xVv!;%&CuFx#rlqWBaBZXe|q3gfNh9m+eF2u4@QKs4-yXw|sIRSw zYmP5g>D9&$w~Ufksia}!ej)2mHM(uFs-dF+*Mm~`(eZW12=M6pn)nQbCo$r6X#{RY zIo82PGqGsi!$`4cmR3Vm_qv~-SvPgp@tiGR)XtvWFInQ908QP|e7%DOD@@GA2`pV< z&P6PHc&w!{dba6Po14owUNGj3{(|nfvf3HLqFbxWp2S zQPWr+)AY7JIVj`UawNFjF`JO zoxs&)^NwlH&ox)N!DdHurBN+jht?IE{HgL?t!F-I)vHfhal^JuTNbKa!=GPMtwV*_ zL!k^F@V&K_y5?)knpdp1RP_(k$hz4H?CnGJz8?5^-^E|Y-Q^k<2iL*U>K>}vZLE(@ zSmWbz&6SvZ?Y7XJZWr^UAQ6j-ZdGMpipv;F^^MxC^_2$~nl&x(d~>_Gwo$vXwuy|J zvfFFk*t|Y};oDWe+pCCSYd(q`S95m-%@l&hWRZ3j!gh8{zk?gX%4Pdr`J?iVH+OG- zu4%qYJMiEh|bpmK>(Ez>hA1xKqby=`jP6dM~<|wH?c8J7U(b zEHP`^x+}YQcFkJcm7bXG8Lh?2vS~N#vK6#v<8fL=enrf7wO(c^@=nsOYXxx28x4|#_xrLay@FQwpO-xH!dG-1FLS}x0#zkfcrb>*l^i89E zTEH{&H?wlpFXfC@*6KI2*su9@%gQQJO}yU_%?uLAvE-&Y|y38rf# zXSj4(IFF@s_smxN3&S}nolgUuWa3J%JaVeSgtdLB$ts*=%9lFxOB;cYF(5F18_v$9 zS>%*!PPb>G&9*?VYRUAf)#@-iyaFLWIG9-=QLdL-u>>?Um1E9GG&p%y!_aPl`oBLr9#XH#|Rw&qvIK z8FkLlE5W;`A%XX=)b@sNAcsEZ@3XQOjl4M}5dmA18dU1Xu#krUb@^J353qF#cC6G5!a9 zkMX}D#K`#He#nvWza#+5_#fkc{U$!MhM;JSt29&JJ_Rw=LG{$9Qo-tj52}Lv>Cdjh z)dnADmC+y7jQ_O+Ah7(o>Vqr9wqx> zQZ-EG4B=(iTcUhK#sPgLpEz}wZ2ygML~{V!f3yAfz$TsTzxUecv;B9rdSt?qtf0~% zP4xrQabJ4d0xVk5u#NSVnRv4xJTczlZGU^Xmi6IJU0fn*`O0}Ds+m?O<4&XC88PQ;(nQ?gh z9YX*sb^BLcC+J1(Pb&Al*+q#^2;+4}&tZB#a>bj&G99Z&=I~5~N)1mx3sp^nyl3Zl1x z5X$}E>Ybn1b6?oR$h)&+gF6EPoW~g6TY;^n!i>fCq`unCrh_+}a{cx!C^$ZSb)F2loFEdQQ*UZesrrrrqsU5s_XPhO6y_ zsd=Nn5T~MqY4-v@O847=$^IYM{{#K_VgC>8{~_=(HwbvfF`S)Cvz_^+a?R=XOz4!i zhk-7t)#@-iya*MO@XML~zrx)s*|jPkgl?5Yl5jCpUNh}&2$Q5Hgs8bv^GUXtwO!5K z6@zUM-acc6`Y(v1@LF#@MhwS&tm*`!^I^W4N>wnW%G9N4fmcY{~0p9<4I^Qcl z6-%Iq1Y-PuTt$JCR7Hh@qr||#0BIFuk20q~8BSbABJdfu7?}nmBT)L0eqZQb9zQOX zly{hsy%X1nmZ^yG|G?E{=9UBF|JmMzix`_Q{=a;Ks40wA`Q!2cJl36Vmk?s0^pgF*^vYO|+5bzt z2f+A0eI@h35?~2Doe~%;O_s*-XpbK&hs!m~TeXZ$%V`k`sNle{hXX)x>|qiTEYVi? z{G3q!RYoFkjQ`!q^%BkczlH=-Lc9L^y;&Df6lVQjj{nB`zc;4(EhpEL66^o6{x9qQ zmOm=*cyssW=R&n!&k5{MgLjAZe~nf}%yzZjVkJY74*4iGB%+ZMlimSbve=kkct^1Q zFYEs{2P1~#zp?%=rUs?DyW+Y|sKlGFB~&G;pa$i^b`|UYiu3)8=ie2xTTW^kCg2)V zuqi50(4nUK{8qne!u&YW5KYvga<9I!eCujORBDUOD=Lut-tE|s`{_hA_^DU|EP)~t zC@b`joG)hpb=1JuK$E4h%j7_p>@v>PD3>ZsBllRGy9{HD?YIQi`ww5PYraOlg2lS& zX_ncxyVCZl9?@i}^yv5%U6-CGZkvt;Lk5p8TvvlJ2>rD8#7bY6(vU{n!Vkf5dew5^SFJ8>$L*q_jh=L| z1sJpZ2rQ=}7W2MoNYUCAA4=DW8GbxuXxOr^!LS6AX@8jW(u#e=e z{uDejA;X8+G4ejzI_fGA20Q( zRIvKsgQ_5Z+U&A$wcA)99r~uLj8>}At*Y!xaT!vsZ`5wBuROTWtZ9Mgo7>H`joOv9 zO=R4ZUH1RX{-0sX+k@+w#mbrqIC78j8h&c32oCAcWr=VT>7p=PLlh1nyD*C7kS+wK zSIx+ySPhx^Z2!;p|7`ycUH%Q5G$|SXQ%(io|3N92!f}E0B9{=c*Mhx@r>?Hn$XSc= zKSB}sUwh)7l_$^r zQ||x!cBr4hIp<`dW!e8PxvpjZzYqf4ljiwjX8qqRC6@@nA8N{wSHLFu92nvh2V&if|C95?EH?uQ z=ZuX1Tai|A;7K=1whc2%?U*)}R44RE3FybL+EIyS+}C*Gf diff --git a/Include/Cxbx.h b/Include/Cxbx.h index 546891afc..4e2504412 100644 --- a/Include/Cxbx.h +++ b/Include/Cxbx.h @@ -55,10 +55,10 @@ typedef signed short sint16; typedef signed long sint32; // define this to trace intercepted function calls -#define _DEBUG_TRACE +//#define _DEBUG_TRACE // define this to trace warnings -#define _DEBUG_WARNINGS +//#define _DEBUG_WARNINGS // version information #ifndef _DEBUG_TRACE diff --git a/Include/Win32/CxbxKrnl/EmuD3D8.h b/Include/Win32/CxbxKrnl/EmuD3D8.h index 71f82446c..2ad14e087 100644 --- a/Include/Win32/CxbxKrnl/EmuD3D8.h +++ b/Include/Win32/CxbxKrnl/EmuD3D8.h @@ -154,6 +154,15 @@ HRESULT WINAPI EmuIDirect3D8_EnumAdapterModes // ****************************************************************** VOID WINAPI EmuIDirect3D8_KickOffAndWaitForIdle(); +// ****************************************************************** +// * func: EmuIDirect3D8_SetGammaRamp +// ****************************************************************** +VOID WINAPI EmuIDirect3D8_SetGammaRamp +( + DWORD dwFlags, + CONST X_D3DGAMMARAMP *pRamp +); + // ****************************************************************** // * func: EmuIDirect3DDevice8_AddRef // ****************************************************************** @@ -228,6 +237,14 @@ HRESULT WINAPI EmuIDirect3DDevice8_SetViewport CONST D3DVIEWPORT8 *pViewport ); +// ****************************************************************** +// * func: EmuIDirect3DDevice8_GetViewport +// ****************************************************************** +HRESULT WINAPI EmuIDirect3DDevice8_GetViewport +( + D3DVIEWPORT8 *pViewport +); + // ****************************************************************** // * func: EmuIDirect3DDevice8_SetShaderConstantMode // ****************************************************************** diff --git a/Include/Win32/CxbxKrnl/EmuD3D8Types.h b/Include/Win32/CxbxKrnl/EmuD3D8Types.h index cfcad5894..744a7dd11 100644 --- a/Include/Win32/CxbxKrnl/EmuD3D8Types.h +++ b/Include/Win32/CxbxKrnl/EmuD3D8Types.h @@ -94,6 +94,14 @@ typedef struct _X_D3DPRESENT_PARAMETERS } X_D3DPRESENT_PARAMETERS; +typedef struct _X_D3DGAMMARAMP +{ + BYTE red[256]; + BYTE green[256]; + BYTE blue[256]; +} +X_D3DGAMMARAMP; + struct X_D3DVertexShader { union diff --git a/Source/Win32/CxbxKrnl/Emu.cpp b/Source/Win32/CxbxKrnl/Emu.cpp index bc0cdc332..5c0fc896c 100644 --- a/Source/Win32/CxbxKrnl/Emu.cpp +++ b/Source/Win32/CxbxKrnl/Emu.cpp @@ -1119,7 +1119,9 @@ static void EmuInstallWrappers(OOVPATable *OovpaTable, uint32 OovpaTableSize, vo if(pFunc != 0) { + #ifdef _DEBUG_TRACE DbgPrintf("EmuMain (0x%X): 0x%.08X -> %s\n", GetCurrentThreadId(), pFunc, OovpaTable[a].szFuncName); + #endif if(OovpaTable[a].lpRedirect == 0) EmuInstallWrapper(pFunc, EmuXRefFailure); diff --git a/Source/Win32/CxbxKrnl/EmuD3D8.cpp b/Source/Win32/CxbxKrnl/EmuD3D8.cpp index 3470ae679..279963e29 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8.cpp @@ -1280,6 +1280,47 @@ VOID WINAPI XTL::EmuIDirect3D8_KickOffAndWaitForIdle() return; } +// ****************************************************************** +// * func: EmuIDirect3D8_SetGammaRamp +// ****************************************************************** +VOID WINAPI XTL::EmuIDirect3D8_SetGammaRamp +( + DWORD dwFlags, + CONST X_D3DGAMMARAMP *pRamp +) +{ + EmuSwapFS(); // Win2k/XP FS + + // debug trace + #ifdef _DEBUG_TRACE + { + printf("EmuD3D8 (0x%X): EmuIDirect3D8_SetGammaRamp\n" + "(\n" + " dwFlags : 0x%.08X\n" + " pRamp : 0x%.08X\n" + ");\n", + GetCurrentThreadId(), dwFlags, pRamp); + } + #endif + + // remove D3DSGR_IMMEDIATE + DWORD dwPCFlags = dwFlags & (~0x00000002); + D3DGAMMARAMP PCRamp; + + for(int v=0;v<255;v++) + { + PCRamp.red[v] = pRamp->red[v]; + PCRamp.green[v] = pRamp->green[v]; + PCRamp.blue[v] = pRamp->blue[v]; + } + + g_pD3DDevice8->SetGammaRamp(dwPCFlags, &PCRamp); + + EmuSwapFS(); // XBox FS + + return; +} + // ****************************************************************** // * func: EmuIDirect3DDevice8_AddRef // ****************************************************************** @@ -1620,6 +1661,40 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetViewport return hRet; } +// ****************************************************************** +// * func: EmuIDirect3DDevice8_GetViewport +// ****************************************************************** +HRESULT WINAPI XTL::EmuIDirect3DDevice8_GetViewport +( + D3DVIEWPORT8 *pViewport +) +{ + EmuSwapFS(); // Win2k/XP FS + + // debug trace + #ifdef _DEBUG_TRACE + { + printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_GetViewport\n" + "(\n" + " pViewport : 0x%.08X\n" + ");\n", + GetCurrentThreadId(), pViewport); + } + #endif + + HRESULT hRet = g_pD3DDevice8->GetViewport(pViewport); + + if(FAILED(hRet)) + { + EmuWarning("Unable to get viewport!"); + hRet = D3D_OK; + } + + EmuSwapFS(); // Xbox FS + + return hRet; +} + // ****************************************************************** // * func: EmuIDirect3DDevice8_SetShaderConstantMode // ****************************************************************** diff --git a/Source/Win32/CxbxKrnl/EmuD3D8/Convert.cpp b/Source/Win32/CxbxKrnl/EmuD3D8/Convert.cpp index e94391d23..0b4c80a72 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8/Convert.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8/Convert.cpp @@ -122,6 +122,12 @@ XTL::X_D3DFORMAT XTL::EmuPC2XB_D3DFormat(D3DFORMAT Format) return 0x05; case D3DFMT_D24S8: return 0x2A; + case D3DFMT_DXT3: + return 0x0F; + case D3DFMT_DXT2: + return 0x0E; + case D3DFMT_DXT1: + return 0x0C; case D3DFMT_X8R8G8B8: // return 0x1E; // Linear (X_D3DFMT_LIN_X8R8G8B8) return 0x07; diff --git a/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp b/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp index 1af930789..5dd3ac396 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8/PushBuffer.cpp @@ -53,122 +53,83 @@ void XTL::EmuExecutePushBuffer { DWORD *pdwPushData = (DWORD*)pPushBuffer->Data; - DWORD dwIndices = 0, dwBytes = 0; - PVOID pIndexData = 0; - D3DPRIMITIVETYPE PCPrimitiveType = (D3DPRIMITIVETYPE)-1; X_D3DPRIMITIVETYPE XBPrimitiveType = -1; - while((DWORD)pdwPushData < ((DWORD)pPushBuffer->Data + pPushBuffer->Size)) + while(true) { + DWORD dwCount = (*pdwPushData >> 18); + DWORD dwMethod = (*pdwPushData & 0x3FFFF); + // Interpret GPU Instruction - switch(*pdwPushData++) + if(dwMethod == 0x000017FC) // NVPB_SetBeginEnd { - // NVPB_DrawVertices - case 0x000417FC: + pdwPushData++; + + if(*pdwPushData == 0) + break; // done? + else { - if(*pdwPushData == 0) - { - pdwPushData++; - - // Null instruction - if( (*pdwPushData) == 0x00000000) - { - pdwPushData++; - } - // Skip Bytes - else if( (*pdwPushData & 0x40000100) == 0x40000100) - { - DWORD dwSkipBytes = (*pdwPushData & 0x1FFF0000) >> 16; - - // advance to argument - pdwPushData++; - - // argument doesnt matter - pdwPushData++; - - // skip over given data - pdwPushData += dwSkipBytes/4; - } - } - else - { - XBPrimitiveType = *pdwPushData++; - PCPrimitiveType = EmuPrimitiveType(XBPrimitiveType); - - if( (*pdwPushData & 0x40001800) != 0x40001800) - { - EmuCleanup("Error in PushBuffer interpretter"); - } - - // Parse Index Data - while( (*pdwPushData & 0x40001800) == 0x40001800) - { - dwBytes = ((*pdwPushData & 0x1FFF0000) >> 16); - - if(PCPrimitiveType == D3DPT_TRIANGLESTRIP) - dwIndices = dwBytes/2; - - // argument doesnt matter - pdwPushData++; - - // assign index data buffer - pIndexData = (PVOID)pdwPushData; - - // advance past index data - pdwPushData += dwBytes/4; - - LPDIRECT3DINDEXBUFFER8 pIndexBuffer=0; - - HRESULT hRet = g_pD3DDevice8->CreateIndexBuffer(dwBytes, 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, &pIndexBuffer); - - if(FAILED(hRet)) - EmuCleanup("Unable to create index buffer for PushBuffer emulation\n"); - - // copy index data - { - WORD *pData=0; - - pIndexBuffer->Lock(0, dwBytes, (UCHAR**)&pData, NULL); - - memcpy(pData, pIndexData, dwBytes); - - pIndexBuffer->Unlock(); - } - - // render indexed vertices - { - g_pD3DDevice8->SetIndices(pIndexBuffer, 0); - - g_pD3DDevice8->DrawIndexedPrimitive - ( - PCPrimitiveType, 0, dwIndices, 0, EmuD3DVertex2PrimitiveCount(XBPrimitiveType, dwIndices) - ); - } - - // cleanup - pIndexBuffer->Release(); - - } - } + XBPrimitiveType = *pdwPushData; + PCPrimitiveType = EmuPrimitiveType(XBPrimitiveType); } - break; - - // NVPB_Unknown - case 0x00041808: - { - WORD wUnknown = (WORD)*pdwPushData++; - -// EmuCleanup("GPU Instruction Mask 0x00041808 Unhandled (D3DDevice_DrawIndexedVertices)"); - } - break; - - // NVPB_Unknown - default: - { - EmuCleanup("GPU Instruction Mask 0x%.08X Unhandled", *(pdwPushData-1)); - } - break; } + else // NVPB_InlineArray + { + PVOID pIndexData = 0; + BOOL bInc = *pdwPushData & 0x40000000; + + BOOL bFix = (dwMethod != 0x00001818); + + if(bFix) + { + if(bInc) + dwCount = ((*pdwPushData - (0x40000000 | 0x00001818)) >> 18); + + dwMethod = 0x1818; + } + + pdwPushData++; + + pIndexData = pdwPushData; + + pdwPushData += dwCount - (bInc ? 0 : 1); + + // perform rendering + { + LPDIRECT3DINDEXBUFFER8 pIndexBuffer=0; + + HRESULT hRet = g_pD3DDevice8->CreateIndexBuffer(dwCount*4, 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, &pIndexBuffer); + + if(FAILED(hRet)) + EmuCleanup("Unable to create index buffer for PushBuffer emulation\n"); + + // copy index data + { + WORD *pData=0; + + pIndexBuffer->Lock(0, dwCount*4, (UCHAR**)&pData, NULL); + + memcpy(pData, pIndexData, dwCount*4); + + pIndexBuffer->Unlock(); + } + + // render indexed vertices + { + g_pD3DDevice8->SetIndices(pIndexBuffer, 0); + + g_pD3DDevice8->DrawIndexedPrimitive + ( + PCPrimitiveType, 0, dwCount*2, 0, EmuD3DVertex2PrimitiveCount(XBPrimitiveType, dwCount*2) + ); + } + + // cleanup + pIndexBuffer->Release(); + } + } + + pdwPushData++; } } diff --git a/Source/Win32/CxbxKrnl/EmuKrnl.cpp b/Source/Win32/CxbxKrnl/EmuKrnl.cpp index fb1876790..de52879e9 100644 --- a/Source/Win32/CxbxKrnl/EmuKrnl.cpp +++ b/Source/Win32/CxbxKrnl/EmuKrnl.cpp @@ -293,6 +293,19 @@ XBSYSAPI EXPORTNUM(24) NTSTATUS NTAPI xboxkrnl::ExQueryNonVolatileSetting } break; + // Audio Flags + case 0x009: + { + if(Type != 0) + *Type = 0x04; + + if(Value != 0) + *Value = 0; + + if(ResultLength != 0) + *ResultLength = 0x04; + } + case EEPROM_MISC: { if(Type != 0) diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl index 1a9ceb0ca..c531fe14e 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl @@ -161,6 +161,98 @@ SOOVPA<10> IDirect3D8_EnumAdapterModes_1_0_4361 = } }; +// ****************************************************************** +// * IDirect3DDevice8_LoadVertexShader +// ****************************************************************** +SOOVPA<10> IDirect3DDevice8_LoadVertexShader_1_0_4361 = +{ + 0, // Large == 0 + 10, // Count == 10 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_LoadVertexShader+0x07 : mov al, [ebx+0x08] + { 0x07, 0x8A }, // (Offset,Value)-Pair #1 + { 0x08, 0x43 }, // (Offset,Value)-Pair #2 + { 0x09, 0x08 }, // (Offset,Value)-Pair #3 + + // IDirect3DDevice8_LoadVertexShader+0x32 : mov dword ptr [eax], 0x00041E9C + { 0x32, 0xC7 }, // (Offset,Value)-Pair #4 + { 0x33, 0x00 }, // (Offset,Value)-Pair #5 + { 0x34, 0x9C }, // (Offset,Value)-Pair #6 + { 0x35, 0x1E }, // (Offset,Value)-Pair #7 + { 0x36, 0x04 }, // (Offset,Value)-Pair #8 + + // IDirect3DDevice8_LoadVertexShader+0x4E : mov [ebx], ebx + { 0x4E, 0x89 }, // (Offset,Value)-Pair #9 + { 0x4F, 0x13 }, // (Offset,Value)-Pair #10 + } +}; + +// ****************************************************************** +// * IDirect3DDevice8_SelectVertexShader +// ****************************************************************** +SOOVPA<11> IDirect3DDevice8_SelectVertexShader_1_0_4361 = +{ + 0, // Large == 0 + 11, // Count == 11 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_SelectVertexShader+0x13 : mov [esi+0x384], eax + { 0x13, 0x89 }, // (Offset,Value)-Pair #1 + { 0x14, 0x86 }, // (Offset,Value)-Pair #2 + { 0x15, 0x84 }, // (Offset,Value)-Pair #3 + { 0x16, 0x03 }, // (Offset,Value)-Pair #4 + + // IDirect3DDevice8_SelectVertexShader+0x3B : mov dword ptr [eax], 0x00081E94 + { 0x3B, 0xC7 }, // (Offset,Value)-Pair #5 + { 0x3C, 0x00 }, // (Offset,Value)-Pair #6 + { 0x3D, 0x94 }, // (Offset,Value)-Pair #7 + { 0x3E, 0x1E }, // (Offset,Value)-Pair #8 + { 0x3F, 0x08 }, // (Offset,Value)-Pair #9 + + // IDirect3DDevice8_SelectVertexShader+0x55 : mov [esi], eax + { 0x55, 0x89 }, // (Offset,Value)-Pair #10 + { 0x56, 0x06 }, // (Offset,Value)-Pair #11 + } +}; + +// ****************************************************************** +// * IDirect3DDevice8_SetRenderTarget +// ****************************************************************** +SOOVPA<9> IDirect3DDevice8_SetRenderTarget_1_0_4361 = +{ + 0, // Large == 0 + 9, // Count == 9 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_SetRenderTarget+0x00 : sub esp, 0x3C + { 0x00, 0x83 }, // (Offset,Value)-Pair #1 + { 0x01, 0xEC }, // (Offset,Value)-Pair #2 + { 0x02, 0x3C }, // (Offset,Value)-Pair #3 + + // IDirect3DDevice8_SetRenderTarget+014 : jnz +0x0C + { 0x14, 0x75 }, // (Offset,Value)-Pair #4 + { 0x15, 0x0C }, // (Offset,Value)-Pair #5 + + // IDirect3DDevice8_SetRenderTarget+0x44 : push ebp + { 0x44, 0x55 }, // (Offset,Value)-Pair #6 + + // IDirect3DDevice8_SetRenderTarget+0x79 : shr ecx, 0x14 + { 0x79, 0xC1 }, // (Offset,Value)-Pair #7 + { 0x7A, 0xE9 }, // (Offset,Value)-Pair #8 + { 0x7B, 0x14 }, // (Offset,Value)-Pair #9 + } +}; + // ****************************************************************** // * IDirect3DDevice8_AddRef // ****************************************************************** @@ -252,6 +344,35 @@ SOOVPA<10> IDirect3D_RecordStateBlock_1_0_4361 = } }; +// ****************************************************************** +// * IDirect3D_SetGammaRamp +// ****************************************************************** +SOOVPA<9> IDirect3D_SetGammaRamp_1_0_4361 = +{ + 0, // Large == 0 + 9, // Count == 9 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3D_SetGammaRamp+0x11 : and eax, 1; push ebx + { 0x11, 0x83 }, // (Offset,Value)-Pair #1 + { 0x12, 0xE0 }, // (Offset,Value)-Pair #2 + { 0x13, 0x01 }, // (Offset,Value)-Pair #3 + { 0x14, 0x53 }, // (Offset,Value)-Pair #4 + + // IDirect3D_SetGammaRamp+0x2F : rep movsd + { 0x2F, 0xF3 }, // (Offset,Value)-Pair #5 + { 0x30, 0xA5 }, // (Offset,Value)-Pair #6 + + // IDirect3D_SetGammaRamp+0x3E : push ebx; mov ecx, edx + { 0x3E, 0x53 }, // (Offset,Value)-Pair #7 + { 0x3F, 0x8B }, // (Offset,Value)-Pair #8 + { 0x40, 0xCA }, // (Offset,Value)-Pair #9 + } +}; + // ****************************************************************** // * IDirect3DDevice8_BeginStateBlock // ****************************************************************** @@ -615,6 +736,141 @@ SOOVPA<10> IDirect3DDevice8_SetPixelShader_1_0_4361 = } }; +// ****************************************************************** +// * IDirect3DDevice8_SetViewport +// ****************************************************************** +SOOVPA<10> IDirect3DDevice8_SetViewport_1_0_4361 = +{ + 0, // Large == 0 + 10, // Count == 10 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_SetViewport+0x00 : sub esp, 0x08 + { 0x00, 0x83 }, // (Offset,Value)-Pair #1 + { 0x01, 0xEC }, // (Offset,Value)-Pair #2 + { 0x02, 0x08 }, // (Offset,Value)-Pair #3 + + // IDirect3DDevice8_SetViewport+0x2F : mov ebx, [esp+0x14] + { 0x2D, 0x8B }, // (Offset,Value)-Pair #4 + { 0x2E, 0x5C }, // (Offset,Value)-Pair #5 + { 0x2F, 0x24 }, // (Offset,Value)-Pair #6 + { 0x30, 0x14 }, // (Offset,Value)-Pair #7 + + // IDirect3DDevice8_SetViewport+0x53 : jnz +0x12 + { 0x53, 0x75 }, // (Offset,Value)-Pair #8 + { 0x54, 0x12 }, // (Offset,Value)-Pair #9 + + // IDirect3DDevice8_SetViewport+0x9B : inc edx + { 0x9B, 0x42 }, // (Offset,Value)-Pair #10 + } +}; + +// ****************************************************************** +// * IDirect3DDevice8_GetViewport +// ****************************************************************** +SOOVPA<10> IDirect3DDevice8_GetViewport_1_0_4361 = +{ + 0, // Large == 0 + 10, // Count == 10 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_GetViewport+0x05 : push esi; push edi + { 0x05, 0x56 }, // (Offset,Value)-Pair #1 + { 0x06, 0x57 }, // (Offset,Value)-Pair #2 + + // IDirect3DDevice8_GetViewport+0x0B : lea esi, [eax+0x9D0] + { 0x0B, 0x8D }, // (Offset,Value)-Pair #3 + { 0x0C, 0xB0 }, // (Offset,Value)-Pair #4 + { 0x0D, 0xD0 }, // (Offset,Value)-Pair #5 + { 0x0E, 0x09 }, // (Offset,Value)-Pair #6 + + // IDirect3DDevice8_GetViewport+0x11 : mov ecx, 6 + { 0x11, 0xB9 }, // (Offset,Value)-Pair #7 + { 0x12, 0x06 }, // (Offset,Value)-Pair #8 + + // IDirect3DDevice8_GetViewport+0x1A : retn 0x04 + { 0x1A, 0xC2 }, // (Offset,Value)-Pair #9 + { 0x1B, 0x04 }, // (Offset,Value)-Pair #10 + } +}; + +// ****************************************************************** +// * IDirect3DDevice8_SetTextureState_BumpEnv +// ****************************************************************** +SOOVPA<12> IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4361 = +{ + 0, // Large == 0 + 12, // Count == 12 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_SetTextureState_BumpEnv+0x18 : jnz +0x03 + { 0x18, 0x75 }, // (Offset,Value)-Pair #1 + { 0x19, 0x03 }, // (Offset,Value)-Pair #2 + + // IDirect3DDevice8_SetTextureState_BumpEnv+0x1D : test bl, 3 + { 0x1D, 0xF6 }, // (Offset,Value)-Pair #3 + { 0x1E, 0xC3 }, // (Offset,Value)-Pair #4 + { 0x1F, 0x03 }, // (Offset,Value)-Pair #5 + + // IDirect3DDevice8_SetTextureState_BumpEnv+0x32 : mov ecx, [esp+0x14] + { 0x32, 0x8B }, // (Offset,Value)-Pair #6 + { 0x33, 0x4C }, // (Offset,Value)-Pair #7 + { 0x34, 0x24 }, // (Offset,Value)-Pair #8 + { 0x35, 0x18 }, // (Offset,Value)-Pair #9 + + // IDirect3DDevice8_SetTextureState_BumpEnv+0x50 : shl esi, 5 + { 0x50, 0xC1 }, // (Offset,Value)-Pair #10 + { 0x51, 0xE6 }, // (Offset,Value)-Pair #11 + { 0x52, 0x05 }, // (Offset,Value)-Pair #12 + } +}; + +// ****************************************************************** +// * IDirect3DDevice8_SetTextureState_BorderColor +// ****************************************************************** +SOOVPA<15> IDirect3DDevice8_SetTextureState_BorderColor_1_0_4361 = +{ + 0, // Large == 0 + 15, // Count == 15 + + -1, // XRef Not Saved + 0, // XRef Not Used + + { + // IDirect3DDevice8_SetTextureState_BorderColor+0x0C : jb +0x05 + { 0x0C, 0x72 }, // (Offset,Value)-Pair #1 + { 0x0D, 0x05 }, // (Offset,Value)-Pair #2 + + // IDirect3DDevice8_SetTextureState_BorderColor+0x19 : shl edx, 6 + { 0x19, 0xC1 }, // (Offset,Value)-Pair #3 + { 0x1A, 0xE2 }, // (Offset,Value)-Pair #4 + { 0x1B, 0x06 }, // (Offset,Value)-Pair #5 + + // IDirect3DDevice8_SetTextureState_BorderColor+0x2B : add eax, 8; mov [esi], eax; shl ecx, 7 + { 0x2B, 0x83 }, // (Offset,Value)-Pair #6 + { 0x2C, 0xC0 }, // (Offset,Value)-Pair #7 + { 0x2D, 0x08 }, // (Offset,Value)-Pair #8 + { 0x2E, 0x89 }, // (Offset,Value)-Pair #9 + { 0x2F, 0x06 }, // (Offset,Value)-Pair #10 + { 0x30, 0xC1 }, // (Offset,Value)-Pair #11 + { 0x31, 0xE1 }, // (Offset,Value)-Pair #12 + { 0x32, 0x07 }, // (Offset,Value)-Pair #13 + + // IDirect3DDevice8_SetTextureState_BorderColor+0x3A : retn 0x08 + { 0x3A, 0xC2 }, // (Offset,Value)-Pair #14 + { 0x3B, 0x08 }, // (Offset,Value)-Pair #15 + } +}; + // ****************************************************************** // * IDirect3DDevice8_SetIndices // ****************************************************************** @@ -1802,6 +2058,36 @@ OOVPATable D3D8_1_0_4361[] = "EmuIDirect3D8_EnumAdapterModes" #endif }, + // IDirect3DDevice8::LoadVertexShader + { + (OOVPA*)&IDirect3DDevice8_LoadVertexShader_1_0_4361, + + XTL::EmuIDirect3DDevice8_LoadVertexShader, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_LoadVertexShader" + #endif + }, + // IDirect3DDevice8::SelectVertexShader + { + (OOVPA*)&IDirect3DDevice8_SelectVertexShader_1_0_4361, + + XTL::EmuIDirect3DDevice8_SelectVertexShader, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_SelectVertexShader" + #endif + }, + // IDirect3DDevice8::SetRenderTarget + { + (OOVPA*)&IDirect3DDevice8_SetRenderTarget_1_0_4361, + + XTL::EmuIDirect3DDevice8_SetRenderTarget, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_SetRenderTarget" + #endif + }, // IDirect3DDevice8::AddRef { (OOVPA*)&IDirect3DDevice8_AddRef_1_0_4361, @@ -1820,6 +2106,16 @@ OOVPATable D3D8_1_0_4361[] = "EmuIDirect3D_ClearStateBlockFlags (XREF)" #endif }, + // IDirect3D::SetGammaRamp + { + (OOVPA*)&IDirect3D_SetGammaRamp_1_0_4361, + + XTL::EmuIDirect3D8_SetGammaRamp, + + #ifdef _DEBUG_TRACE + "EmuIDirect3D_SetGammaRamp" + #endif + }, // IDirect3D::RecordStateBlock { (OOVPA*)&IDirect3D_RecordStateBlock_1_0_4361, 0, @@ -1958,6 +2254,46 @@ OOVPATable D3D8_1_0_4361[] = "EmuIDirect3DDevice8_SetPixelShader" #endif }, + // IDirect3DDevice8::SetViewport + { + (OOVPA*)&IDirect3DDevice8_SetViewport_1_0_4361, + + XTL::EmuIDirect3DDevice8_SetViewport, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_SetViewport" + #endif + }, + // IDirect3DDevice8::GetViewport + { + (OOVPA*)&IDirect3DDevice8_GetViewport_1_0_4361, + + XTL::EmuIDirect3DDevice8_GetViewport, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_GetViewport" + #endif + }, + // IDirect3DDevice8::SetTextureState_BumpEnv + { + (OOVPA*)&IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4361, + + XTL::EmuIDirect3DDevice8_SetTextureState_BumpEnv, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_SetTextureState_BumpEnv" + #endif + }, + // IDirect3DDevice8::SetTextureState_BorderColor + { + (OOVPA*)&IDirect3DDevice8_SetTextureState_BorderColor_1_0_4361, + + XTL::EmuIDirect3DDevice8_SetTextureState_BorderColor, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_SetTextureState_BorderColor" + #endif + }, // IDirect3DDevice8::CreateTexture (* unchanged since 3925 *) { (OOVPA*)&IDirect3DDevice8_CreateTexture_1_0_3925, diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl index de1214353..b4a6d3fe2 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl @@ -168,40 +168,6 @@ SOOVPA<10> IDirect3DDevice8_SetPixelShader_1_0_4432 = } }; -// ****************************************************************** -// * IDirect3DDevice8_SetTextureState_BumpEnv -// ****************************************************************** -SOOVPA<12> IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4432 = -{ - 0, // Large == 0 - 12, // Count == 12 - - -1, // XRef Not Saved - 0, // XRef Not Used - - { - // IDirect3DDevice8_SetTextureState_BumpEnv+0x18 : jnz +0x03 - { 0x18, 0x75 }, // (Offset,Value)-Pair #1 - { 0x19, 0x03 }, // (Offset,Value)-Pair #2 - - // IDirect3DDevice8_SetTextureState_BumpEnv+0x1D : test bl, 3 - { 0x1D, 0xF6 }, // (Offset,Value)-Pair #3 - { 0x1E, 0xC3 }, // (Offset,Value)-Pair #4 - { 0x1F, 0x03 }, // (Offset,Value)-Pair #5 - - // IDirect3DDevice8_SetTextureState_BumpEnv+0x32 : mov ecx, [esp+0x14] - { 0x32, 0x8B }, // (Offset,Value)-Pair #6 - { 0x33, 0x4C }, // (Offset,Value)-Pair #7 - { 0x34, 0x24 }, // (Offset,Value)-Pair #8 - { 0x35, 0x18 }, // (Offset,Value)-Pair #9 - - // IDirect3DDevice8_SetTextureState_BumpEnv+0x50 : shl esi, 5 - { 0x50, 0xC1 }, // (Offset,Value)-Pair #10 - { 0x51, 0xE6 }, // (Offset,Value)-Pair #11 - { 0x52, 0x05 }, // (Offset,Value)-Pair #12 - } -}; - // ****************************************************************** // * IDirect3DDevice8_SetTextureState_TwoSidedLighting // ****************************************************************** @@ -272,43 +238,6 @@ SOOVPA<13> IDirect3DDevice8_SetTextureState_BackFillMode_1_0_4432 = } }; -// ****************************************************************** -// * IDirect3DDevice8_SetTextureState_BorderColor -// ****************************************************************** -SOOVPA<15> IDirect3DDevice8_SetTextureState_BorderColor_1_0_4432 = -{ - 0, // Large == 0 - 15, // Count == 15 - - -1, // XRef Not Saved - 0, // XRef Not Used - - { - // IDirect3DDevice8_SetTextureState_BorderColor+0x0C : jb +0x05 - { 0x0C, 0x72 }, // (Offset,Value)-Pair #1 - { 0x0D, 0x05 }, // (Offset,Value)-Pair #2 - - // IDirect3DDevice8_SetTextureState_BorderColor+0x19 : shl edx, 6 - { 0x19, 0xC1 }, // (Offset,Value)-Pair #3 - { 0x1A, 0xE2 }, // (Offset,Value)-Pair #4 - { 0x1B, 0x06 }, // (Offset,Value)-Pair #5 - - // IDirect3DDevice8_SetTextureState_BorderColor+0x2B : add eax, 8; mov [esi], eax; shl ecx, 7 - { 0x2B, 0x83 }, // (Offset,Value)-Pair #6 - { 0x2C, 0xC0 }, // (Offset,Value)-Pair #7 - { 0x2D, 0x08 }, // (Offset,Value)-Pair #8 - { 0x2E, 0x89 }, // (Offset,Value)-Pair #9 - { 0x2F, 0x06 }, // (Offset,Value)-Pair #10 - { 0x30, 0xC1 }, // (Offset,Value)-Pair #11 - { 0x31, 0xE1 }, // (Offset,Value)-Pair #12 - { 0x32, 0x07 }, // (Offset,Value)-Pair #13 - - // IDirect3DDevice8_SetTextureState_BorderColor+0x3A : retn 0x08 - { 0x3A, 0xC2 }, // (Offset,Value)-Pair #14 - { 0x3B, 0x08 }, // (Offset,Value)-Pair #15 - } -}; - // ****************************************************************** // * IDirect3DDevice8_SetTextureState_ColorKeyColor // ****************************************************************** @@ -1040,9 +969,9 @@ OOVPATable D3D8_1_0_4432[] = "EmuIDirect3DDevice8_EnableOverlay" #endif }, - // IDirect3DDevice8::SetTextureState_BumpEnv + // IDirect3DDevice8::SetTextureState_BumpEnv (* unchanged since 4361 *) { - (OOVPA*)&IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4432, + (OOVPA*)&IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4361, XTL::EmuIDirect3DDevice8_SetTextureState_BumpEnv, @@ -1070,9 +999,9 @@ OOVPATable D3D8_1_0_4432[] = "EmuIDirect3DDevice8_SetTextureState_BackFillMode" #endif }, - // IDirect3DDevice8::SetTextureState_BorderColor + // IDirect3DDevice8::SetTextureState_BorderColor (* unchanged since 4361 *) { - (OOVPA*)&IDirect3DDevice8_SetTextureState_BorderColor_1_0_4432, + (OOVPA*)&IDirect3DDevice8_SetTextureState_BorderColor_1_0_4361, XTL::EmuIDirect3DDevice8_SetTextureState_BorderColor, diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl index a8dfd288c..adec97325 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl @@ -1975,9 +1975,9 @@ OOVPATable D3D8_1_0_4627[] = "EmuIDirect3DDevice8_SetTextureState_TexCoordIndex" #endif }, - // IDirect3DDevice8::SetTextureState_BumpEnv (* unchanged since 4432 *) + // IDirect3DDevice8::SetTextureState_BumpEnv (* unchanged since 4361 *) { - (OOVPA*)&IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4432, + (OOVPA*)&IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4361, XTL::EmuIDirect3DDevice8_SetTextureState_BumpEnv, @@ -1985,9 +1985,9 @@ OOVPATable D3D8_1_0_4627[] = "EmuIDirect3DDevice8_SetTextureState_BumpEnv" #endif }, - // IDirect3DDevice8::SetTextureState_BorderColor (* unchanged since 4432 *) + // IDirect3DDevice8::SetTextureState_BorderColor (* unchanged since 4361 *) { - (OOVPA*)&IDirect3DDevice8_SetTextureState_BorderColor_1_0_4432, + (OOVPA*)&IDirect3DDevice8_SetTextureState_BorderColor_1_0_4361, XTL::EmuIDirect3DDevice8_SetTextureState_BorderColor,