Echelon9 2012-11-25 22:49:51 +11:00
parent c4c0019c49
commit adabf0534f
28 changed files with 4203 additions and 131 deletions

3
.gitattributes vendored
View file

@ -1,6 +1,3 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union

View file

@ -539,6 +539,10 @@
<Filter
Name="EmuXBAudio (h)"
>
<File
RelativePath="..\..\src\CxbxKrnl\EmuXBAudio\uXboxAdpcmDecoder.h"
>
</File>
<File
RelativePath="..\..\src\CxbxKrnl\EmuXBAudio\XboxAdpcm.h"
>
@ -1951,6 +1955,10 @@
<Filter
Name="EmuXBAudio (cpp)"
>
<File
RelativePath="..\..\src\CxbxKrnl\EmuXBAudio\uXboxAdpcmDecoder.c"
>
</File>
<File
RelativePath="..\..\src\CxbxKrnl\EmuXBAudio\XboxAdpcm.cpp"
>

View file

@ -1310,4 +1310,97 @@ TODO: Verify that Lock3DSurface is the same on other XDKs like Lock2DSurface
for Castlevania).
(*) Needed an alternative signature for this one.
(**) Needed a new signature.
(**) Needed a new signature.
1/14/12
- Added the following function(s)
D3DDevice_SetVertexShaderConstant1Fast (5558)
D3DDevice_LoadVertexShaderProgram (5558)
D3DDevice_SetPixelShaderProgram (5558)
XID_fCloseDevice (5558)
XInputClose (5558)
CDirectSound::SetPosition (5558)
IDirectSound8_SetPosition (5558)
CDirectSound::SetVelocity (5558)
IDirectSound8_SetPosition (5558)
CDirectSound::CreateStream (5558)
IDirectSound8_CreateStream (5558)
CDirectSoundStream::SetRolloffCurve (5558)
CDirectSoundStream::SetMinDistance (5558)
CDirectSoundStream::SetHeadroom (5558)
CDirectSoundStream::SetFrequency (5558)
2/29/12
- Added the following function(s)
D3DDevice_SetRenderState_BackFillMode (5344-5558)
D3DDevice_SetRenderState_TextureFactor (5344-5558)
D3DDevice_SetRenderState_MultiSampleMask (5344-5558)
D3DDevice_SetRenderState_MultiSampleMode (5455, 5558)
D3DDevice_SetRenderState_MultiSampleRenderTargetMode (5455, 5558)
D3DDevice_SetRenderState_Dxt1NoiseEnable (5455, 5558)
D3DDevice_SetRenderState_StencilCullEnable (5344-5558)
D3DDevice_SetTextureState_ColorKeyColor (5344-5558)
9/24/12
- Added the following function(s)
D3DDevice_GetBackBuffer2 (5344)
D3DDevice_SetVerticalBlankCallback (5344)
D3DDevice_SetSwapCallback (5344)
D3DDevice_GetViewport (5344)
CDirectSoundVoice::SetMaxDistance (5344)
CDirectSoundBuffer::SetMaxDistance (5344)
IDirectSoundBuffer_SetMaxDistance (5344)
CDirectSoundVoice::SetMinDistance (5344)
CDirectSoundBuffer::SetMinDistance (5344)
IDirectSoundBuffer_SetMinDistance (5344)
CDirectSound::SetI3DL2Listener (5344)
IDirectSound_SetI3DL2Listener (5344)
CDirectSound::SetRolloffFactor (5344)
IDirectSound_SetRolloffFactor (5344)
CDirectSound::SetDistanceFactor (5344)
IDirectSound_SetDistanceFactor (5344)
CDirectSound::SetDopplerFactor (5344)
IDirectSound_SetDopplerFactor (5344)
D3DDevice_SetRenderTargetFast (5344)
D3DDevice_SetScreenSpaceOffset (5344)
D3DDevice_SetScissors (5344)
D3DDevice_SetMaterial (5344)
D3DCubeTexture_GetCubeMapSurface2 (5344, 5849)
D3DDevice_SetVertexShaderConstant1Fast (5788, 5849)
9/27/12
- Added the following function(s)
XAudioDownloadEffectsImage (5849)
IDirectSound_SetEffectData (5849) (No X-Refs!)
D3DDevice_SetScissors (5849)
D3DDevice_GetScissors (5849)
D3DDevice_GetBackMaterial (5849)
D3DDevice_CaptureStateBlock (5849)
D3DDevice_ApplyStateBlock (5849)
D3DDevice_SetRenderState_StencilCullEnable (5849)
D3DDevice_SetRenderState_OcclusionCullEnable (5849)
XFileMediaObject_Seek (XDK Independent)
CDirectSoundStream::SetFormat (5849)
CDirectSoundStream::SetPitch (5849)
CDirectSoundStream::SetHeadroom (5849)
XFileMediaObject_AddRef (XDK Independent)
XFileMediaObject_Release (XDK Independent)
XFileMediaObject_GetInfo (XDK Independent)
XFileMediaObject_GetStatus (XDK Independent)
XFileMediaObject_Process (XDK Independent)
XFileMediaObject_DoWork (XDK Independent)
XFileMediaObject_Discontinuity (XDK Independent)
CDirectSoundBuffer::Play (5849)
IDirectSoundBuffer_Play (5849)
D3DDevice_GetTexture2 (5849)
- Fixed a bug in EmuIDirect3DResource8_Register to prevent crashing.
- Outrun2 is starting to work!
9/28/12
- Added the following function(s)
D3DDevice_SetRenderTargetFast (5455 - 5849)
- Fixed a [stupid] error in D3DDevice_GetTexture2. It was my fault, so
I have no one to blame but myself this time. This should (hopefully)
fix Panzer Dragoon ORTA's issue with Pandora's Box.

View file

@ -762,10 +762,12 @@ extern int EmuException(LPEXCEPTION_POINTERS e)
" EIP := 0x%.08X EFL := 0x%.08X\n"
" EAX := 0x%.08X EBX := 0x%.08X ECX := 0x%.08X EDX := 0x%.08X\n"
" ESI := 0x%.08X EDI := 0x%.08X ESP := 0x%.08X EBP := 0x%.08X\n"
" CR2 := 0x%.08X\n"
"\n",
e->ContextRecord->Eip, e->ContextRecord->EFlags,
e->ContextRecord->Eax, e->ContextRecord->Ebx, e->ContextRecord->Ecx, e->ContextRecord->Edx,
e->ContextRecord->Esi, e->ContextRecord->Edi, e->ContextRecord->Esp, e->ContextRecord->Ebp);
e->ContextRecord->Esi, e->ContextRecord->Edi, e->ContextRecord->Esp, e->ContextRecord->Ebp,
e->ContextRecord->Dr2);
#ifdef _DEBUG
CONTEXT Context = *(e->ContextRecord);

View file

@ -98,6 +98,9 @@ static volatile bool g_bRenderWindowActive = false;
static XBVideo g_XBVideo;
static XTL::D3DVBLANKCALLBACK g_pVBCallback = NULL; // Vertical-Blank callback routine
static XTL::D3DSWAPCALLBACK g_pSwapCallback = NULL; // Swap/Present callback routine
static XTL::D3DCALLBACK g_pCallback = NULL; // D3DDevice::InsertCallback routine
static XTL::X_D3DCALLBACKTYPE g_CallbackType; // Callback type
static DWORD g_CallbackParam; // Callback param
//static DWORD g_dwPrimPerFrame = 0; // Number of primitives within one frame
// wireframe toggle
@ -1736,7 +1739,8 @@ HRESULT WINAPI XTL::EmuIDirect3D8_EnumAdapterModes
EmuSwapFS(); // XBox FS
return hRet;
// return hRet;
return S_OK; // Hack
}
// ******************************************************************
@ -3183,7 +3187,7 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_CreateTexture
PCPool = D3DPOOL_DEFAULT;
}*/
EmuAdjustPower2(&Width, &Height);
// EmuAdjustPower2(&Width, &Height);
*ppTexture = new X_D3DTexture();
@ -4545,7 +4549,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register
{
DWORD dwSize = EmuCheckAllocationSize(pBase, true);
if(dwSize == -1)
if(dwSize == -1 || dwSize == 0)
{
// TODO: once this is known to be working, remove the warning
EmuWarning("Index buffer allocation size unknown");
@ -4563,8 +4567,8 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register
);
if(FAILED(hRet))
CxbxKrnlCleanup("CreateIndexBuffer Failed!\n\nError: %s\nDesc: %s",
DXGetErrorString8A(hRet), DXGetErrorDescription8A(hRet));
CxbxKrnlCleanup("CreateIndexBuffer Failed!\n\nError: %s\nDesc: %s\nSize: %d",
DXGetErrorString8A(hRet), DXGetErrorDescription8A(hRet), dwSize);
BYTE *pData = 0;
@ -4924,7 +4928,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register
BYTE *pSrc = (BYTE*)pBase;
pThis->Data = (DWORD)pSrc;
if( pBase != NULL ) pThis->Data = (DWORD)pSrc;
if(( IsSpecialResource(pResource->Data) && (pResource->Data & X_D3DRESOURCE_DATA_FLAG_SURFACE))
||( IsSpecialResource(pBase) && ((DWORD)pBase & X_D3DRESOURCE_DATA_FLAG_SURFACE)))
@ -5039,6 +5043,8 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register
{
BYTE *pDest = (BYTE*)LockedRect.pBits;
if( pSrc )
{
if((DWORD)LockedRect.Pitch == dwMipPitch && dwMipPitch == dwMipWidth*dwBPP)
{
memcpy(pDest, pSrc + dwMipOffs, dwMipWidth*dwMipHeight*dwBPP);
@ -5053,6 +5059,7 @@ HRESULT WINAPI XTL::EmuIDirect3DResource8_Register
pSrc += dwMipPitch;
}
}
}
}
}
@ -5677,6 +5684,7 @@ HRESULT WINAPI XTL::EmuIDirect3DSurface8_LockRect
if(!pThis->EmuSurface8)
{
EmuWarning("Invalid Surface!" );
__asm int 3;
EmuSwapFS();
return E_FAIL;
}
@ -6390,7 +6398,16 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_BlockUntilVerticalBlank()
// segaGT tends to freeze with this on
// if(g_XBVideo.GetVSync())
g_pDD7->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, 0);
// g_pDD7->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, 0);
// HACK: For many games (when used in mutithreaded code), using
// DDraw::WaitForVerticalBlank will wreak havoc on CPU usage and really
// slow things down. This is the case for various SEGA and other Japanese
// titles. On Xbox, it isn't a big deal, but for PC, I can't even
// guarantee this is a good idea. So instead, I'll be "faking"
// the vertical blank thing.
Sleep( 1000/60 );
EmuSwapFS(); // XBox FS
@ -7768,6 +7785,19 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DrawVertices
VertPatch.Restore();
// Execute callback procedure
if( g_CallbackType == X_D3DCALLBACK_WRITE )
{
if( g_pCallback )
{
EmuSwapFS();
g_pCallback(g_CallbackParam);
EmuSwapFS();
// TODO: Reset pointer?
}
}
EmuSwapFS(); // XBox FS
return;
@ -7849,6 +7879,19 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DrawVerticesUP
VertPatch.Restore();
// Execute callback procedure
if( g_CallbackType == X_D3DCALLBACK_WRITE )
{
if( g_pCallback )
{
EmuSwapFS();
g_pCallback(g_CallbackParam);
EmuSwapFS();
// TODO: Reset pointer?
}
}
EmuSwapFS(); // XBox FS
return;
@ -8031,6 +8074,20 @@ HRESULT WINAPI XTL::EmuIDirect3DDevice8_DrawIndexedVertices
#endif
VertPatch.Restore();
// Execute callback procedure
if( g_CallbackType == X_D3DCALLBACK_WRITE )
{
if( g_pCallback )
{
EmuSwapFS();
g_pCallback(g_CallbackParam);
EmuSwapFS();
// TODO: Reset pointer?
}
}
//#endif
EmuSwapFS(); // XBox FS
@ -8105,6 +8162,19 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_DrawIndexedVerticesUP
VertPatch.Restore();
// Execute callback procedure
if( g_CallbackType == X_D3DCALLBACK_WRITE )
{
if( g_pCallback )
{
EmuSwapFS();
g_pCallback(g_CallbackParam);
EmuSwapFS();
// TODO: Reset pointer?
}
}
EmuSwapFS(); // XBox FS
return;
@ -9298,7 +9368,7 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_InsertCallback
{
EmuSwapFS(); // Win2K/XP FS
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_InsertCallback\n"
/*DbgP*/printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_InsertCallback\n"
"(\n"
" Type : 0x%.08X\n"
" pCallback : 0x%.08X\n"
@ -9309,6 +9379,9 @@ VOID WINAPI XTL::EmuIDirect3DDevice8_InsertCallback
EmuWarning("InsertCallback ignored!\n");
// TODO: Implement
g_pCallback = (D3DCALLBACK) pCallback;
g_CallbackType = Type;
g_CallbackParam = Context;
EmuSwapFS(); // Xbox FS
}
@ -9469,59 +9542,22 @@ VOID WINAPI XTL::EmuD3DDevice_KickOff()
// ******************************************************************
// * func: EmuIDirect3DDevice8_GetTexture2
// ******************************************************************
HRESULT WINAPI XTL::EmuIDirect3DDevice8_GetTexture2
(
X_D3DResource* pTexture
)
XTL::X_D3DResource* WINAPI XTL::EmuIDirect3DDevice8_GetTexture2(DWORD Stage)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_GetTexture2\n"
"(\n"
" pTexture : 0x%.08X\n"
" Stage : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pTexture);
HRESULT hRet = S_OK;
// TODO: I'm sure there is a better way to handle this.
/*if(!pTexture)
{
printf( "Creating new texture...\n" );
pTexture = new X_D3DResource();
}
else
{
printf( "pTexture: = 0x%.08X\npTexture->EmuTexture8", pTexture, (pTexture)->EmuBaseTexture8 );
}*/
// Since this function does not specify any texture stages,
// I guess we can assume it's just the first one. According
// to the XDK documentation, this function should also add
// to the reference count.
// TODO: Verify texture?
// printf( "Setting texture...\n" );
// pTexture->EmuBaseTexture8 = EmuD3DActiveTexture[0]->EmuBaseTexture8;
pTexture = EmuD3DActiveTexture[0];
pTexture->Data = (X_D3DRESOURCE_DATA_FLAG_SPECIAL | X_D3DRESOURCE_DATA_FLAG_TEXCLON);
// printf( "Adding reference...\n" );
// pTexture->EmuBaseTexture8->AddRef();
// EmuSwapFS(); // Xbox FS
// EmuIDirect3DResource8_AddRef(pTexture);
// EmuSwapFS(); // Win2k/XP FS
// hRet = g_pD3DDevice8->GetTexture(0, &(*ppTexture)->EmuBaseTexture8);
// printf( "Verifying resource...\n" );
// EmuVerifyResourceIsRegistered((*ppTexture));
GetCurrentThreadId(), Stage);
// Get the active texture from this stage
X_D3DResource* pRet = EmuD3DActiveTexture[Stage];
EmuSwapFS(); // Xbox FS
return hRet;
return pRet;
}
// ******************************************************************
@ -9538,6 +9574,7 @@ VOID WINAPI XTL::EmuD3DDevice_SetStateVB( ULONG Unknown1 )
GetCurrentThreadId(), Unknown1);
// TODO: Anything?
__asm int 3;
EmuSwapFS();
}
@ -9552,6 +9589,7 @@ VOID WINAPI XTL::EmuD3DDevice_SetStateUP()
DbgPrintf("EmuD3D8 (0x%X): EmuD3DDevice_SetStateUP()\n");
// TODO: Anything?
__asm int 3;
EmuSwapFS();
}
@ -10300,4 +10338,99 @@ XTL::X_D3DSurface* WINAPI XTL::EmuIDirect3DDevice8_GetPersistedSurface2()
EmuSwapFS(); // Xbox FS
return pSurface;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetRenderTargetFast
// ******************************************************************
HRESULT WINAPI XTL::EmuIDirect3DDevice8_SetRenderTargetFast
(
X_D3DSurface *pRenderTarget,
X_D3DSurface *pNewZStencil,
DWORD Flags
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_SetRenderTarget\n"
"(\n"
" pRenderTarget : 0x%.08X (0x%.08X)\n"
" pNewZStencil : 0x%.08X (0x%.08X)\n"
" Flags : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pRenderTarget, (pRenderTarget != 0) ? pRenderTarget->EmuSurface8 : 0, pNewZStencil,
(pNewZStencil != 0) ? pNewZStencil->EmuSurface8 : 0, Flags);
// Redirect to the standard version.
EmuSwapFS();
HRESULT hr = EmuIDirect3DDevice8_SetRenderTarget(pRenderTarget, pNewZStencil);
EmuSwapFS();
EmuSwapFS();
return hr;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_GetScissors
// ******************************************************************
HRESULT WINAPI XTL::EmuIDirect3DDevice8_GetScissors
(
DWORD *pCount,
BOOL *pExclusive,
D3DRECT *pRects
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_GetScissors\n"
"(\n"
" pCount : 0x%.08X\n"
" pExclusive : 0x%.08X\n"
" pRects : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pCount, pExclusive, pRects);
// TODO: Save a copy of each scissor rect in case this function is called
// in conjunction with D3DDevice::SetScissors. So far, only Outrun2 uses
// this function. For now, just return the values within the current
// viewport.
D3DVIEWPORT8 vp;
g_pD3DDevice8->GetViewport( &vp );
pRects->x1 = pRects->x2 = 0;
pRects->x2 = vp.Width;
pRects->y2 = vp.Height;
pExclusive[0] = FALSE;
EmuSwapFS(); // XBox FS
return D3D_OK;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_GetBackMaterial
// ******************************************************************
HRESULT WINAPI XTL::EmuIDirect3DDevice8_GetBackMaterial(D3DMATERIAL8* pMaterial)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_GetBackMaterial\n"
"(\n"
" pMaterial : 0x%.08X\n"
");\n", GetCurrentThreadId(), pMaterial);
EmuWarning("GetBackMaterial is not supported!");
// TODO: HACK: This is wrong, but better than nothing, right?
if( pMaterial )
g_pD3DDevice8->GetMaterial( pMaterial );
EmuSwapFS(); // Xbox FS
return S_OK;
}

View file

@ -1736,10 +1736,7 @@ VOID WINAPI EmuD3DDevice_KickOff();
// ******************************************************************
// * func: EmuIDirect3DDevice8_GetTexture2
// ******************************************************************
HRESULT WINAPI EmuIDirect3DDevice8_GetTexture2
(
X_D3DResource* pTexture
);
X_D3DResource* WINAPI EmuIDirect3DDevice8_GetTexture2(DWORD Stage);
// ******************************************************************
// * func: EmuD3DDevice_SetStateVB (D3D::CDevice::SetStateVB)
@ -1930,4 +1927,28 @@ HRESULT WINAPI EmuIDirect3DDevice8_GetPixelShader
DWORD* pHandle
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetRenderTargetFast
// ******************************************************************
HRESULT WINAPI EmuIDirect3DDevice8_SetRenderTargetFast
(
X_D3DSurface *pRenderTarget,
X_D3DSurface *pNewZStencil,
DWORD Flags
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_GetScissors
// ******************************************************************
HRESULT WINAPI EmuIDirect3DDevice8_GetScissors
(
DWORD *pCount,
BOOL *pExclusive,
D3DRECT *pRects
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_GetBackMaterial
// ******************************************************************
HRESULT WINAPI EmuIDirect3DDevice8_GetBackMaterial(D3DMATERIAL8* pMaterial);
#endif

View file

@ -166,10 +166,10 @@ XTL::D3DFORMAT XTL::EmuXB2PC_D3DFormat(X_D3DFORMAT Format)
return D3DFMT_R5G6B5; // NOTE: HACK: Totally and utterly wrong :)
}
case 0x3A: // Swizzled (X_D3DFMT_A8B8G8R8)
case 0x3A: // Swizzled (X_D3DFMT_Q8W8V8U8)
{
EmuWarning("X_D3DFMT_A8B8G8R8 -> D3DFMT_A8R8G8B8");
return D3DFMT_A8R8G8B8; // NOTE: HACK: R<->B Swapped!
// EmuWarning("X_D3DFMT_A8B8G8R8 -> D3DFMT_A8R8G8B8");
return D3DFMT_Q8W8V8U8; // NOTE: HACK: R<->B Swapped!
}
case 0x3B: // Swizzled (X_D3DFMT_A8B8G8R8)
@ -279,6 +279,9 @@ XTL::X_D3DFORMAT XTL::EmuPC2XB_D3DFormat(D3DFORMAT Format)
case D3DFMT_D16_LOCKABLE:
return 0x2C;
case D3DFMT_Q8W8V8U8:
return 0x3A;
case D3DFMT_UNKNOWN:
return 0xFFFFFFFF;
}

View file

