Gamepad/Rumble demos "working" (screwyily)

This commit is contained in:
Aaron Robinson 2003-06-20 07:04:40 +00:00
parent a281279db0
commit 1052311a10
11 changed files with 584 additions and 149 deletions

View File

@ -67,9 +67,9 @@ typedef signed long sint32;
// * Version information
// ******************************************************************
#ifndef _DEBUG_TRACE
#define _CXBX_VERSION "0.7.3"
#define _CXBX_VERSION "0.7.4"
#else
#define _CXBX_VERSION "0.7.3-Trace"
#define _CXBX_VERSION "0.7.4-Trace"
#endif
// ******************************************************************

View File

@ -117,7 +117,7 @@ static inline void EmuSwapFS()
mov ax, fs:[0x14]
mov fs, ax
}
/*
// ******************************************************************
// * Every "N" interceptions, perform various periodic services
// ******************************************************************
@ -135,7 +135,7 @@ static inline void EmuSwapFS()
// Back to Zero!
dwInterceptionCount = 0;
}
}*/
}
#endif

View File

@ -217,6 +217,31 @@ typedef struct _XINPUT_STATE
}
XINPUT_STATE, *PXINPUT_STATE;
// ******************************************************************
// * XINPUT_FEEDBACK_HEADER
// ******************************************************************
typedef struct _XINPUT_FEEDBACK_HEADER
{
DWORD dwStatus;
HANDLE OPTIONAL hEvent;
BYTE Reserved[58];
}
XINPUT_FEEDBACK_HEADER, *PXINPUT_FEEDBACK_HEADER;
// ******************************************************************
// * XINPUT_FEEDBACK
// ******************************************************************
typedef struct _XINPUT_FEEDBACK
{
XINPUT_FEEDBACK_HEADER Header;
union
{
XINPUT_RUMBLE Rumble;
};
}
XINPUT_FEEDBACK, *PXINPUT_FEEDBACK;
// ******************************************************************
// * RTL_HEAP_PARAMETERS
// ******************************************************************
@ -298,7 +323,7 @@ DWORD WINAPI EmuXInputGetCapabilities
);
// ******************************************************************
// * func: EmuInputGetState
// * func: EmuXInputGetState
// ******************************************************************
DWORD WINAPI EmuXInputGetState
(
@ -306,6 +331,15 @@ DWORD WINAPI EmuXInputGetState
OUT PXINPUT_STATE pState
);
// ******************************************************************
// * func: EmuXInputGetState
// ******************************************************************
DWORD WINAPI EmuXInputSetState
(
IN HANDLE hDevice,
IN OUT PXINPUT_FEEDBACK pFeedback
);
// ******************************************************************
// * func: EmuCreateThread
// ******************************************************************

View File

@ -89,23 +89,26 @@ inline D3DFORMAT EmuXB2PC_D3DFormat(X_D3DFORMAT Format)
case 0:
return (D3DFORMAT)NULL;
case 0x05: // Swizzled
case 0x04: // Swizzled (X_D3DFMT_A4R4G4B4)
return D3DFMT_A4R4G4B4;
case 0x05: // Swizzled (X_D3DFMT_R5G6B5)
return D3DFMT_R5G6B5;
case 0x12: // Linear (X_D3DFMT_LIN_A8R8G8B8)
case 0x06: // Swizzled
case 0x12: // Linear (X_D3DFMT_LIN_A8R8G8B8)
case 0x06: // Swizzled (X_D3DFMT_LIN_A8R8G8B8)
return D3DFMT_A8R8G8B8;
case 0x07:
case 0x07: // Swizzled (X_D3DFMT_X8R8G8B8)
return D3DFMT_X8R8G8B8;
case 0x0E:
case 0x0E: // Compressed (X_D3DFMT_DXT2)
return D3DFMT_DXT2;
case 0x2A:
case 0x2A: // Swizzled (X_D3DFMT_D24S8)
return D3DFMT_D24S8;
case 0x2C:
case 0x2C: // Swizzled (X_D3DFMT_D16)
return D3DFMT_D16;
}
@ -499,6 +502,14 @@ HRESULT WINAPI EmuIDirect3DDevice8_CreatePixelShader
DWORD *pHandle
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetPixelShader
// ******************************************************************
HRESULT WINAPI EmuIDirect3DDevice8_SetPixelShader
(
DWORD Handle
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_CreateTexture2
// ******************************************************************
@ -612,6 +623,14 @@ ULONG WINAPI EmuIDirect3DResource8_Release
X_D3DResource *pThis
);
// ******************************************************************
// * func: EmuIDirect3DResource8_IsBusy
// ******************************************************************
BOOL WINAPI EmuIDirect3DResource8_IsBusy
(
X_D3DResource *pThis
);
// ******************************************************************
// * func: EmuIDirect3DSurface8_GetDesc
// ******************************************************************
@ -769,6 +788,14 @@ VOID WINAPI EmuIDirect3DDevice8_SetRenderState_ZEnable
DWORD Value
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetRenderState_StencilEnable
// ******************************************************************
VOID WINAPI EmuIDirect3DDevice8_SetRenderState_StencilEnable
(
DWORD Value
);
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetRenderState_MultiSampleAntiAlias
// ******************************************************************

