diff --git a/src/CxbxKrnl/HLEDataBase.h b/src/CxbxKrnl/HLEDataBase.h index a355f52db..7490c7790 100644 --- a/src/CxbxKrnl/HLEDataBase.h +++ b/src/CxbxKrnl/HLEDataBase.h @@ -179,6 +179,7 @@ enum XRefDataBaseOffset XREF_D3DTexture_GetSurfaceLevel2, XREF_D3DDevice_CreatePalette2, XREF_D3DDevice_CreateIndexBuffer2, + XREF_D3DResource_AddRef, XREF_XnInit, XREF_XID_fCloseDevice, XREF_D3D_ClearStateBlockFlags, diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl index 8604c65bf..5f36f2378 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.3911.inl @@ -397,7 +397,7 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_LightEnable // ****************************************************************** -OOVPA_XREF(D3DDevice_LightEnable, 3911, 1 + 24,// valid upto at least 4627, next known difference is from 5028 onwards +OOVPA_XREF(D3DDevice_LightEnable, 3911, 1 + 24,// valid upto at least 4627, next known difference is from 5344 onwards XRefNoSaveIndex, XRefOne) @@ -1073,6 +1073,27 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 3911, 12) { 0x23, 0x8B }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_IsBusy +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_IsBusy, 3911, 11) + + { 0x00, 0xA1 }, + { 0x12, 0x49 }, + + { 0x20, 0xB8 }, + { 0x21, 0x01 }, + { 0x22, 0x00 }, + { 0x23, 0x00 }, + { 0x24, 0x00 }, + { 0x25, 0xC3 }, + { 0x26, 0x8B }, + { 0x27, 0x92 }, + + { 0x33, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_IsBusy // ****************************************************************** @@ -1090,6 +1111,7 @@ OOVPA_NO_XREF(D3DDevice_IsBusy, 3911, 8) { 0x33, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetDeviceCaps @@ -2410,9 +2432,6 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget, 3911, 9) { 0x1E, 0x04 }, OOVPA_END; - - - // ****************************************************************** // * D3DDevice_CreateVertexBuffer // ****************************************************************** @@ -2535,7 +2554,10 @@ OOVPA_END; // ****************************************************************** // * D3DResource_AddRef // ****************************************************************** -OOVPA_NO_XREF(D3DResource_AddRef, 3911, 10) +OOVPA_XREF(D3DResource_AddRef, 3911, 10, + + XREF_D3DResource_AddRef, + XRefZero) // D3DResource_AddRef+0x07 : test eax, 0xFFFF { 0x07, 0xA9 }, @@ -2904,6 +2926,31 @@ OOVPA_NO_XREF(D3DDevice_AddRef, 3911, 10) { 0x0F, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetViewport +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetViewport, 3911, 16) + + { 0x00, 0xA1 }, + { 0x0C, 0xB0 }, + + { 0x0F, 0x00 }, + { 0x10, 0x00 }, + { 0x11, 0xB9 }, + { 0x12, 0x06 }, + { 0x13, 0x00 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0xF3 }, + { 0x17, 0xA5 }, + { 0x18, 0x5F }, + { 0x19, 0x5E }, + { 0x1A, 0xC2 }, + { 0x1B, 0x04 }, + { 0x1C, 0x00 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetViewport // ****************************************************************** @@ -2927,7 +2974,30 @@ OOVPA_NO_XREF(D3DDevice_GetViewport, 3911, 10) { 0x1A, 0xC2 }, { 0x1B, 0x04 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_GetDisplayFieldStatus +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 3911, 12) + + { 0x00, 0xA1 }, + + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x4C }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x51 }, + { 0x11, 0x04 }, + { 0x12, 0xF7 }, + + { 0x1C, 0x74 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetDisplayFieldStatus // ****************************************************************** @@ -2955,6 +3025,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayFieldStatus, 3911, 14) { 0x3C, 0xC2 }, { 0x3D, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias @@ -3369,6 +3440,32 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 3911, 8) { 0xFE, 0x75 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_DrawVertices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawVertices, 3911, 17) + + { 0x00, 0x53 }, + { 0x01, 0x8B }, + + { 0x12, 0x8B }, + { 0x13, 0x7C }, + { 0x14, 0x24 }, + { 0x15, 0x18 }, + { 0x16, 0x8D }, + { 0x17, 0x77 }, + { 0x18, 0xFF }, + { 0x19, 0xC1 }, + { 0x1A, 0xEE }, + { 0x1B, 0x08 }, + { 0x1C, 0x46 }, + { 0x1D, 0x8D }, + { 0x1E, 0x46 }, + { 0x1F, 0x05 }, + { 0x20, 0x50 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_DrawVertices // ****************************************************************** @@ -3383,6 +3480,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVertices, 3911, 8) { 0x8A, 0x17 }, { 0x9E, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetDisplayMode @@ -3537,6 +3635,31 @@ OOVPA_NO_XREF(D3DDevice_GetLight, 3911, 10) { 0x1F, 0x1A }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetLight +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetLight, 3911, 15) + + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0x3B }, + { 0x18, 0xDF }, + { 0x19, 0x89 }, + { 0x1A, 0x7C }, + { 0x1B, 0x24 }, + { 0x1C, 0x14 }, + { 0x1D, 0x0F }, + { 0x1E, 0x82 }, + { 0x1F, 0xBF }, + + { 0x3B, 0x8B }, + { 0x3C, 0xD8 }, + + { 0x62, 0x8B }, + { 0x63, 0xF3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -3551,6 +3674,7 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 3911, 8) { 0xD7, 0x00 }, { 0xF6, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix @@ -3566,6 +3690,32 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 3911, 7) { 0x1A, 0x5E }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetTile +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetTile, 3911, 16) + + { 0x00, 0x8B }, + + { 0x0A, 0x56 }, + { 0x0B, 0x57 }, + { 0x0C, 0x8B }, + { 0x0D, 0x7C }, + { 0x0E, 0x24 }, + { 0x0F, 0x10 }, + { 0x10, 0x8D }, + { 0x11, 0x04 }, + { 0x12, 0x40 }, + { 0x13, 0x8D }, + { 0x14, 0xB4 }, + { 0x15, 0xC1 }, + + { 0x1F, 0xF3 }, + { 0x23, 0xC2 }, + { 0x24, 0x08 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -3579,6 +3729,7 @@ OOVPA_NO_XREF(D3DDevice_GetTile, 3911, 7) { 0x1C, 0x00 }, { 0x21, 0x5F }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_ApplyStateBlock @@ -3667,6 +3818,35 @@ OOVPA_NO_XREF(D3DDevice_DeletePixelShader, 3911, 7) { 0x1A, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetPixelShaderProgram +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 3911, 19) + + { 0x00, 0x8B }, + { 0x01, 0x54 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x85 }, + { 0x05, 0xD2 }, + { 0x06, 0xA1 }, + + { 0x11, 0x00 }, + { 0x12, 0x00 }, + { 0x13, 0xC7 }, + { 0x14, 0x01 }, + { 0x15, 0x01 }, + { 0x16, 0x00 }, + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0xC7 }, + { 0x1A, 0x80 }, + + { 0x29, 0x89 }, + { 0x3A, 0xE9 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetPixelShaderProgram // ****************************************************************** @@ -3680,6 +3860,7 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShaderProgram, 3911, 7) { 0x32, 0xC7 }, { 0x36, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3D_KickOffAndWaitForIdle @@ -3727,6 +3908,32 @@ OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 3911, 8) { 0x1C, 0x08 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetScissors +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetScissors, 3911, 17) // Up to 5233 + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + { 0x02, 0x24 }, + { 0x03, 0x53 }, + { 0x04, 0x8B }, + { 0x05, 0x5C }, + { 0x06, 0x24 }, + { 0x07, 0x2C }, + { 0x08, 0x85 }, + { 0x09, 0xDB }, + { 0x0A, 0x55 }, + { 0x0B, 0x8B }, + { 0x0C, 0x2D }, + + { 0x3E, 0x44 }, + { 0x3F, 0x24 }, + { 0x52, 0x44 }, + { 0x53, 0x24 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetScissors // ****************************************************************** @@ -3741,6 +3948,7 @@ OOVPA_NO_XREF(D3DDevice_SetScissors, 3911, 8) { 0xD9, 0x8B }, { 0xF6, 0xDB }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetVertexShaderInput @@ -3828,6 +4036,29 @@ OOVPA_NO_XREF(D3DDevice_BeginPushBuffer, 3911, 7) { 0x59, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_EndPushBuffer +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 3911, 13) // Up to 5849 + + { 0x01, 0x56 }, + { 0x11, 0x8D }, + + { 0x2E, 0x8D }, + { 0x2F, 0x4C }, + { 0x30, 0x11 }, + { 0x31, 0x04 }, + { 0x32, 0x89 }, + { 0x33, 0x48 }, + { 0x34, 0x0C }, + { 0x35, 0x8B }, + { 0x36, 0x86 }, + + { 0x6D, 0x8B }, + { 0x6E, 0x86 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_EndPushBuffer // ****************************************************************** @@ -3841,6 +4072,7 @@ OOVPA_NO_XREF(D3DDevice_EndPushBuffer, 3911, 7) { 0x70, 0x03 }, { 0x83, 0x00 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_RopZCmpAlwaysRead @@ -3989,6 +4221,31 @@ OOVPA_XREF(D3DDevice_InsertFence, 3911, 5, { 0x07, 0xC3 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_LoadVertexShaderProgram +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 3911, 16) + + { 0x00, 0x8B }, + { 0x01, 0x44 }, + { 0x02, 0x24 }, + { 0x03, 0x04 }, + { 0x04, 0x53 }, + { 0x05, 0x0F }, + { 0x06, 0xB7 }, + { 0x07, 0x58 }, + { 0x08, 0x02 }, + { 0x09, 0x55 }, + { 0x0A, 0x8B }, + { 0x0B, 0x2D }, + + { 0x14, 0xE3 }, + { 0x15, 0x02 }, + { 0x16, 0xF6 }, + { 0x17, 0xC1 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_LoadVertexShaderProgram // ****************************************************************** @@ -4002,6 +4259,7 @@ OOVPA_NO_XREF(D3DDevice_LoadVertexShaderProgram, 3911, 7) { 0x4C, 0x00 }, { 0x59, 0xE8 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_DeleteVertexShader @@ -4037,6 +4295,31 @@ OOVPA_XREF(D3DDevice_BlockOnFence, 3911, 8, { 0x0E, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_Reset +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Reset, 3911, 10) + + // D3DDevice_Reset+0x15 : mov ecx, ebp + { 0x15, 0x8B }, + { 0x16, 0xCD }, + + // D3DDevice_Reset+0x1E : jnz +0xF5 + { 0x1E, 0x75 }, + { 0x1F, 0xF5 }, + + // D3DDevice_Reset+0x27 : mov esi, [esp+0x14] + { 0x27, 0x8B }, + { 0x28, 0x74 }, + { 0x29, 0x24 }, + { 0x2A, 0x14 }, + + // D3DDevice_Reset+0x37 : jge +0x10 + { 0x37, 0x7D }, + { 0x38, 0x10 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_Reset // ****************************************************************** @@ -4050,6 +4333,7 @@ OOVPA_NO_XREF(D3DDevice_Reset, 3911, 7) { 0x88, 0x50 }, { 0x9F, 0x03 }, OOVPA_END; +#endif // ****************************************************************** // * D3D_GetAdapterIdentifier @@ -4283,29 +4567,48 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 3911, 8) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 3911, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x40 }, { 0x08, 0x21 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 3911, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 3911, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x74 }, + { 0x08, 0x04 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -4325,6 +4628,33 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 3911, 9) { 0x1F, 0xF7 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetVertexShaderInput +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 3911, 17) + + { 0x05, 0xC9 }, + + { 0x0B, 0x74 }, + { 0x11, 0x00 }, + { 0x12, 0x00 }, + { 0x13, 0x89 }, + { 0x14, 0x11 }, + { 0x15, 0x8B }, + { 0x16, 0x4C }, + { 0x17, 0x24 }, + { 0x18, 0x04 }, + { 0x19, 0x85 }, + { 0x1A, 0xC9 }, + { 0x1B, 0x74 }, + { 0x1C, 0x08 }, + { 0x1D, 0x8B }, + + { 0x34, 0x8D }, + { 0x35, 0x0C }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderInput // ****************************************************************** @@ -4339,6 +4669,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 3911, 8) { 0x18, 0x04 }, { 0x1F, 0x20 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_RunVertexStateShader @@ -4370,6 +4701,32 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderType, 3911, 7) { 0x28, 0x08 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetVertexShaderDeclaration +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 3911, 15) + + { 0x00, 0x8B }, + { 0x04, 0x8A }, + + { 0x13, 0xC7 }, + { 0x14, 0x01 }, + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0x00 }, + { 0x18, 0x00 }, + { 0x19, 0x33 }, + { 0x1A, 0xC0 }, + { 0x1B, 0x83 }, + { 0x1C, 0xC4 }, + + { 0x1E, 0xC2 }, + { 0x1F, 0x0C }, + + { 0x40, 0x33 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_GetVertexShaderDeclaration // ****************************************************************** @@ -4385,6 +4742,7 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 3911, 9) { 0x11F, 0x83 }, { 0x129, 0x0F }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetVertexShaderFunction @@ -4403,14 +4761,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 3911, 7) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 3911, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x14 }, + { 0x08, 0x04 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl index 693bf4b6a..7998a78e9 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4034.inl @@ -455,6 +455,30 @@ OOVPA_NO_XREF(D3DDevice_DrawRectPatch, 4034, 8) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_SetIndices +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetIndices, 4034, 14) + + { 0x00, 0x56 }, + { 0x02, 0x35 }, + + { 0x10, 0x81 }, + { 0x11, 0x07 }, + { 0x12, 0x00 }, + { 0x13, 0x00 }, + { 0x14, 0x08 }, + { 0x15, 0x00 }, + { 0x16, 0x8B }, + { 0x17, 0x47 }, + { 0x18, 0x04 }, + { 0x19, 0xA3 }, + + { 0x48, 0x50 }, + { 0x49, 0xE8 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetIndices // ****************************************************************** @@ -479,6 +503,7 @@ OOVPA_NO_XREF(D3DDevice_SetIndices, 4034, 11) { 0x78, 0x04 }, { 0x79, 0x05 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_EdgeAntiAlias @@ -735,10 +760,29 @@ OOVPA_NO_XREF(D3D_CheckDeviceFormat, 4034, 7) { 0x6E, 0x3C }, OOVPA_END; #endif + // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** -/*OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) +OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) + + { 0x10, 0x0D }, + { 0x48, 0x08 }, + { 0x49, 0x02 }, + { 0x4A, 0x00 }, + { 0x4B, 0x00 }, + { 0x4C, 0x00 }, + { 0x4D, 0xA1 }, + { 0x58, 0x53 }, + { 0x63, 0x80 }, + { 0xAE, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version +// ****************************************************************** +// * Get2DSurfaceDesc +// ****************************************************************** +OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) // Get2DSurfaceDesc+0x2B : movzx edx, byte ptr [edi+0x0D] { 0x2B, 0x0F }, @@ -755,9 +799,8 @@ OOVPA_END; // Get2DSurfaceDesc+0xAE : retn 0x0C { 0xAE, 0xC2 }, { 0xAF, 0x0C }, - } OOVPA_END; -*/ +#endif // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable @@ -817,6 +860,31 @@ OOVPA_NO_XREF(D3DDevice_LightEnable, 4034, 13) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_SetRenderState_TextureFactor +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 4034, 15) + + { 0x00, 0x56 }, + { 0x07, 0x8B }, + { 0x08, 0x86 }, + { 0x2F, 0x90 }, + + { 0x40, 0x5E }, + { 0x41, 0xC2 }, + { 0x42, 0x04 }, + { 0x43, 0x00 }, + { 0x44, 0x8B }, + { 0x45, 0x44 }, + { 0x46, 0x24 }, + { 0x47, 0x08 }, + { 0x48, 0xA3 }, + + { 0x4E, 0xC2 }, + { 0x4F, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 3911 version // ****************************************************************** // * D3DDevice_SetRenderState_TextureFactor // ****************************************************************** @@ -839,7 +907,8 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 4034, 9) { 0x4E, 0xC2 }, { 0x4F, 0x04 }, OOVPA_END; - +#endif +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -861,7 +930,34 @@ OOVPA_NO_XREF(Get2DSurfaceDesc, 4034, 10) { 0xAE, 0xC2 }, { 0xAF, 0x0C }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_Clear +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Clear, 4034, 16) + + { 0x00, 0x83 }, + { 0x01, 0xEC }, + + { 0x23, 0x33 }, + { 0x24, 0xF6 }, + { 0x25, 0xF6 }, + { 0x26, 0xC1 }, + { 0x27, 0x01 }, + { 0x28, 0x89 }, + { 0x29, 0x74 }, + { 0x2A, 0x24 }, + { 0x2B, 0x10 }, + { 0x2C, 0x89 }, + { 0x2D, 0x74 }, + { 0x2E, 0x24 }, + + { 0x54, 0x05 }, + { 0x81, 0xB6 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_Clear // ****************************************************************** @@ -881,6 +977,7 @@ OOVPA_NO_XREF(D3DDevice_Clear, 4034, 9) { 0x0399, 0xC2 }, { 0x039A, 0x18 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetLight @@ -959,6 +1056,27 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 4034, 10) // TODO : Alias 3911 instead ? { 0xCA, 0x4D }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetPalette +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetPalette, 4034, 12) + + { 0x00, 0x53 }, + { 0x08, 0x57 }, + { 0x1B, 0x89 }, + { 0x1C, 0x48 }, + + { 0x4D, 0x39 }, + { 0x4E, 0x55 }, + { 0x4F, 0x8B }, + { 0x50, 0x2B }, + { 0x51, 0x81 }, + { 0x52, 0xC5 }, + { 0x53, 0x00 }, + { 0x54, 0x00 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4034 version // ****************************************************************** // * D3DDevice_SetPalette // ****************************************************************** @@ -982,6 +1100,7 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 4034, 12) { 0x8A, 0xC2 }, { 0x8B, 0x08 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTextureState_TexCoordIndex @@ -1277,17 +1396,26 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 4039, 9) +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 4039, 11) + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 { 0x05, 0x6A }, { 0x06, 0x00 }, { 0x07, 0x6A }, { 0x08, 0x00 }, { 0x09, 0x6A }, { 0x0A, 0x01 }, - { 0x10, 0x00 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x25B0 { 0x17, 0x05 }, - { 0x1E, 0x15 }, + { 0x18, 0xB0 }, + { 0x19, 0x25 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, OOVPA_END; // ****************************************************************** @@ -1933,6 +2061,40 @@ OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 4039, 15) { 0x5C, 0x8D }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetDisplayMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4039, 24) + + { 0x00, 0x56 }, + + { 0x0B, 0x00 }, + { 0x0C, 0x00 }, + { 0x0D, 0x8B }, + { 0x0E, 0x41 }, + { 0x0F, 0x10 }, + { 0x10, 0x85 }, + { 0x11, 0xC0 }, + { 0x12, 0x57 }, + { 0x13, 0x75 }, + { 0x14, 0x12 }, + { 0x15, 0x8B }, + { 0x16, 0x49 }, + { 0x17, 0x0C }, + { 0x18, 0xC1 }, + { 0x19, 0xE9 }, + { 0x1A, 0x14 }, + { 0x1B, 0x83 }, + { 0x1C, 0xE1 }, + { 0x1D, 0x0F }, + { 0x1E, 0xB8 }, + { 0x1F, 0x01 }, + + { 0x4C, 0xD3 }, + { 0x4D, 0xE0 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4039 version // ****************************************************************** // * D3DDevice_GetDisplayMode // ****************************************************************** @@ -1961,6 +2123,7 @@ OOVPA_NO_XREF(D3DDevice_GetDisplayMode, 4039, 13) { 0x92, 0xC2 }, { 0x93, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTextureState_BumpEnv @@ -2194,7 +2357,9 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4039, 9) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4039, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, @@ -2202,15 +2367,23 @@ OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4039, 9) { 0x08, 0x04 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4039, 9) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4039, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, @@ -2218,8 +2391,14 @@ OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4039, 9) { 0x08, 0x04 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -2280,15 +2459,20 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetScreenSpaceOffset // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 4039, 7) +OOVPA_NO_XREF(D3DDevice_SetScreenSpaceOffset, 4039, 11) // Up to 5344 { 0x06, 0x56 }, { 0x07, 0xD8 }, { 0x08, 0x44 }, { 0x09, 0x24 }, { 0x0A, 0x08 }, + { 0x0B, 0x8B }, + { 0x0C, 0x35 }, + { 0x2E, 0x8B }, { 0x2F, 0x06 }, + { 0x46, 0xC2 }, + { 0x47, 0x08 }, OOVPA_END; // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl index 4ec9931ca..630787727 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl @@ -2050,6 +2050,25 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 4134, 8) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_BeginPush +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BeginPush, 4134, 10) + + { 0x00, 0x56 }, + { 0x07, 0x6A }, + + { 0x10, 0x8B }, + { 0x11, 0x44 }, + { 0x12, 0x24 }, + { 0x13, 0x08 }, + { 0x14, 0x40 }, + { 0x15, 0x50 }, + { 0x16, 0x56 }, + { 0x17, 0xE8 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4134 version // ****************************************************************** // * D3DDevice_BeginPush // ****************************************************************** @@ -2063,6 +2082,7 @@ OOVPA_NO_XREF(D3DDevice_BeginPush, 4134, 7) { 0x1C, 0x8B }, { 0x21, 0x01 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_EndPush @@ -2290,17 +2310,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4134, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4134, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x18 }, { 0x08, 0x20 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, { 0x0B, 0x8B }, { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -2384,12 +2411,14 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4134, 14) +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4134, 16) // Up to 4531 { 0x02, 0x35 }, { 0x07, 0x57 }, + { 0x0E, 0x70 }, // 4361 0x7004 + { 0x0F, 0x04 }, { 0x10, 0x00 }, { 0x11, 0x00 }, { 0x12, 0xB9 }, @@ -2568,28 +2597,48 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4134, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 4134, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x84 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4134, 7) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 4134, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x70 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl index c8f53eacf..0df1f2c6b 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl @@ -137,6 +137,28 @@ OOVPA_NO_XREF(D3DDevice_SetPixelShader, 4432, 10) { 0xE4, 0xA5 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetRenderState_ZEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 4432, 12) + + { 0x08, 0x06 }, + { 0x0E, 0xE8 }, + + { 0x45, 0x48 }, + { 0x46, 0x0C }, + { 0x47, 0x83 }, + { 0x48, 0xC0 }, + { 0x49, 0x10 }, + { 0x4A, 0x89 }, + { 0x4B, 0x06 }, + { 0x4C, 0xA1 }, + + { 0x5A, 0x74 }, + { 0x60, 0x2A }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4432 version // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable // ****************************************************************** @@ -163,6 +185,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 4432, 13) { 0x8C, 0xC2 }, { 0x8D, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleAntiAlias @@ -642,6 +665,30 @@ OOVPA_NO_XREF(D3DDevice_GetViewportOffsetAndScale, 4432, 12) // Up to 5849 { 0x5C, 0x10 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetDepthClipPlanes +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetDepthClipPlanes, 4432, 15) + + { 0x03, 0x0C }, + { 0x04, 0x48 }, + { 0x05, 0x83 }, + { 0x06, 0xF8 }, + { 0x07, 0x03 }, + { 0x08, 0x56 }, + { 0x09, 0x8B }, + { 0x0A, 0x35 }, + + { 0x0F, 0x77 }, + { 0x10, 0x5F }, + { 0x11, 0xFF }, + { 0x12, 0x24 }, + { 0x13, 0x85 }, + + { 0x18, 0x8B }, + { 0x1F, 0x0C }, +OOVPA_END; + // ****************************************************************** // * D3D8_4432 // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl index a79c316f5..3daf43012 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl @@ -524,7 +524,12 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetRenderTarget2 // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetRenderTarget2, 4627, 10) +OOVPA_XREF(D3DDevice_GetRenderTarget2, 4627, 9, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x12, XREF_D3DResource_AddRef ), // D3DDevice_GetRenderTarget2+0x00 : mov eax, [addr] { 0x00, 0xA1 }, @@ -532,11 +537,11 @@ OOVPA_NO_XREF(D3DDevice_GetRenderTarget2, 4627, 10) // D3DDevice_GetRenderTarget2+0x05 : push esi { 0x05, 0x56 }, - // D3DDevice_GetRenderTarget2+0x06 : mov esi, [eax + 0x21B4] + // D3DDevice_GetRenderTarget2+0x06 : mov esi, [eax + 0xXXXX] { 0x06, 0x8B }, { 0x07, 0xB0 }, - { 0x08, 0xB4 }, - { 0x09, 0x21 }, + //{ 0x08, 0xB4 }, + //{ 0x09, 0x21 }, // D3DDevice_GetRenderTarget2+0x0E : jz + 0x06 { 0x0E, 0x74 }, @@ -567,6 +572,38 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface, 4627, 10) { 0x1C, 0x04 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_GetDepthStencilSurface2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 4627, 20) + + { 0x00, 0xA1 }, + + { 0x05, 0x56 }, + { 0x06, 0x8B }, + { 0x07, 0xB0 }, + //{ 0x08, 0xB8 }, + //{ 0x09, 0x21 }, + { 0x0A, 0x00 }, + { 0x0B, 0x00 }, + { 0x0C, 0x85 }, + { 0x0D, 0xF6 }, + { 0x0E, 0x75 }, + { 0x0F, 0x04 }, + { 0x10, 0x33 }, + { 0x11, 0xC0 }, + { 0x12, 0x5E }, + { 0x13, 0xC3 }, + { 0x14, 0x56 }, + { 0x15, 0xE8 }, + + { 0x1A, 0x8B }, + { 0x1B, 0xC6 }, + { 0x1C, 0x5E }, + { 0x1D, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetDepthStencilSurface2 // ****************************************************************** @@ -594,6 +631,7 @@ OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 4627, 10) // D3DDevice_GetDepthStencilSurface2+0x1D : retn { 0x1D, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_GetTile @@ -636,12 +674,14 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 4627, 11) { 0x16, 0x46 }, { 0x17, 0x04 }, - // D3DDevice_SetTile+0x3D : lea edi, [edx+ecx*8+0x2260] + // D3DDevice_SetTile+0x3D : lea edi, [edx+ecx*8+0xXXXX] { 0x3D, 0x8D }, { 0x3E, 0xBC }, { 0x3F, 0xCA }, - { 0x40, 0x60 }, - { 0x41, 0x22 }, + //{ 0x40, 0x60 }, + //{ 0x41, 0x22 }, + { 0x42, 0x00 }, + { 0x43, 0x00 }, OOVPA_END; // ****************************************************************** @@ -1339,6 +1379,28 @@ OOVPA_NO_XREF(D3DDevice_Clear, 4627, 9) { 0xF8, 0x95 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_Swap +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_Swap, 4627, 13) + + { 0x2A, 0xBB }, + { 0x2B, 0x05 }, + { 0x37, 0xF6 }, + { 0x38, 0xC3 }, + { 0x39, 0x03 }, + + { 0x73, 0xEB }, + { 0x74, 0x36 }, + { 0x75, 0x8B }, + { 0x76, 0xFB }, + { 0x77, 0x83 }, + { 0x78, 0xE7 }, + { 0x79, 0x04 }, + { 0x7A, 0x74 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_Swap // ****************************************************************** @@ -1363,6 +1425,7 @@ OOVPA_NO_XREF(D3DDevice_Swap, 4627, 11) { 0xD8, 0xC2 }, { 0xD9, 0x04 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_CreateVertexBuffer2 @@ -1615,6 +1678,28 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_EdgeAntiAlias, 4627, 10) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_SetRenderState_Dxt1NoiseEnable +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, 12) + + { 0x0D, 0x8B }, + { 0x0E, 0x87 }, + + { 0x50, 0x40 }, + { 0x51, 0x04 }, + { 0x52, 0x00 }, + { 0x53, 0x00 }, + { 0x54, 0x00 }, + { 0x55, 0x00 }, + { 0x56, 0xC1 }, + { 0x57, 0xE6 }, + + { 0x74, 0xC2 }, + { 0x75, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_Dxt1NoiseEnable // ****************************************************************** @@ -1635,7 +1720,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 4627, 9) { 0x74, 0xC2 }, { 0x75, 0x04 }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_SetRenderState_ZEnable // ****************************************************************** @@ -2091,16 +2176,27 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4627, 7) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 4627, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0xD8 }, + { 0x08, 0x20 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; + #if 0 // Moved to 4039 // ****************************************************************** // * D3DDevice_GetVertexShaderConstant @@ -2446,6 +2542,32 @@ OOVPA_NO_XREF(D3DDevice_DrawRectPatch, 4627, 8) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_GetProjectionViewportMatrix +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4627, 16) // Up to 5233 + + { 0x02, 0x35 }, + + { 0x07, 0x57 }, + + { 0x0E, 0x30 }, // 4361 0x7004 + { 0x0F, 0x05 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0xB9 }, + { 0x13, 0x10 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0xF3 }, + { 0x18, 0xA5 }, + { 0x19, 0x5F }, + { 0x1A, 0x5E }, + { 0x1B, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** @@ -2459,7 +2581,7 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 4627, 7) { 0x16, 0x00 }, { 0x1A, 0x5E }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_SetScissors@12 // ****************************************************************** @@ -2684,6 +2806,29 @@ OOVPA_NO_XREF(D3DDevice_SetStipple, 4627, 7) { 0x44, 0x00 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4627, 13) + + { 0x00, 0x51 }, + { 0x01, 0x53 }, + { 0x02, 0x8B }, + { 0x03, 0x1D }, + + { 0x0E, 0x85 }, + { 0x0F, 0xC0 }, + { 0x10, 0x74 }, + { 0x11, 0x0F }, + { 0x12, 0x50 }, + { 0x13, 0xFF }, + { 0x14, 0x15 }, + + { 0x21, 0x8B }, + { 0x42, 0xE8 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -2698,7 +2843,7 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 4627, 8) { 0xD7, 0x8B }, { 0xF6, 0xF9 }, OOVPA_END; - +#endif #if 0 // Moved to 4831 // ****************************************************************** // * D3DDevice_PersistDisplay @@ -2790,6 +2935,31 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleMode, 4627, 8) { 0x31, 0xC2 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetRenderState_MultiSampleRenderTargetMode +// ****************************************************************** +OOVPA_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, 11, + + XRefNoSaveIndex, + XRefOne) + + XREF_ENTRY( 0x0B, XREF_D3DRS_MULTISAMPLERENDERTARGETMODE ), + + { 0x03, 0x04 }, + + { 0x19, 0x00 }, + { 0x1A, 0x00 }, + { 0x1B, 0x74 }, + { 0x1C, 0x14 }, + { 0x1D, 0x8D }, + { 0x1E, 0x90 }, + { 0x1F, 0x90 }, + { 0x20, 0x0A }, + + { 0x31, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4627 version // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode // ****************************************************************** @@ -2804,6 +2974,7 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_MultiSampleRenderTargetMode, 4627, 8) { 0x28, 0x00 }, { 0x31, 0xC2 }, OOVPA_END; +#endif #if 0 // High detection accuracy, use 4134. // ****************************************************************** // * D3DDevice_BeginStateBlock @@ -3083,9 +3254,9 @@ OOVPA_XREF(D3DPalette_Lock, 4627, 8, { 0x08, 0x50 }, { 0x0A, 0xE8 }, { 0x0F, 0x8B }, + { 0x10, 0x54 }, + { 0x13, 0x89 }, { 0x14, 0x02 }, - { 0x16, 0x0C }, - { 0x17, 0x00 }, OOVPA_END; #if 0 // No longer used, replaced by generic 3911 version diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl index 02746a941..411bede46 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.4831.inl @@ -32,6 +32,28 @@ // * // ****************************************************************** +// ****************************************************************** +// * D3DDevice_CreateTexture2 +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_CreateTexture2, 4831, 12) + + { 0x00, 0x56 }, + { 0x01, 0x57 }, + + { 0x10, 0x0F }, + { 0x11, 0x94 }, + { 0x12, 0xC2 }, + { 0x13, 0x8D }, + { 0x14, 0x4C }, + { 0x15, 0x24 }, + { 0x16, 0x28 }, + { 0x17, 0x51 }, + + { 0x51, 0x24 }, + { 0x52, 0xF7 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 4831 version // ****************************************************************** // * D3DDevice_CreateTexture2 // ****************************************************************** @@ -61,6 +83,7 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 4831, 12) { 0x88, 0xC2 }, { 0x89, 0x1C }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetTexture diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl index 11875f75f..420364944 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5028.inl @@ -146,6 +146,32 @@ OOVPA_NO_XREF(D3DDevice_CreateTexture2, 5028, 11) // Also for 5233, 5344, 5558, { 0x52, 0xF7 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5028, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x1954 + { 0x17, 0x05 }, + { 0x18, 0x54 }, + { 0x19, 0x19 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5028 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -159,7 +185,7 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5028, 7) { 0x1C, 0x50 }, { 0x23, 0xC3 }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_GetBackBuffer2 // ****************************************************************** @@ -485,14 +511,24 @@ OOVPA_END; // ****************************************************************** // * D3D::SetFence // ****************************************************************** -OOVPA_XREF(D3D_SetFence, 5028, 7, +OOVPA_XREF(D3D_SetFence, 5028, 14, XREF_D3D_SetFence, XRefZero) { 0x0E, 0x05 }, { 0x18, 0xC9 }, + + { 0x28, 0xBA }, + { 0x29, 0x90 }, + { 0x2A, 0x1D }, + { 0x2B, 0x04 }, + { 0x2C, 0x00 }, + + { 0x3C, 0x83 }, + { 0x3D, 0xE1 }, { 0x3E, 0x3F }, + { 0x5E, 0x28 }, { 0x86, 0x5D }, { 0x98, 0xE8 }, @@ -624,14 +660,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5028, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5028, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x80 }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -653,14 +699,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5028, 7) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5028, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x6C }, + { 0x08, 0x03 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -1126,6 +1182,31 @@ OOVPA_NO_XREF(D3DDevice_RunPushBuffer, 5120, 13) { 0x95, 0x8B }, OOVPA_END; #endif + +// ****************************************************************** +// * D3DDevice_GetShaderConstantMode +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5028, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0xD8 }, + { 0x08, 0x14 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + // ****************************************************************** // * Rollback support signature(s) // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl index 06559f61f..ef01643ef 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5344.inl @@ -126,6 +126,40 @@ OOVPA_NO_XREF(D3DDevice_SetRenderState_Dxt1NoiseEnable, 5344, 10) { 0x24, 0x20 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetLight +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetLight, 5344, 15) + + // D3DDevice_SetLight+0x1f : add REG, 0x10 + { 0x1F, 0x83 }, + { 0x21, 0x10 }, + + // D3DDevice_SetLight+0x22 : and REG, 0xfffffff0 + { 0x22, 0x83 }, + { 0x24, 0xf0 }, + + // D3DDevice_SetLight+0x2c : push 0x24800000 + { 0x2C, 0x68 }, + { 0x2D, 0x00 }, + { 0x2E, 0x00 }, + { 0x2F, 0x80 }, + { 0x30, 0x24 }, + + // D3DDevice_SetLight+0x65 : jz +8 + { 0x65, 0x74 }, + { 0x66, 0x08 }, + + // D3DDevice_SetLight+0xe3 : jz +8 + { 0xE3, 0x74 }, + { 0xE4, 0x08 }, + + // D3DDevice_SetLight+0xfe : shr ???, 2 + { 0xFE, 0xC1 }, + { 0x100, 0x02 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_SetLight // ****************************************************************** @@ -140,6 +174,7 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5344, 8) { 0xDE, 0x03 }, { 0xFE, 0xC1 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_SetRenderState_MultiSampleRenderTargetMode @@ -352,6 +387,28 @@ OOVPA_NO_XREF(D3DDevice_SetSoftDisplayFilter, 5344, 12) { 0x4F, 0x04 }, OOVPA_END; #endif + +// ****************************************************************** +// * D3DDevice_SetMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetMaterial, 5344, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0xE0 }, + { 0x0F, 0x0A }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic another 5344 version // ****************************************************************** // * D3DDevice_SetMaterial // ****************************************************************** @@ -367,7 +424,7 @@ OOVPA_NO_XREF(D3DDevice_SetMaterial, 5344, 9) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; - +#endif // ****************************************************************** // * Get2DSurfaceDesc // ****************************************************************** @@ -635,6 +692,32 @@ OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5344, 8) { 0x3C, 0x68 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_DrawVerticesUP +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5344, 16) + + { 0x03, 0x83 }, + { 0x04, 0xEC }, + { 0x05, 0x14 }, + + { 0x25, 0x8B }, + { 0x26, 0x4D }, + { 0x27, 0x08 }, + { 0x28, 0x8B }, + { 0x29, 0x5D }, + { 0x2A, 0x10 }, + { 0x2B, 0x8B }, + { 0x2C, 0x75 }, + { 0x2D, 0x14 }, + { 0x2E, 0xC7 }, + { 0x2F, 0x00 }, + + { 0x50, 0xC3 }, + { 0x51, 0x8B }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_DrawVerticesUP // ****************************************************************** @@ -656,6 +739,7 @@ OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5344, 10) { 0xC5, 0xFE }, { 0xC6, 0x80 }, OOVPA_END; +#endif #if 0 // Used 4361 // ****************************************************************** // * D3DDevice_SetVertexDataColor @@ -938,6 +1022,27 @@ OOVPA_NO_XREF(D3DDevice_GetBackMaterial, 5344, 8) { 0x1A, 0xC2 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_SetBackMaterial +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5344, 11) + + { 0x04, 0x08 }, + + { 0x0C, 0x81 }, + { 0x0D, 0xC7 }, + { 0x0E, 0x24 }, + { 0x0F, 0x0B }, + { 0x10, 0x00 }, + + { 0x16, 0x00 }, + { 0x1F, 0x81 }, + { 0x22, 0x90 }, + { 0x2C, 0x5E }, + { 0x2E, 0x04 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5344 version // ****************************************************************** // * D3DDevice_SetBackMaterial // ****************************************************************** @@ -952,7 +1057,34 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 5344, 8) { 0x2C, 0x5E }, { 0x2E, 0x04 }, OOVPA_END; +#endif +// ****************************************************************** +// * D3DDevice_GetProjectionViewportMatrix +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 5344, 16) // Up to 5455 + + { 0x02, 0x35 }, + + { 0x07, 0x57 }, + + { 0x0E, 0x60 }, // 4361 0x7004 + { 0x0F, 0x05 }, + { 0x10, 0x00 }, + { 0x11, 0x00 }, + { 0x12, 0xB9 }, + { 0x13, 0x10 }, + { 0x14, 0x00 }, + { 0x15, 0x00 }, + { 0x16, 0x00 }, + { 0x17, 0xF3 }, + { 0x18, 0xA5 }, + { 0x19, 0x5F }, + { 0x1A, 0x5E }, + { 0x1B, 0xC2 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5344 version // ****************************************************************** // * D3DDevice_GetProjectionViewportMatrix // ****************************************************************** @@ -966,7 +1098,7 @@ OOVPA_NO_XREF(D3DDevice_GetProjectionViewportMatrix, 5344, 7) { 0x16, 0x00 }, { 0x1A, 0x5E }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_GetTile // ****************************************************************** @@ -1044,6 +1176,32 @@ OOVPA_NO_XREF(D3DDevice_SetTexture, 5344, 26) { 0x1F, 0x24 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5344, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x198C + { 0x17, 0x05 }, + { 0x18, 0x8C }, + { 0x19, 0x19 }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5344 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -1063,6 +1221,7 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5344, 13) { 0x1E, 0x15 }, { 0x23, 0xC3 }, OOVPA_END; +#endif // ****************************************************************** // * D3DDevice_BeginPush @@ -1136,17 +1295,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5344, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5344, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x08 }, { 0x08, 0x15 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl index 56fc9c25d..1cb09e225 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl @@ -348,7 +348,7 @@ OOVPA_END; OOVPA_NO_XREF(D3DDevice_SetLight, 5558, 15) // D3DDevice_SetLight+0x1f : add REG, 0x10 - { 0x1f, 0x83 }, + { 0x1F, 0x83 }, { 0x21, 0x10 }, // D3DDevice_SetLight+0x22 : and REG, 0xfffffff0 @@ -356,10 +356,10 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5558, 15) { 0x24, 0xf0 }, // D3DDevice_SetLight+0x2c : push 0x24800000 - { 0x2c, 0x68 }, - { 0x2d, 0x00 }, - { 0x2e, 0x00 }, - { 0x2f, 0x80 }, + { 0x2C, 0x68 }, + { 0x2D, 0x00 }, + { 0x2E, 0x00 }, + { 0x2F, 0x80 }, { 0x30, 0x24 }, // D3DDevice_SetLight+0x65 : jz +8 @@ -367,11 +367,11 @@ OOVPA_NO_XREF(D3DDevice_SetLight, 5558, 15) { 0x66, 0x08 }, // D3DDevice_SetLight+0xe3 : jz +8 - { 0xe3, 0x74 }, - { 0xe4, 0x08 }, + { 0xE3, 0x74 }, + { 0xE4, 0x08 }, // D3DDevice_SetLight+0xfe : shr ???, 2 - { 0xfe, 0xc1 }, + { 0xFE, 0xC1 }, { 0x100, 0x02 }, OOVPA_END; #if 0 // Moved to 5455 @@ -528,6 +528,32 @@ OOVPA_NO_XREF(D3DDevice_SetPalette, 5558, 12) { 0x8B, 0x08 }, OOVPA_END; +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5558, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x1DAC + { 0x17, 0x05 }, + { 0x18, 0xAC }, + { 0x19, 0x1D }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5558 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -541,7 +567,7 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5558, 7) { 0x1C, 0x50 }, { 0x23, 0xC3 }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_DrawIndexedVerticesUP // ****************************************************************** @@ -568,7 +594,7 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_SetTransform // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_SetTransform, 5558, 10) +OOVPA_NO_XREF(D3DDevice_SetTransform, 5558, 12) { 0x04, 0x8B }, { 0x05, 0x54 }, @@ -578,6 +604,10 @@ OOVPA_NO_XREF(D3DDevice_SetTransform, 5558, 10) { 0x09, 0x8B }, { 0x0A, 0x1D }, { 0x0F, 0x56 }, + + { 0x2C, 0x8B }, + { 0x2D, 0x0C }, + { 0x9C, 0x00 }, { 0x9D, 0x00 }, OOVPA_END; @@ -653,7 +683,7 @@ OOVPA_END; // ****************************************************************** // * D3D::SetFence // ****************************************************************** -OOVPA_XREF(D3D_SetFence, 5558, 8, +OOVPA_XREF(D3D_SetFence, 5558, 9, XREF_D3D_SetFence, XRefZero) @@ -666,6 +696,8 @@ OOVPA_XREF(D3D_SetFence, 5558, 8, { 0x14, 0x8B }, { 0x15, 0x7E }, { 0x16, 0x2C }, + + { 0x39, 0x0C }, OOVPA_END; // ****************************************************************** @@ -1500,6 +1532,28 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5455, 12) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_PersistDisplay +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5558, 12) + + { 0x00, 0x83 }, + { 0x1B, 0x6A }, + + { 0x28, 0x00 }, + { 0x29, 0x85 }, + { 0x2A, 0xC0 }, + { 0x2B, 0x75 }, + { 0x2C, 0x0A }, + { 0x2D, 0xB8 }, + { 0x2E, 0x05 }, + { 0x2F, 0x40 }, + + { 0x49, 0x85 }, + { 0x6B, 0xE1 }, +OOVPA_END; + +#if 0 // No longer used, replaced by generic 5558 version // ****************************************************************** // * D3DDevice_PersistDisplay // ****************************************************************** @@ -1513,7 +1567,7 @@ OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5558, 7) { 0xBE, 0x00 }, { 0xDE, 0x8B }, OOVPA_END; - +#endif // ****************************************************************** // * D3DCubeTexture_GetCubeMapSurface // ****************************************************************** @@ -1935,17 +1989,24 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5558, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5558, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x18 }, { 0x08, 0x19 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -1978,7 +2039,9 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5558, 9) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5558, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, @@ -1986,8 +2049,14 @@ OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5558, 9) { 0x08, 0x07 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; @@ -2051,6 +2120,30 @@ OOVPA_NO_XREF(D3DDevice_SetSwapCallback, 5659, 12) OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_GetVertexShader +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5558, 16) + + { 0x00, 0xA1 }, + + { 0x05, 0x8B }, + { 0x06, 0x88 }, + { 0x07, 0x94 }, + { 0x08, 0x07 }, + { 0x09, 0x00 }, + { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, + { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, + { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, + { 0x13, 0x00 }, +OOVPA_END; + // ****************************************************************** // * Rollback support signature(s) // ****************************************************************** diff --git a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl index b198aab4e..5b3a75636 100644 --- a/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/D3D8.1.0.5788.inl @@ -443,6 +443,32 @@ OOVPA_XREF(D3DDevice_SetVerticalBlankCallback, 5788, 7, OOVPA_END; #endif +// ****************************************************************** +// * D3DDevice_BlockUntilVerticalBlank +// ****************************************************************** +OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5788, 11) + + // D3DDevice_BlockUntilVerticalBlank+0x05 : push 0; push 0; push 1 + { 0x05, 0x6A }, + { 0x06, 0x00 }, + { 0x07, 0x6A }, + { 0x08, 0x00 }, + { 0x09, 0x6A }, + { 0x0A, 0x01 }, + + // D3DDevice_BlockUntilVerticalBlank+0x17 : add eax, 0x1DBC + { 0x17, 0x05 }, + { 0x18, 0xBC }, + { 0x19, 0x1D }, + + // D3DDevice_BlockUntilVerticalBlank+0x1D : call [KrnlImport] + { 0x1D, 0xFF }, + + // D3DDevice_BlockUntilVerticalBlank+0x23 : retn + { 0x23, 0xC3 }, +OOVPA_END; + +#if 0 // No longer used, replaced by another 5788 version // ****************************************************************** // * D3DDevice_BlockUntilVerticalBlank // ****************************************************************** @@ -456,7 +482,7 @@ OOVPA_NO_XREF(D3DDevice_BlockUntilVerticalBlank, 5788, 7) { 0x1C, 0x50 }, { 0x23, 0xC3 }, OOVPA_END; - +#endif // ****************************************************************** // * D3DDevice_SetBackMaterial // ****************************************************************** @@ -1013,38 +1039,57 @@ OOVPA_END; // ****************************************************************** // * D3DDevice_GetShaderConstantMode // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5788, 10) +OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 5788, 16) { 0x00, 0xA1 }, + { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x28 }, { 0x08, 0x19 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetVertexShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5788, 7) +OOVPA_NO_XREF(D3DDevice_GetVertexShader, 5788, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, { 0x07, 0x98 }, + { 0x08, 0x07 }, + { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END; // ****************************************************************** // * D3DDevice_GetPixelShader // ****************************************************************** -OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5788, 9) +OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5788, 16) + + { 0x00, 0xA1 }, { 0x05, 0x8B }, { 0x06, 0x88 }, @@ -1052,8 +1097,14 @@ OOVPA_NO_XREF(D3DDevice_GetPixelShader, 5788, 9) { 0x08, 0x07 }, { 0x09, 0x00 }, { 0x0A, 0x00 }, + { 0x0B, 0x8B }, + { 0x0C, 0x54 }, { 0x0D, 0x24 }, + { 0x0E, 0x04 }, + { 0x0F, 0x89 }, { 0x10, 0x0A }, + { 0x11, 0xC2 }, + { 0x12, 0x04 }, { 0x13, 0x00 }, OOVPA_END;