@ -2134,6 +2134,9 @@ extern boolean XTL::IsValidCurrentShader(void)
EmuSwapFS();
EmuIDirect3DDevice8_GetVertexShader(&Handle);
EmuSwapFS();
//printf( "VS = 0x%.08X\n", Handle );
if (VshHandleIsVertexShader(Handle))
{
X_D3DVertexShader *pD3DVertexShader = (X_D3DVertexShader *)(Handle & 0x7FFFFFFF);

View file

@ -446,6 +446,9 @@ typedef void (__cdecl * D3DVBLANKCALLBACK)(D3DVBLANKDATA *pData);
// D3DSWAPCALLBACK
typedef void (__cdecl * D3DSWAPCALLBACK)(D3DSWAPDATA *pData);
// D3DCALLBACK
typedef void (__cdecl * D3DCALLBACK)(DWORD Context);
// deferred render state "unknown" flag
#define X_D3DRS_UNK 0x7fffffff

View file

@ -83,6 +83,21 @@ XTL::X_CDirectSoundStream::_vtbl XTL::X_CDirectSoundStream::vtbl =
0xBEEFB00A, // 0x38
};
XTL::X_XFileMediaObject::_vtbl XTL::X_XFileMediaObject::vtbl =
{
&XTL::EmuXFileMediaObject_AddRef, // 0x00
&XTL::EmuXFileMediaObject_Release, // 0x04
&XTL::EmuXFileMediaObject_GetInfo, // 0x08
&XTL::EmuXFileMediaObject_GetStatus, // 0x0C
&XTL::EmuXFileMediaObject_Process, // 0x10
&XTL::EmuXFileMediaObject_Discontinuity,// 0x14
0xBEEFD007, // 0x18
&XTL::EmuXFileMediaObject_Seek, // 0x1C
0xBEEFD009, // 0x20
&XTL::EmuXFileMediaObject_DoWork, // 0x24
};
// size of sound buffer cache (used for periodic sound buffer updates)
#define SOUNDBUFFER_CACHE_SIZE 0x100
@ -3397,7 +3412,7 @@ HRESULT WINAPI XTL::EmuIDirectSound8_GetCaps
// ******************************************************************
// * func: EmuIDirectSoundStream_SetPitch
// ******************************************************************
HRESULT WINAPI XTL::EmuIDirectSoundStream_SetPitch
HRESULT WINAPI XTL::EmuCDirectSoundStream_SetPitch
(
X_CDirectSoundStream* pThis,
LONG lPitch
@ -3794,4 +3809,295 @@ HRESULT WINAPI XTL::EmuIDirectSoundBuffer8_SetNotificationPositions
EmuSwapFS(); // Xbox FS
return hr;
}
// ******************************************************************
// * func EmuCDirectSoundStream::SetRolloffCurve
// ******************************************************************
HRESULT WINAPI XTL::EmuCDirectSoundStream_SetRolloffCurve
(
X_CDirectSoundBuffer *pThis,
const FLOAT *pflPoints,
DWORD dwPointCount,
DWORD dwApply
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuCDirectSoundStream_SetRolloffCurve\n"
"(\n"
" pThis : 0x%.08X\n"
" pflPoints : 0x%.08X\n"
" dwPointCount : 0x%.08X\n"
" dwApply : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis, pflPoints, dwPointCount, dwApply);
// TODO: Implement
EmuSwapFS(); // XBox FS
return DS_OK;
}
// ******************************************************************
// * func: EmuIDirectSound8_SetEffectData
// ******************************************************************
HRESULT WINAPI XTL::EmuIDirectSound8_SetEffectData
(
LPVOID pThis,
DWORD dwEffectIndex,
DWORD dwOffset,
LPCVOID pvData,
DWORD dwDataSize,
DWORD dwApply
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuIDirectSound8_SetEffectData\n"
"(\n"
" pThis : 0x%.08X\n"
" dwEfectIndex : 0x%.08X\n"
" dwOffset : 0x%.08X\n"
" pvData : 0x%.08X\n"
" dwDataSize : 0x%.08X\n"
" dwApply : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis, dwEffectIndex, dwOffset, pvData, dwDataSize, dwApply);
// TODO: Implement
EmuSwapFS(); // XBox FS
return DS_OK;
}
// ******************************************************************
// * func: EmuXFileCreateMediaObjectAsync
// ******************************************************************
HRESULT WINAPI XTL::EmuXFileCreateMediaObjectAsync
(
HANDLE hFile,
DWORD dwMaxPackets,
void **ppMediaObject
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileCreateMediaObjectAsync\n"
"(\n"
" hFile : 0x%.08X\n"
" dwMaxPackets : 0x%.08X\n"
" ppMediaObject : 0x%.08X\n"
");\n",
GetCurrentThreadId(), hFile, ppMediaObject);
// TODO: Implement
EmuWarning( "XFileCreateMediaObjectAsync not yet (properly) implemented!!!\n" );
*ppMediaObject = new X_XFileMediaObject();
EmuSwapFS(); // Xbox FS
return S_OK;
}
// ******************************************************************
// * func: EmuXFileMediaObject_Seek
// ******************************************************************
HRESULT WINAPI XTL::EmuXFileMediaObject_Seek
(
X_XFileMediaObject* pThis,
LONG lOffset,
DWORD dwOrigin,
LPDWORD pdwAbsolute
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_Seek\n"
"(\n"
" pThis : 0x%.08X\n"
" lOffset : 0x%.08X\n"
" dwOrigin : 0x%.08X\n"
" pdwAbsolute : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis, lOffset, dwOrigin, pdwAbsolute);
// TODO: Implement
EmuSwapFS(); // Xbox FS
return S_OK;
}
// ******************************************************************
// * func: EmuXFileMediaObject_DoWork
// ******************************************************************
VOID WINAPI XTL::EmuXFileMediaObject_DoWork(X_XFileMediaObject* pThis)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_DoWork\n"
"(\n"
" pThis : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis);
// TODO: Implement
EmuSwapFS(); // Xbox FS
}
// ******************************************************************
// * func: EmuXFileMediaObject_GetStatus
// ******************************************************************
HRESULT WINAPI XTL::EmuXFileMediaObject_GetStatus
(
X_XFileMediaObject* pThis,
LPDWORD pdwStatus
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_GetStatus\n"
"(\n"
" pThis : 0x%.08X\n"
" pdwStatus : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis, pdwStatus);
// TODO: Implement
EmuSwapFS(); // Xbox FS
return DS_OK;
}
// ******************************************************************
// * func: EmuXFileMediaObject_GetInfo
// ******************************************************************
HRESULT WINAPI XTL::EmuXFileMediaObject_GetInfo
(
X_XFileMediaObject *pThis,
XMEDIAINFO *pInfo
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_GetStatus\n"
"(\n"
" pThis : 0x%.08X\n"
" pInfo : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis, pInfo);
// TODO: Implement
EmuSwapFS(); // Xbox FS
return DS_OK;
}
// ******************************************************************
// * func: EmuXFileMediaObject_Process
// ******************************************************************
HRESULT WINAPI XTL::EmuXFileMediaObject_Process
(
X_XFileMediaObject *pThis,
LPXMEDIAPACKET pInputBuffer,
LPXMEDIAPACKET pOutputBuffer
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_Process\n"
"(\n"
" pThis : 0x%.08X\n"
" pInputBuffer : 0x%.08X\n"
" pOutputBuffer : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis, pInputBuffer, pOutputBuffer);
// TODO: Implement
EmuSwapFS(); // Xbox FS
return DS_OK;
}
// ******************************************************************
// * func: EmuXFileMediaObject_AddRef
// ******************************************************************
ULONG WINAPI XTL::EmuXFileMediaObject_AddRef(X_XFileMediaObject *pThis)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_AddRef\n"
"(\n"
" pThis : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis);
ULONG Ret = 0;
if( pThis )
{
pThis->EmuRefCount++;
Ret = pThis->EmuRefCount;
}
EmuSwapFS(); // Xbox FS
return Ret;
}
// ******************************************************************
// * func: EmuXFileMediaObject_Release
// ******************************************************************
ULONG WINAPI XTL::EmuXFileMediaObject_Release(X_XFileMediaObject *pThis)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_Release\n"
"(\n"
" pThis : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis);
ULONG Ret = 0;
if( pThis )
{
pThis->EmuRefCount--;
if( pThis->EmuRefCount < 1 )
delete pThis;
Ret = pThis->EmuRefCount;
}
EmuSwapFS(); // Xbox FS
return Ret;
}
// ******************************************************************
// * func: EmuXFileMediaObject_Discontinuity
// ******************************************************************
HRESULT WINAPI XTL::EmuXFileMediaObject_Discontinuity(X_XFileMediaObject *pThis)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuDSound (0x%X): EmuXFileMediaObject_Discontinuity\n"
"(\n"
" pThis : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis);
EmuSwapFS(); // Xbox FS
return DS_OK;
}

View file

@ -348,6 +348,81 @@ class X_CDirectSoundStream
DWORD EmuPlayFlags;
};
// ******************************************************************
// * X_XFileMediaObject
// ******************************************************************
class X_XFileMediaObject
{
public:
X_XFileMediaObject() : pVtbl(&vtbl) { EmuRefCount = 1; }
private:
// vtable (cached by each instance, via constructor)
struct _vtbl
{
ULONG (WINAPI *AddRef)(X_XFileMediaObject *pThis); // 0x00
ULONG (WINAPI *Release)(X_XFileMediaObject *pThis); // 0x04
HRESULT (WINAPI *GetInfo) // 0x08
(
X_XFileMediaObject *pThis,
XMEDIAINFO *pInfo
);
HRESULT (WINAPI *GetStatus) // 0x0C
(
X_XFileMediaObject *pThis,
DWORD *pdwStatus
);
HRESULT (WINAPI *Process) // 0x10
(
X_XFileMediaObject *pThis,
PXMEDIAPACKET pInputBuffer,
PXMEDIAPACKET pOutputBuffer
);
HRESULT (WINAPI *Discontinuity)(X_XFileMediaObject *pThis); // 0x14
DWORD Unknown7;
/*
HRESULT (WINAPI *Flush)(X_XFileMediaObject *pThis); // 0x18
*/
HRESULT (WINAPI *Seek) // 0x1C
(
X_XFileMediaObject *pThis,
LONG lOffset,
DWORD dwOrigin,
LPDWORD pdwAbsolute
);
/*
HRESULT (WINAPI *GetLength) // 0x20
(
X_XFileMediaObject *pThis,
LPDWORD pdwLength
);*/
DWORD Unknown9;
void (WINAPI *DoWork)(X_XFileMediaObject *pThis); // 0x24
}
*pVtbl;
// global vtbl for this class
static _vtbl vtbl;
// debug mode guard for detecting naughty data accesses
#ifdef _DEBUG
DWORD DebugGuard[256];
#endif
public:
// TODO: More?
LPVOID EmuBuffer;
HANDLE EmuHandle;
UINT EmuRefCount;
};
// ******************************************************************
// * func: EmuDirectSoundCreate
// ******************************************************************
@ -1279,9 +1354,9 @@ HRESULT WINAPI EmuIDirectSound8_GetCaps
);
// ******************************************************************
// * func: EmuIDirectSoundStream_SetPitch
// * func: EmuCDirectSoundStream_SetPitch
// ******************************************************************
HRESULT WINAPI EmuIDirectSoundStream_SetPitch
HRESULT WINAPI EmuCDirectSoundStream_SetPitch
(
X_CDirectSoundStream* pThis,
LONG lPitch
@ -1408,5 +1483,97 @@ HRESULT WINAPI EmuIDirectSoundBuffer8_SetNotificationPositions
LPCDSBPOSITIONNOTIFY paNotifies
);
// ******************************************************************
// * func EmuCDirectSoundStream::SetRolloffCurve
// ******************************************************************
HRESULT WINAPI EmuCDirectSoundStream_SetRolloffCurve
(
X_CDirectSoundBuffer *pThis,
const FLOAT *pflPoints,
DWORD dwPointCount,
DWORD dwApply
);
// ******************************************************************
// * func: EmuIDirectSound8_SetEffectData
// ******************************************************************
HRESULT WINAPI EmuIDirectSound8_SetEffectData
(
LPVOID pThis,
DWORD dwEffectIndex,
DWORD dwOffset,
LPCVOID pvData,
DWORD dwDataSize,
DWORD dwApply
);
// ******************************************************************
// * func: EmuXFileCreateMediaObjectAsync
// ******************************************************************
HRESULT WINAPI EmuXFileCreateMediaObjectAsync
(
HANDLE hFile,
DWORD dwMaxPackets,
void **ppMediaObject
);
// ******************************************************************
// * func: EmuXFileMediaObject_Seek
// ******************************************************************
HRESULT WINAPI EmuXFileMediaObject_Seek
(
X_XFileMediaObject* pThis,
LONG lOffset,
DWORD dwOrigin,
LPDWORD pdwAbsolute
);
// ******************************************************************
// * func: EmuXFileMediaObject_DoWork
// ******************************************************************
VOID WINAPI EmuXFileMediaObject_DoWork(X_XFileMediaObject* pThis);
// ******************************************************************
// * func: EmuXFileMediaObject_GetStatus
// ******************************************************************
HRESULT WINAPI EmuXFileMediaObject_GetStatus
(
X_XFileMediaObject* pThis,
LPDWORD pdwStatus
);
// ******************************************************************
// * func: EmuXFileMediaObject_GetInfo
// ******************************************************************
HRESULT WINAPI EmuXFileMediaObject_GetInfo
(
X_XFileMediaObject *pThis,
XMEDIAINFO *pInfo
);
// ******************************************************************
// * func: EmuXFileMediaObject_Process
// ******************************************************************
HRESULT WINAPI EmuXFileMediaObject_Process
(
X_XFileMediaObject *pThis,
LPXMEDIAPACKET pInputBuffer,
LPXMEDIAPACKET pOutputBuffer
);
// ******************************************************************
// * func: EmuXFileMediaObject_AddRef
// ******************************************************************
ULONG WINAPI EmuXFileMediaObject_AddRef(X_XFileMediaObject *pThis);
// ******************************************************************
// * func: EmuXFileMediaObject_Release
// ******************************************************************
ULONG WINAPI EmuXFileMediaObject_Release(X_XFileMediaObject *pThis);
// ******************************************************************
// * func: EmuXFileMediaObject_Discontinuity
// ******************************************************************
HRESULT WINAPI EmuXFileMediaObject_Discontinuity(X_XFileMediaObject *pThis);
#endif

View file

