From 1beb8aed45d7a64d790effd094690bd28c1cc55d Mon Sep 17 00:00:00 2001 From: Aaron Robinson Date: Thu, 22 Jan 2004 05:52:31 +0000 Subject: [PATCH] turok4627 --- Cxbx.dsp | 2 +- Cxbx.opt | Bin 67072 -> 67072 bytes Include/Win32/CxbxKrnl/EmuD3D8.h | 11 ++ Include/Win32/CxbxKrnl/EmuXapi.h | 2 + Include/Win32/CxbxKrnl/HLEDataBase.h | 2 + Source/Win32/CxbxKrnl/EmuD3D8.cpp | 49 +++++++++ Source/Win32/CxbxKrnl/EmuDSound.cpp | 7 ++ Source/Win32/CxbxKrnl/EmuKrnl.cpp | 13 ++- Source/Win32/CxbxKrnl/EmuXapi.cpp | 2 + Source/Win32/CxbxKrnl/HLEDataBase.cpp | 2 + .../CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl | 44 ++++++++ .../CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl | 100 ++++++++++++++++++ .../CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl | 3 +- .../CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl | 4 + Source/Win32/CxbxKrnl/KernelThunk.cpp | 2 +- 15 files changed, 239 insertions(+), 4 deletions(-) diff --git a/Cxbx.dsp b/Cxbx.dsp index 8fd64629d..01d858922 100644 --- a/Cxbx.dsp +++ b/Cxbx.dsp @@ -1,5 +1,5 @@ # Microsoft Developer Studio Project File - Name="Cxbx" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# Microsoft Developer Studio Generated Build File, Format Version 60000 # ** DO NOT EDIT ** # TARGTYPE "Win32 (x86) Application" 0x0101 diff --git a/Cxbx.opt b/Cxbx.opt index 8d17fc008313eb9921004c4ecdcdc15f21a76603..eda72f6635455670f68892d95ded3a5418028740 100644 GIT binary patch literal 67072 zcmeHQU3=WdbzX`erq+^7+p_F9O)}jyv0YocvZy39t1>2cNtqTYs-z^+&bl%d7%pLA zfenC_mTBuK_x(tkHdnoHuY1*h;HSOmUHuc>i{9j-f1pj&_Y5$*SSaF*}p&g`9J>i%m0x}Z7aFy+^-*>&CMnFXAqv!#|t^cKYmPydQahp zAh3D+f@t7ZI8T8(n+DB*W@S0g zpc3c`=uOa7&?4v>h~&PD{r5miptnHFpg#g#2mLW<1w?XhW4{Vo1C>D)&^l-XbOZDb zXcP1;WPwLm0CM0IW|KU#%$N*H_FS^Rm1n( z>TTcqNSa|#Ew^iJ`jbT~Ximj~?ID6~EjW)H+sD4^d~;hzfJ^{~|Ao%uxx^K|K^P%6!b7#(XETwUiirQT9HKgMI=`gc zzv18)Ai^khe#7Lb_)&5Y0ct#+9LZ9im77Jg*(~G>19Y|LwR}@n_icCaY6O}BLUp|Q zq^Xd>wqd&yCv&YQNU~bt958e+iZn#xLt4AmSP`E-<8hd zRdvt`q#p3!;-(Q$5*p$45;*y?*J#?vv@UQys;3N!#bTFD2U)EH-3IZKErM8a zD^NkyG3|8?Qn=gm=5o`M9IXZ{g~3uIdbRhxMdA%vyF2)46HA z^xcT3EPA$4w@py<(=tgVrK4koCD`;_`-J|crZ9e)FMjxQkJ1lpk0cp0bj6OapCW9AMQbvTTur$Btw&{z+ZPUkFi*6h62i^y$jD~S6C%YA* zD(^m=YCig6DQx%9Q;#QVR|D>od|t)u%Anud zd1q_AVuZ$;5%j0HsooIo9JSDorY|u25!BOu(@75EwwmTsZ%#U)UVdOBp1d<(RGrqK zMmkPs4%Mq}8GF_AR978^RddtFQ4`ZgQL~DVR8!L7J)N6sGBKB$NgRxtMtl%AhxkY} z0Uf@f6CA`g#7Fn0 z-T~;{QWWl2*4OUdD5#hAEaMX`9esrQX5qK-;vauOq+k3ykLB%(B})5?qI9DnO7GjE zw1eZ#&L!c@y9Xuu$|?1-lh(3p|()G5$yILA$V1T<*Fmf=;9gwo1lwl{0}XO@jncvGX6LA zz(3=E7}FS3Pvj$=fWX-?c$Bbkb^O9*^^r)?X4utIEWdne}g5vF|SiFE`JlV_%~I_?ObiF z8Ry-6DD)i4C*KJA9C~B3kG@0f%<|jW35IZ~e6nREJIZnO|9#4joHJmXM$OF-C~&sy z7(sB)mJesIukY-xB>xvQY9LG!l0h=^oF1UdPWvpS#XD-(@+V4sf%s|WJPrDG^ZEL| z=N|`6!<6C`5`Se`EQ)3{HJ!{Jz?15eDxhFH3aX6h%OW~Vp6a|l)rdJF`<|4&C)SUZ zW9XXgKf4|SVs$Y7%lL2ii=Xk|BoeE~QPTKFk7Y?;B-?+&z9t?8AX6I}4WPX?MWis> zf2M66V}&Ky^z8qH{@DJL?LXQ6lgyrBEz0(vYJLsdf5N1fo+NDlnVzb}_Mc?Z3gDFO zKk4m(H`V}a;0vsQ)qjZQRxez4y->}8Rns%Al}qMw)lj}5W56w_n!wm%Pmz;}x5pRn zc#R|sas)uf_+Qc}lU`Ux8f2<@3DNxYZ}3Qz(5Ur_{+$@;d9ECuE%G{Jh7t1S>|(P7*&vKk_@?vJxO;Zyw?S^j8QH_mP{3Y zIZFnkw9U<5+}m5*g@eVXbLBgRUzgz~9BpN!OGr-xP?*A+RO*aw_+G0SXEUojon%MN zU#z^lKdb(yE1o$-=&9Ii$q=u&!Khkt8JV)E)Wtsgy)~lV{ zCJkk3v)MGi$85GQlKnrj|HqCubH@Kh_}6CqkMTdo|JeVd`bg(L)&OhZ%c_AS{+IF@ zO!!~CnsYDymy#p=ugi+@zb?>6q5tkceuV9Hg%x5)0#lC&6C9Li08W@$FjZ7WA;gZe z`LY0rs(xsq^Au*GYkamMv6O`+UGqd=ttGK;_r+Yf8$;_$V2v5+Yv44(MMn#s$HFM> zC3$!VAh>umm3t6S2_(_$D6AGKz{Ch%|D|VTjt-E)_#dzT(ph1u<7htV zj-BzpuB~wAwn;;IjQ{caFFhSB9_+mS3$On|ZZKopa9;nV?;DHPf5}`ylGlGB_hIze z%^PcgHE{Yg@M!8M>i+-iWN!M=5C4a|g45Ro_=-=l273LUwsSY(i`9ki)p56%@d9xU z!jt$v#bQ$(|D(G6am!1~cUD`(G{NT8&(Q-#vJ}mGF2ga+CVMowWQ~ zqWlWVtic0r9X|=(PrAYX>%`ZuYB#=qJ^pivz$fK3wZ{hhoMxx(zz4{`q~$xyPmUN5 z8j#O~BS8a;C3Oxcf}->o$^W5A`T69Uqd?@d4BHdd>%Xb(`7_Dl)Y!y`0;fk03q|<< z7=km6#;`GkxpvJPI?^+GaAs!sP|=J#blht6sK=4v47-ByMzzKnL7MSuqY7#-sR5=T zqc~%YjLi%mI2&*9Y1{#?JXP^A#w>?j+!(`$^T%p|ziF&*1gGafRAbcz|g$ZbkSL}n&z|Ba=*OEu3r zq5VNXgXR;5RFjFr)J)# z|HuJ{F<^bh|MkQd#{Wl5cwzj1$Z!qg|CpGjmLKpjO$&gALU&TGjbp$^uluI=+Jg^8 z^ZIXT&>RRXDJsFHr{5>^$LqiG`ft4c8?XQNX7vt+IIFz=n-LmonBl9QJ-q%Kum2`W z?Ejfw6nJ9|um-+t8kow>=B9B`j~^>1%w;FoaI8JYtIfbtOnGshdPG4i{6=0{IzC6} zF!J=w_}~6-;!>LJe>-kt*#5WcLWk{thkCJL``_4`eT2QU{V(Hx_oxxXxM>3DQ_I6K z{?`M3DxDmxDUA^*`a!;9=iR&75u9;1jAL1pZ7JR^FIOip`R-;}^Sy_G6t;Wl3FQ{8 zSj=BPT3p#_h0Rtd;7s1~9>QdIaV3w9Vs>TFa>5|uDKmaLfy?5GkiPG+|CgQ_4QSi! z|Aqa(u>Y5O%Qr&XbC(5m8J!83Y7PMVe_{VGrS}d*X(Q=y4&EBs{|g}*ys-vOrv~y0 z{iAFDDrh!0_4ZkE4-6}e%Vpw{TjqIi&ui|QFO6dzgK7GYUZ`Nij6C^@Z96a=yY4om z8&W!=*<9|^g;mp(K_Kqgo}->nIufRapPt`z#ciW5#X7y(>X@$~=J`#>k#)lnn{E*L zEt8&YI{q&a|H7*88z*9o=As2+y=_WqNlQ!o6(lZgIGz!TigZ1{fsF8x=o@ZF^6ipofy>dzo^A(Gj7 zApJwfd#IEDEux-{qV__=JQn36X&&p?pCk5}DE2N~I`^b}5pid4d16~OJpV+e_!hV? z-SS)$HE6pnqlPIlq?cy$e7+5#=k?iE?4aodb~66&5PxYCo=WS|7nMxC{5?b#v`G4* zenIJP`$&k|lU7#k{R$!%qAO0P{>~JdL}hDB-10)PK~<|SZVfSCp_ok<=L=o`NVO%g zVW6On)W^BTrwiMj)xxFsW$|M~J`d|4Q(7%QBYvLFORMG`v=k>oz|oG)pz-;O+qUU@ zfp-{+^6RhnYnJYc8PMFm5t>JD>cCYUSk!@Qxm>6`Ezz|l9COp`$=D>7@ju4@26+wV z`TvnQn=%E2SsU#c|6}~GV?CNQbd0b*UjL2Pf8+Jv#znAs{WrG%8!#f`n`$tm^TH;rahO|DQhBcw-HmY7JC!Ue1L7(FVMay15X3 zP$%0iK7s#HWlI?QADyhUZ0Sk;uV&}+psc~>DCtN>PD3MOy^`DlC56dyiVn<%MkbRJ6~#7-${I3* zIi3pFCif}(PyQ<}Ik{CvkJHf56- zcdkgP0Lf04k<*U=D+B5QD$C3*09uDlCCGH30-$Lnl?AC*#i<1)3i?2?g2a*xD1r?*V}e6TF0 zkd~Q~T0D8Wi|S-)SLw|*(&eMYLpnvpL&V$B(4}4Bn=@r{<0i?;F*(AMf6Z#2oZsj( z*?ugg}QTqN({Y} z;sQnn4hH9dqWrAX!HX2MsH2OE)8Vx35g6SO_3lp%P O#Bs}RH1iSeN&*1mn-JCj diff --git a/Include/Win32/CxbxKrnl/EmuD3D8.h b/Include/Win32/CxbxKrnl/EmuD3D8.h index 89ea1c34d..7084d8ce8 100644 --- a/Include/Win32/CxbxKrnl/EmuD3D8.h +++ b/Include/Win32/CxbxKrnl/EmuD3D8.h @@ -65,6 +65,7 @@ typedef DWORD X_D3DBLEND; typedef DWORD X_D3DCMPFUNC; typedef DWORD X_D3DFILLMODE; typedef DWORD X_D3DPRIMITIVETYPE; +typedef DWORD X_D3DTEXTURESTAGESTATETYPE; // NOTE: HACK: These enumerations are not equivalent when > 7! typedef D3DRESOURCETYPE X_D3DRESOURCETYPE; @@ -1046,6 +1047,16 @@ VOID WINAPI EmuIDirect3DDevice8_SetTextureState_BorderColor DWORD Value ); +// ****************************************************************** +// * func: EmuIDirect3DDevice8_SetTextureState_BumpEnv +// ****************************************************************** +VOID WINAPI EmuIDirect3DDevice8_SetTextureState_BumpEnv +( + DWORD Stage, + X_D3DTEXTURESTAGESTATETYPE Type, + DWORD Value +); + // ****************************************************************** // * func: EmuIDirect3DDevice8_SetRenderState_NormalizeNormals // ****************************************************************** diff --git a/Include/Win32/CxbxKrnl/EmuXapi.h b/Include/Win32/CxbxKrnl/EmuXapi.h index 1b40ad116..bb657a724 100644 --- a/Include/Win32/CxbxKrnl/EmuXapi.h +++ b/Include/Win32/CxbxKrnl/EmuXapi.h @@ -515,6 +515,7 @@ VOID WINAPI EmuXRegisterThreadNotifyRoutine ); // s+ +/* not necessary? // ****************************************************************** // * func: EmuXCalculateSignatureBegin // ****************************************************************** @@ -550,6 +551,7 @@ DWORD WINAPI EmuXCalculateSignatureEnd HANDLE hCalcSig, PXCALCSIG_SIGNATURE pSignature ); +*/ // +s #endif diff --git a/Include/Win32/CxbxKrnl/HLEDataBase.h b/Include/Win32/CxbxKrnl/HLEDataBase.h index 465f0fc5e..aa28f3bb2 100644 --- a/Include/Win32/CxbxKrnl/HLEDataBase.h +++ b/Include/Win32/CxbxKrnl/HLEDataBase.h @@ -205,7 +205,9 @@ enum XRefDataBaseOffset XREF_DSBUFFERSETDOPPLERFACTOR, XREF_DSBUFFERSETI3DL2SOURCE, // XAPI + /* not necessary? XREF_XAPIXCALCULATESIGNATUREBEGINEX + */ // +s }; diff --git a/Source/Win32/CxbxKrnl/EmuD3D8.cpp b/Source/Win32/CxbxKrnl/EmuD3D8.cpp index 20376d8d6..de80c4fca 100644 --- a/Source/Win32/CxbxKrnl/EmuD3D8.cpp +++ b/Source/Win32/CxbxKrnl/EmuD3D8.cpp @@ -4796,6 +4796,55 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_SetTextureState_BorderColor return; } +// ****************************************************************** +// * func: EmuIDirect3DDevice8_SetTextureState_BumpEnv +// ****************************************************************** +VOID WINAPI XTL::EmuIDirect3DDevice8_SetTextureState_BumpEnv +( + DWORD Stage, + X_D3DTEXTURESTAGESTATETYPE Type, + DWORD Value +) +{ + EmuSwapFS(); // Win2k/XP FS + + // debug trace + #ifdef _DEBUG_TRACE + { + printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_SetTextureState_BumpEnv\n" + "(\n" + " Stage : 0x%.08X\n" + " Type : 0x%.08X\n" + " Value : 0x%.08X\n" + ");\n", + GetCurrentThreadId(), Stage, Type, Value); + } + #endif + + switch(Type) + { + case 22: // X_D3DTSS_BUMPENVMAT00 + g_pD3DDevice8->SetTextureStageState(Stage, D3DTSS_BUMPENVMAT00, Value); + break; + case 23: // X_D3DTSS_BUMPENVMAT01 + g_pD3DDevice8->SetTextureStageState(Stage, D3DTSS_BUMPENVMAT01, Value); + break; + case 24: // X_D3DTSS_BUMPENVMAT11 + g_pD3DDevice8->SetTextureStageState(Stage, D3DTSS_BUMPENVMAT11, Value); + break; + case 25: // X_D3DTSS_BUMPENVMAT10 + g_pD3DDevice8->SetTextureStageState(Stage, D3DTSS_BUMPENVMAT10, Value); + break; + case 26: // X_D3DTSS_BUMPENVLSCALE + g_pD3DDevice8->SetTextureStageState(Stage, D3DTSS_BUMPENVLSCALE, Value); + break; + } + + EmuSwapFS(); // XBox FS + + return; +} + // ****************************************************************** // * func: EmuIDirect3DDevice8_SetRenderState_NormalizeNormals // ****************************************************************** diff --git a/Source/Win32/CxbxKrnl/EmuDSound.cpp b/Source/Win32/CxbxKrnl/EmuDSound.cpp index e1e2cd1f7..fc3815afa 100644 --- a/Source/Win32/CxbxKrnl/EmuDSound.cpp +++ b/Source/Win32/CxbxKrnl/EmuDSound.cpp @@ -848,6 +848,13 @@ HRESULT WINAPI XTL::EmuDirectSoundCreateBuffer pDSBufferDesc->guid3DAlgorithm = DS3DALG_DEFAULT; } + // sanity check + if(pDSBufferDesc->lpwfxFormat->nBlockAlign != (pDSBufferDesc->lpwfxFormat->nChannels*pDSBufferDesc->lpwfxFormat->wBitsPerSample)/8) + { + pDSBufferDesc->lpwfxFormat->nBlockAlign = (2*pDSBufferDesc->lpwfxFormat->wBitsPerSample)/8; + pDSBufferDesc->lpwfxFormat->nAvgBytesPerSec = pDSBufferDesc->lpwfxFormat->nSamplesPerSec * pDSBufferDesc->lpwfxFormat->nBlockAlign; + } + // TODO: Garbage Collection *ppBuffer = new X_CDirectSoundBuffer(); diff --git a/Source/Win32/CxbxKrnl/EmuKrnl.cpp b/Source/Win32/CxbxKrnl/EmuKrnl.cpp index 4bd034d40..08e4e689b 100644 --- a/Source/Win32/CxbxKrnl/EmuKrnl.cpp +++ b/Source/Win32/CxbxKrnl/EmuKrnl.cpp @@ -2634,7 +2634,7 @@ XBSYSAPI EXPORTNUM(308) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlUnicodeStringToAns } // ****************************************************************** -// * 0x0141 - XboxHardwareInfo +// * 0x0142 - XboxHardwareInfo // ****************************************************************** XBSYSAPI EXPORTNUM(322) XBOX_HARDWARE_INFO xboxkrnl::XboxHardwareInfo = { @@ -2642,6 +2642,17 @@ XBSYSAPI EXPORTNUM(322) XBOX_HARDWARE_INFO xboxkrnl::XboxHardwareInfo = 0,0,0,0 }; +// ****************************************************************** +// * 0x0143 - XboxHDKey +// ****************************************************************** +XBSYSAPI EXPORTNUM(323) xboxkrnl::UCHAR xboxkrnl::XboxHDKey[16] = +{ + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; + // ****************************************************************** // * XboxSignatureKey // ****************************************************************** diff --git a/Source/Win32/CxbxKrnl/EmuXapi.cpp b/Source/Win32/CxbxKrnl/EmuXapi.cpp index 0544edab6..a61536e7c 100644 --- a/Source/Win32/CxbxKrnl/EmuXapi.cpp +++ b/Source/Win32/CxbxKrnl/EmuXapi.cpp @@ -960,6 +960,7 @@ VOID WINAPI XTL::EmuXRegisterThreadNotifyRoutine EmuSwapFS(); // XBox FS } +/* not necessary? // ****************************************************************** // * func: EmuXCalculateSignatureBegin // ****************************************************************** @@ -1081,3 +1082,4 @@ DWORD WINAPI XTL::EmuXCalculateSignatureEnd return ERROR_SUCCESS; } +*/ \ No newline at end of file diff --git a/Source/Win32/CxbxKrnl/HLEDataBase.cpp b/Source/Win32/CxbxKrnl/HLEDataBase.cpp index 744dae293..d81fa637d 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase.cpp +++ b/Source/Win32/CxbxKrnl/HLEDataBase.cpp @@ -314,7 +314,9 @@ extern uint32 XRefDataBase[] = -1, // XREF_DSBUFFERSETVELOCITY -1, // XREF_DSBUFFERSETDOPPLERFACTOR -1, // XREF_DSBUFFERSETI3DL2SOURCE + /* not necessary? -1, //XREF_XAPIXCALCULATESIGNATUREBEGINEX + */ // +s }; diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl index c5ce21f17..893a2418f 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl @@ -1165,6 +1165,40 @@ SOOVPA<10> IDirect3DDevice8_SetTextureState_TexCoordIndex_1_0_4627 = } }; +// ****************************************************************** +// * IDirect3DDevice8_SetTextureState_BumpEnv +// ****************************************************************** +SOOVPA<12> IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4627 = +{ + 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 // ****************************************************************** @@ -2114,6 +2148,16 @@ OOVPATable D3D8_1_0_4627[] = "EmuIDirect3DDevice8_SetTextureState_TexCoordIndex" #endif }, + // IDirect3DDevice8::SetTextureState_BumpEnv + { + (OOVPA*)&IDirect3DDevice8_SetTextureState_BumpEnv_1_0_4627, + + XTL::EmuIDirect3DDevice8_SetTextureState_BumpEnv, + + #ifdef _DEBUG_TRACE + "EmuIDirect3DDevice8_SetTextureState_BumpEnv" + #endif + }, // IDirect3DDevice8::SetTextureState_BorderColor { (OOVPA*)&IDirect3DDevice8_SetTextureState_BorderColor_1_0_4627, diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl b/Source/Win32/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl index cf9875cba..aa6505f17 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl @@ -479,6 +479,37 @@ SOOVPA<12> IDirectSoundBuffer8_SetMixBinVolumes_1_0_4627 = } }; +// ****************************************************************** +// * CDirectSound::SetPositionA +// ****************************************************************** +SOOVPA<11> CDirectSound_SetPositionA_1_0_4627 = +{ + 0, // Large == 0 + 11, // Count == 11 + + XREF_DSSETPOSITIONA, // XRef Is Saved + 0, // XRef Not Used + + { + // CDirectSound_SetPositionA+0x2B : mov ecx, [ebp+0x08] + { 0x2B, 0x8B }, // (Offset,Value)-Pair #1 + { 0x2C, 0x4D }, // (Offset,Value)-Pair #2 + { 0x2D, 0x08 }, // (Offset,Value)-Pair #3 + + // CDirectSound_SetPositionA+0x3F : mov [edx+0x3C], edi + { 0x3F, 0x89 }, // (Offset,Value)-Pair #4 + { 0x40, 0x7A }, // (Offset,Value)-Pair #5 + { 0x41, 0x3C }, // (Offset,Value)-Pair #6 + + // CDirectSound_SetPositionA+0x4C : or word ptr [eax+0xA4], 0x01FF + { 0x4C, 0x66 }, // (Offset,Value)-Pair #7 + { 0x4D, 0x81 }, // (Offset,Value)-Pair #8 + { 0x4E, 0x88 }, // (Offset,Value)-Pair #9 + { 0x4F, 0xA4 }, // (Offset,Value)-Pair #10 + { 0x53, 0xFF }, // (Offset,Value)-Pair #11 + } +}; + // ****************************************************************** // * DirectSoundCreateBuffer // ****************************************************************** @@ -765,6 +796,39 @@ SOOVPA<11> CDirectSoundStream_SetVolume_1_0_4361 = } }; +// ****************************************************************** +// * IDirectSoundBuffer8_LockA +// ****************************************************************** +SOOVPA<13> IDirectSoundBuffer8_LockA_1_0_4627 = +{ + 0, // Large == 0 + 13,// Count == 10 + + XREF_DSBUFFERLOCKA, // XRef Is Saved + 0, // XRef Not Used + + { + // IDirectSoundBuffer8_LockA+0x37 : test [ebp+0x24], 1 + { 0x37, 0xF6 }, // (Offset,Value)-Pair #1 + { 0x38, 0x45 }, // (Offset,Value)-Pair #2 + { 0x39, 0x24 }, // (Offset,Value)-Pair #3 + { 0x3A, 0x01 }, // (Offset,Value)-Pair #4 + + // IDirectSoundBuffer8_LockA+0x5C : mov eax, [eax+0xBC] + { 0x5C, 0x8B }, // (Offset,Value)-Pair #5 + { 0x5D, 0x80 }, // (Offset,Value)-Pair #6 + { 0x5E, 0xBC }, // (Offset,Value)-Pair #7 + { 0x5F, 0x00 }, // (Offset,Value)-Pair #8 + + // IDirectSoundBuffer8_LockA+0xA4 : jnb +0x11; mov esi, [esi+0x1C] + { 0xA2, 0x73 }, // (Offset,Value)-Pair #9 + { 0xA3, 0x11 }, // (Offset,Value)-Pair #10 + { 0xA4, 0x8B }, // (Offset,Value)-Pair #11 + { 0xA5, 0x76 }, // (Offset,Value)-Pair #12 + { 0xA6, 0x1C }, // (Offset,Value)-Pair #13 + } +}; + // ****************************************************************** // * CMcpxBuffer_GetStatus // ****************************************************************** @@ -2287,6 +2351,24 @@ OOVPATable DSound_1_0_4627[] = "EmuIDirectSoundBuffer8_SetMixBinVolumes" #endif }, + // CDirectSound::SetPositionA (XREF) + { + (OOVPA*)&CDirectSound_SetPositionA_1_0_4627, 0, + + #ifdef _DEBUG_TRACE + "CDirectSound_SetPositionA (XRef)" + #endif + }, + // IDirectSound8::SetPosition + { + (OOVPA*)&IDirectSound8_SetPosition_1_0_3936, + + XTL::EmuIDirectSound8_SetPosition, + + #ifdef _DEBUG_TRACE + "EmuIDirectSound8_SetPosition" + #endif + }, // DirectSoundCreateBuffer { (OOVPA*)&DirectSoundCreateBuffer_1_0_4627, @@ -2361,6 +2443,24 @@ OOVPATable DSound_1_0_4627[] = "EmuCDirectSoundStream_SetVolume" #endif }, + // IDirectSoundBuffer8::LockA (XREF) + { + (OOVPA*)&IDirectSoundBuffer8_LockA_1_0_4627, 0, + + #ifdef _DEBUG_TRACE + "IDirectSoundBuffer8_LockA (XRef)" + #endif + }, + // IDirectSoundBuffer8::Lock + { + (OOVPA*)&IDirectSoundBuffer8_Lock_1_0_3936, + + XTL::EmuIDirectSoundBuffer8_Lock, + + #ifdef _DEBUG_TRACE + "EmuIDirectSoundBuffer8_Lock" + #endif + }, // CDirectSound_CreateSoundStream (* unchanged since 4361 *) { (OOVPA*)&CDirectSound_CreateSoundStream_1_0_4361, 0, diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl b/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl index baf27471f..7008e3b01 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl @@ -390,7 +390,7 @@ SOOVPA<11> XRegisterThreadNotifyRoutine_1_0_3911 = { 0x47, 0x08 }, // (Offset,Value)-Pair #11 } }; - +/* not necessary? // ****************************************************************** // * XCalculateSignatureBegin // ****************************************************************** @@ -422,6 +422,7 @@ SOOVPA<10> XCalculateSignatureBegin_1_0_3911 = { 0x3C, 0x04 }, // (Offset,Value)-Pair #10 } }; +*/ // ****************************************************************** // * XGetDeviceChanges diff --git a/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl b/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl index 750149f3d..ae3bd2b5b 100644 --- a/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl +++ b/Source/Win32/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl @@ -127,6 +127,7 @@ SOOVPA<8> XMountUtilityDrive_1_0_4627 = }; // s+ +/* not necessary? // ****************************************************************** // * XCalculateSignatureBeginEx // ****************************************************************** @@ -245,6 +246,7 @@ SOOVPA<8> XCalculateSignatureEnd_1_0_4627 = { 0x39, 0xEC }, } }; +*/ // +s // ****************************************************************** @@ -395,6 +397,7 @@ OOVPATable XAPI_1_0_4627[] = #endif }, // +s + /* not necessary? // XCalculateSignatureBeginEx { (OOVPA*)&XCalculateSignatureBeginEx_1_0_4627, @@ -435,6 +438,7 @@ OOVPATable XAPI_1_0_4627[] = "EmuXCalculateSignatureEnd" #endif }, + */ // s+ }; diff --git a/Source/Win32/CxbxKrnl/KernelThunk.cpp b/Source/Win32/CxbxKrnl/KernelThunk.cpp index 4c53a412b..d8ee92a12 100644 --- a/Source/Win32/CxbxKrnl/KernelThunk.cpp +++ b/Source/Win32/CxbxKrnl/KernelThunk.cpp @@ -380,7 +380,7 @@ extern "C" CXBXKRNL_API uint32 KernelThunkTable[367] = (uint32)PANIC(0x0140), // 0x0140 (320) (uint32)PANIC(0x0141), // 0x0141 (321) (uint32)&xboxkrnl::XboxHardwareInfo, // 0x0142 (322) - (uint32)PANIC(0x0143), // 0x0143 (323) + (uint32)&xboxkrnl::XboxHDKey, // 0x0143 (323) (uint32)PANIC(0x0144), // 0x0144 (324) (uint32)&xboxkrnl::XboxSignatureKey, // 0x0145 (325) (uint32)PANIC(0x0146), // 0x0146 (326)