View File

@ -325,6 +325,36 @@ SOOVPA<11> IDirect3DDevice8_CreatePixelShader_1_0_4361 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetPixelShader
// ******************************************************************
SOOVPA<10> IDirect3DDevice8_SetPixelShader_1_0_4361 =
{
0, // Large == 0
10, // Count == 10
{
// IDirect3DDevice8_SetPixelShader+0x0E : mov esi, [ebx+0x0370]
{ 0x0E, 0x8B }, // (Offset,Value)-Pair #1
{ 0x0F, 0xB3 }, // (Offset,Value)-Pair #2
{ 0x10, 0x70 }, // (Offset,Value)-Pair #3
{ 0x11, 0x03 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetPixelShader+0x3A : or eax, 0x2000
{ 0x3A, 0x0D }, // (Offset,Value)-Pair #5
{ 0x3C, 0x20 }, // (Offset,Value)-Pair #6
// IDirect3DDevice8_SetPixelShader+0x78 : retn 0x04
{ 0x78, 0xC2 }, // (Offset,Value)-Pair #7
{ 0x79, 0x04 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetPixelShader+0xE3 : rep movsd
{ 0xE3, 0xF3 }, // (Offset,Value)-Pair #9
{ 0xE4, 0xA5 }, // (Offset,Value)-Pair #10
}
};
// ******************************************************************
// * IDirect3DDevice8_CreateTexture
// ******************************************************************
@ -641,6 +671,127 @@ SOOVPA<13> IDirect3DDevice8_SetRenderState_CullMode_1_0_4361 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_TextureFactor
// ******************************************************************
SOOVPA<9> IDirect3DDevice8_SetRenderState_TextureFactor_1_0_4361 =
{
0, // Large == 0
9, // Count == 9
{
// IDirect3DDevice8_SetRenderState_TextureFactor+0x07 : mov eax, [esi+0x0370]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x86 }, // (Offset,Value)-Pair #2
{ 0x09, 0x70 }, // (Offset,Value)-Pair #3
{ 0x0A, 0x03 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_TextureFactor+0x2F : nop
{ 0x2F, 0x90 }, // (Offset,Value)-Pair #5
// IDirect3DDevice8_SetRenderState_TextureFactor+0x41 : retn 0x04
{ 0x41, 0xC2 }, // (Offset,Value)-Pair #6
{ 0x42, 0x04 }, // (Offset,Value)-Pair #7
// IDirect3DDevice8_SetRenderState_TextureFactor+0x4E : retn 0x04
{ 0x4E, 0xC2 }, // (Offset,Value)-Pair #8
{ 0x4F, 0x04 }, // (Offset,Value)-Pair #9
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_EdgeAntiAlias
// ******************************************************************
SOOVPA<10> IDirect3DDevice8_SetRenderState_EdgeAntiAlias_1_0_4361 =
{
0, // Large == 0
10, // Count == 10
{
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x07 : mov eax, [esi]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x06 }, // (Offset,Value)-Pair #2
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x0C : jb +0x05
{ 0x0C, 0x72 }, // (Offset,Value)-Pair #3
{ 0x0D, 0x05 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x13 : mov ecx, [esp+0x08]
{ 0x13, 0x8B }, // (Offset,Value)-Pair #5
{ 0x14, 0x4C }, // (Offset,Value)-Pair #6
{ 0x15, 0x24 }, // (Offset,Value)-Pair #7
{ 0x16, 0x08 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x2F : retn 0x04
{ 0x2F, 0xC2 }, // (Offset,Value)-Pair #9
{ 0x30, 0x04 }, // (Offset,Value)-Pair #10
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_FillMode
// ******************************************************************
SOOVPA<11> IDirect3DDevice8_SetRenderState_FillMode_1_0_4361 =
{
0, // Large == 0
11, // Count == 11
{
// IDirect3DDevice8_SetRenderState_FillMode+0x07 : mov eax, [esi]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x06 }, // (Offset,Value)-Pair #2
// IDirect3DDevice8_SetRenderState_FillMode+0x21 : mov ecx, [esp+0x08]
{ 0x21, 0x8B }, // (Offset,Value)-Pair #3
{ 0x22, 0x4C }, // (Offset,Value)-Pair #4
{ 0x23, 0x24 }, // (Offset,Value)-Pair #5
{ 0x24, 0x08 }, // (Offset,Value)-Pair #6
// IDirect3DDevice8_SetRenderState_FillMode+0x25 : jnz +0x02
{ 0x25, 0x75 }, // (Offset,Value)-Pair #7
{ 0x26, 0x02 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetRenderState_FillMode+0x35 : add eax, 0x0C
{ 0x35, 0x83 }, // (Offset,Value)-Pair #9
{ 0x36, 0xC0 }, // (Offset,Value)-Pair #10
{ 0x37, 0x0C }, // (Offset,Value)-Pair #11
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_Simple
// ******************************************************************
SOOVPA<13> IDirect3DDevice8_SetRenderState_Simple_1_0_4361 =
{
0, // Large == 0
13, // Count == 13
{
// IDirect3DDevice8_SetRenderState_Simple+0x05 : add eax, 0x08
{ 0x05, 0x83 }, // (Offset,Value)-Pair #1
{ 0x06, 0xC0 }, // (Offset,Value)-Pair #2
{ 0x07, 0x08 }, // (Offset,Value)-Pair #3
// IDirect3DDevice8_SetRenderState_Simple+0x0E : jnb +0x0C
{ 0x0E, 0x73 }, // (Offset,Value)-Pair #4
{ 0x0F, 0x0C }, // (Offset,Value)-Pair #5
// IDirect3DDevice8_SetRenderState_Simple+0x15 : mov [eax-8], ecx
{ 0x15, 0x89 }, // (Offset,Value)-Pair #6
{ 0x16, 0x48 }, // (Offset,Value)-Pair #7
{ 0x17, 0xF8 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetRenderState_Simple+0x18 : mov [eax-4], ecx
{ 0x18, 0x89 }, // (Offset,Value)-Pair #9
{ 0x19, 0x50 }, // (Offset,Value)-Pair #10
{ 0x1A, 0xFC }, // (Offset,Value)-Pair #11
// IDirect3DDevice8_SetRenderState_Simple+0x25 : jmp +0xD9
{ 0x25, 0xEB }, // (Offset,Value)-Pair #12
{ 0x26, 0xD9 }, // (Offset,Value)-Pair #13
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_ZEnable
// ******************************************************************
@ -673,6 +824,36 @@ SOOVPA<13> IDirect3DDevice8_SetRenderState_ZEnable_1_0_4361 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_StencilEnable
// ******************************************************************
SOOVPA<11> IDirect3DDevice8_SetRenderState_StencilEnable_1_0_4361 =
{
0, // Large == 0
11, // Count == 11
{
// IDirect3DDevice8_SetRenderState_StencilEnable+0x0C : jb +0x05
{ 0x0C, 0x72 }, // (Offset,Value)-Pair #1
{ 0x0D, 0x05 }, // (Offset,Value)-Pair #2
// IDirect3DDevice8_SetRenderState_StencilEnable+0x2C : jz +0x19
{ 0x2C, 0x74 }, // (Offset,Value)-Pair #3
{ 0x2D, 0x19 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_StencilEnable+0x4D : mov dword ptr [eax], 0x00041D84
{ 0x4D, 0xC7 }, // (Offset,Value)-Pair #5
{ 0x4E, 0x00 }, // (Offset,Value)-Pair #6
{ 0x4F, 0x84 }, // (Offset,Value)-Pair #7
{ 0x50, 0x1D }, // (Offset,Value)-Pair #8
{ 0x51, 0x04 }, // (Offset,Value)-Pair #9
// IDirect3DDevice8_SetRenderState_StencilEnable+0x81 : retn 0x04
{ 0x81, 0xC2 }, // (Offset,Value)-Pair #10
{ 0x82, 0x04 }, // (Offset,Value)-Pair #11
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_MultiSampleAntiAlias
// ******************************************************************
@ -1130,6 +1311,36 @@ SOOVPA<13> IDirect3DResource8_Release_1_0_4361 =
}
};
// ******************************************************************
// * IDirect3DResource8_IsBusy
// ******************************************************************
SOOVPA<11> IDirect3DResource8_IsBusy_1_0_4361 =
{
0, // Large == 0
11, // Count == 11
{
// IDirect3DResource8_IsBusy+0x24 : test eax, 0x780000
{ 0x24, 0xA9 }, // (Offset,Value)-Pair #1
{ 0x25, 0x00 }, // (Offset,Value)-Pair #2
{ 0x26, 0x00 }, // (Offset,Value)-Pair #3
{ 0x27, 0x78 }, // (Offset,Value)-Pair #4
// IDirect3DResource8_IsBusy+0x35 : jnz +0x41
{ 0x35, 0x75 }, // (Offset,Value)-Pair #5
{ 0x36, 0x41 }, // (Offset,Value)-Pair #6
// IDirect3DResource8_IsBusy+0x4E : mov eax, [ecx+0x14]
{ 0x4E, 0x8B }, // (Offset,Value)-Pair #7
{ 0x4F, 0x41 }, // (Offset,Value)-Pair #8
{ 0x50, 0x14 }, // (Offset,Value)-Pair #9
// IDirect3DResource8_IsBusy+0x76 : jnb +0x09
{ 0x76, 0x73 }, // (Offset,Value)-Pair #10
{ 0x77, 0x09 }, // (Offset,Value)-Pair #11
}
};
// ******************************************************************
// * IDirect3DSurface8_GetDesc
// ******************************************************************
@ -1391,6 +1602,16 @@ OOVPATable D3D8_1_0_4361[] =
"EmuIDirect3DDevice8_CreatePixelShader"
#endif
},
// IDirect3DDevice8::SetPixelShader
{
(OOVPA*)&IDirect3DDevice8_SetPixelShader_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetPixelShader,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetPixelShader"
#endif
},
// IDirect3DDevice8::CreateTexture
{
(OOVPA*)&IDirect3DDevice8_CreateTexture_1_0_4361,
@ -1491,6 +1712,46 @@ OOVPATable D3D8_1_0_4361[] =
"EmuIDirect3DDevice8_SetRenderState_CullMode"
#endif
},
// IDirect3DDevice8::SetRenderState_TextureFactor
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_TextureFactor_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_TextureFactor,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_TextureFactor"
#endif
},
// IDirect3DDevice8::SetRenderState_EdgeAntiAlias
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_EdgeAntiAlias_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_EdgeAntiAlias,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_EdgeAntiAlias"
#endif
},
// IDirect3DDevice8::SetRenderState_FillMode
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_FillMode_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_FillMode,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_FillMode"
#endif
},
// IDirect3DDevice8::SetRenderState_Simple
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_Simple_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_Simple,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_Simple"
#endif
},
// IDirect3DDevice8::SetRenderState_ZEnable
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_ZEnable_1_0_4361,
@ -1501,6 +1762,16 @@ OOVPATable D3D8_1_0_4361[] =
"EmuIDirect3DDevice8_SetRenderState_ZEnable"
#endif
},
// IDirect3DDevice8::SetRenderState_StencilEnable
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_StencilEnable_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_StencilEnable,
#ifdef _DEBUG_TRACE
"EmuIDirect3DDevice8_SetRenderState_StencilEnable"
#endif
},
// IDirect3DDevice8::SetRenderState_MultiSampleAntiAlias
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_MultiSampleAntiAlias_1_0_4361,
@ -1641,6 +1912,16 @@ OOVPATable D3D8_1_0_4361[] =
"EmuIDirect3DResource8_Release"
#endif
},
// IDirect3DResource8::IsBusy
{
(OOVPA*)&IDirect3DResource8_IsBusy_1_0_4361,
xd3d8::EmuIDirect3DResource8_IsBusy,
#ifdef _DEBUG_TRACE
"EmuIDirect3DResource8_IsBusy"
#endif
},
// IDirect3DSurface8::GetDesc
{
(OOVPA*)&IDirect3DSurface8_GetDesc_1_0_4361,

View File

@ -489,34 +489,6 @@ SOOVPA<8> IDirect3DDevice8_SetRenderState_NormalizeNormals_1_0_4627 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_TextureFactor
// ******************************************************************
SOOVPA<9> IDirect3DDevice8_SetRenderState_TextureFactor_1_0_4627 =
{
0, // Large == 0
9, // Count == 9
{
// IDirect3DDevice8_SetRenderState_TextureFactor+0x07 : mov eax, [esi+0x0370]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x86 }, // (Offset,Value)-Pair #2
{ 0x09, 0x70 }, // (Offset,Value)-Pair #3
{ 0x0A, 0x03 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_TextureFactor+0x2F : nop
{ 0x2F, 0x90 }, // (Offset,Value)-Pair #5
// IDirect3DDevice8_SetRenderState_TextureFactor+0x41 : retn 0x04
{ 0x41, 0xC2 }, // (Offset,Value)-Pair #6
{ 0x42, 0x04 }, // (Offset,Value)-Pair #7
// IDirect3DDevice8_SetRenderState_TextureFactor+0x4E : retn 0x04
{ 0x4E, 0xC2 }, // (Offset,Value)-Pair #8
{ 0x4F, 0x04 }, // (Offset,Value)-Pair #9
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_ZBias
// ******************************************************************
@ -546,65 +518,6 @@ SOOVPA<10> IDirect3DDevice8_SetRenderState_ZBias_1_0_4627 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_EdgeAntiAlias
// ******************************************************************
SOOVPA<10> IDirect3DDevice8_SetRenderState_EdgeAntiAlias_1_0_4627 =
{
0, // Large == 0
10, // Count == 10
{
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x07 : mov eax, [esi]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x06 }, // (Offset,Value)-Pair #2
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x0C : jb +0x05
{ 0x0C, 0x72 }, // (Offset,Value)-Pair #3
{ 0x0D, 0x05 }, // (Offset,Value)-Pair #4
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x13 : mov ecx, [esp+0x08]
{ 0x13, 0x8B }, // (Offset,Value)-Pair #5
{ 0x14, 0x4C }, // (Offset,Value)-Pair #6
{ 0x15, 0x24 }, // (Offset,Value)-Pair #7
{ 0x16, 0x08 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetRenderState_EdgeAntiAlias+0x2F : retn 0x04
{ 0x2F, 0xC2 }, // (Offset,Value)-Pair #9
{ 0x30, 0x04 }, // (Offset,Value)-Pair #10
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_FillMode
// ******************************************************************
SOOVPA<11> IDirect3DDevice8_SetRenderState_FillMode_1_0_4627 =
{
0, // Large == 0
11, // Count == 11
{
// IDirect3DDevice8_SetRenderState_FillMode+0x07 : mov eax, [esi]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x06 }, // (Offset,Value)-Pair #2
// IDirect3DDevice8_SetRenderState_FillMode+0x21 : mov ecx, [esp+0x08]
{ 0x21, 0x8B }, // (Offset,Value)-Pair #3
{ 0x22, 0x4C }, // (Offset,Value)-Pair #4
{ 0x23, 0x24 }, // (Offset,Value)-Pair #5
{ 0x24, 0x08 }, // (Offset,Value)-Pair #6
// IDirect3DDevice8_SetRenderState_FillMode+0x25 : jnz +0x02
{ 0x25, 0x75 }, // (Offset,Value)-Pair #7
{ 0x26, 0x02 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetRenderState_FillMode+0x35 : add eax, 0x0C
{ 0x35, 0x83 }, // (Offset,Value)-Pair #9
{ 0x36, 0xC0 }, // (Offset,Value)-Pair #10
{ 0x37, 0x0C }, // (Offset,Value)-Pair #11
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_FogColor
// ******************************************************************
@ -660,40 +573,6 @@ SOOVPA<9> IDirect3DDevice8_SetRenderState_Dxt1NoiseEnable_1_0_4627 =
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_Simple
// ******************************************************************
SOOVPA<13> IDirect3DDevice8_SetRenderState_Simple_1_0_4627 =
{
0, // Large == 0
13, // Count == 13
{
// IDirect3DDevice8_SetRenderState_Simple+0x05 : add eax, 0x08
{ 0x05, 0x83 }, // (Offset,Value)-Pair #1
{ 0x06, 0xC0 }, // (Offset,Value)-Pair #2
{ 0x07, 0x08 }, // (Offset,Value)-Pair #3
// IDirect3DDevice8_SetRenderState_Simple+0x0E : jnb +0x0C
{ 0x0E, 0x73 }, // (Offset,Value)-Pair #4
{ 0x0F, 0x0C }, // (Offset,Value)-Pair #5
// IDirect3DDevice8_SetRenderState_Simple+0x15 : mov [eax-8], ecx
{ 0x15, 0x89 }, // (Offset,Value)-Pair #6
{ 0x16, 0x48 }, // (Offset,Value)-Pair #7
{ 0x17, 0xF8 }, // (Offset,Value)-Pair #8
// IDirect3DDevice8_SetRenderState_Simple+0x18 : mov [eax-4], ecx
{ 0x18, 0x89 }, // (Offset,Value)-Pair #9
{ 0x19, 0x50 }, // (Offset,Value)-Pair #10
{ 0x1A, 0xFC }, // (Offset,Value)-Pair #11
// IDirect3DDevice8_SetRenderState_Simple+0x25 : jmp +0xD9
{ 0x25, 0xEB }, // (Offset,Value)-Pair #12
{ 0x26, 0xD9 }, // (Offset,Value)-Pair #13
}
};
// ******************************************************************
// * IDirect3DDevice8_SetRenderState_ZEnable
// ******************************************************************
@ -1088,9 +967,9 @@ OOVPATable D3D8_1_0_4627[] =
"EmuIDirect3DDevice8_SetRenderState_NormalizeNormals"
#endif
},
// IDirect3DDevice8::SetRenderState_TextureFactor
// IDirect3DDevice8::SetRenderState_TextureFactor (* unchanged since 4361 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_TextureFactor_1_0_4627,
(OOVPA*)&IDirect3DDevice8_SetRenderState_TextureFactor_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_TextureFactor,
@ -1108,9 +987,9 @@ OOVPATable D3D8_1_0_4627[] =
"EmuIDirect3DDevice8_SetRenderState_ZBias"
#endif
},
// IDirect3DDevice8::SetRenderState_EdgeAntiAlias
// IDirect3DDevice8::SetRenderState_EdgeAntiAlias (* unchanged since 4361 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_EdgeAntiAlias_1_0_4627,
(OOVPA*)&IDirect3DDevice8_SetRenderState_EdgeAntiAlias_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_EdgeAntiAlias,
@ -1118,9 +997,9 @@ OOVPATable D3D8_1_0_4627[] =
"EmuIDirect3DDevice8_SetRenderState_EdgeAntiAlias"
#endif
},
// IDirect3DDevice8::SetRenderState_FillMode
// IDirect3DDevice8::SetRenderState_FillMode (* unchanged since 4361 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_FillMode_1_0_4627,
(OOVPA*)&IDirect3DDevice8_SetRenderState_FillMode_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_FillMode,
@ -1148,9 +1027,9 @@ OOVPATable D3D8_1_0_4627[] =
"EmuIDirect3DDevice8_SetRenderState_Dxt1NoiseEnable"
#endif
},
// IDirect3DDevice8::SetRenderState_Simple
// IDirect3DDevice8::SetRenderState_Simple (* unchanged since 4361 *)
{
(OOVPA*)&IDirect3DDevice8_SetRenderState_Simple_1_0_4627,
(OOVPA*)&IDirect3DDevice8_SetRenderState_Simple_1_0_4361,
xd3d8::EmuIDirect3DDevice8_SetRenderState_Simple,

View File

@ -953,7 +953,7 @@ HRESULT WINAPI xd3d8::EmuIDirect3DDevice8_CreateVertexShader
);
if(FAILED(hRet))
printf("*Warning* we're lying about the creation of a vertex shader!");
printf("*Warning* we're lying about the creation of a vertex shader!\n");
// hey look, we lied
hRet = D3D_OK;
@ -1050,6 +1050,45 @@ HRESULT WINAPI xd3d8::EmuIDirect3DDevice8_CreatePixelShader
return hRet;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetPixelShader
// ******************************************************************
HRESULT WINAPI xd3d8::EmuIDirect3DDevice8_SetPixelShader
(
DWORD Handle
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_SetPixelShader\n"
"(\n"
" Handle : 0x%.08X\n"
");\n",
GetCurrentThreadId(), Handle);
}
#endif
// ******************************************************************
// * redirect to windows d3d
// ******************************************************************
HRESULT hRet = g_pD3DDevice8->SetPixelShader
(
Handle
);
// hey look, we lied
hRet = D3D_OK;
EmuSwapFS(); // XBox FS
return hRet;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_CreateTexture2
// ******************************************************************
@ -1201,9 +1240,16 @@ HRESULT WINAPI xd3d8::EmuIDirect3DDevice8_SetTexture
}
#endif
IDirect3DBaseTexture8 *pBaseTexture8 = pTexture->EmuBaseTexture8;
HRESULT hRet;
HRESULT hRet = g_pD3DDevice8->SetTexture(Stage, pBaseTexture8);
if(pTexture == NULL)
hRet = g_pD3DDevice8->SetTexture(Stage, NULL);
else
{
IDirect3DBaseTexture8 *pBaseTexture8 = pTexture->EmuBaseTexture8;
hRet = g_pD3DDevice8->SetTexture(Stage, pBaseTexture8);
}
EmuSwapFS(); // XBox FS
@ -1501,7 +1547,7 @@ HRESULT WINAPI xd3d8::EmuIDirect3DResource8_Register
case X_D3DCOMMON_TYPE_VERTEXBUFFER:
{
#ifdef _DEBUG_TRACE
printf("( Registering VertexBuffer... )\n");
printf("EmuIDirect3DResource8_Register :-> VertexBuffer...\n");
#endif
X_D3DVertexBuffer *pVertexBuffer = (X_D3DVertexBuffer*)pResource;
@ -1537,7 +1583,7 @@ HRESULT WINAPI xd3d8::EmuIDirect3DResource8_Register
case X_D3DCOMMON_TYPE_INDEXBUFFER:
{
#ifdef _DEBUG_TRACE
printf("( Registering IndexBuffer... )\n");
printf("EmuIDirect3DResource8_Register :-> IndexBuffer...\n");
#endif
X_D3DIndexBuffer *pIndexBuffer = (X_D3DIndexBuffer*)pResource;
@ -1573,7 +1619,7 @@ HRESULT WINAPI xd3d8::EmuIDirect3DResource8_Register
case X_D3DCOMMON_TYPE_TEXTURE:
{
#ifdef _DEBUG_TRACE
printf("( Registering Texture... )\n");
printf("EmuIDirect3DResource8_Register :-> Texture...\n");
#endif
X_D3DPixelContainer *pPixelContainer = (X_D3DPixelContainer*)pResource;
@ -1598,7 +1644,7 @@ HRESULT WINAPI xd3d8::EmuIDirect3DResource8_Register
dwHeight = 1 << ((pPixelContainer->Format & X_D3DFORMAT_VSIZE_MASK) >> X_D3DFORMAT_VSIZE_SHIFT);
dwBPP = 4;
}
else if(X_Format == 0x05 /* X_D3DFMT_R5G6B5 */)
else if(X_Format == 0x05 /* X_D3DFMT_R5G6B5 */ || X_Format == 0x04 /* X_D3DFMT_A4R4G4B4 */)
{
bSwizzled = TRUE;
@ -1721,6 +1767,38 @@ ULONG WINAPI xd3d8::EmuIDirect3DResource8_Release
return uRet;
}
// ******************************************************************
// * func: EmuIDirect3DResource8_IsBusy
// ******************************************************************
BOOL WINAPI xd3d8::EmuIDirect3DResource8_IsBusy
(
X_D3DResource *pThis
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuD3D8 (0x%X): EmuIDirect3DResource8_IsBusy\n"
"(\n"
" pThis : 0x%.08X\n"
");\n",
GetCurrentThreadId(), pThis);
}
#endif
IDirect3DResource8 *pResource8 = pThis->EmuResource8;
// I guess we arent doing anything, just return false..
EmuSwapFS(); // XBox FS
return FALSE;
}
// ******************************************************************
// * func: EmuIDirect3DSurface8_GetDesc
// ******************************************************************
@ -2336,6 +2414,37 @@ VOID WINAPI xd3d8::EmuIDirect3DDevice8_SetRenderState_ZEnable
return;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetRenderState_StencilEnable
// ******************************************************************
VOID WINAPI xd3d8::EmuIDirect3DDevice8_SetRenderState_StencilEnable
(
DWORD Value
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuD3D8 (0x%X): EmuIDirect3DDevice8_SetRenderState_StencilEnable\n"
"(\n"
" Value : 0x%.08X\n"
");\n",
GetCurrentThreadId(), Value);
}
#endif
g_pD3DDevice8->SetRenderState(D3DRS_STENCILENABLE, Value);
EmuSwapFS(); // XBox FS
return;
}
// ******************************************************************
// * func: EmuIDirect3DDevice8_SetRenderState_MultiSampleAntiAlias
// ******************************************************************

View File

@ -599,6 +599,36 @@ XBSYSAPI EXPORTNUM(166) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateContiguousMemo
return pRet;
}
// ******************************************************************
// * 0x00AB - MmFreeContiguousMemory
// ******************************************************************
XBSYSAPI EXPORTNUM(171) VOID NTAPI xboxkrnl::MmFreeContiguousMemory
(
IN PVOID BaseAddress
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuKrnl (0x%X): MmFreeContiguousMemory\n"
"(\n"
" BaseAddress : 0x%.08X\n"
");\n",
GetCurrentThreadId(), BaseAddress);
}
#endif
delete BaseAddress;
EmuSwapFS(); // Xbox FS
return;
}
// ******************************************************************
// * 0x00B8 - NtAllocateVirtualMemory
// ******************************************************************

View File

@ -368,6 +368,38 @@ DWORD WINAPI xapi::EmuXInputGetState
return ret;
}
// ******************************************************************
// * func: EmuInputGetState
// ******************************************************************
DWORD WINAPI xapi::EmuXInputSetState
(
IN HANDLE hDevice,
IN OUT PXINPUT_FEEDBACK pFeedback
)
{
EmuSwapFS(); // Win2k/XP FS
// ******************************************************************
// * debug trace
// ******************************************************************
#ifdef _DEBUG_TRACE
{
printf("EmuXapi (0x%X): EmuXInputSetState\n"
"(\n"
" hDevice : 0x%.08X\n"
" pFeedback : 0x%.08X\n"
");\n",
GetCurrentThreadId(), hDevice, pFeedback);
}
#endif
printf("*Warning* Ignoring EmuXInputSetState!\n");
EmuSwapFS(); // XBox FS
return ERROR_SUCCESS;
}
// ******************************************************************
// * func: EmuCloseHandle
// ******************************************************************

View File

@ -236,7 +236,7 @@ extern "C" CXBXKRNL_API uint32 KernelThunkTable[367] =
(uint32)PANIC(0x00A8), // 0x00A8 (168)
(uint32)PANIC(0x00A9), // 0x00A9 (169)
(uint32)PANIC(0x00AA), // 0x00AA (170)
(uint32)PANIC(0x00AB), // 0x00AB (171)
(uint32)&xboxkrnl::MmFreeContiguousMemory, // 0x00AB (171)
(uint32)PANIC(0x00AC), // 0x00AC (172)
(uint32)PANIC(0x00AD), // 0x00AD (173)
(uint32)PANIC(0x00AE), // 0x00AE (174)

View File

@ -266,6 +266,39 @@ SOOVPA<12> XInputGetState_1_0_4361 =
}
};
// ******************************************************************
// * XInputSetState
// ******************************************************************
SOOVPA<12> XInputSetState_1_0_4361 =
{
0, // Large == 0
12, // Count == 12
{
// XInputSetState+0x04 : lea eax, [ecx+0x0A3]
{ 0x04, 0x8D }, // (Offset,Value)-Pair #1
{ 0x05, 0x81 }, // (Offset,Value)-Pair #2
{ 0x06, 0xA3 }, // (Offset,Value)-Pair #3
// XInputSetState+0x15 : push 0x57
{ 0x15, 0x6A }, // (Offset,Value)-Pair #4
{ 0x16, 0x57 }, // (Offset,Value)-Pair #5
// XInputSetState+0x18 : jmp +0x19
{ 0x18, 0xEB }, // (Offset,Value)-Pair #6
{ 0x19, 0x19 }, // (Offset,Value)-Pair #7
// XInputSetState+0x2B : mov [edx+0x41], al
{ 0x2B, 0x88 }, // (Offset,Value)-Pair #8
{ 0x2C, 0x42 }, // (Offset,Value)-Pair #9
{ 0x2D, 0x41 }, // (Offset,Value)-Pair #10
// XInputSetState+0x33 : retn 0x08
{ 0x33, 0xC2 }, // (Offset,Value)-Pair #11
{ 0x34, 0x08 }, // (Offset,Value)-Pair #12
}
};
// ******************************************************************
// * CreateThread
// ******************************************************************
@ -492,6 +525,16 @@ OOVPATable XAPI_1_0_4361[] =
"EmuXInputGetState"
#endif
},
// XInputSetState
{
(OOVPA*)&XInputSetState_1_0_4361,
xapi::EmuXInputSetState,
#ifdef _DEBUG_TRACE
"EmuXInputSetState"
#endif
},
//* Too High Level
// XapiInitProcess
{