@ -120,6 +120,933 @@ int FindCriticalSection(xboxkrnl::PRTL_CRITICAL_SECTION CriticalSection)
return FreeSection;
}
static CHAR* NtStatusToString ( IN NTSTATUS Status )
{
switch(Status)
{
case 0x00000000: return "STATUS_SUCCESS";
case 0x00000001: return "STATUS_WAIT_1";
case 0x00000002: return "STATUS_WAIT_2";
case 0x00000003: return "STATUS_WAIT_3";
case 0x0000003F: return "STATUS_WAIT_63";
case 0x00000080: return "STATUS_ABANDONED_WAIT_0";
case 0x000000BF: return "STATUS_ABANDONED_WAIT_63";
case 0x000000C0: return "STATUS_USER_APC";
case 0x00000100: return "STATUS_KERNEL_APC";
case 0x00000101: return "STATUS_ALERTED";
case 0x00000102: return "STATUS_TIMEOUT";
case 0x00000103: return "STATUS_PENDING";
case 0x00000104: return "STATUS_REPARSE";
case 0x00000105: return "STATUS_MORE_ENTRIES";
case 0x00000106: return "STATUS_NOT_ALL_ASSIGNED";
case 0x00000107: return "STATUS_SOME_NOT_MAPPED";
case 0x00000108: return "STATUS_OPLOCK_BREAK_IN_PROGRESS";
case 0x00000109: return "STATUS_VOLUME_MOUNTED";
case 0x0000010A: return "STATUS_RXACT_COMMITTED";
case 0x0000010B: return "STATUS_NOTIFY_CLEANUP";
case 0x0000010C: return "STATUS_NOTIFY_ENUM_DIR";
case 0x0000010D: return "STATUS_NO_QUOTAS_FOR_ACCOUNT";
case 0x0000010E: return "STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED";
case 0x00000110: return "STATUS_PAGE_FAULT_TRANSITION";
case 0x00000111: return "STATUS_PAGE_FAULT_DEMAND_ZERO";
case 0x00000112: return "STATUS_PAGE_FAULT_COPY_ON_WRITE";
case 0x00000113: return "STATUS_PAGE_FAULT_GUARD_PAGE";
case 0x00000114: return "STATUS_PAGE_FAULT_PAGING_FILE";
case 0x00000115: return "STATUS_CACHE_PAGE_LOCKED";
case 0x00000116: return "STATUS_CRASH_DUMP";
case 0x00000117: return "STATUS_BUFFER_ALL_ZEROS";
case 0x00000118: return "STATUS_REPARSE_OBJECT";
case 0x00000119: return "STATUS_RESOURCE_REQUIREMENTS_CHANGED";
case 0x00000120: return "STATUS_TRANSLATION_COMPLETE";
case 0x00000121: return "STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY";
case 0x00010001: return "DBG_EXCEPTION_HANDLED";
case 0x00010002: return "DBG_CONTINUE";
case 0x40000000: return "STATUS_OBJECT_NAME_EXISTS";
case 0x40000001: return "STATUS_THREAD_WAS_SUSPENDED";
case 0x40000002: return "STATUS_WORKING_SET_LIMIT_RANGE";
case 0x40000003: return "STATUS_IMAGE_NOT_AT_BASE";
case 0x40000004: return "STATUS_RXACT_STATE_CREATED";
case 0x40000005: return "STATUS_SEGMENT_NOTIFICATION";
case 0x40000006: return "STATUS_LOCAL_USER_SESSION_KEY";
case 0x40000007: return "STATUS_BAD_CURRENT_DIRECTORY";
case 0x40000008: return "STATUS_SERIAL_MORE_WRITES";
case 0x40000009: return "STATUS_REGISTRY_RECOVERED";
case 0x4000000A: return "STATUS_FT_READ_RECOVERY_FROM_BACKUP";
case 0x4000000B: return "STATUS_FT_WRITE_RECOVERY";
case 0x4000000C: return "STATUS_SERIAL_COUNTER_TIMEOUT";
case 0x4000000D: return "STATUS_NULL_LM_PASSWORD";
case 0x4000000E: return "STATUS_IMAGE_MACHINE_TYPE_MISMATCH";
case 0x4000000F: return "STATUS_RECEIVE_PARTIAL";
case 0x40000010: return "STATUS_RECEIVE_EXPEDITED";
case 0x40000011: return "STATUS_RECEIVE_PARTIAL_EXPEDITED";
case 0x40000012: return "STATUS_EVENT_DONE";
case 0x40000013: return "STATUS_EVENT_PENDING";
case 0x40000014: return "STATUS_CHECKING_FILE_SYSTEM";
case 0x40000015: return "STATUS_FATAL_APP_EXIT";
case 0x40000016: return "STATUS_PREDEFINED_HANDLE";
case 0x40000017: return "STATUS_WAS_UNLOCKED";
case 0x40000018: return "STATUS_SERVICE_NOTIFICATION";
case 0x40000019: return "STATUS_WAS_LOCKED";
case 0x4000001A: return "STATUS_LOG_HARD_ERROR";
case 0x4000001B: return "STATUS_ALREADY_WIN32";
case 0x4000001C: return "STATUS_WX86_UNSIMULATE";
case 0x4000001D: return "STATUS_WX86_CONTINUE";
case 0x4000001E: return "STATUS_WX86_SINGLE_STEP";
case 0x4000001F: return "STATUS_WX86_BREAKPOINT";
case 0x40000020: return "STATUS_WX86_EXCEPTION_CONTINUE";
case 0x40000021: return "STATUS_WX86_EXCEPTION_LASTCHANCE";
case 0x40000022: return "STATUS_WX86_EXCEPTION_CHAIN";
case 0x40000023: return "STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE";
case 0x40000024: return "STATUS_NO_YIELD_PERFORMED";
case 0x40000025: return "STATUS_TIMER_RESUME_IGNORED";
case 0x40000026: return "STATUS_ARBITRATION_UNHANDLED";
case 0x40000027: return "STATUS_CARDBUS_NOT_SUPPORTED";
case 0x40000028: return "STATUS_WX86_CREATEWX86TIB";
case 0x40000029: return "STATUS_MP_PROCESSOR_MISMATCH";
case 0x40010001: return "DBG_REPLY_LATER";
case 0x40010002: return "DBG_UNABLE_TO_PROVIDE_HANDLE";
case 0x40010003: return "DBG_TERMINATE_THREAD";
case 0x40010004: return "DBG_TERMINATE_PROCESS";
case 0x40010005: return "DBG_CONTROL_C";
case 0x40010006: return "DBG_PRINTEXCEPTION_C";
case 0x40010007: return "DBG_RIPEXCEPTION";
case 0x40010008: return "DBG_CONTROL_BREAK";
case 0x80000001: return "STATUS_GUARD_PAGE_VIOLATION";
case 0x80000002: return "STATUS_DATATYPE_MISALIGNMENT";
case 0x80000003: return "STATUS_BREAKPOINT";
case 0x80000004: return "STATUS_SINGLE_STEP";
case 0x80000005: return "STATUS_BUFFER_OVERFLOW";
case 0x80000006: return "STATUS_NO_MORE_FILES";
case 0x80000007: return "STATUS_WAKE_SYSTEM_DEBUGGER";
case 0x8000000A: return "STATUS_HANDLES_CLOSED";
case 0x8000000B: return "STATUS_NO_INHERITANCE";
case 0x8000000C: return "STATUS_GUID_SUBSTITUTION_MADE";
case 0x8000000D: return "STATUS_PARTIAL_COPY";
case 0x8000000E: return "STATUS_DEVICE_PAPER_EMPTY";
case 0x8000000F: return "STATUS_DEVICE_POWERED_OFF";
case 0x80000010: return "STATUS_DEVICE_OFF_LINE";
case 0x80000011: return "STATUS_DEVICE_BUSY";
case 0x80000012: return "STATUS_NO_MORE_EAS";
case 0x80000013: return "STATUS_INVALID_EA_NAME";
case 0x80000014: return "STATUS_EA_LIST_INCONSISTENT";
case 0x80000015: return "STATUS_INVALID_EA_FLAG";
case 0x80000016: return "STATUS_VERIFY_REQUIRED";
case 0x80000017: return "STATUS_EXTRANEOUS_INFORMATION";
case 0x80000018: return "STATUS_RXACT_COMMIT_NECESSARY";
case 0x8000001A: return "STATUS_NO_MORE_ENTRIES";
case 0x8000001B: return "STATUS_FILEMARK_DETECTED";
case 0x8000001C: return "STATUS_MEDIA_CHANGED";
case 0x8000001D: return "STATUS_BUS_RESET";
case 0x8000001E: return "STATUS_END_OF_MEDIA";
case 0x8000001F: return "STATUS_BEGINNING_OF_MEDIA";
case 0x80000020: return "STATUS_MEDIA_CHECK";
case 0x80000021: return "STATUS_SETMARK_DETECTED";
case 0x80000022: return "STATUS_NO_DATA_DETECTED";
case 0x80000023: return "STATUS_REDIRECTOR_HAS_OPEN_HANDLES";
case 0x80000024: return "STATUS_SERVER_HAS_OPEN_HANDLES";
case 0x80000025: return "STATUS_ALREADY_DISCONNECTED";
case 0x80000026: return "STATUS_LONGJUMP";
case 0x80010001: return "DBG_EXCEPTION_NOT_HANDLED";
case 0xC0000001: return "STATUS_UNSUCCESSFUL";
case 0xC0000002: return "STATUS_NOT_IMPLEMENTED";
case 0xC0000003: return "STATUS_INVALID_INFO_CLASS";
case 0xC0000004: return "STATUS_INFO_LENGTH_MISMATCH";
case 0xC0000005: return "STATUS_ACCESS_VIOLATION";
case 0xC0000006: return "STATUS_IN_PAGE_ERROR";
case 0xC0000007: return "STATUS_PAGEFILE_QUOTA";
case 0xC0000008: return "STATUS_INVALID_HANDLE";
case 0xC0000009: return "STATUS_BAD_INITIAL_STACK";
case 0xC000000A: return "STATUS_BAD_INITIAL_PC";
case 0xC000000B: return "STATUS_INVALID_CID";
case 0xC000000C: return "STATUS_TIMER_NOT_CANCELED";
case 0xC000000D: return "STATUS_INVALID_PARAMETER";
case 0xC000000E: return "STATUS_NO_SUCH_DEVICE";
case 0xC000000F: return "STATUS_NO_SUCH_FILE";
case 0xC0000010: return "STATUS_INVALID_DEVICE_REQUEST";
case 0xC0000011: return "STATUS_END_OF_FILE";
case 0xC0000012: return "STATUS_WRONG_VOLUME";
case 0xC0000013: return "STATUS_NO_MEDIA_IN_DEVICE";
case 0xC0000014: return "STATUS_UNRECOGNIZED_MEDIA";
case 0xC0000015: return "STATUS_NONEXISTENT_SECTOR";
case 0xC0000016: return "STATUS_MORE_PROCESSING_REQUIRED";
case 0xC0000017: return "STATUS_NO_MEMORY";
case 0xC0000018: return "STATUS_CONFLICTING_ADDRESSES";
case 0xC0000019: return "STATUS_NOT_MAPPED_VIEW";
case 0xC000001A: return "STATUS_UNABLE_TO_FREE_VM";
case 0xC000001B: return "STATUS_UNABLE_TO_DELETE_SECTION";
case 0xC000001C: return "STATUS_INVALID_SYSTEM_SERVICE";
case 0xC000001D: return "STATUS_ILLEGAL_INSTRUCTION";
case 0xC000001E: return "STATUS_INVALID_LOCK_SEQUENCE";
case 0xC000001F: return "STATUS_INVALID_VIEW_SIZE";
case 0xC0000020: return "STATUS_INVALID_FILE_FOR_SECTION";
case 0xC0000021: return "STATUS_ALREADY_COMMITTED";
case 0xC0000022: return "STATUS_ACCESS_DENIED";
case 0xC0000023: return "STATUS_BUFFER_TOO_SMALL";
case 0xC0000024: return "STATUS_OBJECT_TYPE_MISMATCH";
case 0xC0000025: return "STATUS_NONCONTINUABLE_EXCEPTION";
case 0xC0000026: return "STATUS_INVALID_DISPOSITION";
case 0xC0000027: return "STATUS_UNWIND";
case 0xC0000028: return "STATUS_BAD_STACK";
case 0xC0000029: return "STATUS_INVALID_UNWIND_TARGET";
case 0xC000002A: return "STATUS_NOT_LOCKED";
case 0xC000002B: return "STATUS_PARITY_ERROR";
case 0xC000002C: return "STATUS_UNABLE_TO_DECOMMIT_VM";
case 0xC000002D: return "STATUS_NOT_COMMITTED";
case 0xC000002E: return "STATUS_INVALID_PORT_ATTRIBUTES";
case 0xC000002F: return "STATUS_PORT_MESSAGE_TOO_LONG";
case 0xC0000030: return "STATUS_INVALID_PARAMETER_MIX";
case 0xC0000031: return "STATUS_INVALID_QUOTA_LOWER";
case 0xC0000032: return "STATUS_DISK_CORRUPT_ERROR";
case 0xC0000033: return "STATUS_OBJECT_NAME_INVALID";
case 0xC0000034: return "STATUS_OBJECT_NAME_NOT_FOUND";
case 0xC0000035: return "STATUS_OBJECT_NAME_COLLISION";
case 0xC0000037: return "STATUS_PORT_DISCONNECTED";
case 0xC0000038: return "STATUS_DEVICE_ALREADY_ATTACHED";
case 0xC0000039: return "STATUS_OBJECT_PATH_INVALID";
case 0xC000003A: return "STATUS_OBJECT_PATH_NOT_FOUND";
case 0xC000003B: return "STATUS_OBJECT_PATH_SYNTAX_BAD";
case 0xC000003C: return "STATUS_DATA_OVERRUN";
case 0xC000003D: return "STATUS_DATA_LATE_ERROR";
case 0xC000003E: return "STATUS_DATA_ERROR";
case 0xC000003F: return "STATUS_CRC_ERROR";
case 0xC0000040: return "STATUS_SECTION_TOO_BIG";
case 0xC0000041: return "STATUS_PORT_CONNECTION_REFUSED";
case 0xC0000042: return "STATUS_INVALID_PORT_HANDLE";
case 0xC0000043: return "STATUS_SHARING_VIOLATION";
case 0xC0000044: return "STATUS_QUOTA_EXCEEDED";
case 0xC0000045: return "STATUS_INVALID_PAGE_PROTECTION";
case 0xC0000046: return "STATUS_MUTANT_NOT_OWNED";
case 0xC0000047: return "STATUS_SEMAPHORE_LIMIT_EXCEEDED";
case 0xC0000048: return "STATUS_PORT_ALREADY_SET";
case 0xC0000049: return "STATUS_SECTION_NOT_IMAGE";
case 0xC000004A: return "STATUS_SUSPEND_COUNT_EXCEEDED";
case 0xC000004B: return "STATUS_THREAD_IS_TERMINATING";
case 0xC000004C: return "STATUS_BAD_WORKING_SET_LIMIT";
case 0xC000004D: return "STATUS_INCOMPATIBLE_FILE_MAP";
case 0xC000004E: return "STATUS_SECTION_PROTECTION";
case 0xC000004F: return "STATUS_EAS_NOT_SUPPORTED";
case 0xC0000050: return "STATUS_EA_TOO_LARGE";
case 0xC0000051: return "STATUS_NONEXISTENT_EA_ENTRY";
case 0xC0000052: return "STATUS_NO_EAS_ON_FILE";
case 0xC0000053: return "STATUS_EA_CORRUPT_ERROR";
case 0xC0000054: return "STATUS_FILE_LOCK_CONFLICT";
case 0xC0000055: return "STATUS_LOCK_NOT_GRANTED";
case 0xC0000056: return "STATUS_DELETE_PENDING";
case 0xC0000057: return "STATUS_CTL_FILE_NOT_SUPPORTED";
case 0xC0000058: return "STATUS_UNKNOWN_REVISION";
case 0xC0000059: return "STATUS_REVISION_MISMATCH";
case 0xC000005A: return "STATUS_INVALID_OWNER";
case 0xC000005B: return "STATUS_INVALID_PRIMARY_GROUP";
case 0xC000005C: return "STATUS_NO_IMPERSONATION_TOKEN";
case 0xC000005D: return "STATUS_CANT_DISABLE_MANDATORY";
case 0xC000005E: return "STATUS_NO_LOGON_SERVERS";
case 0xC000005F: return "STATUS_NO_SUCH_LOGON_SESSION";
case 0xC0000060: return "STATUS_NO_SUCH_PRIVILEGE";
case 0xC0000061: return "STATUS_PRIVILEGE_NOT_HELD";
case 0xC0000062: return "STATUS_INVALID_ACCOUNT_NAME";
case 0xC0000063: return "STATUS_USER_EXISTS";
case 0xC0000064: return "STATUS_NO_SUCH_USER";
case 0xC0000065: return "STATUS_GROUP_EXISTS";
case 0xC0000066: return "STATUS_NO_SUCH_GROUP";
case 0xC0000067: return "STATUS_MEMBER_IN_GROUP";
case 0xC0000068: return "STATUS_MEMBER_NOT_IN_GROUP";
case 0xC0000069: return "STATUS_LAST_ADMIN";
case 0xC000006A: return "STATUS_WRONG_PASSWORD";
case 0xC000006B: return "STATUS_ILL_FORMED_PASSWORD";
case 0xC000006C: return "STATUS_PASSWORD_RESTRICTION";
case 0xC000006D: return "STATUS_LOGON_FAILURE";
case 0xC000006E: return "STATUS_ACCOUNT_RESTRICTION";
case 0xC000006F: return "STATUS_INVALID_LOGON_HOURS";
case 0xC0000070: return "STATUS_INVALID_WORKSTATION";
case 0xC0000071: return "STATUS_PASSWORD_EXPIRED";
case 0xC0000072: return "STATUS_ACCOUNT_DISABLED";
case 0xC0000073: return "STATUS_NONE_MAPPED";
case 0xC0000074: return "STATUS_TOO_MANY_LUIDS_REQUESTED";
case 0xC0000075: return "STATUS_LUIDS_EXHAUSTED";
case 0xC0000076: return "STATUS_INVALID_SUB_AUTHORITY";
case 0xC0000077: return "STATUS_INVALID_ACL";
case 0xC0000078: return "STATUS_INVALID_SID";
case 0xC0000079: return "STATUS_INVALID_SECURITY_DESCR";
case 0xC000007A: return "STATUS_PROCEDURE_NOT_FOUND";
case 0xC000007B: return "STATUS_INVALID_IMAGE_FORMAT";
case 0xC000007C: return "STATUS_NO_TOKEN";
case 0xC000007D: return "STATUS_BAD_INHERITANCE_ACL";
case 0xC000007E: return "STATUS_RANGE_NOT_LOCKED";
case 0xC000007F: return "STATUS_DISK_FULL";
case 0xC0000080: return "STATUS_SERVER_DISABLED";
case 0xC0000081: return "STATUS_SERVER_NOT_DISABLED";
case 0xC0000082: return "STATUS_TOO_MANY_GUIDS_REQUESTED";
case 0xC0000083: return "STATUS_GUIDS_EXHAUSTED";
case 0xC0000084: return "STATUS_INVALID_ID_AUTHORITY";
case 0xC0000085: return "STATUS_AGENTS_EXHAUSTED";
case 0xC0000086: return "STATUS_INVALID_VOLUME_LABEL";
case 0xC0000087: return "STATUS_SECTION_NOT_EXTENDED";
case 0xC0000088: return "STATUS_NOT_MAPPED_DATA";
case 0xC0000089: return "STATUS_RESOURCE_DATA_NOT_FOUND";
case 0xC000008A: return "STATUS_RESOURCE_TYPE_NOT_FOUND";
case 0xC000008B: return "STATUS_RESOURCE_NAME_NOT_FOUND";
case 0xC000008C: return "STATUS_ARRAY_BOUNDS_EXCEEDED";
case 0xC000008D: return "STATUS_FLOAT_DENORMAL_OPERAND";
case 0xC000008E: return "STATUS_FLOAT_DIVIDE_BY_ZERO";
case 0xC000008F: return "STATUS_FLOAT_INEXACT_RESULT";
case 0xC0000090: return "STATUS_FLOAT_INVALID_OPERATION";
case 0xC0000091: return "STATUS_FLOAT_OVERFLOW";
case 0xC0000092: return "STATUS_FLOAT_STACK_CHECK";
case 0xC0000093: return "STATUS_FLOAT_UNDERFLOW";
case 0xC0000094: return "STATUS_INTEGER_DIVIDE_BY_ZERO";
case 0xC0000095: return "STATUS_INTEGER_OVERFLOW";
case 0xC0000096: return "STATUS_PRIVILEGED_INSTRUCTION";
case 0xC0000097: return "STATUS_TOO_MANY_PAGING_FILES";
case 0xC0000098: return "STATUS_FILE_INVALID";
case 0xC0000099: return "STATUS_ALLOTTED_SPACE_EXCEEDED";
case 0xC000009A: return "STATUS_INSUFFICIENT_RESOURCES";
case 0xC000009B: return "STATUS_DFS_EXIT_PATH_FOUND";
case 0xC000009C: return "STATUS_DEVICE_DATA_ERROR";
case 0xC000009D: return "STATUS_DEVICE_NOT_CONNECTED";
case 0xC000009E: return "STATUS_DEVICE_POWER_FAILURE";
case 0xC000009F: return "STATUS_FREE_VM_NOT_AT_BASE";
case 0xC00000A0: return "STATUS_MEMORY_NOT_ALLOCATED";
case 0xC00000A1: return "STATUS_WORKING_SET_QUOTA";
case 0xC00000A2: return "STATUS_MEDIA_WRITE_PROTECTED";
case 0xC00000A3: return "STATUS_DEVICE_NOT_READY";
case 0xC00000A4: return "STATUS_INVALID_GROUP_ATTRIBUTES";
case 0xC00000A5: return "STATUS_BAD_IMPERSONATION_LEVEL";
case 0xC00000A6: return "STATUS_CANT_OPEN_ANONYMOUS";
case 0xC00000A7: return "STATUS_BAD_VALIDATION_CLASS";
case 0xC00000A8: return "STATUS_BAD_TOKEN_TYPE";
case 0xC00000A9: return "STATUS_BAD_MASTER_BOOT_RECORD";
case 0xC00000AA: return "STATUS_INSTRUCTION_MISALIGNMENT";
case 0xC00000AB: return "STATUS_INSTANCE_NOT_AVAILABLE";
case 0xC00000AC: return "STATUS_PIPE_NOT_AVAILABLE";
case 0xC00000AD: return "STATUS_INVALID_PIPE_STATE";
case 0xC00000AE: return "STATUS_PIPE_BUSY";
case 0xC00000AF: return "STATUS_ILLEGAL_FUNCTION";
case 0xC00000B0: return "STATUS_PIPE_DISCONNECTED";
case 0xC00000B1: return "STATUS_PIPE_CLOSING";
case 0xC00000B2: return "STATUS_PIPE_CONNECTED";
case 0xC00000B3: return "STATUS_PIPE_LISTENING";
case 0xC00000B4: return "STATUS_INVALID_READ_MODE";
case 0xC00000B5: return "STATUS_IO_TIMEOUT";
case 0xC00000B6: return "STATUS_FILE_FORCED_CLOSED";
case 0xC00000B7: return "STATUS_PROFILING_NOT_STARTED";
case 0xC00000B8: return "STATUS_PROFILING_NOT_STOPPED";
case 0xC00000B9: return "STATUS_COULD_NOT_INTERPRET";
case 0xC00000BA: return "STATUS_FILE_IS_A_DIRECTORY";
case 0xC00000BB: return "STATUS_NOT_SUPPORTED";
case 0xC00000BC: return "STATUS_REMOTE_NOT_LISTENING";
case 0xC00000BD: return "STATUS_DUPLICATE_NAME";
case 0xC00000BE: return "STATUS_BAD_NETWORK_PATH";
case 0xC00000BF: return "STATUS_NETWORK_BUSY";
case 0xC00000C0: return "STATUS_DEVICE_DOES_NOT_EXIST";
case 0xC00000C1: return "STATUS_TOO_MANY_COMMANDS";
case 0xC00000C2: return "STATUS_ADAPTER_HARDWARE_ERROR";
case 0xC00000C3: return "STATUS_INVALID_NETWORK_RESPONSE";
case 0xC00000C4: return "STATUS_UNEXPECTED_NETWORK_ERROR";
case 0xC00000C5: return "STATUS_BAD_REMOTE_ADAPTER";
case 0xC00000C6: return "STATUS_PRINT_QUEUE_FULL";
case 0xC00000C7: return "STATUS_NO_SPOOL_SPACE";
case 0xC00000C8: return "STATUS_PRINT_CANCELLED";
case 0xC00000C9: return "STATUS_NETWORK_NAME_DELETED";
case 0xC00000CA: return "STATUS_NETWORK_ACCESS_DENIED";
case 0xC00000CB: return "STATUS_BAD_DEVICE_TYPE";
case 0xC00000CC: return "STATUS_BAD_NETWORK_NAME";
case 0xC00000CD: return "STATUS_TOO_MANY_NAMES";
case 0xC00000CE: return "STATUS_TOO_MANY_SESSIONS";
case 0xC00000CF: return "STATUS_SHARING_PAUSED";
case 0xC00000D0: return "STATUS_REQUEST_NOT_ACCEPTED";
case 0xC00000D1: return "STATUS_REDIRECTOR_PAUSED";
case 0xC00000D2: return "STATUS_NET_WRITE_FAULT";
case 0xC00000D3: return "STATUS_PROFILING_AT_LIMIT";
case 0xC00000D4: return "STATUS_NOT_SAME_DEVICE";
case 0xC00000D5: return "STATUS_FILE_RENAMED";
case 0xC00000D6: return "STATUS_VIRTUAL_CIRCUIT_CLOSED";
case 0xC00000D7: return "STATUS_NO_SECURITY_ON_OBJECT";
case 0xC00000D8: return "STATUS_CANT_WAIT";
case 0xC00000D9: return "STATUS_PIPE_EMPTY";
case 0xC00000DA: return "STATUS_CANT_ACCESS_DOMAIN_INFO";
case 0xC00000DB: return "STATUS_CANT_TERMINATE_SELF";
case 0xC00000DC: return "STATUS_INVALID_SERVER_STATE";
case 0xC00000DD: return "STATUS_INVALID_DOMAIN_STATE";
case 0xC00000DE: return "STATUS_INVALID_DOMAIN_ROLE";
case 0xC00000DF: return "STATUS_NO_SUCH_DOMAIN";
case 0xC00000E0: return "STATUS_DOMAIN_EXISTS";
case 0xC00000E1: return "STATUS_DOMAIN_LIMIT_EXCEEDED";
case 0xC00000E2: return "STATUS_OPLOCK_NOT_GRANTED";
case 0xC00000E3: return "STATUS_INVALID_OPLOCK_PROTOCOL";
case 0xC00000E4: return "STATUS_INTERNAL_DB_CORRUPTION";
case 0xC00000E5: return "STATUS_INTERNAL_ERROR";
case 0xC00000E6: return "STATUS_GENERIC_NOT_MAPPED";
case 0xC00000E7: return "STATUS_BAD_DESCRIPTOR_FORMAT";
case 0xC00000E8: return "STATUS_INVALID_USER_BUFFER";
case 0xC00000E9: return "STATUS_UNEXPECTED_IO_ERROR";
case 0xC00000EA: return "STATUS_UNEXPECTED_MM_CREATE_ERR";
case 0xC00000EB: return "STATUS_UNEXPECTED_MM_MAP_ERROR";
case 0xC00000EC: return "STATUS_UNEXPECTED_MM_EXTEND_ERR";
case 0xC00000ED: return "STATUS_NOT_LOGON_PROCESS";
case 0xC00000EE: return "STATUS_LOGON_SESSION_EXISTS";
case 0xC00000EF: return "STATUS_INVALID_PARAMETER_1";
case 0xC00000F0: return "STATUS_INVALID_PARAMETER_2";
case 0xC00000F1: return "STATUS_INVALID_PARAMETER_3";
case 0xC00000F2: return "STATUS_INVALID_PARAMETER_4";
case 0xC00000F3: return "STATUS_INVALID_PARAMETER_5";
case 0xC00000F4: return "STATUS_INVALID_PARAMETER_6";
case 0xC00000F5: return "STATUS_INVALID_PARAMETER_7";
case 0xC00000F6: return "STATUS_INVALID_PARAMETER_8";
case 0xC00000F7: return "STATUS_INVALID_PARAMETER_9";
case 0xC00000F8: return "STATUS_INVALID_PARAMETER_10";
case 0xC00000F9: return "STATUS_INVALID_PARAMETER_11";
case 0xC00000FA: return "STATUS_INVALID_PARAMETER_12";
case 0xC00000FB: return "STATUS_REDIRECTOR_NOT_STARTED";
case 0xC00000FC: return "STATUS_REDIRECTOR_STARTED";
case 0xC00000FD: return "STATUS_STACK_OVERFLOW";
case 0xC00000FE: return "STATUS_NO_SUCH_PACKAGE";
case 0xC00000FF: return "STATUS_BAD_FUNCTION_TABLE";
case 0xC0000100: return "STATUS_VARIABLE_NOT_FOUND";
case 0xC0000101: return "STATUS_DIRECTORY_NOT_EMPTY";
case 0xC0000102: return "STATUS_FILE_CORRUPT_ERROR";
case 0xC0000103: return "STATUS_NOT_A_DIRECTORY";
case 0xC0000104: return "STATUS_BAD_LOGON_SESSION_STATE";
case 0xC0000105: return "STATUS_LOGON_SESSION_COLLISION";
case 0xC0000106: return "STATUS_NAME_TOO_LONG";
case 0xC0000107: return "STATUS_FILES_OPEN";
case 0xC0000108: return "STATUS_CONNECTION_IN_USE";
case 0xC0000109: return "STATUS_MESSAGE_NOT_FOUND";
case 0xC000010A: return "STATUS_PROCESS_IS_TERMINATING";
case 0xC000010B: return "STATUS_INVALID_LOGON_TYPE";
case 0xC000010C: return "STATUS_NO_GUID_TRANSLATION";
case 0xC000010D: return "STATUS_CANNOT_IMPERSONATE";
case 0xC000010E: return "STATUS_IMAGE_ALREADY_LOADED";
case 0xC000010F: return "STATUS_ABIOS_NOT_PRESENT";
case 0xC0000110: return "STATUS_ABIOS_LID_NOT_EXIST";
case 0xC0000111: return "STATUS_ABIOS_LID_ALREADY_OWNED";
case 0xC0000112: return "STATUS_ABIOS_NOT_LID_OWNER";
case 0xC0000113: return "STATUS_ABIOS_INVALID_COMMAND";
case 0xC0000114: return "STATUS_ABIOS_INVALID_LID";
case 0xC0000115: return "STATUS_ABIOS_SELECTOR_NOT_AVAILABLE";
case 0xC0000116: return "STATUS_ABIOS_INVALID_SELECTOR";
case 0xC0000117: return "STATUS_NO_LDT";
case 0xC0000118: return "STATUS_INVALID_LDT_SIZE";
case 0xC0000119: return "STATUS_INVALID_LDT_OFFSET";
case 0xC000011A: return "STATUS_INVALID_LDT_DESCRIPTOR";
case 0xC000011B: return "STATUS_INVALID_IMAGE_NE_FORMAT";
case 0xC000011C: return "STATUS_RXACT_INVALID_STATE";
case 0xC000011D: return "STATUS_RXACT_COMMIT_FAILURE";
case 0xC000011E: return "STATUS_MAPPED_FILE_SIZE_ZERO";
case 0xC000011F: return "STATUS_TOO_MANY_OPENED_FILES";
case 0xC0000120: return "STATUS_CANCELLED";
case 0xC0000121: return "STATUS_CANNOT_DELETE";
case 0xC0000122: return "STATUS_INVALID_COMPUTER_NAME";
case 0xC0000123: return "STATUS_FILE_DELETED";
case 0xC0000124: return "STATUS_SPECIAL_ACCOUNT";
case 0xC0000125: return "STATUS_SPECIAL_GROUP";
case 0xC0000126: return "STATUS_SPECIAL_USER";
case 0xC0000127: return "STATUS_MEMBERS_PRIMARY_GROUP";
case 0xC0000128: return "STATUS_FILE_CLOSED";
case 0xC0000129: return "STATUS_TOO_MANY_THREADS";
case 0xC000012A: return "STATUS_THREAD_NOT_IN_PROCESS";
case 0xC000012B: return "STATUS_TOKEN_ALREADY_IN_USE";
case 0xC000012C: return "STATUS_PAGEFILE_QUOTA_EXCEEDED";
case 0xC000012D: return "STATUS_COMMITMENT_LIMIT";
case 0xC000012E: return "STATUS_INVALID_IMAGE_LE_FORMAT";
case 0xC000012F: return "STATUS_INVALID_IMAGE_NOT_MZ";
case 0xC0000130: return "STATUS_INVALID_IMAGE_PROTECT";
case 0xC0000131: return "STATUS_INVALID_IMAGE_WIN_16";
case 0xC0000132: return "STATUS_LOGON_SERVER_CONFLICT";
case 0xC0000133: return "STATUS_TIME_DIFFERENCE_AT_DC";
case 0xC0000134: return "STATUS_SYNCHRONIZATION_REQUIRED";
case 0xC0000135: return "STATUS_DLL_NOT_FOUND";
case 0xC0000136: return "STATUS_OPEN_FAILED";
case 0xC0000137: return "STATUS_IO_PRIVILEGE_FAILED";
case 0xC0000138: return "STATUS_ORDINAL_NOT_FOUND";
case 0xC0000139: return "STATUS_ENTRYPOINT_NOT_FOUND";
case 0xC000013A: return "STATUS_CONTROL_C_EXIT";
case 0xC000013B: return "STATUS_LOCAL_DISCONNECT";
case 0xC000013C: return "STATUS_REMOTE_DISCONNECT";
case 0xC000013D: return "STATUS_REMOTE_RESOURCES";
case 0xC000013E: return "STATUS_LINK_FAILED";
case 0xC000013F: return "STATUS_LINK_TIMEOUT";
case 0xC0000140: return "STATUS_INVALID_CONNECTION";
case 0xC0000141: return "STATUS_INVALID_ADDRESS";
case 0xC0000142: return "STATUS_DLL_INIT_FAILED";
case 0xC0000143: return "STATUS_MISSING_SYSTEMFILE";
case 0xC0000144: return "STATUS_UNHANDLED_EXCEPTION";
case 0xC0000145: return "STATUS_APP_INIT_FAILURE";
case 0xC0000146: return "STATUS_PAGEFILE_CREATE_FAILED";
case 0xC0000147: return "STATUS_NO_PAGEFILE";
case 0xC0000148: return "STATUS_INVALID_LEVEL";
case 0xC0000149: return "STATUS_WRONG_PASSWORD_CORE";
case 0xC000014A: return "STATUS_ILLEGAL_FLOAT_CONTEXT";
case 0xC000014B: return "STATUS_PIPE_BROKEN";
case 0xC000014C: return "STATUS_REGISTRY_CORRUPT";
case 0xC000014D: return "STATUS_REGISTRY_IO_FAILED";
case 0xC000014E: return "STATUS_NO_EVENT_PAIR";
case 0xC000014F: return "STATUS_UNRECOGNIZED_VOLUME";
case 0xC0000150: return "STATUS_SERIAL_NO_DEVICE_INITED";
case 0xC0000151: return "STATUS_NO_SUCH_ALIAS";
case 0xC0000152: return "STATUS_MEMBER_NOT_IN_ALIAS";
case 0xC0000153: return "STATUS_MEMBER_IN_ALIAS";
case 0xC0000154: return "STATUS_ALIAS_EXISTS";
case 0xC0000155: return "STATUS_LOGON_NOT_GRANTED";
case 0xC0000156: return "STATUS_TOO_MANY_SECRETS";
case 0xC0000157: return "STATUS_SECRET_TOO_LONG";
case 0xC0000158: return "STATUS_INTERNAL_DB_ERROR";
case 0xC0000159: return "STATUS_FULLSCREEN_MODE";
case 0xC000015A: return "STATUS_TOO_MANY_CONTEXT_IDS";
case 0xC000015B: return "STATUS_LOGON_TYPE_NOT_GRANTED";
case 0xC000015C: return "STATUS_NOT_REGISTRY_FILE";
case 0xC000015D: return "STATUS_NT_CROSS_ENCRYPTION_REQUIRED";
case 0xC000015E: return "STATUS_DOMAIN_CTRLR_CONFIG_ERROR";
case 0xC000015F: return "STATUS_FT_MISSING_MEMBER";
case 0xC0000160: return "STATUS_ILL_FORMED_SERVICE_ENTRY";
case 0xC0000161: return "STATUS_ILLEGAL_CHARACTER";
case 0xC0000162: return "STATUS_UNMAPPABLE_CHARACTER";
case 0xC0000163: return "STATUS_UNDEFINED_CHARACTER";
case 0xC0000164: return "STATUS_FLOPPY_VOLUME";
case 0xC0000165: return "STATUS_FLOPPY_ID_MARK_NOT_FOUND";
case 0xC0000166: return "STATUS_FLOPPY_WRONG_CYLINDER";
case 0xC0000167: return "STATUS_FLOPPY_UNKNOWN_ERROR";
case 0xC0000168: return "STATUS_FLOPPY_BAD_REGISTERS";
case 0xC0000169: return "STATUS_DISK_RECALIBRATE_FAILED";
case 0xC000016A: return "STATUS_DISK_OPERATION_FAILED";
case 0xC000016B: return "STATUS_DISK_RESET_FAILED";
case 0xC000016C: return "STATUS_SHARED_IRQ_BUSY";
case 0xC000016D: return "STATUS_FT_ORPHANING";
case 0xC000016E: return "STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT";
case 0xC0000172: return "STATUS_PARTITION_FAILURE";
case 0xC0000173: return "STATUS_INVALID_BLOCK_LENGTH";
case 0xC0000174: return "STATUS_DEVICE_NOT_PARTITIONED";
case 0xC0000175: return "STATUS_UNABLE_TO_LOCK_MEDIA";
case 0xC0000176: return "STATUS_UNABLE_TO_UNLOAD_MEDIA";
case 0xC0000177: return "STATUS_EOM_OVERFLOW";
case 0xC0000178: return "STATUS_NO_MEDIA";
case 0xC000017A: return "STATUS_NO_SUCH_MEMBER";
case 0xC000017B: return "STATUS_INVALID_MEMBER";
case 0xC000017C: return "STATUS_KEY_DELETED";
case 0xC000017D: return "STATUS_NO_LOG_SPACE";
case 0xC000017E: return "STATUS_TOO_MANY_SIDS";
case 0xC000017F: return "STATUS_LM_CROSS_ENCRYPTION_REQUIRED";
case 0xC0000180: return "STATUS_KEY_HAS_CHILDREN";
case 0xC0000181: return "STATUS_CHILD_MUST_BE_VOLATILE";
case 0xC0000182: return "STATUS_DEVICE_CONFIGURATION_ERROR";
case 0xC0000183: return "STATUS_DRIVER_INTERNAL_ERROR";
case 0xC0000184: return "STATUS_INVALID_DEVICE_STATE";
case 0xC0000185: return "STATUS_IO_DEVICE_ERROR";
case 0xC0000186: return "STATUS_DEVICE_PROTOCOL_ERROR";
case 0xC0000187: return "STATUS_BACKUP_CONTROLLER";
case 0xC0000188: return "STATUS_LOG_FILE_FULL";
case 0xC0000189: return "STATUS_TOO_LATE";
case 0xC000018A: return "STATUS_NO_TRUST_LSA_SECRET";
case 0xC000018B: return "STATUS_NO_TRUST_SAM_ACCOUNT";
case 0xC000018C: return "STATUS_TRUSTED_DOMAIN_FAILURE";
case 0xC000018D: return "STATUS_TRUSTED_RELATIONSHIP_FAILURE";
case 0xC000018E: return "STATUS_EVENTLOG_FILE_CORRUPT";
case 0xC000018F: return "STATUS_EVENTLOG_CANT_START";
case 0xC0000190: return "STATUS_TRUST_FAILURE";
case 0xC0000191: return "STATUS_MUTANT_LIMIT_EXCEEDED";
case 0xC0000192: return "STATUS_NETLOGON_NOT_STARTED";
case 0xC0000193: return "STATUS_ACCOUNT_EXPIRED";
case 0xC0000194: return "STATUS_POSSIBLE_DEADLOCK";
case 0xC0000195: return "STATUS_NETWORK_CREDENTIAL_CONFLICT";
case 0xC0000196: return "STATUS_REMOTE_SESSION_LIMIT";
case 0xC0000197: return "STATUS_EVENTLOG_FILE_CHANGED";
case 0xC0000198: return "STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT";
case 0xC0000199: return "STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT";
case 0xC000019A: return "STATUS_NOLOGON_SERVER_TRUST_ACCOUNT";
case 0xC000019B: return "STATUS_DOMAIN_TRUST_INCONSISTENT";
case 0xC000019C: return "STATUS_FS_DRIVER_REQUIRED";
case 0xC0000202: return "STATUS_NO_USER_SESSION_KEY";
case 0xC0000203: return "STATUS_USER_SESSION_DELETED";
case 0xC0000204: return "STATUS_RESOURCE_LANG_NOT_FOUND";
case 0xC0000205: return "STATUS_INSUFF_SERVER_RESOURCES";
case 0xC0000206: return "STATUS_INVALID_BUFFER_SIZE";
case 0xC0000207: return "STATUS_INVALID_ADDRESS_COMPONENT";
case 0xC0000208: return "STATUS_INVALID_ADDRESS_WILDCARD";
case 0xC0000209: return "STATUS_TOO_MANY_ADDRESSES";
case 0xC000020A: return "STATUS_ADDRESS_ALREADY_EXISTS";
case 0xC000020B: return "STATUS_ADDRESS_CLOSED";
case 0xC000020C: return "STATUS_CONNECTION_DISCONNECTED";
case 0xC000020D: return "STATUS_CONNECTION_RESET";
case 0xC000020E: return "STATUS_TOO_MANY_NODES";
case 0xC000020F: return "STATUS_TRANSACTION_ABORTED";
case 0xC0000210: return "STATUS_TRANSACTION_TIMED_OUT";
case 0xC0000211: return "STATUS_TRANSACTION_NO_RELEASE";
case 0xC0000212: return "STATUS_TRANSACTION_NO_MATCH";
case 0xC0000213: return "STATUS_TRANSACTION_RESPONDED";
case 0xC0000214: return "STATUS_TRANSACTION_INVALID_ID";
case 0xC0000215: return "STATUS_TRANSACTION_INVALID_TYPE";
case 0xC0000216: return "STATUS_NOT_SERVER_SESSION";
case 0xC0000217: return "STATUS_NOT_CLIENT_SESSION";
case 0xC0000218: return "STATUS_CANNOT_LOAD_REGISTRY_FILE";
case 0xC0000219: return "STATUS_DEBUG_ATTACH_FAILED";
case 0xC000021A: return "STATUS_SYSTEM_PROCESS_TERMINATED";
case 0xC000021B: return "STATUS_DATA_NOT_ACCEPTED";
case 0xC000021C: return "STATUS_NO_BROWSER_SERVERS_FOUND";
case 0xC000021D: return "STATUS_VDM_HARD_ERROR";
case 0xC000021E: return "STATUS_DRIVER_CANCEL_TIMEOUT";
case 0xC000021F: return "STATUS_REPLY_MESSAGE_MISMATCH";
case 0xC0000220: return "STATUS_MAPPED_ALIGNMENT";
case 0xC0000221: return "STATUS_IMAGE_CHECKSUM_MISMATCH";
case 0xC0000222: return "STATUS_LOST_WRITEBEHIND_DATA";
case 0xC0000223: return "STATUS_CLIENT_SERVER_PARAMETERS_INVALID";
case 0xC0000224: return "STATUS_PASSWORD_MUST_CHANGE";
case 0xC0000225: return "STATUS_NOT_FOUND";
case 0xC0000226: return "STATUS_NOT_TINY_STREAM";
case 0xC0000227: return "STATUS_RECOVERY_FAILURE";
case 0xC0000228: return "STATUS_STACK_OVERFLOW_READ";
case 0xC0000229: return "STATUS_FAIL_CHECK";
case 0xC000022A: return "STATUS_DUPLICATE_OBJECTID";
case 0xC000022B: return "STATUS_OBJECTID_EXISTS";
case 0xC000022C: return "STATUS_CONVERT_TO_LARGE";
case 0xC000022D: return "STATUS_RETRY";
case 0xC000022E: return "STATUS_FOUND_OUT_OF_SCOPE";
case 0xC000022F: return "STATUS_ALLOCATE_BUCKET";
case 0xC0000230: return "STATUS_PROPSET_NOT_FOUND";
case 0xC0000231: return "STATUS_MARSHALL_OVERFLOW";
case 0xC0000232: return "STATUS_INVALID_VARIANT";
case 0xC0000233: return "STATUS_DOMAIN_CONTROLLER_NOT_FOUND";
case 0xC0000234: return "STATUS_ACCOUNT_LOCKED_OUT";
case 0xC0000235: return "STATUS_HANDLE_NOT_CLOSABLE";
case 0xC0000236: return "STATUS_CONNECTION_REFUSED";
case 0xC0000237: return "STATUS_GRACEFUL_DISCONNECT";
case 0xC0000238: return "STATUS_ADDRESS_ALREADY_ASSOCIATED";
case 0xC0000239: return "STATUS_ADDRESS_NOT_ASSOCIATED";
case 0xC000023A: return "STATUS_CONNECTION_INVALID";
case 0xC000023B: return "STATUS_CONNECTION_ACTIVE";
case 0xC000023C: return "STATUS_NETWORK_UNREACHABLE";
case 0xC000023D: return "STATUS_HOST_UNREACHABLE";
case 0xC000023E: return "STATUS_PROTOCOL_UNREACHABLE";
case 0xC000023F: return "STATUS_PORT_UNREACHABLE";
case 0xC0000240: return "STATUS_REQUEST_ABORTED";
case 0xC0000241: return "STATUS_CONNECTION_ABORTED";
case 0xC0000242: return "STATUS_BAD_COMPRESSION_BUFFER";
case 0xC0000243: return "STATUS_USER_MAPPED_FILE";
case 0xC0000244: return "STATUS_AUDIT_FAILED";
case 0xC0000245: return "STATUS_TIMER_RESOLUTION_NOT_SET";
case 0xC0000246: return "STATUS_CONNECTION_COUNT_LIMIT";
case 0xC0000247: return "STATUS_LOGIN_TIME_RESTRICTION";
case 0xC0000248: return "STATUS_LOGIN_WKSTA_RESTRICTION";
case 0xC0000249: return "STATUS_IMAGE_MP_UP_MISMATCH";
case 0xC0000250: return "STATUS_INSUFFICIENT_LOGON_INFO";
case 0xC0000251: return "STATUS_BAD_DLL_ENTRYPOINT";
case 0xC0000252: return "STATUS_BAD_SERVICE_ENTRYPOINT";
case 0xC0000253: return "STATUS_LPC_REPLY_LOST";
case 0xC0000254: return "STATUS_IP_ADDRESS_CONFLICT1";
case 0xC0000255: return "STATUS_IP_ADDRESS_CONFLICT2";
case 0xC0000256: return "STATUS_REGISTRY_QUOTA_LIMIT";
case 0xC0000257: return "STATUS_PATH_NOT_COVERED";
case 0xC0000258: return "STATUS_NO_CALLBACK_ACTIVE";
case 0xC0000259: return "STATUS_LICENSE_QUOTA_EXCEEDED";
case 0xC000025A: return "STATUS_PWD_TOO_SHORT";
case 0xC000025B: return "STATUS_PWD_TOO_RECENT";
case 0xC000025C: return "STATUS_PWD_HISTORY_CONFLICT";
case 0xC000025E: return "STATUS_PLUGPLAY_NO_DEVICE";
case 0xC000025F: return "STATUS_UNSUPPORTED_COMPRESSION";
case 0xC0000260: return "STATUS_INVALID_HW_PROFILE";
case 0xC0000261: return "STATUS_INVALID_PLUGPLAY_DEVICE_PATH";
case 0xC0000262: return "STATUS_DRIVER_ORDINAL_NOT_FOUND";
case 0xC0000263: return "STATUS_DRIVER_ENTRYPOINT_NOT_FOUND";
case 0xC0000264: return "STATUS_RESOURCE_NOT_OWNED";
case 0xC0000265: return "STATUS_TOO_MANY_LINKS";
case 0xC0000266: return "STATUS_QUOTA_LIST_INCONSISTENT";
case 0xC0000267: return "STATUS_FILE_IS_OFFLINE";
case 0xC0000268: return "STATUS_EVALUATION_EXPIRATION";
case 0xC0000269: return "STATUS_ILLEGAL_DLL_RELOCATION";
case 0xC000026A: return "STATUS_LICENSE_VIOLATION";
case 0xC000026B: return "STATUS_DLL_INIT_FAILED_LOGOFF";
case 0xC000026C: return "STATUS_DRIVER_UNABLE_TO_LOAD";
case 0xC000026D: return "STATUS_DFS_UNAVAILABLE";
case 0xC000026E: return "STATUS_VOLUME_DISMOUNTED";
case 0xC000026F: return "STATUS_WX86_INTERNAL_ERROR";
case 0xC0000270: return "STATUS_WX86_FLOAT_STACK_CHECK";
case 0xC0000271: return "STATUS_VALIDATE_CONTINUE";
case 0xC0000272: return "STATUS_NO_MATCH";
case 0xC0000273: return "STATUS_NO_MORE_MATCHES";
case 0xC0000275: return "STATUS_NOT_A_REPARSE_POINT";
case 0xC0000276: return "STATUS_IO_REPARSE_TAG_INVALID";
case 0xC0000277: return "STATUS_IO_REPARSE_TAG_MISMATCH";
case 0xC0000278: return "STATUS_IO_REPARSE_DATA_INVALID";
case 0xC0000279: return "STATUS_IO_REPARSE_TAG_NOT_HANDLED";
case 0xC0000280: return "STATUS_REPARSE_POINT_NOT_RESOLVED";
case 0xC0000281: return "STATUS_DIRECTORY_IS_A_REPARSE_POINT";
case 0xC0000282: return "STATUS_RANGE_LIST_CONFLICT";
case 0xC0000283: return "STATUS_SOURCE_ELEMENT_EMPTY";
case 0xC0000284: return "STATUS_DESTINATION_ELEMENT_FULL";
case 0xC0000285: return "STATUS_ILLEGAL_ELEMENT_ADDRESS";
case 0xC0000286: return "STATUS_MAGAZINE_NOT_PRESENT";
case 0xC0000287: return "STATUS_REINITIALIZATION_NEEDED";
case 0x80000288: return "STATUS_DEVICE_REQUIRES_CLEANING";
case 0x80000289: return "STATUS_DEVICE_DOOR_OPEN";
case 0xC000028A: return "STATUS_ENCRYPTION_FAILED";
case 0xC000028B: return "STATUS_DECRYPTION_FAILED";
case 0xC000028C: return "STATUS_RANGE_NOT_FOUND";
case 0xC000028D: return "STATUS_NO_RECOVERY_POLICY";
case 0xC000028E: return "STATUS_NO_EFS";
case 0xC000028F: return "STATUS_WRONG_EFS";
case 0xC0000290: return "STATUS_NO_USER_KEYS";
case 0xC0000291: return "STATUS_FILE_NOT_ENCRYPTED";
case 0xC0000292: return "STATUS_NOT_EXPORT_FORMAT";
case 0xC0000293: return "STATUS_FILE_ENCRYPTED";
case 0x40000294: return "STATUS_WAKE_SYSTEM";
case 0xC0000295: return "STATUS_WMI_GUID_NOT_FOUND";
case 0xC0000296: return "STATUS_WMI_INSTANCE_NOT_FOUND";
case 0xC0000297: return "STATUS_WMI_ITEMID_NOT_FOUND";
case 0xC0000298: return "STATUS_WMI_TRY_AGAIN";
case 0xC0000299: return "STATUS_SHARED_POLICY";
case 0xC000029A: return "STATUS_POLICY_OBJECT_NOT_FOUND";
case 0xC000029B: return "STATUS_POLICY_ONLY_IN_DS";
case 0xC000029C: return "STATUS_VOLUME_NOT_UPGRADED";
case 0xC000029D: return "STATUS_REMOTE_STORAGE_NOT_ACTIVE";
case 0xC000029E: return "STATUS_REMOTE_STORAGE_MEDIA_ERROR";
case 0xC000029F: return "STATUS_NO_TRACKING_SERVICE";
case 0xC00002A0: return "STATUS_SERVER_SID_MISMATCH";
case 0xC00002A1: return "STATUS_DS_NO_ATTRIBUTE_OR_VALUE";
case 0xC00002A2: return "STATUS_DS_INVALID_ATTRIBUTE_SYNTAX";
case 0xC00002A3: return "STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED";
case 0xC00002A4: return "STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS";
case 0xC00002A5: return "STATUS_DS_BUSY";
case 0xC00002A6: return "STATUS_DS_UNAVAILABLE";
case 0xC00002A7: return "STATUS_DS_NO_RIDS_ALLOCATED";
case 0xC00002A8: return "STATUS_DS_NO_MORE_RIDS";
case 0xC00002A9: return "STATUS_DS_INCORRECT_ROLE_OWNER";
case 0xC00002AA: return "STATUS_DS_RIDMGR_INIT_ERROR";
case 0xC00002AB: return "STATUS_DS_OBJ_CLASS_VIOLATION";
case 0xC00002AC: return "STATUS_DS_CANT_ON_NON_LEAF";
case 0xC00002AD: return "STATUS_DS_CANT_ON_RDN";
case 0xC00002AE: return "STATUS_DS_CANT_MOD_OBJ_CLASS";
case 0xC00002AF: return "STATUS_DS_CROSS_DOM_MOVE_FAILED";
case 0xC00002B0: return "STATUS_DS_GC_NOT_AVAILABLE";
case 0xC00002B1: return "STATUS_DIRECTORY_SERVICE_REQUIRED";
case 0xC00002B2: return "STATUS_REPARSE_ATTRIBUTE_CONFLICT";
case 0xC00002B3: return "STATUS_CANT_ENABLE_DENY_ONLY";
case 0xC00002B4: return "STATUS_FLOAT_MULTIPLE_FAULTS";
case 0xC00002B5: return "STATUS_FLOAT_MULTIPLE_TRAPS";
case 0xC00002B6: return "STATUS_DEVICE_REMOVED";
case 0xC00002B7: return "STATUS_JOURNAL_DELETE_IN_PROGRESS";
case 0xC00002B8: return "STATUS_JOURNAL_NOT_ACTIVE";
case 0xC00002B9: return "STATUS_NOINTERFACE";
case 0xC00002C1: return "STATUS_DS_ADMIN_LIMIT_EXCEEDED";
case 0xC00002C2: return "STATUS_DRIVER_FAILED_SLEEP";
case 0xC00002C3: return "STATUS_MUTUAL_AUTHENTICATION_FAILED";
case 0xC00002C4: return "STATUS_CORRUPT_SYSTEM_FILE";
case 0xC00002C5: return "STATUS_DATATYPE_MISALIGNMENT_ERROR";
case 0xC00002C6: return "STATUS_WMI_READ_ONLY";
case 0xC00002C7: return "STATUS_WMI_SET_FAILURE";
case 0xC00002C8: return "STATUS_COMMITMENT_MINIMUM";
case 0xC00002C9: return "STATUS_REG_NAT_CONSUMPTION";
case 0xC00002CA: return "STATUS_TRANSPORT_FULL";
case 0xC00002CB: return "STATUS_DS_SAM_INIT_FAILURE";
case 0xC00002CC: return "STATUS_ONLY_IF_CONNECTED";
case 0xC00002CD: return "STATUS_DS_SENSITIVE_GROUP_VIOLATION";
case 0xC00002CE: return "STATUS_PNP_RESTART_ENUMERATION";
case 0xC00002CF: return "STATUS_JOURNAL_ENTRY_DELETED";
case 0xC00002D0: return "STATUS_DS_CANT_MOD_PRIMARYGROUPID";
case 0xC00002D1: return "STATUS_SYSTEM_IMAGE_BAD_SIGNATURE";
case 0xC00002D2: return "STATUS_PNP_REBOOT_REQUIRED";
case 0xC00002D3: return "STATUS_POWER_STATE_INVALID";
case 0xC00002D4: return "STATUS_DS_INVALID_GROUP_TYPE";
case 0xC00002D5: return "STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN";
case 0xC00002D6: return "STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN";
case 0xC00002D7: return "STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER";
case 0xC00002D8: return "STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER";
case 0xC00002D9: return "STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER";
case 0xC00002DA: return "STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER";
case 0xC00002DB: return "STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER";
case 0xC00002DC: return "STATUS_DS_HAVE_PRIMARY_MEMBERS";
case 0xC00002DD: return "STATUS_WMI_NOT_SUPPORTED";
case 0xC00002DE: return "STATUS_INSUFFICIENT_POWER";
case 0xC00002DF: return "STATUS_SAM_NEED_BOOTKEY_PASSWORD";
case 0xC00002E0: return "STATUS_SAM_NEED_BOOTKEY_FLOPPY";
case 0xC00002E1: return "STATUS_DS_CANT_START";
case 0xC00002E2: return "STATUS_DS_INIT_FAILURE";
case 0xC00002E3: return "STATUS_SAM_INIT_FAILURE";
case 0xC00002E4: return "STATUS_DS_GC_REQUIRED";
case 0xC00002E5: return "STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY";
case 0xC00002E6: return "STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS";
case 0xC00002E7: return "STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED";
case 0xC00002E8: return "STATUS_MULTIPLE_FAULT_VIOLATION";
case 0xC0000300: return "STATUS_NOT_SUPPORTED_ON_SBS";
case 0xC0009898: return "STATUS_WOW_ASSERTION";
case 0xC0010001: return "DBG_NO_STATE_CHANGE";
case 0xC0010002: return "DBG_APP_NOT_IDLE";
case 0xC0020001: return "RPC_NT_INVALID_STRING_BINDING";
case 0xC0020002: return "RPC_NT_WRONG_KIND_OF_BINDING";
case 0xC0020003: return "RPC_NT_INVALID_BINDING";
case 0xC0020004: return "RPC_NT_PROTSEQ_NOT_SUPPORTED";
case 0xC0020005: return "RPC_NT_INVALID_RPC_PROTSEQ";
case 0xC0020006: return "RPC_NT_INVALID_STRING_UUID";
case 0xC0020007: return "RPC_NT_INVALID_ENDPOINT_FORMAT";
case 0xC0020008: return "RPC_NT_INVALID_NET_ADDR";
case 0xC0020009: return "RPC_NT_NO_ENDPOINT_FOUND";
case 0xC002000A: return "RPC_NT_INVALID_TIMEOUT";
case 0xC002000B: return "RPC_NT_OBJECT_NOT_FOUND";
case 0xC002000C: return "RPC_NT_ALREADY_REGISTERED";
case 0xC002000D: return "RPC_NT_TYPE_ALREADY_REGISTERED";
case 0xC002000E: return "RPC_NT_ALREADY_LISTENING";
case 0xC002000F: return "RPC_NT_NO_PROTSEQS_REGISTERED";
case 0xC0020010: return "RPC_NT_NOT_LISTENING";
case 0xC0020011: return "RPC_NT_UNKNOWN_MGR_TYPE";
case 0xC0020012: return "RPC_NT_UNKNOWN_IF";
case 0xC0020013: return "RPC_NT_NO_BINDINGS";
case 0xC0020014: return "RPC_NT_NO_PROTSEQS";
case 0xC0020015: return "RPC_NT_CANT_CREATE_ENDPOINT";
case 0xC0020016: return "RPC_NT_OUT_OF_RESOURCES";
case 0xC0020017: return "RPC_NT_SERVER_UNAVAILABLE";
case 0xC0020018: return "RPC_NT_SERVER_TOO_BUSY";
case 0xC0020019: return "RPC_NT_INVALID_NETWORK_OPTIONS";
case 0xC002001A: return "RPC_NT_NO_CALL_ACTIVE";
case 0xC002001B: return "RPC_NT_CALL_FAILED";
case 0xC002001C: return "RPC_NT_CALL_FAILED_DNE";
case 0xC002001D: return "RPC_NT_PROTOCOL_ERROR";
case 0xC002001F: return "RPC_NT_UNSUPPORTED_TRANS_SYN";
case 0xC0020021: return "RPC_NT_UNSUPPORTED_TYPE";
case 0xC0020022: return "RPC_NT_INVALID_TAG";
case 0xC0020023: return "RPC_NT_INVALID_BOUND";
case 0xC0020024: return "RPC_NT_NO_ENTRY_NAME";
case 0xC0020025: return "RPC_NT_INVALID_NAME_SYNTAX";
case 0xC0020026: return "RPC_NT_UNSUPPORTED_NAME_SYNTAX";
case 0xC0020028: return "RPC_NT_UUID_NO_ADDRESS";
case 0xC0020029: return "RPC_NT_DUPLICATE_ENDPOINT";
case 0xC002002A: return "RPC_NT_UNKNOWN_AUTHN_TYPE";
case 0xC002002B: return "RPC_NT_MAX_CALLS_TOO_SMALL";
case 0xC002002C: return "RPC_NT_STRING_TOO_LONG";
case 0xC002002D: return "RPC_NT_PROTSEQ_NOT_FOUND";
case 0xC002002E: return "RPC_NT_PROCNUM_OUT_OF_RANGE";
case 0xC002002F: return "RPC_NT_BINDING_HAS_NO_AUTH";
case 0xC0020030: return "RPC_NT_UNKNOWN_AUTHN_SERVICE";
case 0xC0020031: return "RPC_NT_UNKNOWN_AUTHN_LEVEL";
case 0xC0020032: return "RPC_NT_INVALID_AUTH_IDENTITY";
case 0xC0020033: return "RPC_NT_UNKNOWN_AUTHZ_SERVICE";
case 0xC0020034: return "EPT_NT_INVALID_ENTRY";
case 0xC0020035: return "EPT_NT_CANT_PERFORM_OP";
case 0xC0020036: return "EPT_NT_NOT_REGISTERED";
case 0xC0020037: return "RPC_NT_NOTHING_TO_EXPORT";
case 0xC0020038: return "RPC_NT_INCOMPLETE_NAME";
case 0xC0020039: return "RPC_NT_INVALID_VERS_OPTION";
case 0xC002003A: return "RPC_NT_NO_MORE_MEMBERS";
case 0xC002003B: return "RPC_NT_NOT_ALL_OBJS_UNEXPORTED";
case 0xC002003C: return "RPC_NT_INTERFACE_NOT_FOUND";
case 0xC002003D: return "RPC_NT_ENTRY_ALREADY_EXISTS";
case 0xC002003E: return "RPC_NT_ENTRY_NOT_FOUND";
case 0xC002003F: return "RPC_NT_NAME_SERVICE_UNAVAILABLE";
case 0xC0020040: return "RPC_NT_INVALID_NAF_ID";
case 0xC0020041: return "RPC_NT_CANNOT_SUPPORT";
case 0xC0020042: return "RPC_NT_NO_CONTEXT_AVAILABLE";
case 0xC0020043: return "RPC_NT_INTERNAL_ERROR";
case 0xC0020044: return "RPC_NT_ZERO_DIVIDE";
case 0xC0020045: return "RPC_NT_ADDRESS_ERROR";
case 0xC0020046: return "RPC_NT_FP_DIV_ZERO";
case 0xC0020047: return "RPC_NT_FP_UNDERFLOW";
case 0xC0020048: return "RPC_NT_FP_OVERFLOW";
case 0xC0030001: return "RPC_NT_NO_MORE_ENTRIES";
case 0xC0030002: return "RPC_NT_SS_CHAR_TRANS_OPEN_FAIL";
case 0xC0030003: return "RPC_NT_SS_CHAR_TRANS_SHORT_FILE";
case 0xC0030004: return "RPC_NT_SS_IN_NULL_CONTEXT";
case 0xC0030005: return "RPC_NT_SS_CONTEXT_MISMATCH";
case 0xC0030006: return "RPC_NT_SS_CONTEXT_DAMAGED";
case 0xC0030007: return "RPC_NT_SS_HANDLES_MISMATCH";
case 0xC0030008: return "RPC_NT_SS_CANNOT_GET_CALL_HANDLE";
case 0xC0030009: return "RPC_NT_NULL_REF_POINTER";
case 0xC003000A: return "RPC_NT_ENUM_VALUE_OUT_OF_RANGE";
case 0xC003000B: return "RPC_NT_BYTE_COUNT_TOO_SMALL";
case 0xC003000C: return "RPC_NT_BAD_STUB_DATA";
case 0xC0020049: return "RPC_NT_CALL_IN_PROGRESS";
case 0xC002004A: return "RPC_NT_NO_MORE_BINDINGS";
case 0xC002004B: return "RPC_NT_GROUP_MEMBER_NOT_FOUND";
case 0xC002004C: return "EPT_NT_CANT_CREATE";
case 0xC002004D: return "RPC_NT_INVALID_OBJECT";
case 0xC002004F: return "RPC_NT_NO_INTERFACES";
case 0xC0020050: return "RPC_NT_CALL_CANCELLED";
case 0xC0020051: return "RPC_NT_BINDING_INCOMPLETE";
case 0xC0020052: return "RPC_NT_COMM_FAILURE";
case 0xC0020053: return "RPC_NT_UNSUPPORTED_AUTHN_LEVEL";
case 0xC0020054: return "RPC_NT_NO_PRINC_NAME";
case 0xC0020055: return "RPC_NT_NOT_RPC_ERROR";
case 0x40020056: return "RPC_NT_UUID_LOCAL_ONLY";
case 0xC0020057: return "RPC_NT_SEC_PKG_ERROR";
case 0xC0020058: return "RPC_NT_NOT_CANCELLED";
case 0xC0030059: return "RPC_NT_INVALID_ES_ACTION";
case 0xC003005A: return "RPC_NT_WRONG_ES_VERSION";
case 0xC003005B: return "RPC_NT_WRONG_STUB_VERSION";
case 0xC003005C: return "RPC_NT_INVALID_PIPE_OBJECT";
case 0xC003005D: return "RPC_NT_INVALID_PIPE_OPERATION";
case 0xC003005E: return "RPC_NT_WRONG_PIPE_VERSION";
case 0xC003005F: return "RPC_NT_PIPE_CLOSED";
case 0xC0030060: return "RPC_NT_PIPE_DISCIPLINE_ERROR";
case 0xC0030061: return "RPC_NT_PIPE_EMPTY";
case 0xC0020062: return "RPC_NT_INVALID_ASYNC_HANDLE";
case 0xC0020063: return "RPC_NT_INVALID_ASYNC_CALL";
case 0x400200AF: return "RPC_NT_SEND_INCOMPLETE";
case 0xC0140001: return "STATUS_ACPI_INVALID_OPCODE";
case 0xC0140002: return "STATUS_ACPI_STACK_OVERFLOW";
case 0xC0140003: return "STATUS_ACPI_ASSERT_FAILED";
case 0xC0140004: return "STATUS_ACPI_INVALID_INDEX";
case 0xC0140005: return "STATUS_ACPI_INVALID_ARGUMENT";
case 0xC0140006: return "STATUS_ACPI_FATAL";
case 0xC0140007: return "STATUS_ACPI_INVALID_SUPERNAME";
case 0xC0140008: return "STATUS_ACPI_INVALID_ARGTYPE";
case 0xC0140009: return "STATUS_ACPI_INVALID_OBJTYPE";
case 0xC014000A: return "STATUS_ACPI_INVALID_TARGETTYPE";
case 0xC014000B: return "STATUS_ACPI_INCORRECT_ARGUMENT_COUNT";
case 0xC014000C: return "STATUS_ACPI_ADDRESS_NOT_MAPPED";
case 0xC014000D: return "STATUS_ACPI_INVALID_EVENTTYPE";
case 0xC014000E: return "STATUS_ACPI_HANDLER_COLLISION";
case 0xC014000F: return "STATUS_ACPI_INVALID_DATA";
case 0xC0140010: return "STATUS_ACPI_INVALID_REGION";
case 0xC0140011: return "STATUS_ACPI_INVALID_ACCESS_SIZE";
case 0xC0140012: return "STATUS_ACPI_ACQUIRE_GLOBAL_LOCK";
case 0xC0140013: return "STATUS_ACPI_ALREADY_INITIALIZED";
case 0xC0140014: return "STATUS_ACPI_NOT_INITIALIZED";
case 0xC0140015: return "STATUS_ACPI_INVALID_MUTEX_LEVEL";
case 0xC0140016: return "STATUS_ACPI_MUTEX_NOT_OWNED";
case 0xC0140017: return "STATUS_ACPI_MUTEX_NOT_OWNER";
case 0xC0140018: return "STATUS_ACPI_RS_ACCESS";
case 0xC0140019: return "STATUS_ACPI_INVALID_TABLE";
case 0xC0140020: return "STATUS_ACPI_REG_HANDLER_FAILED";
case 0xC0140021: return "STATUS_ACPI_POWER_REQUEST_FAILED";
case 0xC00A0001: return "STATUS_CTX_WINSTATION_NAME_INVALID";
case 0xC00A0002: return "STATUS_CTX_INVALID_PD";
case 0xC00A0003: return "STATUS_CTX_PD_NOT_FOUND";
case 0x400A0004: return "STATUS_CTX_CDM_CONNECT";
case 0x400A0005: return "STATUS_CTX_CDM_DISCONNECT";
case 0xC00A0006: return "STATUS_CTX_CLOSE_PENDING";
case 0xC00A0007: return "STATUS_CTX_NO_OUTBUF";
case 0xC00A0008: return "STATUS_CTX_MODEM_INF_NOT_FOUND";
case 0xC00A0009: return "STATUS_CTX_INVALID_MODEMNAME";
case 0xC00A000A: return "STATUS_CTX_RESPONSE_ERROR";
case 0xC00A000B: return "STATUS_CTX_MODEM_RESPONSE_TIMEOUT";
case 0xC00A000C: return "STATUS_CTX_MODEM_RESPONSE_NO_CARRIER";
case 0xC00A000D: return "STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE";
case 0xC00A000E: return "STATUS_CTX_MODEM_RESPONSE_BUSY";
case 0xC00A000F: return "STATUS_CTX_MODEM_RESPONSE_VOICE";
case 0xC00A0010: return "STATUS_CTX_TD_ERROR";
case 0xC00A0012: return "STATUS_CTX_LICENSE_CLIENT_INVALID";
case 0xC00A0013: return "STATUS_CTX_LICENSE_NOT_AVAILABLE";
case 0xC00A0014: return "STATUS_CTX_LICENSE_EXPIRED";
case 0xC00A0015: return "STATUS_CTX_WINSTATION_NOT_FOUND";
case 0xC00A0016: return "STATUS_CTX_WINSTATION_NAME_COLLISION";
case 0xC00A0017: return "STATUS_CTX_WINSTATION_BUSY";
case 0xC00A0018: return "STATUS_CTX_BAD_VIDEO_MODE";
case 0xC00A0022: return "STATUS_CTX_GRAPHICS_INVALID";
case 0xC00A0024: return "STATUS_CTX_NOT_CONSOLE";
case 0xC00A0026: return "STATUS_CTX_CLIENT_QUERY_TIMEOUT";
case 0xC00A0027: return "STATUS_CTX_CONSOLE_DISCONNECT";
case 0xC00A0028: return "STATUS_CTX_CONSOLE_CONNECT";
case 0xC00A002A: return "STATUS_CTX_SHADOW_DENIED";
case 0xC00A002B: return "STATUS_CTX_WINSTATION_ACCESS_DENIED";
case 0xC00A002E: return "STATUS_CTX_INVALID_WD";
case 0xC00A002F: return "STATUS_CTX_WD_NOT_FOUND";
case 0xC00A0030: return "STATUS_CTX_SHADOW_INVALID";
case 0xC00A0031: return "STATUS_CTX_SHADOW_DISABLED";
case 0xC00A0032: return "STATUS_RDP_PROTOCOL_ERROR";
case 0xC00A0033: return "STATUS_CTX_CLIENT_LICENSE_NOT_SET";
case 0xC00A0034: return "STATUS_CTX_CLIENT_LICENSE_IN_USE";
case 0xC0040035: return "STATUS_PNP_BAD_MPS_TABLE";
case 0xC0040036: return "STATUS_PNP_TRANSLATION_FAILED";
case 0xC0040037: return "STATUS_PNP_IRQ_TRANSLATION_FAILED";
default: return "STATUS_UNKNOWN";
}
}
// PsCreateSystemThread proxy procedure
#pragma warning(push)
#pragma warning(disable: 4731) // disable ebp modification warning
@ -2440,7 +3367,7 @@ XBSYSAPI EXPORTNUM(219) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtReadFile
NTSTATUS ret = NtDll::NtReadFile(FileHandle, Event, ApcRoutine, ApcContext, IoStatusBlock, Buffer, Length, (NtDll::LARGE_INTEGER*)ByteOffset, 0);
if(FAILED(ret))
EmuWarning("NtReadFile Failed!");
EmuWarning("NtReadFile Failed! (0x%.08X)", ret);
EmuSwapFS(); // Xbox FS

