From 2dc4cc70af68b36718abf26fbe6596d6d8d2ed48 Mon Sep 17 00:00:00 2001 From: RadWolfie Date: Sun, 8 Oct 2017 19:21:45 -0500 Subject: [PATCH] Finalize 90% Complete DSound 4039 Database - Add CMcpxStream_Flush to 4039 - Add CDirectSoundStream_AddRef to 4039 - Add CDirectSoundStream_Flush to 4039 - Add CDirectSoundStream_Process to 4039 - Add CDirectSoundStream_GetInfo to 4039 - Add CMcpxStream_Discontinuity to 4039 - Add CDirectSoundStream_Discontinuity to 4039 - Add CDirectSoundStream_SetMixBins to 4039 - Add IDirectSoundStream_SetMixBins to 4039 - Removed IDirectSoundBuffer_SetNotificationPositions from 4627 ALL DSound OOVPAs for NightCaster are completed, however title does not have full library compiled necessary to finish 4039 database. Verified with - [3925] Cel Damage - [3936] Silent Hill 2 - [4039] Nightcaster - [4134] Blood Omen 2 - [4242] Gauntlet Dark Legacy - [4361] Burnout - [4637] Turok Evolution - [5233] Futurama - [5558] Dino Crisis 3 - [5849] Lego Star Wars --- src/CxbxKrnl/HLEDataBase.h | 2 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl | 1 + src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl | 22 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl | 245 ++++++++++++++++++- src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl | 5 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl | 2 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl | 2 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl | 2 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl | 2 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl | 2 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl | 2 +- src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl | 61 +++-- 12 files changed, 307 insertions(+), 41 deletions(-) diff --git a/src/CxbxKrnl/HLEDataBase.h b/src/CxbxKrnl/HLEDataBase.h index b15b7cd07..a995ee75b 100644 --- a/src/CxbxKrnl/HLEDataBase.h +++ b/src/CxbxKrnl/HLEDataBase.h @@ -231,7 +231,6 @@ enum XRefDataBaseOffset XREF_CDirectSoundVoice_SetPitch, XREF_CDirectSoundBuffer_SetPitch, XREF_CDirectSoundStream_SetPitch, - XREF_DSBUFFERSETVOLUMEA, XREF_CMcpxVoiceClient_SetVolume, XREF_DSBUFFERSETCURRENTPOSITIONA, XREF_DSBUFFERSETCURRENTPOSITIONB, @@ -342,6 +341,7 @@ enum XRefDataBaseOffset XREF_CDirectSoundVoice_SetI3DL2Source, XREF_CDirectSoundStream_SetMixBinVolumes_12, XREF_CDirectSoundStream_SetMixBinVolumes_8, + XREF_CDirectSoundStream_SetMixBins, XREF_CDirectSoundStream_SetHeadroom, XREF_CDirectSoundVoice_SetOutputBuffer, XREF_CDirectSoundBuffer_SetOutputBuffer, diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl index 81ea4572f..ebb9fade6 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3911.inl @@ -1962,6 +1962,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundBuffer_SetNotificationPositions // ****************************************************************** +//Generic OOVPA as of 3911 and newer OOVPA_XREF(IDirectSoundBuffer_SetNotificationPositions, 3911, 9, XRefNoSaveIndex, diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl index 163604e14..5ce8ad491 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl @@ -495,12 +495,13 @@ OOVPA_XREF(CMcpxVoiceClient_SetVolume, 3936, 11, { 0x37, 0xF9 }, OOVPA_END; #endif +#if 0 // Replaced with accurate OOVPA 3911 // ****************************************************************** // * CDirectSoundVoice_SetVolume // ****************************************************************** OOVPA_XREF(CDirectSoundVoice_SetVolume, 3936, 12, - XREF_DSBUFFERSETVOLUMEA, + XREF_CDirectSoundVoice_SetVolume, XRefOne) // CDirectSoundVoice_SetVolume+0x1E : call [CMcpxVoiceClient_SetVolume] @@ -525,7 +526,8 @@ OOVPA_XREF(CDirectSoundVoice_SetVolume, 3936, 12, { 0x37, 0xC2 }, { 0x38, 0x08 }, OOVPA_END; - +#endif +#if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetVolume // ****************************************************************** @@ -535,7 +537,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetVolume, 3936, 10, XRefOne) // IDirectSoundBuffer_SetVolume+0x15 : call [CDirectSoundVoice_SetVolume] - XREF_ENTRY( 0x15, XREF_DSBUFFERSETVOLUMEA ), + XREF_ENTRY( 0x15, XREF_CDirectSoundVoice_SetVolume ), // IDirectSoundBuffer_SetVolume+0x04 : push [esp+0x08] { 0x04, 0xFF }, @@ -552,6 +554,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetVolume, 3936, 10, { 0x19, 0xC2 }, { 0x1A, 0x08 }, OOVPA_END; +#endif #if 0 // Moved to 3911 // ****************************************************************** // * CMcpxBuffer_SetCurrentPosition @@ -928,6 +931,7 @@ OOVPA_XREF(CDirectSoundVoice_SetMixBins, 3936, 9, { 0x56, 0x08 }, OOVPA_END; #endif +#if 0 // Moved to 3911 // ****************************************************************** // * CDirectSoundStream_SetMixBins // ****************************************************************** @@ -954,6 +958,7 @@ OOVPA_XREF(CDirectSoundStream_SetMixBins, 3936, 10, { 0x11, 0xC2 }, { 0x12, 0x08 }, OOVPA_END; +#endif #if 0 // Moved to 3911 // ****************************************************************** // * IDirectSoundBuffer_SetMixBins @@ -1180,7 +1185,7 @@ OOVPA_XREF(CMcpxVoiceClient_SetVolume, 3936, 10, { 0x38, 0x08 }, OOVPA_END; #endif - +#if 0 // Replaced with accurate OOVPA 3911 // ****************************************************************** // * CDirectSoundStream_SetVolume // ****************************************************************** @@ -1207,6 +1212,7 @@ OOVPA_XREF(CDirectSoundStream_SetVolume, 3936, 10, { 0x11, 0xC2 }, { 0x12, 0x08 }, OOVPA_END; +#endif #if 0 // Moved to 3911 // ****************************************************************** // * CMcpxVoiceClient_Set3dParameters @@ -4013,8 +4019,8 @@ OOVPATable DSound_3936[] = { REGISTER_OOVPA(CDirectSoundBuffer_GetStatus, 3911, XREF), REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 3911, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 3911, XREF), - REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 3936, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 3936, PATCH), + REGISTER_OOVPA(CDirectSoundVoice_SetVolume, 3911, XREF), + REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 3911, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetCurrentPosition, 3911, XREF), REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 3911, PATCH), @@ -4028,7 +4034,7 @@ OOVPATable DSound_3936[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 3911, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetMixBins, 3911, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetMixBins, 3911, XREF), - REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 3936, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetMixBins, 3911, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 3911, PATCH), REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 3911, XREF), REGISTER_OOVPA(CDirectSoundBuffer_GetCurrentPosition, 3911, XREF), @@ -4038,7 +4044,7 @@ OOVPATable DSound_3936[] = { REGISTER_OOVPA(IDirectSoundBuffer_Play, 3911, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_Stop, 3911, XREF), REGISTER_OOVPA(IDirectSoundBuffer_Stop, 3911, PATCH), - REGISTER_OOVPA(CDirectSoundStream_SetVolume, 3936, PATCH), + REGISTER_OOVPA(CDirectSoundStream_SetVolume, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeAngles, 3911, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_Set3dConeOutsideVolume, 3911, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetConeOutsideVolume, 3911, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl index a2d4c75e6..9a088e143 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4039.inl @@ -2921,6 +2921,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetFrequency // ****************************************************************** +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetFrequency, 4039, 2, XRefNoSaveIndex, @@ -2936,7 +2937,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetVolume // ****************************************************************** -//Generic OOVPA as of 4039 and newer +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetVolume, 4039, 2, XRefNoSaveIndex, @@ -2975,7 +2976,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetPitch // ****************************************************************** -//Generic OOVPA as of 4039 and newer +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetPitch, 4039, 2, XRefNoSaveIndex, @@ -2991,7 +2992,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetLFO // ****************************************************************** -//Generic OOVPA as of 4039 and newer +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetLFO, 4039, 2, XRefNoSaveIndex, @@ -3007,7 +3008,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetEG // ****************************************************************** -//Generic OOVPA as of 4039 and newer +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetEG, 4039, 2, XRefNoSaveIndex, @@ -3023,7 +3024,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetFilter // ****************************************************************** -//Generic OOVPA as of 4039 and newer +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetFilter, 4039, 2, XRefNoSaveIndex, @@ -3039,7 +3040,7 @@ OOVPA_END; // ****************************************************************** // * IDirectSoundStream_SetMixBinVolumes // ****************************************************************** -//Generic OOVPA as of 4039 and newer +// Generic OOVPA as of 4039 and newer OOVPA_XREF(IDirectSoundStream_SetMixBinVolumes_8, 4039, 2, XRefNoSaveIndex, @@ -3174,6 +3175,7 @@ OOVPA_END; // ****************************************************************** // * CDirectSoundStream::Release // ****************************************************************** +// NOTE: Has identical function to DirectSound::CAc97MediaObject::Release OOVPA_XREF(CDirectSoundStream_Release, 4039, 12, XRefNoSaveIndex, @@ -3316,3 +3318,234 @@ OOVPA_XREF(CDirectSound_EnableHeadphones, 4039, 16, { 0x7F, 0xC2 }, { 0x80, 0x08 }, OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Process +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_Process, 4039, 17) + + { 0x00, 0x57 }, + + { 0x28, 0x8B }, + { 0x2B, 0x0C }, + + { 0x2C, 0x8B }, + { 0x2E, 0x24 }, + + { 0x34, 0x85 }, + { 0x35, 0xC0 }, + + //CDirectSoundStream_Process+0x39 : mov eax, 88780032h + { 0x39, 0x32 }, + { 0x3A, 0x00 }, + { 0x3B, 0x78 }, + { 0x3C, 0x88 }, + + { 0x3F, 0xFF }, + { 0x42, 0x10 }, + + { 0x43, 0x8B }, + { 0x45, 0x24 }, + + { 0x60, 0xC2 }, + { 0x61, 0x0C }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Flush +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Flush, 4039, 10, + XREF_CMcpxStream_Flush, + XRefZero) + + { 0x00, 0x55 }, + { 0x01, 0x8B }, + + { 0x09, 0x33 }, + + { 0x32, 0x83 }, + { 0x33, 0xFF }, + { 0x34, 0x03 }, + + { 0x4A, 0xE8 }, + + { 0x58, 0xE8 }, + + + { 0x98, 0xC9 }, + { 0x99, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Flush +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Flush, 4039, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Flush+0x2F : call [CMcpxStream_Flush] + XREF_ENTRY( 0x30, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x27, 0x8B }, + { 0x2A, 0x08 }, + + { 0x2B, 0x8B }, + { 0x2D, 0x24 }, + + { 0x2F, 0xE8 }, + + //CDirectSoundStream_Flush+0x49 : ret 4 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_AddRef +// ****************************************************************** +// NOTE: Has identical function to DirectSound::CAc97MediaObject::AddRef +OOVPA_XREF(CDirectSoundStream_AddRef, 4039, 11, + XRefNoSaveIndex, + XRefZero) + + { 0x00, 0xE8 }, + + { 0x24, 0x8B }, + { 0x25, 0x4C }, + + { 0x28, 0xFF }, + { 0x29, 0x41 }, + { 0x2A, 0x08 }, + + { 0x2E, 0x8B }, + { 0x2F, 0x71 }, + { 0x30, 0x08 }, + + //CDirectSoundStream_AddRef+0x41 : ret 4 + { 0x41, 0xC2 }, + { 0x42, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_GetInfo +// ****************************************************************** +OOVPA_NO_XREF(CDirectSoundStream_GetInfo, 4039, 17) + + //CDirectSoundStream_GetInfo+0x00 : push ebx + { 0x00, 0x53 }, + + //CDirectSoundStream_GetInfo+0x2D : mov edi, dword ptr [esp + 10h] + { 0x2D, 0x8B }, + { 0x2E, 0x7C }, + { 0x2F, 0x24 }, + { 0x30, 0x10 }, + + //CDirectSoundStream_GetInfo+0x37 : mov, dword ptr [edi + 24h] + { 0x37, 0x8B }, + { 0x38, 0x4F }, + { 0x39, 0x24 }, + + //CDirectSoundStream_GetInfo+0x42 : mov eax, dword ptr [edi + 20h] + { 0x42, 0x8B }, + { 0x43, 0x47 }, + { 0x44, 0x20 }, + + //CDirectSoundStream_GetInfo+0x48 : and dword ptr [esi + 8], 0 + { 0x48, 0x83 }, + { 0x49, 0x66 }, + { 0x4A, 0x08 }, + { 0x4B, 0x00 }, + + //CDirectSoundStream_GetInfo+0x63 : ret 8 + { 0x63, 0xC2 }, + { 0x64, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * CMcpxStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CMcpxStream_Discontinuity, 4039, 7, + XREF_CMcpxStream_Discontinuity, + XRefOne) + + //CMcpxStream_Discontinuity+0x17 : call [CMcpxStream_Flush] + XREF_ENTRY ( 0x18, XREF_CMcpxStream_Flush ), + + { 0x00, 0x56 }, + + { 0x01, 0x8B }, + + { 0x15, 0x8B }, + + { 0x17, 0xE8 }, + + { 0x1E, 0x5E }, + + { 0x1F, 0xC3 }, +OOVPA_END; + +// ****************************************************************** +// * CDirectSoundStream_Discontinuity +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_Discontinuity, 4039, 9, + XRefNoSaveIndex, + XRefOne) + + //CDirectSoundStream_Discontinuity+0x2F : call [CMcpxStream_Discontinuity] + XREF_ENTRY( 0x30, XREF_CMcpxStream_Discontinuity ), + + { 0x00, 0x56 }, + + { 0x27, 0x8B }, + { 0x2A, 0x08 }, + + { 0x2B, 0x8B }, + { 0x2D, 0x24 }, + + { 0x2F, 0xE8 }, + + //CDirectSoundStream_Discontinuity+0x49 : ret 4 + { 0x49, 0xC2 }, + { 0x4A, 0x04 }, +OOVPA_END; + +// ****************************************************************** +// * DirectSound::CDirectSoundStream::SetMixBins +// ****************************************************************** +OOVPA_XREF(CDirectSoundStream_SetMixBins, 4039, 10, + + XREF_CDirectSoundStream_SetMixBins, + XRefOne) + + XREF_ENTRY( 0x35, XREF_CDirectSoundVoice_SetMixBins ), + + { 0x00, 0x56 }, + + { 0x0C, 0x00 }, + + { 0x13, 0x74 }, + { 0x20, 0xB8 }, + { 0x29, 0x24 }, + { 0x34, 0xE8 }, + { 0x3F, 0x68 }, + + { 0x4E, 0xC2 }, + { 0x4F, 0x08 }, +OOVPA_END; + +// ****************************************************************** +// * IDirectSoundStream_SetMixBins +// ****************************************************************** +// Generic OOVPA as of 4039 and newer +OOVPA_XREF(IDirectSoundStream_SetMixBins, 4039, 2, + + XRefNoSaveIndex, + XRefOne) + + // IDirectSoundStream_SetMixBins+0x00 : jmp [CDirectSoundStream_SetMixBins] + XREF_ENTRY( 0x01, XREF_CDirectSoundStream_SetMixBins ), + + // IDirectSoundStream_SetMixBins+0x00 : jmp 0x........ + { 0x00, 0xE9 }, +OOVPA_END; diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl index 3a28f6a3e..b6d48d23f 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl @@ -1270,7 +1270,7 @@ OOVPA_NO_XREF(XFileCreateMediaObjectEx, 4627, 7) { 0x46, 0x4C }, { 0x52, 0xFF }, OOVPA_END; - +#if 0 // Duplicate OOVPA from 3911 // ****************************************************************** // * IDirectSoundBuffer_SetNotificationPositions // ****************************************************************** @@ -1290,6 +1290,7 @@ OOVPA_XREF(IDirectSoundBuffer_SetNotificationPositions, 4627, 9, { 0x1D, 0xC2 }, { 0x1E, 0x0C }, OOVPA_END; +#endif #if 0 // Moved to 4242 // ****************************************************************** // * CMcpxVoiceClient::SetLFO @@ -1658,7 +1659,7 @@ OOVPATable DSound_4627[] = { REGISTER_OOVPA(XFileCreateMediaObjectEx, 4627, PATCH), REGISTER_OOVPA(XWaveFileCreateMediaObject, 4627, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), // Uncommenting these fixes dashboard 4920 - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl index 200e635fe..398b4f4bc 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5028.inl @@ -242,7 +242,7 @@ OOVPATable DSound_5028[] = { REGISTER_OOVPA(XFileCreateMediaObjectEx, 5028, PATCH), REGISTER_OOVPA(XWaveFileCreateMediaObject, 4627, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4242, XREF), REGISTER_OOVPA(CDirectSoundVoice_SetLFO, 4039, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetLFO, 4242, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl index 878140585..a12006961 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5233.inl @@ -528,7 +528,7 @@ OOVPATable DSound_5233[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 4134, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl index d00e66c5e..daea6ad41 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5344.inl @@ -1046,7 +1046,7 @@ OOVPATable DSound_5344[] = { REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetConeOrientation, 4134, PATCH), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl index 3242d9267..8273504da 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl @@ -1787,7 +1787,7 @@ OOVPATable DSound_5558[] = { REGISTER_OOVPA(IDirectSoundBuffer_Use3DVoiceData, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), REGISTER_OOVPA(CDirectSoundVoice_SetPitch, 4039, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl index a207be11a..6b1ddf191 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5788.inl @@ -724,7 +724,7 @@ OOVPATable DSound_5788[] = { REGISTER_OOVPA(IDirectSoundBuffer_Use3DVoiceData, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), REGISTER_OOVPA(IDirectSound_GetCaps, 3911, PATCH), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl index 40073ea21..fa14a2775 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl @@ -239,7 +239,7 @@ OOVPATable DSound_5849[] = { REGISTER_OOVPA(IDirectSoundBuffer_Use3DVoiceData, 5558, PATCH), REGISTER_OOVPA(CDirectSoundStream_Use3DVoiceData, 5558, XREF), REGISTER_OOVPA(CDirectSoundBuffer_SetNotificationPositions, 4627, XREF), - REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, PATCH), + REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 3911, PATCH), REGISTER_OOVPA(CDirectSoundStream_SetFrequency, 5233, PATCH), REGISTER_OOVPA(IDirectSoundBuffer_Unlock, 3911, PATCH), REGISTER_OOVPA(CDirectSound_GetCaps, 4361, XREF), diff --git a/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl b/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl index e09b305b9..16a926ae4 100644 --- a/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl +++ b/src/CxbxKrnl/HLEDataBase/DSound.OOVPA.inl @@ -36,9 +36,9 @@ // Titles which did compiled with full libary // [revi] Title Name | Verify | Comments //------------------------------------------------------------------- -// * [3925] Cel Damage | 100% | Need to add 3 missing OOVPAs, see TODO issue list. -// * [3936] Silent Hill 2 | 100% | Need verify non-exist function is there or not -// * [4039] Nightcaster | ??% | Need to create bunch of OOVPAs... +// * [3925] Cel Damage | 100% | Contain full library. Need to add 3 missing OOVPAs, see TODO issue list. +// * [3936] Silent Hill 2 | 80% | Need verify non-exist function is there or not, re-check missing detection. +// * [4039] Nightcaster | 100% | Only has 90% of the library compiled with xbe build. // * [4134] RaceX (Demo) | 1% | Does not have full library? Need to create bunch of OOVPAs... // * [4134] Blood Omen 2 | 1% | Does not have full library? Need to create bunch of OOVPAs... @@ -87,10 +87,7 @@ // * IDirectSoundStream_SetHeadroom & CDirectSoundStream_SetHeadroom // * IDirectSoundStream_SetFrequency & CDirectSoundStream_SetFrequency // * IDirectSoundStream_SetMixBins & CDirectSoundStream_SetMixBins -// * Need to include patch, func export, support for IDirectSoundStream_Setxxxxx from above. -// * 4039 OOVPA messed up? -// * IDirectSoundStream_SetMixBins should be IDirectSoundStream_SetHeadroom? -// * Need to dig deeper... +// * Need to include func export support for IDirectSoundStream_Setxxxxx from above. // * 3911 - Need to add: // * XAudioCreateAdpcmFormat // * XAudioCreatePcmFormat @@ -103,11 +100,39 @@ // * IsValidPcmFormat // * IsValidXboxAdpcmFormat // * CopyFormatAlloc +// * List of functions might need to be register: +// * IDirectSoundBuffer_QueryInterface +// * IDirectSoundBuffer_QueryInterfaceC // * List of internal functions are not register: // * CDirectSoundBuffer_Release (Is unique, however need multiple OOVPAs to register all revisions) // * Using XREF_DS_CRefCount_Release // * CDirectSound_Release (Is unique, however need multiple OOVPAs to register all revisions) // * Using XREF_DS_CRefCount_Release +// * 3936 verification needed: +// * CDirectSoundBuffer_SetVolume +// * IDirectSoundBuffer_SetVolume +// * What else? Need to re-check the list again... +// * 4039 verification needed: +// * DirectSoundCreateBuffer +// * DirectSoundCreateStream +// * DirectSoundUseLightHRTF +// * IDirectSound_CommitEffectData +// * IDirectSound_GetCaps +// * IDirectSound_GetEffectData +// * IDirectSound_GetSpeakerConfig +// * IDirectSound_GetTime +// * IDirectSound_SetAllParameters +// * IDirectSound_SetEffectData +// * IDirectSound_SetMixBinHeadroom +// * IDirectSoundBuffer_PlayEx +// * IDirectSoundBuffer_SetI3DL2Source +// * IDirectSoundBuffer_SetNotificationPositions +// * CDirectSoundStream_SetFormat +// * CDirectSoundStream_SetHeadroom +// * CDirectSoundStream_SetI3DL2Source +// * CDirectSoundStream_SetRolloffCurve +// * CDirectSoundStream_SetRolloffFactor +// * IDirectSoundStream_SetHeadroom #ifndef DSOUND_OOVPA_INL @@ -157,8 +182,8 @@ OOVPATable DSound_OOVPAV2[] = { REGISTER_OOVPAS(CMcpxBuffer_SetCurrentPosition, XREF, 3911, 4039, 4134, 5558, 5788), REGISTER_OOVPAS(CMcpxBuffer_Stop, XREF, 3911, 4134, 4242), // NOTE: ?Stop@CMcpxBuffer@DirectSound@@QAEJK@Z REGISTER_OOVPAS(CMcpxBuffer_Stop2, XREF, 4361), // NOTE: ?Stop@CMcpxBuffer@DirectSound@@QAEJ_JK@Z - REGISTER_OOVPAS(CMcpxStream_Discontinuity, XREF, 3911), - REGISTER_OOVPAS(CMcpxStream_Flush, XREF, 3911), + REGISTER_OOVPAS(CMcpxStream_Discontinuity, XREF, 3911, 4039), + REGISTER_OOVPAS(CMcpxStream_Flush, XREF, 3911, 4039), REGISTER_OOVPAS(CMcpxStream_Pause, XREF, 3911, 4039, 4361, 4831, 5788), REGISTER_OOVPAS(CSensaura3d_GetFullHRTFFilterPair, XREF, 3911, 3936), REGISTER_OOVPAS(CSensaura3d_GetLiteHRTFFilterPair, XREF, 3911), @@ -248,14 +273,14 @@ OOVPATable DSound_OOVPAV2[] = { REGISTER_OOVPAS(CDirectSoundBuffer_Stop, XREF, 3911, 4039, 4134), REGISTER_OOVPAS(CDirectSoundBuffer_StopEx, XREF, 3911, 4039, 4361), REGISTER_OOVPAS(CDirectSoundBuffer_Use3DVoiceData, XREF, 5558), - REGISTER_OOVPAS(CDirectSoundStream_AddRef, PATCH, 3911), - REGISTER_OOVPAS(CDirectSoundStream_Discontinuity, PATCH, 3911), - REGISTER_OOVPAS(CDirectSoundStream_Flush, PATCH, 3911), + REGISTER_OOVPAS(CDirectSoundStream_AddRef, PATCH, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundStream_Discontinuity, PATCH, 3911, 4039), + REGISTER_OOVPAS(CDirectSoundStream_Flush, PATCH, 3911, 4039), REGISTER_OOVPAS(CDirectSoundStream_FlushEx, XREF, 4627, 5233, 5788), - REGISTER_OOVPAS(CDirectSoundStream_GetInfo, PATCH, 3911), + REGISTER_OOVPAS(CDirectSoundStream_GetInfo, PATCH, 3911, 4039), REGISTER_OOVPAS(CDirectSoundStream_GetStatus, PATCH, 3911, 4039), REGISTER_OOVPAS(CDirectSoundStream_Pause, PATCH, 3911, 4039, 4361, 5558), - REGISTER_OOVPAS(CDirectSoundStream_Process, PATCH, 3911), + REGISTER_OOVPAS(CDirectSoundStream_Process, PATCH, 3911, 4039), REGISTER_OOVPAS(CDirectSoundStream_Release, PATCH, 3911, 4039, 4134), REGISTER_OOVPAS(CDirectSoundStream_SetAllParameters, PATCH, 3911, 4039, 4134), REGISTER_OOVPAS(CDirectSoundStream_SetConeAngles, PATCH, 3911, 4039), @@ -270,7 +295,7 @@ OOVPATable DSound_OOVPAV2[] = { REGISTER_OOVPAS(CDirectSoundStream_SetLFO, PATCH, 3911, 4039, 4134), REGISTER_OOVPAS(CDirectSoundStream_SetMaxDistance, PATCH, 3911, 4039, 4134), REGISTER_OOVPAS(CDirectSoundStream_SetMinDistance, PATCH, 3911, 4039, 4134, 5344), - REGISTER_OOVPAS(CDirectSoundStream_SetMixBins, PATCH, 3911, 3936, 4627, 5233, 5558), + REGISTER_OOVPAS(CDirectSoundStream_SetMixBins, PATCH, 3911, 4039, 4627, 5233, 5558), REGISTER_OOVPAS(CDirectSoundStream_SetMixBinVolumes_12, PATCH, 3911), //This revision is only used in XDK 3911 to 3936. REGISTER_OOVPAS(CDirectSoundStream_SetMixBinVolumes_8, PATCH, 4039), //Then it has changed in XDK 4039 and higher. REGISTER_OOVPAS(CDirectSoundStream_SetMode, PATCH, 3911, 4039, 4134), @@ -336,7 +361,7 @@ OOVPATable DSound_OOVPAV2[] = { REGISTER_OOVPAS(IDirectSoundBuffer_SetMixBinVolumes_12, PATCH, 3911), //This revision is only used in XDK 3911 to 3936. REGISTER_OOVPAS(IDirectSoundBuffer_SetMixBinVolumes_8, PATCH, 4039), //Then it has changed in XDK 4039 and higher. REGISTER_OOVPAS(IDirectSoundBuffer_SetMode, PATCH, 3911, 4039), - REGISTER_OOVPAS(IDirectSoundBuffer_SetNotificationPositions, PATCH, 3911, 4627), + REGISTER_OOVPAS(IDirectSoundBuffer_SetNotificationPositions, PATCH, 3911), REGISTER_OOVPAS(IDirectSoundBuffer_SetOutputBuffer, PATCH, 3911), REGISTER_OOVPAS(IDirectSoundBuffer_SetPitch, PATCH, 3911, 4039), REGISTER_OOVPAS(IDirectSoundBuffer_SetPlayRegion, PATCH, 4039, 4361), @@ -344,7 +369,7 @@ OOVPATable DSound_OOVPAV2[] = { REGISTER_OOVPAS(IDirectSoundBuffer_SetRolloffCurve, PATCH, 4627), REGISTER_OOVPAS(IDirectSoundBuffer_SetRolloffFactor, PATCH, 4134, 5788), REGISTER_OOVPAS(IDirectSoundBuffer_SetVelocity, PATCH, 3911, 5558), - REGISTER_OOVPAS(IDirectSoundBuffer_SetVolume, PATCH, 3911, 3936, 4039), + REGISTER_OOVPAS(IDirectSoundBuffer_SetVolume, PATCH, 3911, 4039), REGISTER_OOVPAS(IDirectSoundBuffer_Stop, PATCH, 3911), REGISTER_OOVPAS(IDirectSoundBuffer_StopEx, PATCH, 3911), REGISTER_OOVPAS(IDirectSoundBuffer_Unlock, PATCH, 3911), @@ -363,7 +388,7 @@ OOVPATable DSound_OOVPAV2[] = { REGISTER_OOVPAS(IDirectSoundStream_SetI3DL2Source, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch? REGISTER_OOVPAS(IDirectSoundStream_SetMaxDistance, UNPATCHED, 3911), REGISTER_OOVPAS(IDirectSoundStream_SetMinDistance, UNPATCHED, 3911), - REGISTER_OOVPAS(IDirectSoundStream_SetMixBins, PATCH, 3911), + REGISTER_OOVPAS(IDirectSoundStream_SetMixBins, PATCH, 3911, 4039), REGISTER_OOVPAS(IDirectSoundStream_SetMixBinVolumes_12, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, see more note for CDirectSoundStream_SetMixBinVolumes_12 REGISTER_OOVPAS(IDirectSoundStream_SetMixBinVolumes_8, UNPATCHED, 4039), //NOTE: 4039 and newer only perform a jmp. REGISTER_OOVPAS(IDirectSoundStream_SetMode, UNPATCHED, 3911), //NOTE: 3911 only perform a jmp, later XDK revision may need a patch?