Add DSound 4242 Database File

- Add CMcpxStream_Flush to 4242
- Improved CMcpxStream_GetStatus 4134 to support 4242 titles.

Both 4242 titles does not have full library compiled. Moved all DSound's
4242 signatures in respective file, nothing has change.

Verified with
- [4134] Blood Omen 2
- [4242] Gauntlet Dark Legacy
- [4242] Smashing Drive
This commit is contained in:
RadWolfie 2017-10-16 22:57:55 -05:00 committed by Luke Usher
parent 8a7756c2bb
commit a1b21112f8
5 changed files with 248 additions and 28 deletions

View File

@ -353,6 +353,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.3936.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4039.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4134.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4242.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4361.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4432.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4627.inl" />

View File

@ -710,6 +710,9 @@
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4134.inl">
<Filter>HLEDatabase\DSound</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4242.inl">
<Filter>HLEDatabase\DSound</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4361.inl">
<Filter>HLEDatabase\DSound</Filter>
</None>

View File

@ -2899,31 +2899,6 @@ OOVPA_XREF(CMcpxBuffer_Stop, 4134, 9,
{ 0x20, 0x02 },
OOVPA_END;
// ******************************************************************
// * CMcpxBuffer_Stop
// ******************************************************************
//Generic OOVPA as of 4242 and newer.
OOVPA_XREF(CMcpxBuffer_Stop, 4242, 9,
XREF_CMcpxBuffer_Stop,
XRefZero)
// CMcpxBuffer_Stop+0x0E : cmp al, 3
{ 0x0E, 0x3C },
{ 0x0F, 0x03 },
// CMcpxBuffer_Stop+0x17 : jne +0x2A
{ 0x17, 0x74 },
{ 0x18, 0x2A },
// CMcpxBuffer_Stop+0x19 : test [esp+10h], 2
{ 0x19, 0xF6 },
{ 0x1A, 0x44 },
{ 0x1B, 0x24 },
{ 0x1C, 0x10 },
{ 0x1D, 0x02 },
OOVPA_END;
// ******************************************************************
// * CDirectSoundBuffer_Stop
// ******************************************************************
@ -3396,6 +3371,11 @@ OOVPA_XREF(CMcpxStream_GetStatus, 4134, 14,
{ 0x00, 0x55 },
{ 0x01, 0x8B },
// Added 2 OVs to enable support 4242 titles and later (if any has occurred).
{ 0x2F, 0x03 },
{ 0x32, 0x03 },
// Just a note, this asm code is unique
{ 0x3D, 0x80 },
{ 0x3E, 0x48 },
{ 0x3F, 0x02 },
@ -3408,8 +3388,9 @@ OOVPA_XREF(CMcpxStream_GetStatus, 4134, 14,
{ 0x4F, 0x04 },
{ 0x50, 0x00 },
{ 0x65, 0xC2 },
{ 0x66, 0x04 },
// Removed due to 4242 has a return asm code at offset 0x75.
//{ 0x65, 0xC2 },
//{ 0x66, 0x04 },
OOVPA_END;
// ******************************************************************

View File

@ -0,0 +1,234 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->HLEDataBase->DSound.1.0.4242.inl
// *
// * This file is part of the Cxbx project.
// *
// * Cxbx and Cxbe are free software; you can redistribute them
// * and/or modify them under the terms of the GNU General Public
// * License as published by the Free Software Foundation; either
// * version 2 of the license, or (at your option) any later version.
// *
// * This program is distributed in the hope that it will be useful,
// * but WITHOUT ANY WARRANTY; without even the implied warranty of
// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// * GNU General Public License for more details.
// *
// * You should have recieved a copy of the GNU General Public License
// * along with this program; see the file COPYING.
// * If not, write to the Free Software Foundation, Inc.,
// * 59 Temple Place - Suite 330, Bostom, MA 02111-1307, USA.
// *
// * (c) 2017 RadWolfie
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetFormat
// ******************************************************************
OOVPA_XREF(CDirectSoundVoice_SetFormat, 4242, 8,
XREF_CDirectSoundVoice_SetFormat,
XRefZero)
{ 0x07, 0x4E },
{ 0x10, 0xE8 },
{ 0x19, 0xD8 },
{ 0x22, 0xFF },
{ 0x2B, 0x0C },
{ 0x34, 0xFF },
{ 0x3F, 0x8B },
{ 0x46, 0x00 },
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundBuffer::SetFormat
// ******************************************************************
OOVPA_XREF(CDirectSoundBuffer_SetFormat, 4242, 8,
XREF_CDirectSoundBuffer_SetFormat,
XRefOne)
XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetFormat ),
{ 0x0C, 0x00 },
{ 0x12, 0x85 },
{ 0x1C, 0x15 },
{ 0x26, 0xEB },
{ 0x30, 0x10 },
{ 0x3A, 0x74 },
{ 0x47, 0x8B },
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_SetFormat
// ******************************************************************
OOVPA_XREF(IDirectSoundBuffer_SetFormat, 4242, 8,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x15, XREF_CDirectSoundBuffer_SetFormat ),
{ 0x02, 0x24 },
{ 0x06, 0x24 },
{ 0x0A, 0x83 },
{ 0x0E, 0xD9 },
{ 0x12, 0xC8 },
{ 0x19, 0xC2 },
{ 0x1A, 0x08 },
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundStream::SetFormat
// ******************************************************************
OOVPA_XREF(CDirectSoundStream_SetFormat, 4242, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x36, XREF_CDirectSoundVoice_SetFormat ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x35, 0xE8 },
{ 0x40, 0x68 },
{ 0x4B, 0x8B },
OOVPA_END;
// ******************************************************************
// * CMcpxVoiceClient::SetLFO
// ******************************************************************
OOVPA_XREF(CMcpxVoiceClient_SetLFO, 4242, 8,
XREF_CMcpxVoiceClient_SetLFO,
XRefZero)
{ 0x1E, 0x48 },
{ 0x3E, 0x31 },
{ 0x5E, 0x35 },
{ 0x7E, 0xE1 },
{ 0x9E, 0x8B },
{ 0xBE, 0x8B },
{ 0xDE, 0x05 },
{ 0xFE, 0x6C },
OOVPA_END;
// ******************************************************************
// * CDirectSoundBuffer::SetLFO
// ******************************************************************
OOVPA_XREF(CDirectSoundBuffer_SetLFO, 4242, 8,
XREF_CDirectSoundBuffer_SetLFO,
XRefOne)
XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetLFO ),
{ 0x0C, 0x00 },
{ 0x12, 0x85 },
{ 0x1C, 0x15 },
{ 0x26, 0xEB },
{ 0x30, 0x10 },
{ 0x3A, 0x74 },
{ 0x47, 0x8B },
OOVPA_END;
// ******************************************************************
// * CMcpxVoiceClient::SetEG
// ******************************************************************
OOVPA_XREF(CMcpxVoiceClient_SetEG, 4242, 8,
XREF_CMcpxVoiceClient_SetEG,
XRefZero)
{ 0x1E, 0x75 },
{ 0x3E, 0x0F },
{ 0x5E, 0xE3 },
{ 0x7E, 0x4E },
{ 0x9E, 0x40 },
{ 0xBE, 0x50 },
{ 0xDE, 0x1C },
{ 0xFE, 0x1C },
OOVPA_END;
// ******************************************************************
// * CDirectSoundBuffer::SetEG
// ******************************************************************
OOVPA_XREF(CDirectSoundBuffer_SetEG, 4242, 8,
XREF_CDirectSoundBuffer_SetEG,
XRefOne)
XREF_ENTRY( 0x32, XREF_CDirectSoundVoice_SetEG ),
{ 0x0C, 0x00 },
{ 0x12, 0x85 },
{ 0x1C, 0x15 },
{ 0x26, 0xEB },
{ 0x30, 0x10 },
{ 0x3A, 0x74 },
{ 0x47, 0x8B },
OOVPA_END;
// ******************************************************************
// * CMcpxBuffer_Stop
// ******************************************************************
//Generic OOVPA as of 4242 and newer.
OOVPA_XREF(CMcpxBuffer_Stop, 4242, 9,
XREF_CMcpxBuffer_Stop,
XRefZero)
// CMcpxBuffer_Stop+0x0E : cmp al, 3
{ 0x0E, 0x3C },
{ 0x0F, 0x03 },
// CMcpxBuffer_Stop+0x17 : jne +0x2A
{ 0x17, 0x74 },
{ 0x18, 0x2A },
// CMcpxBuffer_Stop+0x19 : test [esp+10h], 2
{ 0x19, 0xF6 },
{ 0x1A, 0x44 },
{ 0x1B, 0x24 },
{ 0x1C, 0x10 },
{ 0x1D, 0x02 },
OOVPA_END;
// ******************************************************************
// * CMcpxStream_Flush
// ******************************************************************
OOVPA_XREF(CMcpxStream_Flush, 4242, 10,
XREF_CMcpxStream_Flush,
XRefZero)
{ 0x00, 0x55 },
{ 0x01, 0x8B },
{ 0x12, 0x33 },
{ 0x3D, 0x83 },
{ 0x3E, 0xFE },
{ 0x3F, 0x05 },
{ 0x56, 0xE8 },
{ 0x67, 0xE8 },
// Might not be a requirement? Aka comment this out might will enable support detection later XDK revisions.
{ 0xD1, 0xC9 },
{ 0xD2, 0xC3 },
OOVPA_END;

View File

@ -159,6 +159,7 @@
#include "DSound.1.0.3936.inl"
#include "DSound.1.0.4039.inl"
#include "DSound.1.0.4134.inl"
#include "DSound.1.0.4242.inl"
#include "DSound.1.0.4361.inl"
#include "DSound.1.0.4432.inl"
#include "DSound.1.0.4627.inl"
@ -198,7 +199,7 @@ OOVPATable DSound_OOVPAV2[] = {
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, 4039, 4134),
REGISTER_OOVPAS(CMcpxStream_Flush, XREF, 3911, 3936, 4039, 4134),
REGISTER_OOVPAS(CMcpxStream_Flush, XREF, 3911, 3936, 4039, 4134, 4242),
REGISTER_OOVPAS(CMcpxStream_GetStatus, XREF, 4134),
REGISTER_OOVPAS(CMcpxStream_Pause, XREF, 3911, 4039, 4134, /*4361,*/ 4831, 5788),
REGISTER_OOVPAS(CSensaura3d_GetFullHRTFFilterPair, XREF, 3911, 3936),