View file

@ -2782,7 +2782,7 @@ DWORD WINAPI XTL::EmuXMountMURootA
PCHAR pchDrive
)
{
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuXapi (0x%X): EmuXMountMURootA\n"
@ -2799,4 +2799,71 @@ DWORD WINAPI XTL::EmuXMountMURootA
return ERROR_SUCCESS;
}
}
// ******************************************************************
// * func: EmuReadFileEx
// ******************************************************************
BOOL WINAPI XTL::EmuReadFileEx
(
HANDLE hFile, // handle to file
LPVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPOVERLAPPED lpOverlapped, // offset
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // completion routine
)
{
EmuSwapFS(); // Win2k/XP FS
DbgPrintf("EmuXapi (0x%X): EmuReadFileEx\n"
"(\n"
" hFile : 0x%.08X\n"
" lpBuffer : 0x%.08X\n"
" nNumberOfBytesToRead : 0x%.08X\n"
" lpOverlapped : 0x%.08X\n"
" lpCompletionRoutine : 0x%.08X\n"
");\n",
GetCurrentThreadId(), hFile, lpBuffer, nNumberOfBytesToRead,
lpOverlapped, lpCompletionRoutine);
BOOL bRet = ReadFileEx( hFile, lpBuffer, nNumberOfBytesToRead, lpOverlapped, lpCompletionRoutine );
if(!bRet)
printf("ReadFilEx failed!");
EmuSwapFS();
return bRet;
}
// ******************************************************************
// * func: EmuWriteFileEx
// ******************************************************************
BOOL WINAPI XTL::EmuWriteFileEx
(
HANDLE hFile, // handle to output file
LPCVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPOVERLAPPED lpOverlapped, // overlapped buffer
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // completion routine
)
{
EmuSwapFS(); // Win2k/XP FS
printf("EmuXapi (0x%X): EmuWriteFileEx\n"
"(\n"
" hFile : 0x%.08X\n"
" lpBuffer : 0x%.08X\n"
" nNumberOfBytesToWrite: 0x%.08X\n"
" lpOverlapped : 0x%.08X\n"
" lpCompletionRoutine : 0x%.08X\n"
");\n",
GetCurrentThreadId(), hFile, lpBuffer, nNumberOfBytesToWrite,
lpOverlapped, lpCompletionRoutine);
BOOL bRet = WriteFileEx( hFile, lpBuffer, nNumberOfBytesToWrite, lpOverlapped, lpCompletionRoutine );;
if(!bRet)
printf("WriteFilEx failed!");
EmuSwapFS();
return bRet;
}

