DSound 3039 Database Update (small)

- Add XAudioCalculatePitch to 4039
- Add DS_CRefCount_AddRef to 4039
- Add DS_CRefCount_Release to 4039
- Add CDirectSoundStream_Release to 4039 and 4134
- Add CDirectSound_EnableHeadphones to 4039
- Add DirectSoundUseFullHRTF to 4039
- Add CFullHRTFSource_GetCenterVolume to 4039
- Add CHRTFSource_SetFullHRTF5Channel to 4039

Added some notes as well.

Verified with
- [3925] Cel Damage
- [3936] Silent Hill 2
- [4039] Nightcaster
- [4134] Blood Omen 2
This commit is contained in:
RadWolfie 2017-10-06 15:59:37 -05:00 committed by Luke Usher
parent e36513de0a
commit 657a3615a7
4 changed files with 299 additions and 13 deletions

View File

@ -4309,6 +4309,38 @@ OOVPA_XREF(IDirectSound_CommitEffectData, 3911, 8,
{ 0x16, 0x04 },
OOVPA_END;
// ******************************************************************
// * CDirectSound::EnableHeadphones
// ******************************************************************
OOVPA_XREF(CDirectSound_EnableHeadphones, 3911, 18,
XREF_CDirectSound_EnableHeadphones,
XRefZero)
{ 0x00, 0x55 },
{ 0x25, 0x0F },
{ 0x26, 0x95 },
{ 0x27, 0xC2 },
{ 0x38, 0x81 },
{ 0x39, 0xCB },
{ 0x3A, 0x00 },
{ 0x3B, 0x00 },
{ 0x3C, 0x00 },
{ 0x3D, 0x80 },
{ 0x40, 0x81 },
{ 0x41, 0xE3 },
{ 0x42, 0xFF },
{ 0x43, 0xFF },
{ 0x44, 0xFF },
{ 0x45, 0x7F },
{ 0xCB, 0xC2 },
{ 0xCC, 0x08 },
OOVPA_END;
#if 0 // Replaced with better OOVPA 3911 (See above)
// ******************************************************************
// * CDirectSound::EnableHeadphones
// ******************************************************************
@ -4324,7 +4356,7 @@ OOVPA_XREF(CDirectSound_EnableHeadphones, 3911, 7,
{ 0x9A, 0x76 },
{ 0xB4, 0x5B },
OOVPA_END;
#endif
// ******************************************************************
// * IDirectSound_EnableHeadphones
// ******************************************************************
@ -5504,6 +5536,7 @@ OOVPA_END;
// ******************************************************************
// * IDirectSoundStream_SetI3DL2Source
// ******************************************************************
// Generic OOVPA as of 3911 and newer
OOVPA_XREF(IDirectSoundStream_SetI3DL2Source, 3911, 2,
XRefNoSaveIndex,

View File

@ -3110,3 +3110,209 @@ OOVPA_XREF(CDirectSoundStream_Pause, 4039, 11,
{ 0x4D, 0xC2 },
{ 0x4E, 0x08 },
OOVPA_END;
// ******************************************************************
// * DS_CRefCount_AddRef
// ******************************************************************
// Generic OOVPA as of 4039 and newer
OOVPA_XREF(DS_CRefCount_AddRef, 4039, 12,
XREF_DS_CRefCount_AddRef,
XRefZero)
// DS_CRefCount_AddRef+0x00 : mov eax,dword ptr [esp+4]
{ 0x00, 0x8B },
{ 0x01, 0x44 },
{ 0x02, 0x24 },
{ 0x03, 0x04 },
// DS_CRefCount_AddRef+0x04 : inc dword ptr [eax+4]
{ 0x04, 0xFF },
{ 0x05, 0x40 },
{ 0x06, 0x04 },
// DS_CRefCount_AddRef+0x07 : mov eax, dword ptr [eax+4]
{ 0x07, 0x8B },
{ 0x08, 0x40 },
{ 0x09, 0x04 },
// DS_CRefCount_AddRef+0x0A : retn 0x04
{ 0x0A, 0xC2 },
{ 0x0B, 0x04 },
OOVPA_END;
// ******************************************************************
// * DS_CRefCount_Release
// ******************************************************************
// Generic OOVPA as of 4039 and newer
OOVPA_XREF(DS_CRefCount_Release, 4039, 10,
XREF_DS_CRefCount_Release,
XRefZero)
{ 0x00, 0x8B },
// DS_CRefCount_Release+0x0B : dec eax
{ 0x0B, 0x48 },
// DS_CRefCount_Release+0x0E : mov dword ptr [ecx+4], eax
{ 0x0E, 0x89 },
{ 0x0F, 0x41 },
{ 0x10, 0x04 },
// DS_CRefCount_Release+0x1D : mov, dword ptr [ecx+4]
{ 0x1D, 0x8B },
{ 0x1E, 0x41 },
{ 0x1F, 0x04 },
// DS_CRefCount_Release+0x20 : retn 0x04
{ 0x20, 0xC2 },
{ 0x21, 0x04 },
OOVPA_END;
// ******************************************************************
// * CDirectSoundStream::Release
// ******************************************************************
OOVPA_XREF(CDirectSoundStream_Release, 4039, 12,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x31, XREF_DS_CRefCount_Release ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x13, 0x74 },
{ 0x20, 0xB8 },
{ 0x2C, 0x83 },
{ 0x2D, 0xC0 },
{ 0x2E, 0x04 },
{ 0x46, 0x8B },
{ 0x4A, 0xC2 },
{ 0x4B, 0x04 },
{ 0x4C, 0x00 },
OOVPA_END;
// ******************************************************************
// * DirectSound::CFullHRTFSource::GetCenterVolume
// ******************************************************************
OOVPA_XREF(CFullHRTFSource_GetCenterVolume, 4039, 9,
XREF_CFullHRTFSource_GetCenterVolume,
XRefZero)
{ 0x00, 0x55 },
{ 0x22, 0xD9 },
{ 0x63, 0xDF },
{ 0xCB, 0xF0 },
{ 0xCC, 0xD8 },
{ 0xCD, 0xFF },
{ 0xCE, 0xFF },
{ 0xD1, 0xC2 },
{ 0xD2, 0x04 },
OOVPA_END;
// ******************************************************************
// * DirectSound::CHRTFSource::SetFullHRTF5Channel
// ******************************************************************
OOVPA_XREF(CHRTFSource_SetFullHRTF5Channel, 4039, 9,
XREF_CHRTFSource_SetFullHRTF5Channel,
XRefOne)
XREF_ENTRY( 0x38, XREF_CFullHRTFSource_GetCenterVolume ),
{ 0x00, 0xC7 },
{ 0x14, 0xC7 },
{ 0x1E, 0xC7 },
{ 0x28, 0xC7 },
{ 0x32, 0xC7 },
{ 0x3C, 0xC7 },
{ 0x46, 0xC7 },
{ 0x50, 0xC3 },
OOVPA_END;
// ******************************************************************
// * DirectSoundUseFullHRTF
// ******************************************************************
OOVPA_XREF(DirectSoundUseFullHRTF, 4039, 8,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x09, XREF_CHRTFSource_SetFullHRTF5Channel ),
{ 0x06, 0x8B },
{ 0x07, 0xF0 },
{ 0x0D, 0x85 },
{ 0x0E, 0xF6 },
{ 0x11, 0x0B },
{ 0x17, 0xFF },
{ 0x1D, 0xC3 },
OOVPA_END;
// ******************************************************************
// * XAudioCalculatePitch
// ******************************************************************
OOVPA_XREF(XAudioCalculatePitch, 4039, 11,
XREF_XAudioCalculatePitch,
XRefZero)
// XAudioCalculatePitch+0x10 : cmp eax, 0xBB80
{ 0x10, 0x3D },
{ 0x11, 0x80 },
{ 0x12, 0xBB },
{ 0x13, 0x00 },
// XAudioCalculatePitch+0x19 : jmp +0x21
{ 0x19, 0xEB },
{ 0x1A, 0x21 },
// XAudioCalculatePitch+0x3C : lea ecx, [ebp-04]
{ 0x3C, 0x8D },
{ 0x3D, 0x4D },
{ 0x3E, 0xFC },
// XAudioCalculatePitch+0x48 : retn 0x08
{ 0x48, 0xC2 },
{ 0x49, 0x04 },
OOVPA_END;
// ******************************************************************
// * CDirectSound::EnableHeadphones
// ******************************************************************
OOVPA_XREF(CDirectSound_EnableHeadphones, 4039, 16,
XREF_CDirectSound_EnableHeadphones,
XRefZero)
{ 0x00, 0x55 },
{ 0x42, 0x0f },
{ 0x43, 0x95 },
{ 0x44, 0xC3 },
{ 0x4F, 0x0D },
{ 0x50, 0x00 },
{ 0x51, 0x00 },
{ 0x52, 0x00 },
{ 0x53, 0x80 },
{ 0x56, 0x25 },
{ 0x57, 0xFF },
{ 0x58, 0xFF },
{ 0x59, 0xFF },
{ 0x5A, 0x7F },
{ 0x7F, 0xC2 },
{ 0x80, 0x08 },
OOVPA_END;

View File

@ -3048,6 +3048,32 @@ OOVPA_XREF(CDirectSound_DownloadEffectsImage, 4134, 18,
{ 0x62, 0x14 },
OOVPA_END;
// ******************************************************************
// * CDirectSoundStream::Release
// ******************************************************************
OOVPA_XREF(CDirectSoundStream_Release, 4134, 12,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x32, XREF_DS_CRefCount_Release ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2D, 0x83 },
{ 0x2E, 0xC0 },
{ 0x2F, 0x04 },
{ 0x47, 0x8B },
{ 0x4B, 0xC2 },
{ 0x4C, 0x04 },
{ 0x4D, 0x00 },
OOVPA_END;
// ******************************************************************
// * DSound_4134
// ******************************************************************

View File

@ -36,15 +36,17 @@
// Titles which did compiled with full libary
// [revi] Title Name | Verify | Comments
//-------------------------------------------------------------------
// * [3925] Cel Damage | 100% | None
// * [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...
// * [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...
// TODO: Known DSound OOVPA issue list
// * 3911 to 5933: Cannot make OOVPAs
// * IDirectSound_SetCooperativeLevel (Xbox doesn't use it)
// * IDirectSound_Compact (Xbox doesn't use it)
// * IDirectSoundBuffer_Restore (Xbox doesn't use it)
// * IDirectSound_SetCooperativeLevel (Xbox doesn't use it, can't make OOVPA for it)
// * IDirectSound_Compact (Xbox doesn't use it, can't make OOVPA for it)
// * IDirectSoundBuffer_Restore (Xbox doesn't use it, can't make OOVPA for it)
// * IDirectSoundBuffer_Unlock (Xbox doesn't use it, however can make OOVPA; NOTE: OOVPA is registered for it)
// * IDirectSoundStream_AddRef (Using IUnknown_AddRef)
// * IDirectSoundStream_Release (Using IUnknown_Release)
@ -74,6 +76,8 @@
// * XAudioDownloadEffectsImage
// * XAudioGetSpeakerConfig
// * XAudioSetEffectData
// * DirectSoundUseFullHRTF4Channel
// * DirectSoundUseLightHRTF4Channel
// * 3911 to 3936: Following separater functions has exact asm codes as whole function are...
// * IDirectSoundStream_SetVolume & CDirectSoundStream_SetVolume
// * IDirectSoundStream_SetPitch & CDirectSoundStream_SetPitch
@ -87,6 +91,23 @@
// * 4039 OOVPA messed up?
// * IDirectSoundStream_SetMixBins should be IDirectSoundStream_SetHeadroom?
// * Need to dig deeper...
// * 3911 - Need to add:
// * XAudioCreateAdpcmFormat
// * XAudioCreatePcmFormat
// * IsValidFormat
// Not part of API, yet is a non-member function : (might be useful)
// * GetFormatSize
// * CopyFormat
// * CompareFormats
// * CalculateXboxAdpcmAlignment
// * IsValidPcmFormat
// * IsValidXboxAdpcmFormat
// * CopyFormatAlloc
// * 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
#ifndef DSOUND_OOVPA_INL
@ -114,7 +135,7 @@
// ******************************************************************
OOVPATable DSound_OOVPAV2[] = {
REGISTER_OOVPAS(XAudioCalculatePitch, XREF, 3911),
REGISTER_OOVPAS(XAudioCalculatePitch, XREF, 3911, 4039),
REGISTER_OOVPAS(DirectSoundEnterCriticalSection, XREF, 3911),
REGISTER_OOVPAS(CMcpxAPU_Commit3dSettings, XREF, 3911),
REGISTER_OOVPAS(CMcpxAPU_ServiceDeferredCommandsLow, XREF, 3911),
@ -157,8 +178,8 @@ OOVPATable DSound_OOVPAV2[] = {
REGISTER_OOVPAS(CMcpxVoiceClient_SetMixBins, XREF, 3911),
REGISTER_OOVPAS(CMcpxVoiceClient_SetPitch, XREF, 3911),
REGISTER_OOVPAS(CMcpxVoiceClient_SetVolume, XREF, 3911, 4039, 4134),
REGISTER_OOVPAS(DS_CRefCount_AddRef, XREF, 3911),
REGISTER_OOVPAS(DS_CRefCount_Release, XREF, 3911),
REGISTER_OOVPAS(DS_CRefCount_AddRef, XREF, 3911, 4039),
REGISTER_OOVPAS(DS_CRefCount_Release, XREF, 3911, 4039),
REGISTER_OOVPAS(CDirectSoundVoiceSettings_SetMixBins, XREF, 4039, 4134, 5344, 5558),
REGISTER_OOVPAS(CDirectSoundVoiceSettings_SetMixBinVolumes, XREF, 4039, 4134),
REGISTER_OOVPAS(CDirectSoundVoice_CommitDeferredSettings, XREF, 5558),
@ -235,7 +256,7 @@ OOVPATable DSound_OOVPAV2[] = {
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_Release, PATCH, 3911),
REGISTER_OOVPAS(CDirectSoundStream_Release, PATCH, 3911, 4039, 4134),
REGISTER_OOVPAS(CDirectSoundStream_SetAllParameters, PATCH, 3911, 4039, 4134),
REGISTER_OOVPAS(CDirectSoundStream_SetConeAngles, PATCH, 3911, 4039),
REGISTER_OOVPAS(CDirectSoundStream_SetConeOrientation, PATCH, 3911, 4039, 4134),
@ -267,7 +288,7 @@ OOVPATable DSound_OOVPAV2[] = {
REGISTER_OOVPAS(CDirectSound_CreateSoundStream, XREF, 3911, 4039, 4134, 5558),
REGISTER_OOVPAS(CDirectSound_DownloadEffectsImage, XREF, 3911, 4039, 4134),
REGISTER_OOVPAS(CDirectSound_DoWork, XREF, 3911, 4039),
REGISTER_OOVPAS(CDirectSound_EnableHeadphones, XREF, 3911, 4627, 5233, 5344, 5558),
REGISTER_OOVPAS(CDirectSound_EnableHeadphones, XREF, 3911, 4039, 4627, 5233, 5344, 5558),
REGISTER_OOVPAS(CDirectSound_GetCaps, XREF, 3911, 4361),
REGISTER_OOVPAS(CDirectSound_GetEffectData, XREF, 3911),
REGISTER_OOVPAS(CDirectSound_GetOutputLevels, XREF, 4627, 5558),
@ -380,13 +401,13 @@ OOVPATable DSound_OOVPAV2[] = {
REGISTER_OOVPAS(DirectSoundCreateStream, PATCH, 3911, 4134, 5788),
REGISTER_OOVPAS(DirectSoundDoWork, PATCH, 3911, 4134, 5558),
REGISTER_OOVPAS(DirectSoundGetSampleTime, PATCH, 3911, 4361),
REGISTER_OOVPAS(DirectSoundUseFullHRTF, PATCH, 3911, 5558),
REGISTER_OOVPAS(DirectSoundUseFullHRTF, PATCH, 3911, 4039, 5558),
REGISTER_OOVPAS(DirectSoundUseLightHRTF, PATCH, 3911),
REGISTER_OOVPAS(CFullHRTFSource_GetCenterVolume, XREF, 5558),
REGISTER_OOVPAS(CHRTFSource_SetFullHRTF5Channel, XREF, 5558),
REGISTER_OOVPAS(CFullHRTFSource_GetCenterVolume, XREF, 4039, 5558),
REGISTER_OOVPAS(CHRTFSource_SetFullHRTF5Channel, XREF, 4039, 5558),
REGISTER_OOVPAS(WaveFormat_CreateXboxAdpcmFormat, XREF, 5344),