View file

@ -992,6 +992,30 @@ DWORD WINAPI EmuXInputGetDeviceDescription
// ******************************************************************
int WINAPI EmuXAutoPowerDownResetTimer();
// ******************************************************************
// * func: EmuReadFileEx
// ******************************************************************
BOOL WINAPI EmuReadFileEx
(
HANDLE hFile, // handle to file
LPVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPOVERLAPPED lpOverlapped, // offset
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // completion routine
);
// ******************************************************************
// * func: EmuWriteFileEx
// ******************************************************************
BOOL WINAPI EmuWriteFileEx
(
HANDLE hFile, // handle to output file
LPCVOID lpBuffer, // data buffer
DWORD nNumberOfBytesToWrite, // number of bytes to write
LPOVERLAPPED lpOverlapped, // overlapped buffer
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine // completion routine
);
// s+
/* not necessary?
// ******************************************************************

View file

@ -574,6 +574,7 @@ extern uint32 XRefDataBase[] =
-1, // XREF_DirectSound_CDirectSoundBuffer_SetEG
-1, // XREF_DirectSound_CDirectSound_GetEffectData
-1, // XREF_CDirectSoundBuffer_SetNotificationPositions
-1, // XREF_DirectSound_CMcpxBuffer_Play2
// XACT
-1, // XREF_XACT_CEngine_RegisterWaveBank
-1, // XREF_XACT_CEngine_RegisterStreamedWaveBank

View file

@ -309,6 +309,7 @@ enum XRefDataBaseOffset
XREF_DirectSound_CDirectSoundBuffer_SetEG,
XREF_DirectSound_CDirectSound_GetEffectData,
XREF_CDirectSoundBuffer_SetNotificationPositions,
XREF_DirectSound_CMcpxBuffer_Play2,
// XACT
// +s
XREF_XACT_CEngine_RegisterWaveBank,

View file

@ -574,6 +574,36 @@ SOOVPA<10> Get2DSurfaceDesc_1_0_5233 =
}
};
// ******************************************************************
// * Get2DSurfaceDesc
// ******************************************************************
SOOVPA<10> Get2DSurfaceDesc_1_0_5344 =
{
0, // Large == 0
10, // Count == 10
-1, // XRef Not Saved
0, // XRef Not Used
{
// Get2DSurfaceDesc+0x2B : movzx edx, byte ptr [edi+0x0D]
{ 0x2B, 0x0F }, // (Offset,Value)-Pair #1
{ 0x2C, 0xB6 }, // (Offset,Value)-Pair #2
{ 0x2D, 0x57 }, // (Offset,Value)-Pair #3
{ 0x2E, 0x0D }, // (Offset,Value)-Pair #4
// Get2DSurfaceDesc+0x52 : mov edx, [eax+0x15F4]
{ 0x52, 0x8B }, // (Offset,Value)-Pair #5
{ 0x53, 0x90 }, // (Offset,Value)-Pair #6
{ 0x54, 0xF4 }, // (Offset,Value)-Pair #7
{ 0x55, 0x15 }, // (Offset,Value)-Pair #8
// Get2DSurfaceDesc+0xAE : retn 0x0C
{ 0xAE, 0xC2 }, // (Offset,Value)-Pair #9
{ 0xAF, 0x0C }, // (Offset,Value)-Pair #10
}
};
// ******************************************************************
// * IDirect3DDevice8_GetBackBuffer2
// ******************************************************************
@ -1823,6 +1853,187 @@ SOOVPA<8> D3DDevice_SetTransform_1_0_5344 =
}
};
// ******************************************************************
// * D3DDevice_GetBackBuffer2
// ******************************************************************
SOOVPA<7> D3DDevice_GetBackBuffer2_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x07, 0x8B },
{ 0x10, 0x01 },
{ 0x19, 0x15 },
{ 0x22, 0x8B },
{ 0x2B, 0xC0 },
{ 0x34, 0x15 },
{ 0x3D, 0x8B },
}
};
// ******************************************************************
// * D3DDevice_SetVerticalBlankCallback
// ******************************************************************
SOOVPA<7> D3DDevice_SetVerticalBlankCallback_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x01, 0x44 },
{ 0x04, 0x8B },
{ 0x0A, 0x89 },
{ 0x0B, 0x81 },
{ 0x0C, 0x88 },
{ 0x0D, 0x19 },
{ 0x10, 0xC2 },
}
};
// ******************************************************************
// * D3DDevice_SetSwapCallback
// ******************************************************************
SOOVPA<7> D3DDevice_SetSwapCallback_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x01, 0x44 },
{ 0x04, 0x8B },
{ 0x0A, 0x89 },
{ 0x0B, 0x81 },
{ 0x0C, 0x84 },
{ 0x0D, 0x19 },
{ 0x10, 0xC2 },
}
};
// ******************************************************************
// * D3DDevice_GetViewport
// ******************************************************************
SOOVPA<7> D3DDevice_GetViewport_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x05, 0x56 },
{ 0x06, 0x57 },
{ 0x0A, 0x0C },
{ 0x0E, 0x0A },
{ 0x12, 0x06 },
{ 0x16, 0xF3 },
{ 0x1A, 0xC2 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderTargetFast
// ******************************************************************
SOOVPA<8> D3DDevice_SetRenderTargetFast_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x1D, 0xC9 },
{ 0x3C, 0x89 },
{ 0x5F, 0x8B },
{ 0x7A, 0x04 },
{ 0x99, 0x04 },
{ 0xB8, 0x02 },
{ 0xD7, 0x0C },
{ 0xF6, 0xC5 },
}
};
// ******************************************************************
// * D3DDevice_SetScreenSpaceOffset
// ******************************************************************
SOOVPA<7> D3DDevice_SetScreenSpaceOffset_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x08, 0x44 },
{ 0x12, 0xCE },
{ 0x1F, 0xD8 },
{ 0x26, 0x0A },
{ 0x30, 0x3B },
{ 0x3A, 0x8B },
{ 0x44, 0x06 },
}
};
// ******************************************************************
// * D3DDevice_SetScissors
// ******************************************************************
SOOVPA<8> D3DDevice_SetScissors_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x1D, 0x44 },
{ 0x3C, 0x8B },
{ 0x5D, 0xD9 },
{ 0x7D, 0xD8 },
{ 0x99, 0x0A },
{ 0xB8, 0xE8 },
{ 0xD7, 0x24 },
{ 0xF6, 0x8B },
}
};
// ******************************************************************
// * D3DDevice_SetMaterial
// ******************************************************************
SOOVPA<9> D3DDevice_SetMaterial_1_0_5344 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x04, 0x08 },
{ 0x0C, 0x81 },
{ 0x0E, 0xE0 },
{ 0x10, 0x00 },
{ 0x16, 0x00 },
{ 0x1F, 0x81 },
{ 0x22, 0x90 },
{ 0x2C, 0x5E },
{ 0x2E, 0x04 },
}
};
// ******************************************************************
// * D3D8_1_0_5233
// ******************************************************************
@ -2595,6 +2806,16 @@ OOVPATable D3D8_1_0_5233[] =
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetMaterial"
#endif
},
// IDirect3DDevice8::SetMaterial
{
(OOVPA*)&D3DDevice_SetMaterial_1_0_5344,
XTL::EmuIDirect3DDevice8_SetMaterial,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetMaterial (5344)"
#endif
},
// IDirect3DVertexBuffer8::GetDesc
{
@ -2755,6 +2976,16 @@ OOVPATable D3D8_1_0_5233[] =
#ifdef _DEBUG_TRACE
"EmuGet2DSurfaceDesc"
#endif
},
// Get2DSurfaceDesc
{
(OOVPA*)&Get2DSurfaceDesc_1_0_5344,
XTL::EmuGet2DSurfaceDesc,
#ifdef _DEBUG_TRACE
"EmuGet2DSurfaceDesc (5344)"
#endif
},
// IDirect3DSurface8::GetDesc (* unchanged since 4361 *)
{
@ -3142,6 +3373,86 @@ OOVPATable D3D8_1_0_5233[] =
"EmuIDirect3DDevice8_SetTransform_5344"
#endif
},
// IDirect3DDevice8::GetBackBuffer2
{
(OOVPA*)&D3DDevice_GetBackBuffer2_1_0_5344,
XTL::EmuIDirect3DDevice8_GetBackBuffer2,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_GetBackBuffer2 (5344)"
#endif
},
// IDirect3DDevice8::SetVerticalBlankCallback
{
(OOVPA*)&D3DDevice_SetVerticalBlankCallback_1_0_5344,
XTL::EmuIDirect3DDevice8_SetVerticalBlankCallback,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetVerticalBlankCallback (5344)"
#endif
},
// IDirect3DDevice8::SetVerticalBlankCallback
{
(OOVPA*)&D3DDevice_SetSwapCallback_1_0_5344,
XTL::EmuIDirect3DDevice8_SetSwapCallback,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetSwapCallback (5344)"
#endif
},
// IDirect3DDevice8::GetViewport
{
(OOVPA*)&D3DDevice_GetViewport_1_0_5344,
XTL::EmuIDirect3DDevice8_GetViewport,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_GetViewport (5344)"
#endif
},
// IDirect3DDevice8::SetRenderTargetFast
{
(OOVPA*)&D3DDevice_SetRenderTargetFast_1_0_5344,
XTL::EmuIDirect3DDevice8_SetRenderTargetFast,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderTargetFast (5344)"
#endif
},
// IDirect3DDevice8::SetScreenSpaceOffset
{
(OOVPA*)&D3DDevice_SetScreenSpaceOffset_1_0_5344,
XTL::EmuIDirect3DDevice8_SetScreenSpaceOffset,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetScreenSpaceOffset (5344)"
#endif
},
// IDirect3DDevice8::SetScissors
{
(OOVPA*)&D3DDevice_SetScissors_1_0_5344,
XTL::EmuIDirect3DDevice8_SetScissors,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetScissors (5344)"
#endif
},
// IDirect3DCubeTexture8::GetCubeMapSurface2 (* Unchanged since 4627 *)
{
(OOVPA*)&D3DCubeTexture_GetCubeMapSurface2_1_0_4627,
XTL::EmuIDirect3DCubeTexture8_GetCubeMapSurface2,
#ifdef _DEBUG_TRACE
"EmuIDirect3DCubeTexture8_GetCubeMapSurface2"
#endif
},
};
// ******************************************************************

View file

@ -201,6 +201,41 @@ SOOVPA<11> IDirect3DDevice8_SetVertexShaderConstant1_1_0_5558 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetVertexShaderConstant1Fast
// ******************************************************************
SOOVPA<11> IDirect3DDevice8_SetVertexShaderConstant1Fast_1_0_5558 =
{
0, // Large == 0
11, // Count == 11
-1, // XRef Not Saved
0, // XRef Not Used
{
// IDirect3DDevice8_SetVertexShaderConstant1Fast+0x05 : add eax, 0x1C
{ 0x05, 0x83 }, // (Offset,Value)-Pair #1
{ 0x06, 0xC0 }, // (Offset,Value)-Pair #2
{ 0x07, 0x1C }, // (Offset,Value)-Pair #3
// IDirect3DDevice8_SetVertexShaderConstant1Fast+0x0E : jnb +0x2E
{ 0x0E, 0x73 }, // (Offset,Value)-Pair #4
{ 0x0F, 0x2E }, // (Offset,Value)-Pair #5
// IDirect3DDevice8_SetVertexShaderConstant1Fast+0x28 : mov [eax-0x10], ecx
{ 0x28, 0x89 }, // (Offset,Value)-Pair #6
{ 0x29, 0x48 }, // (Offset,Value)-Pair #7
{ 0x2A, 0xF0 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetVertexShaderConstant1Fast+0x3D : retn
{ 0x3D, 0xC3 }, // (Offset,Value)-Pair #9
// IDirect3DDevice8_SetVertexShaderConstant1Fast+0x47 : jmp +0xB7
{ 0x47, 0xEB }, // (Offset,Value)-Pair #10
{ 0x48, 0xB7 }, // (Offset,Value)-Pair #11
}
};
// ******************************************************************
// * IDirect3DDevice8_SetViewport
// ******************************************************************
@ -1921,6 +1956,192 @@ SOOVPA<8> D3DDevice_SetVertexData2f_1_0_5558 =
}
};
// ******************************************************************
// * D3DDevice_LoadVertexShaderProgram
// ******************************************************************
SOOVPA<7> D3DDevice_LoadVertexShaderProgram_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x0B, 0x2D },
{ 0x18, 0x10 },
{ 0x25, 0xE0 },
{ 0x32, 0x5F },
{ 0x3F, 0x24 },
{ 0x4C, 0x83 },
{ 0x5C, 0x89 },
}
};
// ******************************************************************
// * D3DDevice_SetPixelShaderProgram
// ******************************************************************
SOOVPA<7> D3DDevice_SetPixelShaderProgram_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x06, 0xA1 },
{ 0x0E, 0x88 },
{ 0x16, 0x00 },
{ 0x1E, 0x00 },
{ 0x26, 0x09 },
{ 0x32, 0xC7 },
{ 0x36, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderState_MultiSampleMode
// ******************************************************************
SOOVPA<9> D3DDevice_SetRenderState_MultiSampleMode_1_0_5558 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x03, 0x04 },
{ 0x0A, 0xA3 },
{ 0x0F, 0x8B },
{ 0x12, 0x19 },
{ 0x17, 0x04 },
{ 0x1B, 0x75 },
{ 0x1C, 0x07 },
{ 0x24, 0xC2 },
{ 0x26, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderState_MultiSampleMode
// ******************************************************************
SOOVPA<9> D3DDevice_SetRenderState_MultiSampleMode_1_0_5455 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x03, 0x04 },
{ 0x0A, 0xA3 },
{ 0x0F, 0x8B },
{ 0x12, 0x15 },
{ 0x17, 0xF4 },
{ 0x1B, 0x75 },
{ 0x1C, 0x07 },
{ 0x24, 0xC2 },
{ 0x26, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode
// ******************************************************************
SOOVPA<9> D3DDevice_SetRenderState_MultiSampleRenderTargetMode_1_0_5455 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x03, 0x04 },
{ 0x0A, 0xA3 },
{ 0x0F, 0x8B },
{ 0x12, 0x15 },
{ 0x17, 0xF4 },
{ 0x1B, 0x74 },
{ 0x1C, 0x07 },
{ 0x24, 0xC2 },
{ 0x26, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode
// ******************************************************************
SOOVPA<9> D3DDevice_SetRenderState_MultiSampleRenderTargetMode_1_0_5558 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x03, 0x04 },
{ 0x0A, 0xA3 },
{ 0x0F, 0x8B },
{ 0x12, 0x19 },
{ 0x17, 0x04 },
{ 0x1B, 0x74 },
{ 0x1C, 0x07 },
{ 0x24, 0xC2 },
{ 0x26, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderState_Dxt1NoiseEnable
// ******************************************************************
SOOVPA<8> D3DDevice_SetRenderState_Dxt1NoiseEnable_1_0_5558 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x0D, 0x8B },
{ 0x1D, 0x80 },
{ 0x2B, 0x08 },
{ 0x3A, 0x01 },
{ 0x49, 0xC7 },
{ 0x58, 0x05 },
{ 0x67, 0xC0 },
{ 0x76, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_IsFencePending
// ******************************************************************
SOOVPA<7> D3DDevice_IsFencePending_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x05, 0x8B },
{ 0x06, 0x48 },
{ 0x0A, 0x2C },
{ 0x0E, 0xD0 },
{ 0x12, 0x44 },
{ 0x16, 0xC2 },
{ 0x1A, 0xD8 },
}
};
// ******************************************************************
// * D3D8_1_0_5558
// ******************************************************************
@ -2033,6 +2254,16 @@ OOVPATable D3D8_1_0_5558[] =
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetVertexShaderConstant1"
#endif
},
// IDirect3DDevice8::SetVertexShaderConstant1Fast
{
(OOVPA*)&IDirect3DDevice8_SetVertexShaderConstant1Fast_1_0_5558,
XTL::EmuIDirect3DDevice8_SetVertexShaderConstant1,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetVertexShaderConstant1Fast"
#endif
},
// IDirect3DDevice8::SetVertexShaderConstantNotInline (* unchanged since 5233 *)
{
@ -3288,6 +3519,145 @@ OOVPATable D3D8_1_0_5558[] =
"EmuIDirect3DDevice8_SetRenderState_DoNotCullUncompressed"
#endif
},
// D3DDevice_LoadVertexShaderProgram
{
(OOVPA*)&D3DDevice_LoadVertexShaderProgram_1_0_5558,
XTL::EmuIDirect3DDevice8_LoadVertexShaderProgram,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_LoadVertexShaderProgram"
#endif
},
// D3DDevice_SetPixelShaderProgram
{
(OOVPA*)&D3DDevice_SetPixelShaderProgram_1_0_5558,
XTL::EmuIDirect3DDevice8_SetPixelShaderProgram,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetPixelShaderProgram"
#endif
},
// IDirect3DDevice8::SetRenderState_BackFillMode (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_BackFillMode_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_BackFillMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_BackFillMode"
#endif
},
// IDirect3DDevice8::SetRenderState_TextureFactor (* unchanged since 5233 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_TextureFactor_1_0_5233,
XTL::EmuIDirect3DDevice8_SetRenderState_TextureFactor,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_TextureFactor"
#endif
},
// D3DDevice_SetRenderState_MultiSampleMask (* unchanged since 5233 *)
{
(OOVPA*)&D3DDevice_SetRenderState_MultiSampleMask_1_0_5233,
XTL::EmuIDirect3DDevice8_SetRenderState_MultiSampleMask,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_MultiSampleMask"
#endif
},
// IDirect3DDevice8::SetRenderState_MultiSampleMode
{
(OOVPA*)&D3DDevice_SetRenderState_MultiSampleMode_1_0_5558,
XTL::EmuIDirect3DDevice8_SetRenderState_MultiSampleMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_MultiSampleMode"
#endif
},
// IDirect3DDevice8::SetRenderState_MultiSampleMode
{
(OOVPA*)&D3DDevice_SetRenderState_MultiSampleMode_1_0_5455,
XTL::EmuIDirect3DDevice8_SetRenderState_MultiSampleMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_MultiSampleMode (5455)"
#endif
},
// IDirect3DDevice8::SetRenderState_MultiSampleRenderTargetMode
{
(OOVPA*)&D3DDevice_SetRenderState_MultiSampleRenderTargetMode_1_0_5558,
XTL::EmuIDirect3DDevice8_SetRenderState_MultiSampleRenderTargetMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_MultiSampleRenderTargetMode"
#endif
},
// IDirect3DDevice8::SetRenderState_MultiSampleRenderTargetMode
{
(OOVPA*)&D3DDevice_SetRenderState_MultiSampleRenderTargetMode_1_0_5455,
XTL::EmuIDirect3DDevice8_SetRenderState_MultiSampleRenderTargetMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_MultiSampleRenderTargetMode (5455)"
#endif
},
// IDirect3DDevice8::SetRenderState_Dxt1NoiseEnable
{
(OOVPA*)&D3DDevice_SetRenderState_Dxt1NoiseEnable_1_0_5558,
XTL::EmuIDirect3DDevice8_SetRenderState_Dxt1NoiseEnable,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_Dxt1NoiseEnable"
#endif
},
// IDirect3DDevice8::SetRenderState_StencilCullEnable (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_StencilCullEnable_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_StencilCullEnable,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_StencilCullEnable"
#endif
},
// IDirect3DDevice8::SetTextureState_ColorKeyColor (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetTextureState_ColorKeyColor_1_0_4134,
XTL::EmuIDirect3DDevice8_SetTextureState_ColorKeyColor,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetTextureState_ColorKeyColor"
#endif
},
// IDirect3DDevice8::IsFencePending
{
(OOVPA*)&D3DDevice_IsFencePending_1_0_5558,
XTL::EmuIDirect3DDevice8_IsFencePending,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_IsFencePending"
#endif
},
// IDirect3DDevice8::SetRenderTargetFast (* unchanged since 5344 *)
{
(OOVPA*)&D3DDevice_SetRenderTargetFast_1_0_5344,
XTL::EmuIDirect3DDevice8_SetRenderTargetFast,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderTargetFast"
#endif
},
};
// ******************************************************************

View file

@ -1583,6 +1583,143 @@ SOOVPA<7> D3DDevice_GetDisplayFieldStatus_1_0_5849 =
}
};
// ******************************************************************
// * D3DDevice_GetScissors
// ******************************************************************
SOOVPA<7> D3DDevice_GetScissors_1_0_5849 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x0B, 0x74 },
{ 0x14, 0x11 },
{ 0x1F, 0x04 },
{ 0x2A, 0x85 },
{ 0x35, 0xE1 },
{ 0x40, 0xC1 },
{ 0x4B, 0xA4 },
}
};
// ******************************************************************
// * D3DDevice_SetScissors
// ******************************************************************
SOOVPA<8> D3DDevice_SetScissors_1_0_5849 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x1D, 0x44 },
{ 0x3C, 0x8B },
{ 0x5D, 0xD9 },
{ 0x7D, 0xD8 },
{ 0x99, 0x0E },
{ 0xB8, 0xE8 },
{ 0xD7, 0x24 },
{ 0xF6, 0x8B },
}
};
// ******************************************************************
// * D3DDevice_GetBackMaterial
// ******************************************************************
SOOVPA<8> D3DDevice_GetBackMaterial_1_0_5849 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x05, 0x56 },
{ 0x06, 0x57 },
{ 0x0A, 0x0C },
{ 0x0D, 0x44 },
{ 0x0E, 0x0F },
{ 0x12, 0x11 },
{ 0x16, 0xF3 },
{ 0x1A, 0xC2 },
}
};
// ******************************************************************
// * D3DDevice_CaptureStateBlock
// ******************************************************************
SOOVPA<8> D3DDevice_CaptureStateBlock_1_0_5849 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x1E, 0x3C },
{ 0x3E, 0xC0 },
{ 0x5E, 0x7E },
{ 0x7E, 0x00 },
{ 0x9E, 0x74 },
{ 0xC0, 0x8B },
{ 0xDE, 0x83 },
{ 0xFE, 0x45 },
}
};
// ******************************************************************
// * D3DDevice_SetRenderState_RopZCmpAlwaysRead
// ******************************************************************
SOOVPA<7> D3DDevice_SetRenderState_RopZCmpAlwaysRead_1_0_5849 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x05, XREF_D3DRS_ROPZCMPALWAYSREAD },
{ 0x01, 0x44 },
{ 0x04, 0xA3 },
{ 0x09, 0xE8 },
{ 0x0E, 0xC2 },
{ 0x0F, 0x04 },
{ 0x10, 0x00 },
}
};
// ******************************************************************
// * D3DDevice_GetTexture2
// ******************************************************************
SOOVPA<8> D3DDevice_GetTexture2_1_0_5849 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x03, 0x04 },
{ 0x0A, 0x56 },
{ 0x0D, 0x81 },
{ 0x0E, 0x88 },
{ 0x12, 0x8B },
{ 0x17, 0x06 },
{ 0x1E, 0x8B },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * D3D8_1_0_5849
// ******************************************************************
@ -2809,6 +2946,154 @@ OOVPATable D3D8_1_0_5849[] =
"EmuIDirect3DDevice8_GetDisplayFieldStatus"
#endif
},
// IDirect3DCubeTexture8::GetCubeMapSurface2 (* Unchanged since 4627 *)
{
(OOVPA*)&D3DCubeTexture_GetCubeMapSurface2_1_0_4627,
XTL::EmuIDirect3DCubeTexture8_GetCubeMapSurface2,
#ifdef _DEBUG_TRACE
"EmuIDirect3DCubeTexture8_GetCubeMapSurface2"
#endif
},
// IDirect3DDevice8::SetVertexShaderConstant1Fast (* Unchanged since 5558 *)
{
(OOVPA*)&IDirect3DDevice8_SetVertexShaderConstant1Fast_1_0_5558,
XTL::EmuIDirect3DDevice8_SetVertexShaderConstant1,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetVertexShaderConstant1Fast"
#endif
},
// D3DDevice_SetPixelShaderProgram (* Unchanged since 5558 *)
{
(OOVPA*)&D3DDevice_SetPixelShaderProgram_1_0_5558,
XTL::EmuIDirect3DDevice8_SetPixelShaderProgram,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetPixelShaderProgram"
#endif
},
// IDirect3DDevice8::SetScissors
{
(OOVPA*)&D3DDevice_SetScissors_1_0_5849,
XTL::EmuIDirect3DDevice8_SetScissors,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetScissors"
#endif
},
// IDirect3DDevice8::GetScissors
{
(OOVPA*)&D3DDevice_GetScissors_1_0_5849,
XTL::EmuIDirect3DDevice8_GetScissors,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_GetScissors"
#endif
},
// IDirect3DDevice8::GetBackMaterial
{
(OOVPA*)&D3DDevice_GetBackMaterial_1_0_5849,
XTL::EmuIDirect3DDevice8_GetBackMaterial,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_GetBackMaterial"
#endif
},
// IDirect3DDevice8::ApplyStateBlock (* unchanged since 4627 *)
{
(OOVPA*)&D3DDevice_ApplyStateBlock_1_0_4627,
XTL::EmuIDirect3DDevice8_ApplyStateBlock,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_ApplyStateBlock"
#endif
},
// IDirect3DDevice8::CaptureStateBlock
{
(OOVPA*)&D3DDevice_CaptureStateBlock_1_0_5849,
XTL::EmuIDirect3DDevice8_CaptureStateBlock,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_CaptureStateBlock"
#endif
},
// IDirect3DDevice8::SetRenderState_StencilCullEnable (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_StencilCullEnable_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_StencilCullEnable,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_StencilCullEnable"
#endif
},
// IDirect3DDevice8::SetRenderState_OcclusionCullEnable (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_OcclusionCullEnable_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_OcclusionCullEnable,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_OcclusionCullEnable"
#endif
},
// IDirect3DDevice8::SetRenderState_RopZCmpAlwaysRead
{
(OOVPA*)&D3DDevice_SetRenderState_RopZCmpAlwaysRead_1_0_5849,
XTL::EmuIDirect3DDevice8_SetRenderState_RopZCmpAlwaysRead,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_RopZCmpAlwaysRead"
#endif
},
// IDirect3DDevice8::SetRenderState_RopZRead (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_RopZRead_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_RopZRead,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_RopZRead"
#endif
},
// IDirect3DDevice8::SetRenderState_DoNotCullUncompressed (* unchanged since 4134 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_DoNotCullUncompressed_1_0_4134,
XTL::EmuIDirect3DDevice8_SetRenderState_DoNotCullUncompressed,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_DoNotCullUncompressed"
#endif
},
// D3DDevice_GetTexture2
{
(OOVPA*)&D3DDevice_GetTexture2_1_0_5849,
XTL::EmuIDirect3DDevice8_GetTexture2,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_GetTexture2"
#endif
},
// IDirect3DDevice8::SetRenderTargetFast (* unchanged since 5344 *)
{
(OOVPA*)&D3DDevice_SetRenderTargetFast_1_0_5344,
XTL::EmuIDirect3DDevice8_SetRenderTargetFast,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderTargetFast"
#endif
},
};
// ******************************************************************

View file

@ -6041,7 +6041,7 @@ OOVPATable DSound_1_0_3936[] =
0,
#ifdef _DEBUG_TRACE
"CMcpxVoiceClient::SetI3DL2Source (XREF) NIGGER (1) **************"
"CMcpxVoiceClient::SetI3DL2Source (XREF)"
#endif
},
// CDirectSoundVoice::SetI3DL2Source (XREF)
@ -6050,7 +6050,7 @@ OOVPATable DSound_1_0_3936[] =
XTL::EmuCDirectSoundStream_SetI3DL2Source,
#ifdef _DEBUG_TRACE
"CDirectSoundVoice::SetI3DL2Source (XREF) NIGGER (2) *************"
"CDirectSoundVoice::SetI3DL2Source (XREF)"
#endif
},
// IDirectSoundBuffer_SetI3DL2Source

View file

@ -572,6 +572,467 @@ SOOVPA<8> IDirectSoundBuffer8_SetRolloffCurve_1_0_5233 =
}
};
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetMaxDistance
// ******************************************************************
SOOVPA<7> CDirectSoundVoice_SetMaxDistance_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
XREF_DSVOICESETMAXDISTANCE, // Xref Is Saved
0, // Xref Not Used
{
{ 0x05, 0x41 },
{ 0x0C, 0x00 },
{ 0x13, 0x3C },
{ 0x1A, 0x00 },
{ 0x21, 0xF6 },
{ 0x28, 0x51 },
{ 0x2F, 0xC0 },
}
};
// ******************************************************************
// * CDirectSoundBuffer::SetMaxDistance
// ******************************************************************
SOOVPA<11> CDirectSoundBuffer_SetMaxDistance_1_0_5344 =
{
0, // Large == 0
11, // Count == 11
XREF_DSBUFFERSETMAXDISTANCE, // XRef Is Saved
1, // XRef Is Used
{
// CDirectSoundBuffer_SetMaxDistance+0x39 : call [CDirectSoundVoice::SetMaxDistance]
{ 0x3A, XREF_DSVOICESETMAXDISTANCE },
{ 0x00, 0x56 },
// CDirectSoundBuffer_SetMaxDistance+0x21 : mov eax, 80004005h
{ 0x22, 0x05 },
{ 0x23, 0x40 },
{ 0x24, 0x00 },
{ 0x25, 0x80 },
// CDirectSoundBuffer_SetMaxDistance+0x32 : fstp [esp+0Ch+var_C]
{ 0x32, 0xD9 },
{ 0x33, 0x1C },
{ 0x34, 0x24 },
// CDirectSoundBuffer_SetMaxDistance+0x53 : retn 0Ch
{ 0x54, 0x0C },
{ 0x55, 0x00 }
}
};
// ******************************************************************
// * IDirectSoundBuffer_SetMaxDistance
// ******************************************************************
SOOVPA<11> IDirectSoundBuffer_SetMaxDistance_1_0_5344 =
{
0, // Large == 0
11, // Count == 11
-1, // XRef Not Saved
1, // XRef Is Used
{
// IDirectSoundBuffer_SetMaxDistance+0x1C : call [CDirectSoundBuffer::SetMaxDistance]
{ 0x1D, XREF_DSBUFFERSETMAXDISTANCE },
{ 0x00, 0xFF },
// IDirectSoundBuffer_SetMaxDistance+0x04 : fld [esp+4+arg_4]
{ 0x04, 0xD9 },
{ 0x05, 0x44 },
{ 0x06, 0x24 },
{ 0x07, 0x0C },
// IDirectSoundBuffer_SetMaxDistance+0x12 : add eax, 0FFFFFFE4
{ 0x12, 0x83 },
{ 0x13, 0xC0 },
{ 0x14, 0xE4 },
// IDirectSoundBuffer_SetMaxDistance+0x21 : retn 0Ch
{ 0x22, 0x0C },
{ 0x23, 0x00 }
}
};
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetMinDistance
// ******************************************************************
SOOVPA<7> CDirectSoundVoice_SetMinDistance_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
XREF_DSVOICESETMINDISTANCE, // Xref Is Saved
0, // Xref Not Used
{
{ 0x05, 0x41 },
{ 0x0C, 0x00 },
{ 0x13, 0x38 },
{ 0x1A, 0x00 },
{ 0x21, 0xF6 },
{ 0x28, 0x51 },
{ 0x2F, 0xC0 },
}
};
// ******************************************************************
// * CDirectSoundBuffer::SetMinDistance
// ******************************************************************
SOOVPA<11> CDirectSoundBuffer_SetMinDistance_1_0_5344 =
{
0, // Large == 0
11, // Count == 11
XREF_DSBUFFERSETMINDISTANCE, // XRef Is Saved
1, // XRef Is Used
{
// CDirectSoundBuffer_SetMinDistance+0x39 : call [CDirectSoundVoice::SetMinDistance]
{ 0x3A, XREF_DSVOICESETMINDISTANCE },
{ 0x00, 0x56 },
// CDirectSoundBuffer_SetMinDistance+0x21 : mov eax, 80004005h
{ 0x22, 0x05 },
{ 0x23, 0x40 },
{ 0x24, 0x00 },
{ 0x25, 0x80 },
// CDirectSoundBuffer_SetMinDistance+0x32 : fstp [esp+0Ch+var_C]
{ 0x32, 0xD9 },
{ 0x33, 0x1C },
{ 0x34, 0x24 },
// CDirectSoundBuffer_SetMinDistance+0x53 : retn 0Ch
{ 0x54, 0x0C },
{ 0x55, 0x00 }
}
};
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetMinDistance
// ******************************************************************
SOOVPA<8> DirectSound_CDirectSoundStream_SetMinDistance_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x3E, XREF_DSVOICESETROLLOFFCURVE },
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x22, 0x05 },
{ 0x2E, 0x24 },
{ 0x3A, 0x1C },
{ 0x46, 0x74 },
{ 0x53, 0x8B },
}
};
// ******************************************************************
// * IDirectSoundBuffer_SetMinDistance
// ******************************************************************
SOOVPA<11> IDirectSoundBuffer_SetMinDistance_1_0_5344 =
{
0, // Large == 0
11, // Count == 11
-1, // XRef Not Saved
1, // XRef Is Used
{
// IDirectSoundBuffer_SetMinDistance+0x1C : call [CDirectSoundBuffer::SetMinDistance]
{ 0x1D, XREF_DSBUFFERSETMINDISTANCE },
{ 0x00, 0xFF },
// IDirectSoundBuffer_SetMinDistance+0x04 : fld [esp+4+arg_4]
{ 0x04, 0xD9 },
{ 0x05, 0x44 },
{ 0x06, 0x24 },
{ 0x07, 0x0C },
// IDirectSoundBuffer_SetMinDistance+0x12 : add eax, 0FFFFFFE4
{ 0x12, 0x83 },
{ 0x13, 0xC0 },
{ 0x14, 0xE4 },
// IDirectSoundBuffer_SetMinDistance+0x21 : retn 0Ch
{ 0x22, 0x0C },
{ 0x23, 0x00 }
}
};
// ******************************************************************
// * DirectSound::CDirectSound::SetI3DL2Listener
// ******************************************************************
SOOVPA<8> DirectSound_CDirectSound_SetI3DL2Listener_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
XREF_DSSETI3DL2LISTENER, // Xref Is Saved
0, // Xref Not Used
{
{ 0x1E, 0x15 },
{ 0x3E, 0x88 },
{ 0x5E, 0x41 },
{ 0x7E, 0x00 },
{ 0x9E, 0x08 },
{ 0xBE, 0x41 },
{ 0xDE, 0x00 },
{ 0xFE, 0x8B },
}
};
// ******************************************************************
// * IDirectSound_SetI3DL2Listener
// ******************************************************************
SOOVPA<9> IDirectSound_SetI3DL2Listener_1_0_5344 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x19, XREF_DSSETI3DL2LISTENER },
{ 0x02, 0x24 },
{ 0x06, 0x24 },
{ 0x0A, 0xFF },
{ 0x0E, 0x83 },
{ 0x12, 0xD9 },
{ 0x16, 0xC8 },
{ 0x1D, 0xC2 },
{ 0x1E, 0x0C },
}
};
// ******************************************************************
// * DirectSound::CDirectSound::SetRolloffFactor
// ******************************************************************
SOOVPA<9> DirectSound_CDirectSound_SetRolloffFactor_1_0_5344 =
{
0, // Large == 0
9, // Count == 9
XREF_SETROLLOFFFACTORA, // Xref Is Saved
0, // Xref Not Used
{
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x22, 0x05 },
{ 0x2E, 0x08 },
{ 0x35, 0x70 },
{ 0x3A, 0x48 },
{ 0x4A, 0x85 },
{ 0x53, 0xFF },
{ 0x5E, 0x00 },
}
};
// ******************************************************************
// * IDirectSound_SetRolloffFactor
// ******************************************************************
SOOVPA<8> IDirectSound_SetRolloffFactor_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x1D, XREF_SETROLLOFFFACTORA },
{ 0x03, 0x0C },
{ 0x08, 0x8B },
{ 0x0D, 0x8B },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * CDirectSoundVoice::SetDistanceFactor
// ******************************************************************
SOOVPA<7> CDirectSoundVoice_SetDistanceFactor_1_0_5344 =
{
0, // Large == 0
7, // Count == 7
XREF_DSVOICESETDISTANCEFACTOR, // Xref Is Saved
0, // Xref Not Used
{
{ 0x05, 0x41 },
{ 0x0C, 0x00 },
{ 0x13, 0x44 },
{ 0x1A, 0x00 },
{ 0x21, 0xF6 },
{ 0x28, 0x51 },
{ 0x2F, 0xC0 },
}
};
// ******************************************************************
// * CDirectSoundBuffer::SetDistanceFactor
// ******************************************************************
SOOVPA<8> CDirectSoundBuffer_SetDistanceFactor_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
XREF_DSBUFFERSETDISTANCEFACTOR, // Xref Is Saved
1, // Xref Is Used
{
{ 0x3A, XREF_DSVOICESETDISTANCEFACTOR },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x35, 0xFF },
{ 0x40, 0x8B },
{ 0x4F, 0x8B },
}
};
// ******************************************************************
// * IDirectSoundBuffer8_SetDistanceFactor
// ******************************************************************
SOOVPA<8> IDirectSoundBuffer8_SetDistanceFactor_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x1D, XREF_DSBUFFERSETDISTANCEFACTOR },
{ 0x03, 0x0C },
{ 0x08, 0x8B },
{ 0x0D, 0x8B },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * DirectSound::CDirectSound::SetDistanceFactor
// ******************************************************************
SOOVPA<9> DirectSound_CDirectSound_SetDistanceFactor_1_0_5344 =
{
0, // Large == 0
9, // Count == 9
XREF_SETDISTANCEFACTORA, // Xref Is Saved
0, // Xref Not Used
{
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x22, 0x05 },
{ 0x2E, 0x08 },
{ 0x35, 0x6C },
{ 0x3A, 0x48 },
{ 0x4A, 0x85 },
{ 0x53, 0xFF },
{ 0x5E, 0x00 },
}
};
// ******************************************************************
// * IDirectSound_SetDistanceFactor
// ******************************************************************
SOOVPA<8> IDirectSound_SetDistanceFactor_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x1D, XREF_SETDISTANCEFACTORA },
{ 0x03, 0x0C },
{ 0x08, 0x8B },
{ 0x0D, 0x8B },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * DirectSound::CDirectSound::SetDopplerFactor
// ******************************************************************
SOOVPA<9> DirectSound_CDirectSound_SetDopplerFactor_1_0_5344 =
{
0, // Large == 0
9, // Count == 9
XREF_SETDOPPLERFACTOR, // Xref Is Saved
0, // Xref Not Used
{
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x22, 0x05 },
{ 0x2E, 0x08 },
{ 0x35, 0x74 },
{ 0x3A, 0x48 },
{ 0x4A, 0x85 },
{ 0x53, 0xFF },
{ 0x5E, 0x00 },
}
};
// ******************************************************************
// * IDirectSound_SetDopplerFactor
// ******************************************************************
SOOVPA<8> IDirectSound_SetDopplerFactor_1_0_5344 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x1D, XREF_SETDOPPLERFACTOR },
{ 0x03, 0x0C },
{ 0x08, 0x8B },
{ 0x0D, 0x8B },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * Direct_1_0_5233
// ******************************************************************
@ -1044,6 +1505,24 @@ OOVPATable DSound_1_0_5233[] =
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetOrientation"
#endif
},
// CDirectSound::SetDistanceFactorA (XREF)
{
(OOVPA*)&DirectSound_CDirectSound_SetDistanceFactor_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSound::SetDistanceFactorA (XREF) (5344)@"
#endif
},
// IDirectSound8::SetDistanceFactor
{
(OOVPA*)&IDirectSound_SetDistanceFactor_1_0_5344,
XTL::EmuIDirectSound8_SetDistanceFactor,
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetDistanceFactor (5344)@"
#endif
},
// CDirectSound::SetDistanceFactorA (XREF) (* unchanged since 4627 *)
{
@ -1080,6 +1559,24 @@ OOVPATable DSound_1_0_5233[] =
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetRolloffFactor"
#endif
},
// CDirectSound::SetDopplerFactor (XREF)
{
(OOVPA*)&DirectSound_CDirectSound_SetDopplerFactor_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSound::SetDopplerFactor (XREF) (5344)@@"
#endif
},
// IDirectSound8::SetDopplerFactor
{
(OOVPA*)&IDirectSound_SetDopplerFactor_1_0_5344,
XTL::EmuIDirectSound8_SetDopplerFactor,
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetDopplerFactor (5344)@@"
#endif
},
// CDirectSound::SetDopplerFactor (XREF) (* unchanged since 4627 *)
{
@ -1109,30 +1606,54 @@ OOVPATable DSound_1_0_5233[] =
"EmuCDirectSound_CommitDeferredSettings"
#endif
},
// CDirectSoundVoice::SetMaxDistance (XREF) (* unchanged since 4432 *)
// CDirectSoundVoice::SetMaxDistance (XREF)
{
(OOVPA*)&CDirectSoundVoice_SetMaxDistance_1_0_4432, 0,
(OOVPA*)&CDirectSoundVoice_SetMaxDistance_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundVoice::SetMaxDistance (XREF)"
"CDirectSoundVoice::SetMaxDistance (XRef) (5344)"
#endif
},
// CDirectSoundBuffer::SetMaxDistance (XREF) (* unchanged since 4432 *)
// CDirectSoundBuffer::SetMaxDistance (XREF)
{
(OOVPA*)&CDirectSoundBuffer_SetMaxDistance_1_0_4432, 0,
(OOVPA*)&CDirectSoundBuffer_SetMaxDistance_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetMaxDistance (XREF)"
"CDirectSoundBuffer::SetMaxDistance (XRef) (5344)"
#endif
},
// IDirectSoundBuffer_SetMaxDistance (* unchanged since 4432 *)
// IDirectSoundBuffer_SetMaxDistance
{
(OOVPA*)&IDirectSoundBuffer_SetMaxDistance_1_0_4432,
(OOVPA*)&IDirectSoundBuffer_SetMaxDistance_1_0_5344,
XTL::EmuIDirectSoundBuffer8_SetMaxDistance,
#ifdef _DEBUG_TRACE
"EmuIDirectSoundBuffer8_SetMaxDistance"
"IDirectSoundBuffer8_SetMaxDistance (5344)"
#endif
},
// CDirectSoundVoice::SetMinDistance (XREF)
{
(OOVPA*)&CDirectSoundVoice_SetMinDistance_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundVoice::SetMinDistance (XRef) (5344)"
#endif
},
// CDirectSoundBuffer::SetMinDistance (XREF)
{
(OOVPA*)&CDirectSoundBuffer_SetMinDistance_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetMinDistance (XRef) (5344)"
#endif
},
// IDirectSoundBuffer_SetMinDistance
{
(OOVPA*)&IDirectSoundBuffer_SetMinDistance_1_0_5344,
XTL::EmuIDirectSoundBuffer8_SetMinDistance,
#ifdef _DEBUG_TRACE
"IDirectSoundBuffer8_SetMinDistance (5344)"
#endif
},
// CDirectSoundVoice::SetMinDistance (XREF) (* unchanged since 4432 *)
@ -1161,6 +1682,32 @@ OOVPATable DSound_1_0_5233[] =
"EmuIDirectSoundBuffer8_SetMinDistance"
#endif
},
// CDirectSoundVoice::SetMaxDistance (XREF) (* unchanged since 4432 *)
{
(OOVPA*)&CDirectSoundVoice_SetMaxDistance_1_0_4432, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundVoice::SetMaxDistance (XREF)"
#endif
},
// CDirectSoundBuffer::SetMaxDistance (XREF) (* unchanged since 4432 *)
{
(OOVPA*)&CDirectSoundBuffer_SetMaxDistance_1_0_4432, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetMaxDistance (XREF)"
#endif
},
// IDirectSoundBuffer_SetMaxDistance (* unchanged since 4432 *)
{
(OOVPA*)&IDirectSoundBuffer_SetMaxDistance_1_0_4432,
XTL::EmuIDirectSoundBuffer8_SetMaxDistance,
#ifdef _DEBUG_TRACE
"EmuIDirectSoundBuffer8_SetMaxDistance"
#endif
},
// CDirectSoundVoice::SetPosition (XREF) (* unchanged since 4627 *)
{
(OOVPA*)&CDirectSoundVoice_SetPosition_1_0_4627, 0,
@ -1359,6 +1906,69 @@ OOVPATable DSound_1_0_5233[] =
"EmuIDirectSound8_AddRef"
#endif
},
// CDirectSound_SetI3DL2Listener
{
(OOVPA*)&DirectSound_CDirectSound_SetI3DL2Listener_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSound::SetI3DL2Listener (XREF) (5344)"
#endif
},
// IDirectSound8_SetI3DL2Listener
{
(OOVPA*)&IDirectSound_SetI3DL2Listener_1_0_5344,
XTL::EmuIDirectSound8_SetI3DL2Listener,
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetI3DL2Listener (5344)"
#endif
},
// CDirectSound::SetRolloffFactor (XREF)
{
(OOVPA*)&DirectSound_CDirectSound_SetRolloffFactor_1_0_5344, 0,
#ifdef _DEBUG_TRACE
"CDirectSound_SetRolloffFactor (XRef) (5344)"
#endif
},
// IDirectSound8::SetRolloffFactor
{
(OOVPA*)&IDirectSound_SetRolloffFactor_1_0_5344,
XTL::EmuIDirectSound8_SetRolloffFactor,
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetRolloffFactor (5344)"
#endif
},
#if 0 // Add when needed...
// CDirectSoundVoice::SetDistanceFactor (XREF)
{
(OOVPA*)&CDirectSoundVoice_SetDistanceFactor_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundVoice::SetDistanceFactor (XRef)"
#endif
},
// CDirectSoundBuffer::SetDistanceFactor (XREF)
{
(OOVPA*)&CDirectSoundBuffer_SetDistanceFactor_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetDistanceFactor (XRef)"
#endif
},
// IDirectSoundBuffer_SetDistanceFactor
{
(OOVPA*)&IDirectSoundBuffer8_SetDistanceFactor_1_0_5558,
XTL::EmuIDirectSoundBuffer8_SetDistanceFactor,
#ifdef _DEBUG_TRACE
"IDirectSoundBuffer8_SetDistanceFactor"
#endif
},
#endif
};
// ******************************************************************

View file

@ -1243,6 +1243,30 @@ SOOVPA<11> CDirectSoundBuffer_SetMinDistance_1_0_5558 =
}
};
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetMinDistance
// ******************************************************************
SOOVPA<8> DirectSound_CDirectSoundStream_SetMinDistance_1_0_5558 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x3E, XREF_DSVOICESETROLLOFFCURVE },
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x22, 0x05 },
{ 0x2E, 0x24 },
{ 0x3A, 0x1C },
{ 0x46, 0x74 },
{ 0x53, 0x8B },
}
};
// ******************************************************************
// * IDirectSoundBuffer_SetMinDistance
// ******************************************************************
@ -1925,7 +1949,7 @@ SOOVPA<9> DirectSound_CDirectSoundStream_SetHeadroom_1_0_5558 =
0, // Large == 0
9, // Count == 9
XREF_DirectSound_CDirectSoundStream_SetHeadroom, // Xref Is Saved
-1, // Xref Not Saved
1, // Xref Is Used
{
@ -2228,6 +2252,193 @@ SOOVPA<8> XAudioDownloadEffectsImage_1_0_5558 =
}
};
// ******************************************************************
// * DirectSound::CDirectSound::SetPosition
// ******************************************************************
SOOVPA<7> DirectSound_CDirectSound_SetPosition_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
XREF_DSSETPOSITIONA, // Xref Is Saved
0, // Xref Not Used
{
{ 0x0F, 0x00 },
{ 0x1E, 0xFF },
{ 0x2B, 0x8B },
{ 0x3A, 0x8B },
{ 0x49, 0x40 },
{ 0x58, 0xE8 },
{ 0x67, 0x15 },
}
};
// ******************************************************************
// * IDirectSound_SetPosition
// ******************************************************************
SOOVPA<8> IDirectSound_SetPosition_1_0_5558 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x2D, XREF_DSSETPOSITIONA },
{ 0x05, 0x18 },
{ 0x0C, 0x83 },
{ 0x13, 0x8B },
{ 0x1A, 0xF8 },
{ 0x21, 0xD9 },
{ 0x28, 0xD9 },
{ 0x31, 0x5D },
}
};
// ******************************************************************
// * DirectSound::CDirectSound::SetVelocity
// ******************************************************************
SOOVPA<7> DirectSound_CDirectSound_SetVelocity_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
XREF_DSSETVELOCITYA, // Xref Is Saved
0, // Xref Not Used
{
{ 0x0F, 0x00 },
{ 0x1E, 0xFF },
{ 0x2B, 0x8B },
{ 0x3A, 0x8B },
{ 0x49, 0x4C },
{ 0x58, 0xE8 },
{ 0x67, 0x15 },
}
};
// ******************************************************************
// * IDirectSound_SetVelocity
// ******************************************************************
SOOVPA<8> IDirectSound_SetVelocity_1_0_5558 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x2D, XREF_DSSETVELOCITYA },
{ 0x05, 0x18 },
{ 0x0C, 0x83 },
{ 0x13, 0x8B },
{ 0x1A, 0xF8 },
{ 0x21, 0xD9 },
{ 0x28, 0xD9 },
{ 0x31, 0x5D },
}
};
// ******************************************************************
// * DirectSound::CDirectSound::CreateSoundStream
// ******************************************************************
SOOVPA<7> DirectSound_CDirectSound_CreateSoundStream_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
XREF_DSCREATESOUNDSTREAM, // Xref Is Saved
0, // Xref Not Used
{
{ 0x11, 0xD8 },
{ 0x24, 0x05 },
{ 0x37, 0x74 },
{ 0x4A, 0x81 },
{ 0x5D, 0xE8 },
{ 0x70, 0x85 },
{ 0x83, 0xFF },
}
};
// ******************************************************************
// * IDirectSound_CreateSoundStream
// ******************************************************************
SOOVPA<8> IDirectSound_CreateSoundStream_1_0_5558 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x1D, XREF_DSCREATESOUNDSTREAM },
{ 0x03, 0x10 },
{ 0x08, 0xFF },
{ 0x0D, 0xC8 },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetRolloffCurve
// ******************************************************************
SOOVPA<8> DirectSound_CDirectSoundStream_SetRolloffCurve_1_0_5558 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x3E, XREF_DSVOICESETROLLOFFCURVE },
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x22, 0x05 },
{ 0x2E, 0x74 },
{ 0x3A, 0x24 },
{ 0x46, 0x74 },
{ 0x53, 0x8B },
}
};
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetFrequency
// ******************************************************************
SOOVPA<9> DirectSound_CDirectSoundStream_SetFrequency_1_0_5558 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x36, XREF_DSBUFFERSETFREQUENCYB },
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x35, 0xE8 },
{ 0x40, 0x68 },
{ 0x4B, 0x8B },
}
};
// ******************************************************************
// * Direct_1_0_5558
// ******************************************************************
@ -2430,6 +2641,16 @@ OOVPATable DSound_1_0_5558[] =
#ifdef _DEBUG_TRACE
"EmuCDirectSoundBuffer_SetFrequency (XREF)"
#endif
},
// CDirectSoundStream::SetFrequency
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetFrequency_1_0_5558,
XTL::EmuCDirectSoundStream_SetFrequency,
#ifdef _DEBUG_TRACE
"EmuCDirectSoundStream_SetFrequency"
#endif
},
// IDirectSoundBuffer8::SetFrequency (* unchanged since 4627 *)
{
@ -2537,6 +2758,14 @@ OOVPATable DSound_1_0_5558[] =
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetMinDistance (XRef)"
#endif
},
// CDirectSoundStream::SetRolloffCurve (XREF)
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetRolloffCurve_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundStream::SetRolloffCurve"
#endif
},
// IDirectSoundBuffer_SetMinDistance
{
@ -3014,6 +3243,15 @@ OOVPATable DSound_1_0_5558[] =
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetRolloffCurve (XREF)"
#endif
},
// CDirectSoundStream::SetRolloffCurve
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetRolloffCurve_1_0_5558,
XTL::EmuCDirectSoundStream_SetRolloffCurve,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer::SetRolloffCurve"
#endif
},
// IDirectSoundBuffer8::SetRolloffCurve (* unchanged since 5233 *)
{
@ -3247,8 +3485,7 @@ OOVPATable DSound_1_0_5558[] =
// DirectSound::CDirectSoundStream::SetHeadroom
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetHeadroom_1_0_5558,
//XTL::EmuCDirectSoundStream_SetHeadroom,
0, // TODO
XTL::EmuIDirectSoundStream_SetHeadroom,
#ifdef _DEBUG_TRACE
"DirectSound::CDirectSoundStream::SetHeadroom"
@ -3353,6 +3590,59 @@ OOVPATable DSound_1_0_5558[] =
"XAudioDownloadEffectsImage"
#endif
},
// CDirectSound::SetPosition (XREF)
{
(OOVPA*)&DirectSound_CDirectSound_SetPosition_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"CDirectSound_SetPosition (XRef)"
#endif
},
// IDirectSound8::SetPosition
{
(OOVPA*)&IDirectSound_SetPosition_1_0_5558,
XTL::EmuIDirectSound8_SetPosition,
#ifdef _DEBUG_TRACE
"EmuIDirectSound_SetPosition"
#endif
},
// CDirectSound::SetVelocity (XREF)
{
(OOVPA*)&DirectSound_CDirectSound_SetVelocity_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"CDirectSound_SetVelocity (XRef)"
#endif
},
// IDirectSound8::SetVelocity
{
(OOVPA*)&IDirectSound_SetVelocity_1_0_5558,
XTL::EmuIDirectSound8_SetVelocity,
#ifdef _DEBUG_TRACE
"EmuIDirectSound8_SetVelocity"
#endif
},
// CDirectSound_CreateSoundStream
{
(OOVPA*)&DirectSound_CDirectSound_CreateSoundStream_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"CDirectSound::CreateSoundStream (XREF)"
#endif
},
// IDirectSound_CreateSoundStream
{
(OOVPA*)&IDirectSound_CreateSoundStream_1_0_5558,
XTL::EmuIDirectSound8_CreateStream,
#ifdef _DEBUG_TRACE
"IDirectSound_CreateSoundStream"
#endif
},
};
// ******************************************************************

View file

@ -217,35 +217,35 @@ SOOVPA<8> IDirectSoundBuffer8_SetFormat_1_0_5849 =
// ******************************************************************
// * CMcpxBuffer_Play
// ******************************************************************
//SOOVPA<11> CMcpxBuffer_Play_1_0_5849 =
//{
// 0, // Large == 0
// 11, // Count == 11
//
// XREF_DSOUNDPLAY, // XRef Is Saved
// 0, // XRef Not Used
//
// {
// // CMcpxBuffer_Play+0x0B : test dword ptr [eax+8], 0x182000
// { 0x0B, 0xF7 }, // (Offset,Value)-Pair #1
// { 0x0C, 0x40 }, // (Offset,Value)-Pair #2
//
// // CMcpxBuffer_Play+0x13 : jz +0x09
// { 0x13, 0x74 }, // (Offset,Value)-Pair #3
// { 0x14, 0x05 }, // (Offset,Value)-Pair #4
//
// // CMcpxBuffer_Play+0x32 : test byte ptr [esi+0x12], 0x42
// { 0x32, 0xF6 }, // (Offset,Value)-Pair #5
// { 0x33, 0x46 }, // (Offset,Value)-Pair #6
// { 0x34, 0x12 }, // (Offset,Value)-Pair #7
// { 0x35, 0x42 }, // (Offset,Value)-Pair #8
//
// // CMcpxBuffer_Play+0xA4 : call dword ptr [eax+0x1C]
// { 0xA4, 0xFF }, // (Offset,Value)-Pair #9
// { 0xA5, 0x50 }, // (Offset,Value)-Pair #10
// { 0xA6, 0x1C }, // (Offset,Value)-Pair #11
// }
//};
SOOVPA<11> CMcpxBuffer_Play_1_0_5849 =
{
0, // Large == 0
11, // Count == 11
XREF_DirectSound_CMcpxBuffer_Play, // XRef Is Saved
0, // XRef Not Used
{
// CMcpxBuffer_Play+0x0B : test dword ptr [eax+8], 0x182000
{ 0x0B, 0xF7 }, // (Offset,Value)-Pair #1
{ 0x0C, 0x40 }, // (Offset,Value)-Pair #2
// CMcpxBuffer_Play+0x13 : jz +0x09
{ 0x13, 0x74 }, // (Offset,Value)-Pair #3
{ 0x14, 0x05 }, // (Offset,Value)-Pair #4
// CMcpxBuffer_Play+0x32 : test byte ptr [esi+0x12], 0x42
{ 0x32, 0xF6 }, // (Offset,Value)-Pair #5
{ 0x33, 0x46 }, // (Offset,Value)-Pair #6
{ 0x34, 0x12 }, // (Offset,Value)-Pair #7
{ 0x35, 0x42 }, // (Offset,Value)-Pair #8
// CMcpxBuffer_Play+0xA4 : call dword ptr [eax+0x1C]
{ 0xA4, 0xFF }, // (Offset,Value)-Pair #9
{ 0xA5, 0x50 }, // (Offset,Value)-Pair #10
{ 0xA6, 0x1C }, // (Offset,Value)-Pair #11
}
};
// ******************************************************************
// * DirectSound::CMcpxBuffer::Play
@ -270,6 +270,76 @@ SOOVPA<8> DirectSound_CMcpxBuffer_Play_1_0_5849 =
}
};
// ******************************************************************
// * DirectSound::CMcpxBuffer::Play
// ******************************************************************
SOOVPA<7> DirectSound_CMcpxBuffer_Play2_1_0_5849 =
{
0, // Large == 0
7, // Count == 7
XREF_DirectSound_CMcpxBuffer_Play2, // Xref Is Saved
0, // Xref Not Used
{
{ 0x17, 0x43 },
{ 0x2D, 0xF6 },
{ 0x2E, 0xC3 },
{ 0x2F, 0x04 },
{ 0xAD, 0xC2 },
{ 0xAE, 0x04 },
{ 0xAF, 0x00 },
}
};
// ******************************************************************
// * DirectSound::CDirectSoundBuffer::Play
// ******************************************************************
SOOVPA<9> DirectSound_CDirectSoundBuffer_Play_1_0_5849 =
{
0, // Large == 0
9, // Count == 9
XREF_DSOUNDPLAY2, // Xref Is Saved
0, // Xref Not Used
{
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x2E, 0x20 },
{ 0x33, 0x18 },
{ 0x39, 0x85 },
{ 0x44, 0xFF },
{ 0x4B, 0xC7 },
}
};
// ******************************************************************
// * IDirectSoundBuffer_Play
// ******************************************************************
SOOVPA<8> IDirectSoundBuffer_Play_1_0_5849 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x1D, XREF_DSOUNDPLAY2 },
{ 0x03, 0x10 },
{ 0x08, 0xFF },
{ 0x0D, 0xC8 },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
}
};
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetHeadroom
// ******************************************************************
@ -1842,6 +1912,131 @@ SOOVPA<7> DirectSoundDoWork_1_0_5849 =
}
};
// ******************************************************************
// * IDirectSound_SetEffectData
// ******************************************************************
// * No XRefs! Woohoo!
// ******************************************************************
SOOVPA<7> IDirectSound_SetEffectData_1_0_5849 =
{
0, // Large == 0
7, // Count == 7
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x04, 0x75 },
{ 0x0A, 0x75 },
{ 0x10, 0x14 },
{ 0x16, 0x10 },
{ 0x1C, 0x1B },
{ 0x26, 0x5D },
{ 0x28, 0x18 },
}
};
// ******************************************************************
// * DirectSound::CMemoryManager::PoolAlloc
// ******************************************************************
SOOVPA<10> DirectSound_CMemoryManager_PoolAlloc_1_0_5849 =
{
0, // Large == 0
10, // Count == 10
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x24, 0x83 },
{ 0x25, 0x7C },
{ 0x26, 0x24 },
{ 0x27, 0x10 },
{ 0x28, 0x00 },
{ 0x37, 0xF3 },
{ 0x38, 0xAB },
{ 0x44, 0xC2 },
{ 0x45, 0x0C },
{ 0x46, 0x00 },
}
};
// ******************************************************************
// * XFileCreateMediaObjectAsync
// ******************************************************************
SOOVPA<8> XFileCreateMediaObjectAsync_1_0_5849 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x0A, 0xC0 },
{ 0x16, 0xF8 },
{ 0x22, 0xE6 },
{ 0x2E, 0x20 },
{ 0x3D, 0x8B },
{ 0x49, 0x8B },
{ 0x52, 0x06 },
{ 0x5E, 0x0C },
}
};
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetPitch
// ******************************************************************
SOOVPA<12> DirectSound_CDirectSoundStream_SetPitch_1_0_5849 =
{
0, // Large == 0
12, // Count == 12
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x36, XREF_DSBUFFERSETPITCHB },
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x35, 0xE8 },
{ 0x40, 0x68 },
{ 0x4B, 0x8B },
{ 0x4F, 0xC2 },
{ 0x50, 0x08 },
{ 0x51, 0x00 },
}
};
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetHeadroom
// ******************************************************************
SOOVPA<9> DirectSound_CDirectSoundStream_SetHeadroom_1_0_5849 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x36, XREF_DirectSound_CDirectSoundVoice_SetHeadroom },
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x35, 0xE8 },
{ 0x40, 0x68 },
{ 0x4B, 0x8B },
}
};
// ******************************************************************
// * Direct_1_0_5849
// ******************************************************************
@ -2149,7 +2344,7 @@ OOVPATable DSound_1_0_5849[] =
"IDirectSoundBuffer8_SetMinDistance"
#endif
},
// CMcpxBuffer::Play
// CMcpxBuffer::Play
{
(OOVPA*)&DirectSound_CMcpxBuffer_Play_1_0_5849, 0,
@ -2157,24 +2352,14 @@ OOVPATable DSound_1_0_5849[] =
"CMcpxBuffer_Play (XREF)"
#endif
},
// CDirectSoundBuffer::Play (* unchanged since 4361 *)
{
(OOVPA*)&CDirectSoundBuffer_Play_1_0_4361, 0,
// CMcpxBuffer::Play
/*{
(OOVPA*)&CMcpxBuffer_Play_1_0_5849, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer_Play (XREF)"
"CMcpxBuffer_Play2 (XREF)"
#endif
},
// IDirectSoundBuffer8::Play (* unchanged since 4361 *)
{
(OOVPA*)&IDirectSoundBuffer8_Play_1_0_4361,
XTL::EmuIDirectSoundBuffer8_Play,
#ifdef _DEBUG_TRACE
"IDirectSoundBuffer8_Play"
#endif
},
},*/
// IDirectSoundBuffer_Stop (Possibly weak, but quite OK for 4627 DSOUND)
{
(OOVPA*)&IDirectSoundBuffer_Stop_1_0_4627,
@ -2742,6 +2927,95 @@ OOVPATable DSound_1_0_5849[] =
"CDirectSound_SynchPlayback_1_0_5558"
#endif
},
// XAudioDownloadEffectsImage (* unchanged since 4627 *)
{
(OOVPA*)&XAudioDownloadEffectsImage_1_0_4627,
XTL::EmuXAudioDownloadEffectsImage,
#ifdef _DEBUG_TRACE
"EmuXAudioDownloadEffectsImage"
#endif
},
// IDirectSoundStream_FlushEx
{
(OOVPA*)&IDirectSound_SetEffectData_1_0_5849,
XTL::EmuIDirectSound8_SetEffectData,
#ifdef _DEBUG_TRACE
"EmuIDirectSound_SetEffectData"
#endif
},
// DirectSound::CMemoryManager::PoolAlloc
{
(OOVPA*)&DirectSound_CMemoryManager_PoolAlloc_1_0_5849, 0,
#ifdef _DEBUG_TRACE
"DirectSound::CMemoryManager::PoolAlloc (XREF)"
#endif
},
// XFileCreateMediaObjectAsync
{
(OOVPA*)&XFileCreateMediaObjectAsync_1_0_5849,
XTL::EmuXFileCreateMediaObjectAsync,
#ifdef _DEBUG_TRACE
"XFileCreateMediaObjectAsync"
#endif
},
// CDirectSoundStream::SetFormat (* unchanged since 5558 *)
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetFormat_1_0_5558,
XTL::EmuCDirectSoundStream_SetFormat,
#ifdef _DEBUG_TRACE
"CDirectSoundStream::SetFormat"
#endif
},
// CDirectSoundStream::SetPitch
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetPitch_1_0_5849,
XTL::EmuCDirectSoundStream_SetPitch,
#ifdef _DEBUG_TRACE
"CDirectSoundStream::SetPitch"
#endif
},
// DirectSound::CDirectSoundStream::SetHeadroom
{
(OOVPA*)&DirectSound_CDirectSoundStream_SetHeadroom_1_0_5849,
XTL::EmuIDirectSoundStream_SetHeadroom,
#ifdef _DEBUG_TRACE
"DirectSound::CDirectSoundStream::SetHeadroom"
#endif
},
// CMcpxBuffer::Play2
{
(OOVPA*)&DirectSound_CMcpxBuffer_Play2_1_0_5849, 0,
#ifdef _DEBUG_TRACE
"CMcpxBuffer_Play2 (XREF)"
#endif
},
// CDirectSoundBuffer::Play
{
(OOVPA*)&DirectSound_CDirectSoundBuffer_Play_1_0_5849, 0,
#ifdef _DEBUG_TRACE
"CDirectSoundBuffer_Play (XREF)"
#endif
},
// IDirectSoundBuffer8::Play
{
(OOVPA*)&IDirectSoundBuffer_Play_1_0_5849,
XTL::EmuIDirectSoundBuffer8_Play,
#ifdef _DEBUG_TRACE
"IDirectSoundBuffer8_Play"
#endif
},
};
// ******************************************************************

View file

@ -1613,6 +1613,52 @@ SOOVPA<7> GetFileAttributesA_1_0_3911 =
}
};
// ******************************************************************
// * ReadFileEx@20
// ******************************************************************
SOOVPA<8> ReadFileEx_1_0_3911 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x09, 0x48 },
{ 0x14, 0x8D },
{ 0x1F, 0xFF },
{ 0x2A, 0xFF },
{ 0x2F, 0x00 },
{ 0x35, 0x00 },
{ 0x40, 0x50 },
{ 0x4B, 0xC0 },
}
};
// ******************************************************************
// * WriteFileEx
// ******************************************************************
SOOVPA<8> WriteFileEx_1_0_3911 =
{
0, // Large == 0
8, // Count == 8
-1, // Xref Not Saved
0, // Xref Not Used
{
{ 0x09, 0x48 },
{ 0x14, 0x8D },
{ 0x1F, 0xFF },
{ 0x2A, 0xFF },
{ 0x2F, 0xFC },
{ 0x35, 0x00 },
{ 0x40, 0x50 },
{ 0x4B, 0xC0 },
}
};
// ******************************************************************
// * XAPI_1_0_3911
// ******************************************************************
@ -2120,6 +2166,24 @@ OOVPATable XAPI_1_0_3911[] =
"EmuGetFileAttributesA"
#endif
},
// ReadFileEx
/*{
(OOVPA*)&ReadFileEx_1_0_3911,
XTL::EmuReadFileEx,
#ifdef _DEBUG_TRACE
"EmuReadFileEx"
#endif
},
// WriteFileEx
{
(OOVPA*)&WriteFileEx_1_0_3911,
XTL::EmuWriteFileEx,
#ifdef _DEBUG_TRACE
"EmuWriteFileEx"
#endif
},*/
// CloseHandle
/*{
(OOVPA*)&CloseHandle_1_0_3911,

View file

@ -36,6 +36,7 @@
#include "OOVPA.h"
extern SOOVPA<7> XapiInitProcess_1_0_4831;
extern SOOVPA<7> XapiInitProcess_1_0_4928;
extern SOOVPA<7> XapiInitProcess_1_0_5028;
extern OOVPATable XAPI_1_0_4627[];

View file

@ -32,7 +32,7 @@
// *
// ******************************************************************
// NOTE: This function actually came in with 4928
// NOTE: This function actually came in with 4831, not 4928!
// ******************************************************************
// * XapiApplyKernelPatches
// ******************************************************************
@ -78,6 +78,35 @@ SOOVPA<7> XapiInitProcess_1_0_4928 =
}
};
// ******************************************************************
// * XapiInitProcess
// ******************************************************************
SOOVPA<7> XapiInitProcess_1_0_4831 =
{
0, // Large == 0
7, // Count == 7
-1, // XRef Not Saved
0, // XRef Not Used
{
// XapiInitProcess+0x03 : sub esp, 0x34
{ 0x05, 0x34 }, // (Offset,Value)-Pair #1
// XapiInitProcess+0x13 : push 0x0C
{ 0x13, 0x6A }, // (Offset,Value)-Pair #2
{ 0x14, 0x0C }, // (Offset,Value)-Pair #3
// XapiInitProcess+0x2A : repe stosd
{ 0x1B, 0xF3 }, // (Offset,Value)-Pair #4
{ 0x1C, 0xAB }, // (Offset,Value)-Pair #5
// XapiInitProcess+0x55 : jz +0x0B
{ 0x48, 0x74 }, // (Offset,Value)-Pair #6
{ 0x49, 0x4A }, // (Offset,Value)-Pair #7
}
};
// ******************************************************************
// * XapiInitProcess
// ******************************************************************
@ -1217,6 +1246,16 @@ OOVPATable XAPI_1_0_4627[] =
#endif
},
// XapiInitProcess
{
(OOVPA*)&XapiInitProcess_1_0_4831,
XTL::EmuXapiInitProcess,
#ifdef _DEBUG_TRACE
"EmuXapiInitProcess (4831)"
#endif
},
// XapiInitProcess
{
(OOVPA*)&XapiInitProcess_1_0_5028,

View file

@ -435,6 +435,53 @@ SOOVPA<7> XapiFiberStartup_1_0_5558 =
}
};
// ******************************************************************
// * XID_fCloseDevice
// ******************************************************************
SOOVPA<7> XID_fCloseDevice_1_0_5558 =
{
0, // Large == 0
7, // Count == 7
XREF_FCLOSEDEVICE, // Xref Is Saved
0, // Xref Not Used
{
{ 0x11, 0x45 },
{ 0x24, 0xFF },
{ 0x37, 0x89 },
{ 0x4A, 0x86 },
{ 0x5D, 0x53 },
{ 0x70, 0xFF },
{ 0x84, 0x89 },
}
};
// ******************************************************************
// * XInputClose
// ******************************************************************
SOOVPA<9> XInputClose_1_0_5558 =
{
0, // Large == 0
9, // Count == 9
-1, // Xref Not Saved
1, // Xref Is Used
{
{ 0x05, XREF_FCLOSEDEVICE },
{ 0x00, 0x8B },
{ 0x01, 0x4C },
{ 0x02, 0x24 },
{ 0x03, 0x04 },
{ 0x04, 0xE8 },
{ 0x09, 0xC2 },
{ 0x0A, 0x04 },
{ 0x0B, 0x00 },
}
};
// ******************************************************************
// * XAPI_1_0_5558
// ******************************************************************
@ -856,6 +903,24 @@ OOVPATable XAPI_1_0_5558[] =
"EmuRtlDestroyHeap"
#endif
},
// XID_fCloseDevice
{
(OOVPA*)&XID_fCloseDevice_1_0_5558, 0,
#ifdef _DEBUG_TRACE
"XID_fCloseDevice (XREF)"
#endif
},
// XInputClose
{
(OOVPA*)&XInputClose_1_0_5558,
XTL::EmuXInputClose,
#ifdef _DEBUG_TRACE
"EmuXInputClose"
#endif
},
};
// ******************************************************************

View file

@ -365,6 +365,12 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
if(OrigBuildVersion == 4928 || OrigBuildVersion == 4831)
{
pFunc = EmuLocateFunction((OOVPA*)&XapiInitProcess_1_0_4928, lower, upper);
if( pFunc == 0 )
{
pFunc = EmuLocateFunction((OOVPA*)&XapiInitProcess_1_0_4831, lower, upper);
}
ProcessHeapOffs = 0x44;
RtlCreateHeapOffs = 0x3B;
}
@ -491,6 +497,7 @@ void EmuHLEIntercept(Xbe::LibraryVersion *pLibraryVersion, Xbe::Header *pXbeHead
}
DbgPrintf("HLE: 0x%.08X -> EmuD3DDeferredRenderState\n", XTL::EmuD3DDeferredRenderState);
//DbgPrintf("HLE: 0x%.08X -> XREF_D3DRS_ROPZCMPALWAYSREAD\n", XRefDataBase[XREF_D3DRS_ROPZCMPALWAYSREAD] );
}
else
{