Merge branch 'master' into derive_xrefs

This commit is contained in:
PatrickvL 2017-03-27 15:50:28 +02:00 committed by GitHub
commit 5d6bc06b14
61 changed files with 4159 additions and 993 deletions

3
.gitignore vendored
View File

@ -19,6 +19,9 @@
#Documentation output
doc/doxygen/html
#Export
export
#Visual Studio files
*.[Oo]bj
*.user

View File

@ -10,9 +10,12 @@ The project began life as a fork of Cxbx with added 64-bit support. Work is curr
Cxbx-Reloaded is still pretty unstable, don't expect it to run much at this point.
## System Requirements
* Windows 10 64-bit (May work on other versions, but this has not been tested. 32-Bit Windows is NOT supported).
* 64-bit Windows (7, 8 and 10 are known to work, 32-bit installations are not supported)
* A graphics card that supports Direct3D 8.
## Automated Builds
Cxbx-Reloaded is not yet ready for general release, however the latest build can always be downloaded from our [AppVeyor](https://ci.appveyor.com/project/SoullessSentinel/cxbx-reloaded/branch/master) by navigating to Configuration: Release => Artifacts => export\Release.zip
## Bug Reports
Cxbx-Reloaded is in the early stages right now and most games will either crash or do nothing, please do not submit issues for these games.

View File

@ -77,13 +77,13 @@
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\src\Common;..\..\src;..\..\src\Common\Win32;..\..\import\stb;%(AdditionalIncludeDirectories);..\..\import\OpenXDK\include;..\..\import\distorm\include;..\..\import\glew-2.0.0\include;..\..\src;..\..\src\Common;..\..\src\Common\Win32</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<BrowseInformation>true</BrowseInformation>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -145,6 +145,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<WarningLevel>Level3</WarningLevel>
<SuppressStartupBanner>true</SuppressStartupBanner>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@ -225,6 +226,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4361.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4432.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4627.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5028.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5233.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5344.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5558.h" />
@ -236,6 +238,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4361.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4432.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4627.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5028.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5233.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5344.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5558.h" />
@ -249,6 +252,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4432.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4627.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4721.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5028.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5233.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5344.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5558.h" />
@ -259,6 +263,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4361.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4432.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4627.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5028.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5233.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5344.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5558.h" />
@ -268,6 +273,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XNet.1.0.4627.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4361.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4627.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5028.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5233.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5344.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5558.h" />
@ -275,10 +281,12 @@ $(SOLUTIONDIR)Export.bat</Command>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5849.h" />
<ClInclude Include="..\..\src\CxbxKrnl\HLEIntercept.h" />
<ClInclude Include="..\..\src\CxbxKrnl\LibRc4.h" />
<ClInclude Include="..\..\src\CxbxKrnl\MemoryManager.h" />
<ClInclude Include="..\..\src\CxbxKrnl\nv2a_int.h" />
<ClInclude Include="..\..\src\CxbxKrnl\OOVPA.h" />
<ClInclude Include="..\..\src\CxbxKrnl\ReservedMemory.h" />
<ClInclude Include="..\..\src\CxbxKrnl\ResourceTracker.h" />
<ClInclude Include="..\..\src\CxbxVersion.h" />
<ClInclude Include="..\..\src\Cxbx\DlgControllerConfig.h" />
<ClInclude Include="..\..\src\Cxbx\DlgVideoConfig.h" />
<ClInclude Include="..\..\src\CxbxKrnl\Emu.h" />
@ -304,6 +312,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4361.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4432.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4627.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5028.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5233.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5344.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5558.inl" />
@ -315,6 +324,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<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" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5028.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5233.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5344.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5558.inl" />
@ -327,6 +337,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4432.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4627.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4721.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5028.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5233.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5344.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5558.inl" />
@ -336,6 +347,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4361.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4432.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4627.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5028.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5233.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5344.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5558.inl" />
@ -344,6 +356,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XNet.1.0.4627.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4361.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4627.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5028.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5233.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5344.inl" />
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5558.inl" />
@ -525,6 +538,7 @@ $(SOLUTIONDIR)Export.bat</Command>
<PreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<ClCompile Include="..\..\src\CxbxKrnl\LibRc4.cpp" />
<ClCompile Include="..\..\src\CxbxKrnl\MemoryManager.cpp" />
<ClCompile Include="..\..\src\CxbxKrnl\ResourceTracker.cpp">
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

View File

@ -196,6 +196,9 @@
<ClCompile Include="..\..\src\Common\EmuEEPROM.cpp">
<Filter>Shared</Filter>
</ClCompile>
<ClCompile Include="..\..\src\CxbxKrnl\MemoryManager.cpp">
<Filter>Emulator</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\Cxbx\DlgControllerConfig.h">
@ -234,18 +237,12 @@
<ClInclude Include="..\..\src\CxbxKrnl\EmuD3D8\VertexShader.h">
<Filter>EmuD3D8</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4721.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XNet.1.0.4627.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.3925.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
@ -264,9 +261,15 @@
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4627.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5028.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5233.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
@ -294,9 +297,18 @@
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4627.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5028.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5233.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5788.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
@ -324,9 +336,15 @@
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4627.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5028.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5233.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
@ -351,9 +369,15 @@
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4627.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5028.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5233.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
@ -372,9 +396,18 @@
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4627.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5028.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5233.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5558.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5788.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
@ -507,24 +540,15 @@
<ClInclude Include="..\..\src\Common\XDVDFS Tools\xdvdfs.h">
<Filter>Shared</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5344.h">
<Filter>HLEDatabase</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Common\EmuEEPROM.h">
<Filter>Shared</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxVersion.h">
<Filter>Shared</Filter>
</ClInclude>
<ClInclude Include="..\..\src\CxbxKrnl\MemoryManager.h">
<Filter>Emulator</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\resource\About.jpg">
@ -551,9 +575,15 @@
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.4627.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5028.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5233.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5558.inl">
<Filter>HLEDatabase</Filter>
</None>
@ -581,9 +611,15 @@
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.4627.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5028.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5233.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5558.inl">
<Filter>HLEDatabase</Filter>
</None>
@ -614,9 +650,15 @@
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.4721.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5028.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5233.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5558.inl">
<Filter>HLEDatabase</Filter>
</None>
@ -638,9 +680,15 @@
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.4627.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5028.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5233.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5558.inl">
<Filter>HLEDatabase</Filter>
</None>
@ -659,9 +707,15 @@
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4627.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5028.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5233.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5558.inl">
<Filter>HLEDatabase</Filter>
</None>
@ -674,21 +728,6 @@
<None Include="..\..\resource\Logo.bmp">
<Filter>Shared</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\D3D8.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\DSound.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XG.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
<None Include="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.5344.inl">
<Filter>HLEDatabase</Filter>
</None>
</ItemGroup>
<ItemGroup>
<Filter Include="GUI">

View File

@ -1,5 +1,5 @@
cd Release
..\..\..\import\7za\7za.exe a ..\..\..\export\Release.zip Cxbx.exe ..\..\..\COPYING ..\..\..\README.md
..\..\..\import\7za\7za.exe a ..\..\..\export\Release.zip Cxbx.exe glew32.dll ..\..\..\COPYING ..\..\..\README.md
cd ..\Debug
..\..\..\import\7za\7za.exe a ..\..\..\export\Debug.zip Cxbx.exe ..\..\..\COPYING ..\..\..\README.md
..\..\..\import\7za\7za.exe a ..\..\..\export\Debug.zip Cxbx.exe glew32.dll ..\..\..\COPYING ..\..\..\README.md
cd ..\

View File

@ -54,6 +54,7 @@
// Options to AvSendTVEncoderOption() :
#define AV_OPTION_MACROVISION_MODE 1
#define AV_OPTION_ENABLE_CC 2
#define AV_OPTION_DISABLE_CC 3
#define AV_OPTION_SEND_CC_DATA 4
@ -416,6 +417,9 @@ XBSYSAPI EXPORTNUM(351) VOID NTAPI XcUpdateCrypto
OUT PCRYPTO_VECTOR pROMVector OPTIONAL
);
// Not exported by the kernel, but required to generate other keys
XBSYSAPI XBOX_KEY_DATA XboxCertificateKey;
// ******************************************************************
// * 0x0161 - XboxLANKey
// ******************************************************************
@ -424,7 +428,7 @@ XBSYSAPI EXPORTNUM(353) XBOX_KEY_DATA XboxLANKey;
// ******************************************************************
// * 0x0162 - XboxAlternateSignatureKeys
// ******************************************************************
XBSYSAPI EXPORTNUM(354) XBOX_KEY_DATA XboxAlternateSignatureKeys;
XBSYSAPI EXPORTNUM(354) XBOX_KEY_DATA XboxAlternateSignatureKeys[ALTERNATE_SIGNATURE_COUNT];
// ******************************************************************
// * 0x0163 - XePublicKeyData

View File

@ -224,18 +224,6 @@ typedef long NTSTATUS;
// * memory
// ******************************************************************
// Define virtual base and alternate virtual base of kernel.
#define KSEG0_BASE 0x80000000
// Define virtual base addresses for physical memory windows.
#define MM_SYSTEM_PHYSICAL_MAP KSEG0_BASE
#define MM_HIGHEST_PHYSICAL_PAGE 0x07FFF
#define MM_64M_PHYSICAL_PAGE 0x04000
#define MM_INSTANCE_PHYSICAL_PAGE 0x03FE0 // Chihiro arcade should use 0x07FF0
#define MM_INSTANCE_PAGE_COUNT 16
#define PAGE_SHIFT 12
// Xbox pages are (1 << 12) = 0x00001000 = 4096 bytes in size.
@ -2083,6 +2071,7 @@ typedef struct _XBOX_HARDWARE_INFO
XBOX_HARDWARE_INFO;
const int XBOX_KEY_LENGTH = 16;
const int ALTERNATE_SIGNATURE_COUNT = 16;
typedef UCHAR XBOX_KEY_DATA[XBOX_KEY_LENGTH];
// ******************************************************************

View File

@ -34,6 +34,7 @@
// *
// ******************************************************************
#include "Xbe.h"
#include "CxbxVersion.h"
#include "CxbxUtil.h"
#include <memory.h>

View File

@ -75,14 +75,6 @@ typedef signed long sint32;
/*! define this to dump textures that are registered */
//#define _DEBUG_DUMP_TEXTURE_REGISTER "D:\\cxbx\\_textures\\"
#include "Version.h"
/*! version string dependent on trace flag */
#ifndef _DEBUG_TRACE
#define _CXBX_VERSION _GIT_VERSION " (" __DATE__ ")"
#else
#define _CXBX_VERSION _GIT_VERSION "-Trace (" __DATE__ ")"
#endif
/*! debug mode choices */
enum DebugMode { DM_NONE, DM_CONSOLE, DM_FILE };

View File

@ -39,6 +39,7 @@
#include "DlgVideoConfig.h"
#include "CxbxKrnl/EmuShared.h"
#include "ResCxbx.h"
#include "CxbxVersion.h"
#include <io.h>

View File

@ -44,6 +44,7 @@ namespace xboxkrnl
};
#include "CxbxKrnl.h"
#include "CxbxVersion.h"
#include "Emu.h"
#include "EmuX86.h"
#include "EmuFile.h"
@ -53,6 +54,7 @@ namespace xboxkrnl
#include "EmuNV2A.h" // For InitOpenGLContext
#include "HLEIntercept.h"
#include "ReservedMemory.h" // For virtual_memory_placeholder
#include "MemoryManager.h"
#include <shlobj.h>
#include <clocale>
@ -161,6 +163,28 @@ void ApplyMediaPatches()
}
void SetupPerTitleKeys()
{
// Generate per-title keys from the XBE Certificate
Xbe::Certificate *pCertificate = (Xbe::Certificate*)CxbxKrnl_XbeHeader->dwCertificateAddr;
UCHAR Digest[20] = {};
// Set the LAN Key
xboxkrnl::XcHMAC(xboxkrnl::XboxCertificateKey, xboxkrnl::XBOX_KEY_LENGTH, pCertificate->bzLanKey, xboxkrnl::XBOX_KEY_LENGTH, NULL, 0, Digest);
memcpy(xboxkrnl::XboxLANKey, Digest, xboxkrnl::XBOX_KEY_LENGTH);
// Signature Key
xboxkrnl::XcHMAC(xboxkrnl::XboxCertificateKey, xboxkrnl::XBOX_KEY_LENGTH, pCertificate->bzSignatureKey, xboxkrnl::XBOX_KEY_LENGTH, NULL, 0, Digest);
memcpy(xboxkrnl::XboxSignatureKey, Digest, xboxkrnl::XBOX_KEY_LENGTH);
// Alternate Signature Keys
for (int i = 0; i < xboxkrnl::ALTERNATE_SIGNATURE_COUNT; i++) {
xboxkrnl::XcHMAC(xboxkrnl::XboxCertificateKey, xboxkrnl::XBOX_KEY_LENGTH, pCertificate->bzTitleAlternateSignatureKey[i], xboxkrnl::XBOX_KEY_LENGTH, NULL, 0, Digest);
memcpy(xboxkrnl::XboxAlternateSignatureKeys[i], Digest, xboxkrnl::XBOX_KEY_LENGTH);
}
}
void CxbxLaunchXbe(void(*Entry)())
{
__try
@ -225,8 +249,6 @@ void RestoreExeImageHeader()
ExeOptionalHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS] = NewOptionalHeader->DataDirectory[IMAGE_DIRECTORY_ENTRY_TLS];
}
#define CONTIGUOUS_MEMORY_SIZE (64 * ONE_MB)
void *CxbxRestoreContiguousMemory(char *szFilePath_memory_bin)
{
// First, try to open an existing memory.bin file :
@ -477,6 +499,40 @@ void CxbxKrnlMain(int argc, char* argv[])
}
#pragma optimize("", on)
// Loads a keys.bin file as generated by dump-xbox
// See https://github.com/JayFoxRox/xqemu-tools/blob/master/dump-xbox.c
void LoadXboxKeys(std::string path)
{
std::string keys_path = path + "\\keys.bin";
// Attempt to open Keys.bin
FILE* fp = fopen(keys_path.c_str(), "rb");
if (fp != nullptr) {
// Determine size of Keys.bin
xboxkrnl::XBOX_KEY_DATA keys[2];
fseek(fp, 0, SEEK_END);
long size = ftell(fp);
rewind(fp);
// If the size of Keys.bin is correct (two keys), read it
if (size == xboxkrnl::XBOX_KEY_LENGTH * 2) {
fread(keys, xboxkrnl::XBOX_KEY_LENGTH, 2, fp);
memcpy(xboxkrnl::XboxEEPROMKey, &keys[0], xboxkrnl::XBOX_KEY_LENGTH);
memcpy(xboxkrnl::XboxCertificateKey, &keys[1], xboxkrnl::XBOX_KEY_LENGTH);
} else {
EmuWarning("Keys.bin has an incorrent filesize. Should be %d bytes", xboxkrnl::XBOX_KEY_LENGTH * 2);
}
fclose(fp);
return;
}
// If we didn't already exit the function, keys.bin could not be loaded
EmuWarning("Failed to load Keys.bin. Cxbx-Reloaded will be unable to read Save Data from a real Xbox");
}
void CxbxKrnlInit
(
HWND hwndParent,
@ -569,14 +625,6 @@ void CxbxKrnlInit
{
// Create a fake kernel header for XapiRestrictCodeSelectorLimit
// Thanks advancingdragon / DirtBox
typedef struct DUMMY_KERNEL
{
IMAGE_DOS_HEADER DosHeader;
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_SECTION_HEADER SectionHeader;
} *PDUMMY_KERNEL;
PDUMMY_KERNEL DummyKernel = (PDUMMY_KERNEL)XBOX_KERNEL_BASE;
memset(DummyKernel, 0, sizeof(DUMMY_KERNEL));
@ -612,6 +660,10 @@ void CxbxKrnlInit
strcat(szBuffer, "\\Cxbx-Reloaded\\");
std::string basePath(szBuffer);
CxbxBasePath = basePath + "EmuDisk\\";
// Load Per-Xbe Keys from the Cxbx-Reloaded AppData directory
LoadXboxKeys(szBuffer);
// Determine XBE Path
memset(szBuffer, 0, MAX_PATH);
g_EmuShared->GetXbePath(szBuffer);
@ -660,7 +712,7 @@ void CxbxKrnlInit
// Assign the running Xbe path, so it can be accessed via the kernel thunk 'XeImageFileName' :
xboxkrnl::XeImageFileName.MaximumLength = MAX_PATH;
xboxkrnl::XeImageFileName.Buffer = (PCHAR)malloc(MAX_PATH);
xboxkrnl::XeImageFileName.Buffer = (PCHAR)g_MemoryManager.Allocate(MAX_PATH);
sprintf(xboxkrnl::XeImageFileName.Buffer, "%c:\\%s", CxbxDefaultXbeDriveLetter, fileName.c_str());
xboxkrnl::XeImageFileName.Length = (USHORT)strlen(xboxkrnl::XeImageFileName.Buffer);
DbgPrintf("EmuMain : XeImageFileName = %s\n", xboxkrnl::XeImageFileName.Buffer);
@ -721,6 +773,9 @@ void CxbxKrnlInit
// See: https://multimedia.cx/eggs/xbox-sphinx-protocol/
ApplyMediaPatches();
// Setup per-title encryption keys
SetupPerTitleKeys();
// initialize FS segment selector
{
EmuInitFS();

View File

@ -82,7 +82,7 @@ typedef uint32 xbaddr;
// fit in 51 MB. If we ever encounter an even larger XBE, this
// value will have to be increased likewise (maybe up to 64 MB
// for XBOX_MEMORY_SIZE or even 128 MB for CHIHIRO_MEMORY_SIZE).
#define XBE_MAX_VA (51 * ONE_MB)
#define XBE_MAX_VA (64 * ONE_MB)
/*! base address of Cxbx host executable, see Cxbx project options, Linker, Advanced, Base Address */
#define CXBX_BASE_ADDR XBE_IMAGE_BASE

View File

@ -234,31 +234,6 @@ extern int EmuException(LPEXCEPTION_POINTERS e)
return EXCEPTION_CONTINUE_SEARCH;
}
// check how many bytes were allocated for a structure
extern int EmuCheckAllocationSize(LPVOID pBase, bool largeBound)
{
MEMORY_BASIC_INFORMATION MemoryBasicInfo;
DWORD dwRet;
#ifdef _DEBUG_ALLOC
dwRet = CxbxVirtualQueryDebug(pBase, &MemoryBasicInfo, sizeof(MemoryBasicInfo));
if (dwRet == -1)
#endif
dwRet = VirtualQuery(pBase, &MemoryBasicInfo, sizeof(MemoryBasicInfo));
if(dwRet == 0)
return 0;
if(MemoryBasicInfo.State != MEM_COMMIT)
return 0;
// this is a hack in order to determine when pointers come from a large write-combined database
if(largeBound && MemoryBasicInfo.RegionSize > 5*1024*1024)
return -1;
return MemoryBasicInfo.RegionSize - ((DWORD)pBase - (DWORD)MemoryBasicInfo.BaseAddress);
}
// exception handle for that tough final exit :)
int ExitException(LPEXCEPTION_POINTERS e)
{

View File

@ -50,9 +50,6 @@ inline void NTAPI EmuWarning(const char *szWarningMessage, ...) { }
// exception handler
extern int EmuException(LPEXCEPTION_POINTERS e);
// check the allocation size of a given virtual address
extern int EmuCheckAllocationSize(LPVOID pBase, bool largeBound);
// print call stack trace
#ifdef _DEBUG
void EmuPrintStackTrace(PCONTEXT ContextRecord);
@ -102,4 +99,12 @@ extern HANDLE g_hInputHandle[XINPUT_HANDLE_SLOTS];
extern void InitializeSectionStructures(void);
typedef struct DUMMY_KERNEL
{
IMAGE_DOS_HEADER DosHeader;
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_SECTION_HEADER SectionHeader;
} *PDUMMY_KERNEL;
#endif

View File

@ -37,7 +37,7 @@
#ifdef _DEBUG_ALLOC
#define CxbxMalloc(Size) CxbxMallocDebug(Size, __FILE__, __LINE__)
#define CxbxCalloc(Num, Size) CxbxCallocDebug(Num, Size, __FILE__, __LINE__)
#define CxbxFree(Addr) CxbxFreeDebug(Addr, __FILE__, __LINE__)
#define CxbxFree(Addr) CxbxFreeDebug(Addr, __FILE__, __LINE__)
#define CxbxRtlAlloc(Heap, Flags, Bytes) CxbxRtlAllocDebug(Heap, Flags, Bytes, __FILE__, __LINE__)
#define CxbxRtlFree(Heap, Flags, pMem) CxbxRtlFreeDebug(Heap, Flags, pMem, __FILE__, __LINE__)
#define CxbxRtlRealloc(Heap, Flags, pMem, Bytes) CxbxRtlReallocDebug(Heap, Flags, pMem, Bytes, __FILE__, __LINE__)

View File

@ -43,6 +43,7 @@ namespace xboxkrnl
};
#include "CxbxUtil.h"
#include "CxbxVersion.h"
#include "CxbxKrnl.h"
#include "Emu.h"
#include "EmuFS.h"
@ -50,6 +51,7 @@ namespace xboxkrnl
#include "DbgConsole.h"
#include "ResourceTracker.h"
#include "EmuAlloc.h"
#include "MemoryManager.h"
#include "EmuXTL.h"
#include <process.h>
@ -271,49 +273,49 @@ int GetD3DResourceRefCount(XTL::IDirect3DResource8 *EmuResource)
XTL::X_D3DSurface *EmuNewD3DSurface()
{
XTL::X_D3DSurface *result = (XTL::X_D3DSurface *)calloc(1, sizeof(XTL::X_D3DSurface));
XTL::X_D3DSurface *result = (XTL::X_D3DSurface *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DSurface));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_SURFACE | 1; // Set refcount to 1
return result;
}
XTL::X_D3DTexture *EmuNewD3DTexture()
{
XTL::X_D3DTexture *result = (XTL::X_D3DTexture *)calloc(1, sizeof(XTL::X_D3DTexture));
XTL::X_D3DTexture *result = (XTL::X_D3DTexture *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DTexture));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_TEXTURE | 1; // Set refcount to 1
return result;
}
XTL::X_D3DVolumeTexture *EmuNewD3DVolumeTexture()
{
XTL::X_D3DVolumeTexture *result = (XTL::X_D3DVolumeTexture *)calloc(1, sizeof(XTL::X_D3DVolumeTexture));
XTL::X_D3DVolumeTexture *result = (XTL::X_D3DVolumeTexture *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DVolumeTexture));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_TEXTURE | 1; // Set refcount to 1
return result;
}
XTL::X_D3DCubeTexture *EmuNewD3DCubeTexture()
{
XTL::X_D3DCubeTexture *result = (XTL::X_D3DCubeTexture *)calloc(1, sizeof(XTL::X_D3DCubeTexture));
XTL::X_D3DCubeTexture *result = (XTL::X_D3DCubeTexture *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DCubeTexture));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_TEXTURE | 1; // Set refcount to 1
return result;
}
XTL::X_D3DIndexBuffer *EmuNewD3DIndexBuffer()
{
XTL::X_D3DIndexBuffer *result = (XTL::X_D3DIndexBuffer *)calloc(1, sizeof(XTL::X_D3DIndexBuffer));
XTL::X_D3DIndexBuffer *result = (XTL::X_D3DIndexBuffer *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DIndexBuffer));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_INDEXBUFFER | 1; // Set refcount to 1
return result;
}
XTL::X_D3DVertexBuffer *EmuNewD3DVertexBuffer()
{
XTL::X_D3DVertexBuffer *result = (XTL::X_D3DVertexBuffer *)calloc(1, sizeof(XTL::X_D3DVertexBuffer));
XTL::X_D3DVertexBuffer *result = (XTL::X_D3DVertexBuffer *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DVertexBuffer));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_VERTEXBUFFER | 1; // Set refcount to 1
return result;
}
XTL::X_D3DPalette *EmuNewD3DPalette()
{
XTL::X_D3DPalette *result = (XTL::X_D3DPalette *)calloc(1, sizeof(XTL::X_D3DPalette));
XTL::X_D3DPalette *result = (XTL::X_D3DPalette *)g_MemoryManager.AllocateZeroed(1, sizeof(XTL::X_D3DPalette));
result->Common = X_D3DCOMMON_D3DCREATED | X_D3DCOMMON_TYPE_PALETTE | 1; // Set refcount to 1
return result;
}
@ -1055,7 +1057,7 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID)
DWORD *lpCodes = 0;
g_pDD7->GetFourCCCodes(&dwCodes, lpCodes);
lpCodes = (DWORD*)CxbxMalloc(dwCodes*sizeof(DWORD));
lpCodes = (DWORD*)g_MemoryManager.Allocate(dwCodes*sizeof(DWORD));
g_pDD7->GetFourCCCodes(&dwCodes, lpCodes);
g_bSupportsYUY2 = false;
for(DWORD v=0;v<dwCodes;v++)
@ -1067,7 +1069,7 @@ static DWORD WINAPI EmuCreateDeviceProxy(LPVOID)
}
}
CxbxFree(lpCodes);
g_MemoryManager.Free(lpCodes);
if(!g_bSupportsYUY2)
EmuWarning("YUY2 overlays are not supported in hardware, could be slow!");
else
@ -1337,7 +1339,7 @@ static void EmuUnswizzleTextureStages()
RECT iRect = {0,0,0,0};
POINT iPoint = {0,0};
void *pTemp = malloc(dwHeight*dwPitch);
void *pTemp = g_MemoryManager.Allocate(dwHeight*dwPitch);
XTL::EmuUnswizzleRect
(
@ -1349,7 +1351,7 @@ static void EmuUnswizzleTextureStages()
pTexture->UnlockRect(0);
free(pTemp);
g_MemoryManager.Free(pTemp);
}
}
@ -2058,7 +2060,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_GetGammaRamp)
");\n",
pRamp);
D3DGAMMARAMP *pGammaRamp = (D3DGAMMARAMP *)malloc(sizeof(D3DGAMMARAMP));
D3DGAMMARAMP *pGammaRamp = (D3DGAMMARAMP *)g_MemoryManager.Allocate(sizeof(D3DGAMMARAMP));
g_pD3DDevice8->GetGammaRamp(pGammaRamp);
@ -2069,7 +2071,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_GetGammaRamp)
pRamp->blue[v] = (BYTE)pGammaRamp->blue[v];
}
free(pGammaRamp);
g_MemoryManager.Free(pGammaRamp);
@ -2500,8 +2502,8 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_CreateVertexShader)
pDeclaration, pFunction, pHandle, Usage);
// create emulated shader struct
X_D3DVertexShader *pD3DVertexShader = (X_D3DVertexShader*)CxbxCalloc(1, sizeof(X_D3DVertexShader));
VERTEX_SHADER *pVertexShader = (VERTEX_SHADER*)CxbxCalloc(1, sizeof(VERTEX_SHADER));
X_D3DVertexShader *pD3DVertexShader = (X_D3DVertexShader*)g_MemoryManager.AllocateZeroed(1, sizeof(X_D3DVertexShader));
VERTEX_SHADER *pVertexShader = (VERTEX_SHADER*)g_MemoryManager.AllocateZeroed(1, sizeof(VERTEX_SHADER));
// TODO: Intelligently fill out these fields as necessary
@ -2597,9 +2599,9 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_CreateVertexShader)
// Save the status, to remove things later
pVertexShader->Status = hRet;
CxbxFree(pRecompiledDeclaration);
g_MemoryManager.Free(pRecompiledDeclaration);
pVertexShader->pDeclaration = (DWORD*)CxbxMalloc(DeclarationSize);
pVertexShader->pDeclaration = (DWORD*)g_MemoryManager.Allocate(DeclarationSize);
memcpy(pVertexShader->pDeclaration, pDeclaration, DeclarationSize);
pVertexShader->FunctionSize = 0;
@ -2612,7 +2614,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_CreateVertexShader)
{
if(pFunction != NULL)
{
pVertexShader->pFunction = (DWORD*)CxbxMalloc(VertexShaderSize);
pVertexShader->pFunction = (DWORD*)g_MemoryManager.Allocate(VertexShaderSize);
memcpy(pVertexShader->pFunction, pFunction, VertexShaderSize);
pVertexShader->FunctionSize = VertexShaderSize;
}
@ -2859,7 +2861,7 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_DeletePixelShader)
{
g_pD3DDevice8->DeletePixelShader(pPixelShader->Handle);
}
CxbxFree(pPixelShader);
g_MemoryManager.Free(pPixelShader);
}*/
@ -2914,7 +2916,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_CreatePixelShader)
// CreatePixelShader() is expected to return a pHandle directly to a shader interface.
/*
PIXEL_SHADER *pPixelShader = (PIXEL_SHADER*)CxbxCalloc(1, sizeof(PIXEL_SHADER)); // Clear, to prevent side-effects on random contents
PIXEL_SHADER *pPixelShader = (PIXEL_SHADER*)g_MemoryManager.AllocateZeroed(1, sizeof(PIXEL_SHADER)); // Clear, to prevent side-effects on random contents
memcpy(&pPixelShader->PSDef, pPSDef, sizeof(X_D3DPIXELSHADERDEF));
@ -3145,7 +3147,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_CreateTexture)
{
// If YUY2 is not supported in hardware, we'll actually mark this as a special fake texture
Texture_Data = X_D3DRESOURCE_DATA_YUV_SURFACE;
pTexture->Lock = (DWORD)CxbxMalloc(g_dwOverlayP * g_dwOverlayH);
pTexture->Lock = (DWORD)g_MemoryManager.Allocate(g_dwOverlayP * g_dwOverlayH);
g_pCachedYuvSurface = (X_D3DSurface*)pTexture;
@ -3282,7 +3284,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_CreateVolumeTexture)
{
// If YUY2 is not supported in hardware, we'll actually mark this as a special fake texture
(*ppVolumeTexture)->Data = X_D3DRESOURCE_DATA_YUV_SURFACE;
(*ppVolumeTexture)->Lock = (DWORD)CxbxMalloc(g_dwOverlayP * g_dwOverlayH);
(*ppVolumeTexture)->Lock = (DWORD)g_MemoryManager.Allocate(g_dwOverlayP * g_dwOverlayH);
(*ppVolumeTexture)->Format = Format << X_D3DFORMAT_FORMAT_SHIFT;
(*ppVolumeTexture)->Size = (g_dwOverlayW & X_D3DSIZE_WIDTH_MASK)
@ -3783,7 +3785,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_Begin)
if(g_IVBTable == 0)
{
g_IVBTable = (struct XTL::_D3DIVB*)CxbxMalloc(sizeof(XTL::_D3DIVB)*1024);
g_IVBTable = (struct XTL::_D3DIVB*)g_MemoryManager.Allocate(sizeof(XTL::_D3DIVB)*1024);
}
g_IVBTblOffs = 0;
@ -3794,7 +3796,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_Begin)
if(g_pIVBVertexBuffer == 0)
{
g_pIVBVertexBuffer = (DWORD*)CxbxMalloc(sizeof(XTL::_D3DIVB)*1024);
g_pIVBVertexBuffer = (DWORD*)g_MemoryManager.Allocate(sizeof(XTL::_D3DIVB)*1024);
}
@ -4136,8 +4138,8 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_End)()
EmuFlushIVB();
// TODO: Should technically clean this up at some point..but on XP doesnt matter much
// CxbxFree(g_pIVBVertexBuffer);
// CxbxFree(g_IVBTable);
// g_MemoryManager.Free(g_pIVBVertexBuffer);
// g_MemoryManager.Free(g_IVBTable);
@ -4423,7 +4425,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
// create vertex buffer
{
DWORD dwSize = EmuCheckAllocationSize(pBase, true);
DWORD dwSize = g_MemoryManager.QueryAllocationSize(pBase);
if(dwSize == -1)
{
@ -4482,7 +4484,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
// create index buffer
{
DWORD dwSize = EmuCheckAllocationSize(pBase, true);
DWORD dwSize = g_MemoryManager.QueryAllocationSize(pBase);
if(dwSize == -1 || dwSize == 0)
{
@ -4534,7 +4536,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
// create push buffer
{
DWORD dwSize = EmuCheckAllocationSize(pBase, true);
DWORD dwSize = g_MemoryManager.QueryAllocationSize(pBase);
if(dwSize == -1)
{
@ -4684,7 +4686,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
// TODO : Do we actually need to set these?
pPixelContainer->Common = X_D3DCOMMON_TYPE_TEXTURE | 1; // Set refcount to 1
pPixelContainer->Data = X_D3DRESOURCE_DATA_YUV_SURFACE;
pPixelContainer->Lock = (DWORD)CxbxMalloc(g_dwOverlayP * g_dwOverlayH);
pPixelContainer->Lock = (DWORD)g_MemoryManager.Allocate(g_dwOverlayP * g_dwOverlayH);
pPixelContainer->Format = (X_D3DFMT_YUY2 << X_D3DFORMAT_FORMAT_SHIFT);
pPixelContainer->Size = (g_dwOverlayW & X_D3DSIZE_WIDTH_MASK);
@ -4882,7 +4884,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
BYTE *pPixelData = (BYTE*)LockedRect.pBits;
DWORD dwDataSize = dwMipWidth*dwMipHeight;
DWORD* pExpandedTexture = (DWORD*)CxbxMalloc(dwDataSize * sizeof(DWORD));
DWORD* pExpandedTexture = (DWORD*)g_MemoryManager.Allocate(dwDataSize * sizeof(DWORD));
DWORD* pTexturePalette = (DWORD*)pCurrentPalette;
//__asm int 3;
@ -4916,7 +4918,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
memcpy(pPixelData, pExpandedTexture, dwDataSize * sizeof(DWORD));
// Flush unused data buffers
CxbxFree(pExpandedTexture);
g_MemoryManager.Free(pExpandedTexture);
}
}
}
@ -5025,7 +5027,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DResource_Register)
// create palette
{
DWORD dwSize = EmuCheckAllocationSize(pBase, true);
DWORD dwSize = g_MemoryManager.QueryAllocationSize(pBase);
if(dwSize == -1)
{
@ -5139,7 +5141,7 @@ ULONG WINAPI XTL::EMUPATCH(D3DResource_Release)
g_pCachedYuvSurface = NULL;
// free memory associated with this special resource handle
CxbxFree((PVOID)pThis->Lock);
g_MemoryManager.Free((PVOID)pThis->Lock);
}
EMUPATCH(D3DDevice_EnableOverlay)(FALSE);
@ -8266,7 +8268,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_SetPalette)
if( pPalette->Data )
{
pCurrentPalette = (LPVOID) pPalette->Data;
dwCurrentPaletteSize = EmuCheckAllocationSize( (LPVOID) pPalette->Data, false );
dwCurrentPaletteSize = g_MemoryManager.QueryAllocationSize((LPVOID)pPalette->Data);
}
}
@ -8433,17 +8435,17 @@ VOID WINAPI XTL::EMUPATCH(D3DDevice_DeleteVertexShader)
VERTEX_SHADER *pVertexShader = (VERTEX_SHADER *)pD3DVertexShader->Handle;
RealHandle = pVertexShader->Handle;
CxbxFree(pVertexShader->pDeclaration);
g_MemoryManager.Free(pVertexShader->pDeclaration);
if(pVertexShader->pFunction)
{
CxbxFree(pVertexShader->pFunction);
g_MemoryManager.Free(pVertexShader->pFunction);
}
FreeVertexDynamicPatch(pVertexShader);
CxbxFree(pVertexShader);
CxbxFree(pD3DVertexShader);
g_MemoryManager.Free(pVertexShader);
g_MemoryManager.Free(pD3DVertexShader);
}
HRESULT hRet = g_pD3DDevice8->DeleteVertexShader(RealHandle);
@ -8897,7 +8899,7 @@ PVOID WINAPI XTL::EMUPATCH(D3D_AllocContiguousMemory)
// so that we can return a valid page aligned pointer
//
PVOID pRet = CxbxMalloc(dwSize + PAGE_SIZE);
PVOID pRet = g_MemoryManager.Allocate(dwSize + PAGE_SIZE);
// align to page boundary
{
@ -9607,7 +9609,7 @@ HRESULT WINAPI XTL::EMUPATCH(D3DDevice_PersistDisplay)()
FILE* fp = fopen( "PersistedSurface.bin", "wb" );
if(fp)
{
void* ptr = malloc( BackBufferDesc.Width * BackBufferDesc.Height * dwBytesPerPixel );
void* ptr = g_MemoryManager.Allocate( BackBufferDesc.Width * BackBufferDesc.Height * dwBytesPerPixel );
if( SUCCEEDED( pBackBuffer->LockRect( &LockedRect, NULL, 0 ) ) )
{

View File

@ -73,6 +73,7 @@
#include "CxbxKrnl/EmuFS.h"
#include "CxbxKrnl/EmuAlloc.h"
#include "CxbxKrnl/EmuXTL.h"
#include <CxbxKrnl/MemoryManager.h>
#include <process.h>
#include <locale.h>
@ -734,13 +735,13 @@ HRESULT XTL::CreatePixelShaderFunction(X_D3DPIXELSHADERDEF *pPSD, LPD3DXBUFFER*
// The Xbox sets r0 to the alpha channel of texture 0, so it can be read before written!
if(bR0WAccess)
{
char *szNewCodeBuffer = (char *)CxbxMalloc((strlen(szCode)+20)*sizeof(char));
char *szNewCodeBuffer = (char *)g_MemoryManager.Allocate((strlen(szCode)+20)*sizeof(char));
strncpy(szNewCodeBuffer, szCode, iPreRunLen);
strcat(szNewCodeBuffer, "mov r0, t0.a\n");
strcat(szNewCodeBuffer, &szCode[iPreRunLen]);
strcpy(szCode, szNewCodeBuffer);
CxbxFree(szNewCodeBuffer);
g_MemoryManager.Free(szNewCodeBuffer);
}
/*DbgPrintf("r1 case! ... ");
if(bR1WAccess || bR1AWAccess || bR1RGBWAccess)
@ -753,12 +754,12 @@ HRESULT XTL::CreatePixelShaderFunction(X_D3DPIXELSHADERDEF *pPSD, LPD3DXBUFFER*
sprintf(szCat, "mov r1%s, t1%s\n", szChannel, szChannel);
char *szNewCodeBuffer = (char *)malloc((strlen(szCode)+50)*sizeof(char));
char *szNewCodeBuffer = (char *)g_MemoryManager.Allocate((strlen(szCode)+50)*sizeof(char));
strncpy(szNewCodeBuffer, szCode, iPreRunLen);
strcat(szNewCodeBuffer, szCat);
strcat(szNewCodeBuffer, &szCode[iPreRunLen]);
strcpy(szCode, szNewCodeBuffer);
free(szNewCodeBuffer);
g_MemoryManager.Free(szNewCodeBuffer);
}
DbgPrintf("end\n");*/
@ -2616,7 +2617,7 @@ inline void CorrectConstToReg(char *szConst, int *pPSC0, int *pPSC1)
// Add this const to the beginning of the psh
char str[100];
char *szNewCodeBuffer = (char *)malloc((strlen(pCodeBuffer)+70)*sizeof(char));
char *szNewCodeBuffer = (char *)g_MemoryManager.Allocate((strlen(pCodeBuffer)+70)*sizeof(char));
strncpy(szNewCodeBuffer, pCodeBuffer, 7);
szNewCodeBuffer[7]=0x00;
sprintf(str, "def c%d, %ff, %ff, %ff, %ff\n", i,
@ -2626,7 +2627,7 @@ inline void CorrectConstToReg(char *szConst, int *pPSC0, int *pPSC1)
strcat(szNewCodeBuffer, &pCodeBuffer[7]);
strcpy(pCodeBuffer, szNewCodeBuffer);
free(szNewCodeBuffer);
g_MemoryManager.Free(szNewCodeBuffer);
iConstCount++;

View File

@ -40,6 +40,7 @@
#include "CxbxKrnl/EmuXTL.h"
#include "CxbxKrnl/EmuD3D8Types.h" // For X_D3DFORMAT
#include "CxbxKrnl/ResourceTracker.h"
#include "CxbxKrnl/MemoryManager.h"
uint32 XTL::g_dwPrimaryPBCount = 0;
uint32 *XTL::g_pPrimaryPB = 0;
@ -131,7 +132,7 @@ static void EmuUnswizzleActiveTexture()
RECT iRect = {0,0,0,0};
POINT iPoint = {0,0};
void *pTemp = malloc(dwHeight*dwPitch);
void *pTemp = g_MemoryManager.Allocate(dwHeight*dwPitch);
XTL::EmuUnswizzleRect
(
@ -143,7 +144,7 @@ static void EmuUnswizzleActiveTexture()
pTexture->UnlockRect(0);
free(pTemp);
g_MemoryManager.Free(pTemp);
}
}

View File

@ -42,6 +42,7 @@
#include "CxbxKrnl/EmuAlloc.h"
#include "CxbxKrnl/EmuXTL.h"
#include "CxbxKrnl/ResourceTracker.h"
#include "CxbxKrnl/MemoryManager.h"
#include <ctime>
@ -104,7 +105,7 @@ void XTL::VertexPatcher::CacheStream(VertexPatchDesc *pPatchDesc,
void *pCalculateData = NULL;
uint32 uiKey;
UINT uiLength;
CACHEDSTREAM *pCachedStream = (CACHEDSTREAM *)CxbxCalloc(1, sizeof(CACHEDSTREAM));
CACHEDSTREAM *pCachedStream = (CACHEDSTREAM *)g_MemoryManager.AllocateZeroed(1, sizeof(CACHEDSTREAM));
// Check if the cache is full, if so, throw away the least used stream
if(g_PatchedStreamsCache.get_count() > VERTEX_BUFFER_CACHE_SIZE)
@ -200,7 +201,7 @@ void XTL::VertexPatcher::FreeCachedStream(void *pStream)
{
if(pCachedStream->bIsUP && pCachedStream->pStreamUP)
{
CxbxFree(pCachedStream->pStreamUP);
g_MemoryManager.Free(pCachedStream->pStreamUP);
}
if(pCachedStream->Stream.pOriginalStream)
{
@ -210,7 +211,7 @@ void XTL::VertexPatcher::FreeCachedStream(void *pStream)
{
pCachedStream->Stream.pPatchedStream->Release();
}
CxbxFree(pCachedStream);
g_MemoryManager.Free(pCachedStream);
}
g_PatchedStreamsCache.Unlock();
g_PatchedStreamsCache.remove(pStream);
@ -227,7 +228,7 @@ bool XTL::VertexPatcher::ApplyCachedStream(VertexPatchDesc *pPatchDesc,
UINT uiLength;
bool bApplied = false;
uint32 uiKey;
//CACHEDSTREAM *pCachedStream = (CACHEDSTREAM *)CxbxMalloc(sizeof(CACHEDSTREAM));
//CACHEDSTREAM *pCachedStream = (CACHEDSTREAM *)g_MemoryManager.Allocate(sizeof(CACHEDSTREAM));
if(!pPatchDesc->pVertexStreamZeroData)
{
@ -448,7 +449,7 @@ bool XTL::VertexPatcher::PatchStream(VertexPatchDesc *pPatchDesc,
// TODO: This is sometimes the number of indices, which isn't too good
dwNewSize = pPatchDesc->dwVertexCount * pStreamPatch->ConvertedStride;
pNewVertexBuffer = NULL;
pNewData = (uint08*)CxbxMalloc(dwNewSize);
pNewData = (uint08*)g_MemoryManager.Allocate(dwNewSize);
if(!pNewData)
{
CxbxKrnlCleanup("Couldn't allocate the new stream zero buffer");
@ -897,7 +898,7 @@ bool XTL::VertexPatcher::PatchPrimitive(VertexPatchDesc *pPatchDesc,
dwOriginalSizeWR = dwOriginalSize;
dwNewSizeWR = dwNewSize;
m_pNewVertexStreamZeroData = (uint08*)CxbxMalloc(dwNewSizeWR);
m_pNewVertexStreamZeroData = (uint08*)g_MemoryManager.Allocate(dwNewSizeWR);
m_bAllocatedStreamZeroData = true;
pPatchedVertexData = (uint08*)m_pNewVertexStreamZeroData;
@ -1037,7 +1038,7 @@ bool XTL::VertexPatcher::Restore()
if(this->m_bAllocatedStreamZeroData)
{
CxbxFree(m_pNewVertexStreamZeroData);
g_MemoryManager.Free(m_pNewVertexStreamZeroData);
}
}
else

View File

@ -42,6 +42,7 @@
#include "CxbxKrnl/EmuFS.h"
#include "CxbxKrnl/EmuAlloc.h"
#include "CxbxKrnl/EmuXTL.h"
#include "CxbxKrnl/MemoryManager.h"
// ****************************************************************************
// * Vertex shader function recompiler
@ -1675,10 +1676,10 @@ static boolean VshAddStreamPatch(VSH_PATCH_DATA *pPatchData)
pStreamPatch->NbrTypes = pPatchData->TypePatchData.NbrTypes;
pStreamPatch->NeedPatch = pPatchData->NeedPatching;
// 2010/01/12 - revel8n - fixed allocated data size and type
pStreamPatch->pTypes = (UINT *)CxbxMalloc(pPatchData->TypePatchData.NbrTypes * sizeof(UINT)); //VSH_TYPE_PATCH_DATA));
pStreamPatch->pTypes = (UINT *)g_MemoryManager.Allocate(pPatchData->TypePatchData.NbrTypes * sizeof(UINT)); //VSH_TYPE_PATCH_DATA));
memcpy(pStreamPatch->pTypes, pPatchData->TypePatchData.Types, pPatchData->TypePatchData.NbrTypes * sizeof(UINT)); //VSH_TYPE_PATCH_DATA));
// 2010/12/06 - PatrickvL - do the same for new sizes :
pStreamPatch->pSizes = (UINT *)CxbxMalloc(pPatchData->TypePatchData.NbrTypes * sizeof(UINT));
pStreamPatch->pSizes = (UINT *)g_MemoryManager.Allocate(pPatchData->TypePatchData.NbrTypes * sizeof(UINT));
memcpy(pStreamPatch->pSizes, pPatchData->TypePatchData.NewSizes, pPatchData->TypePatchData.NbrTypes * sizeof(UINT));
return TRUE;
@ -1977,7 +1978,7 @@ DWORD XTL::EmuRecompileVshDeclaration
// Calculate size of declaration
DWORD DeclarationSize = VshGetDeclarationSize(pDeclaration);
*ppRecompiledDeclaration = (DWORD *)CxbxMalloc(DeclarationSize);
*ppRecompiledDeclaration = (DWORD *)g_MemoryManager.Allocate(DeclarationSize);
DWORD *pRecompiled = *ppRecompiledDeclaration;
memcpy(pRecompiled, pDeclaration, DeclarationSize);
*pDeclarationSize = DeclarationSize;
@ -2001,7 +2002,7 @@ DWORD XTL::EmuRecompileVshDeclaration
// Copy the patches to the vertex shader struct
DWORD StreamsSize = PatchData.StreamPatchData.NbrStreams * sizeof(STREAM_DYNAMIC_PATCH);
pVertexDynamicPatch->NbrStreams = PatchData.StreamPatchData.NbrStreams;
pVertexDynamicPatch->pStreamPatches = (STREAM_DYNAMIC_PATCH *)CxbxMalloc(StreamsSize);
pVertexDynamicPatch->pStreamPatches = (STREAM_DYNAMIC_PATCH *)g_MemoryManager.Allocate(StreamsSize);
memcpy(pVertexDynamicPatch->pStreamPatches,
PatchData.StreamPatchData.pStreamPatches,
StreamsSize);
@ -2022,7 +2023,7 @@ extern HRESULT XTL::EmuRecompileVshFunction
VSH_SHADER_HEADER *pShaderHeader = (VSH_SHADER_HEADER*)pFunction;
DWORD *pToken;
boolean EOI = false;
VSH_XBOX_SHADER *pShader = (VSH_XBOX_SHADER*)CxbxCalloc(1, sizeof(VSH_XBOX_SHADER));
VSH_XBOX_SHADER *pShader = (VSH_XBOX_SHADER*)g_MemoryManager.AllocateZeroed(1, sizeof(VSH_XBOX_SHADER));
LPD3DXBUFFER pErrors = NULL;
HRESULT hRet = 0;
@ -2073,7 +2074,7 @@ extern HRESULT XTL::EmuRecompileVshFunction
// The size of the shader is
*pOriginalSize = (DWORD)pToken - (DWORD)pFunction;
char* pShaderDisassembly = (char*)CxbxMalloc(pShader->IntermediateCount * 100); // Should be plenty
char* pShaderDisassembly = (char*)g_MemoryManager.Allocate(pShader->IntermediateCount * 100); // Should be plenty
DbgVshPrintf("-- Before conversion --\n");
VshWriteShader(pShader, pShaderDisassembly, FALSE);
DbgVshPrintf("%s", pShaderDisassembly);
@ -2118,9 +2119,9 @@ extern HRESULT XTL::EmuRecompileVshFunction
if( pErrors )
pErrors->Release();
CxbxFree(pShaderDisassembly);
g_MemoryManager.Free(pShaderDisassembly);
}
CxbxFree(pShader);
g_MemoryManager.Free(pShader);
return hRet;
}
@ -2129,12 +2130,12 @@ extern void XTL::FreeVertexDynamicPatch(VERTEX_SHADER *pVertexShader)
{
for (DWORD i = 0; i < pVertexShader->VertexDynamicPatch.NbrStreams; i++)
{
CxbxFree(pVertexShader->VertexDynamicPatch.pStreamPatches[i].pTypes);
g_MemoryManager.Free(pVertexShader->VertexDynamicPatch.pStreamPatches[i].pTypes);
pVertexShader->VertexDynamicPatch.pStreamPatches[i].pTypes = nullptr;
CxbxFree(pVertexShader->VertexDynamicPatch.pStreamPatches[i].pSizes);
g_MemoryManager.Free(pVertexShader->VertexDynamicPatch.pStreamPatches[i].pSizes);
pVertexShader->VertexDynamicPatch.pStreamPatches[i].pSizes = nullptr;
}
CxbxFree(pVertexShader->VertexDynamicPatch.pStreamPatches);
g_MemoryManager.Free(pVertexShader->VertexDynamicPatch.pStreamPatches);
pVertexShader->VertexDynamicPatch.pStreamPatches = NULL;
pVertexShader->VertexDynamicPatch.NbrStreams = 0;
}

View File

@ -48,6 +48,7 @@ namespace xboxkrnl
#include "EmuShared.h"
#include "EmuAlloc.h"
#include "EmuXTL.h"
#include "MemoryManager.h"
#include <mmreg.h>
#include <msacm.h>
@ -803,7 +804,7 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateBuffer)
DWORD dwEmuFlags = 0;
DSBUFFERDESC *pDSBufferDesc = (DSBUFFERDESC*)CxbxMalloc(sizeof(DSBUFFERDESC));
DSBUFFERDESC *pDSBufferDesc = (DSBUFFERDESC*)g_MemoryManager.Allocate(sizeof(DSBUFFERDESC));
DSBUFFERDESC *pDSBufferDescSpecial = NULL;
bool bIsSpecial = false;
@ -828,7 +829,7 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateBuffer)
if(pdsbd->lpwfxFormat != NULL)
{
pDSBufferDesc->lpwfxFormat = (WAVEFORMATEX*)CxbxMalloc(sizeof(WAVEFORMATEX)+pdsbd->lpwfxFormat->cbSize);
pDSBufferDesc->lpwfxFormat = (WAVEFORMATEX*)g_MemoryManager.Allocate(sizeof(WAVEFORMATEX)+pdsbd->lpwfxFormat->cbSize);
memcpy(pDSBufferDesc->lpwfxFormat, pdsbd->lpwfxFormat, sizeof(WAVEFORMATEX));
if(pDSBufferDesc->lpwfxFormat->wFormatTag == WAVE_FORMAT_XBOX_ADPCM)
@ -868,8 +869,8 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateBuffer)
// TODO: A better response to this scenario if possible.
pDSBufferDescSpecial = (DSBUFFERDESC*)CxbxMalloc(sizeof(DSBUFFERDESC));
pDSBufferDescSpecial->lpwfxFormat = (WAVEFORMATEX*)CxbxMalloc(sizeof(WAVEFORMATEX));
pDSBufferDescSpecial = (DSBUFFERDESC*)g_MemoryManager.Allocate(sizeof(DSBUFFERDESC));
pDSBufferDescSpecial->lpwfxFormat = (WAVEFORMATEX*)g_MemoryManager.Allocate(sizeof(WAVEFORMATEX));
//memset(pDSBufferDescSpecial->lpwfxFormat, 0, sizeof(WAVEFORMATEX));
//memset(pDSBufferDescSpecial, 0, sizeof(DSBUFFERDESC));
@ -886,7 +887,7 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateBuffer)
pDSBufferDescSpecial->dwFlags = DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME | DSBCAPS_CTRLFREQUENCY;
pDSBufferDescSpecial->dwBufferBytes = 3 * pDSBufferDescSpecial->lpwfxFormat->nAvgBytesPerSec;
// pDSBufferDesc->lpwfxFormat = (WAVEFORMATEX*)CxbxMalloc(sizeof(WAVEFORMATEX)/*+pdsbd->lpwfxFormat->cbSize*/);
// pDSBufferDesc->lpwfxFormat = (WAVEFORMATEX*)g_MemoryManager.Allocate(sizeof(WAVEFORMATEX)/*+pdsbd->lpwfxFormat->cbSize*/);
//// pDSBufferDesc->lpwfxFormat->cbSize = sizeof( WAVEFORMATEX );
// pDSBufferDesc->lpwfxFormat->nChannels = 1;
@ -1216,9 +1217,9 @@ ULONG WINAPI XTL::EMUPATCH(IDirectSoundBuffer_Release)
}
if(pThis->EmuBufferDesc->lpwfxFormat != NULL)
CxbxFree(pThis->EmuBufferDesc->lpwfxFormat);
g_MemoryManager.Free(pThis->EmuBufferDesc->lpwfxFormat);
CxbxFree(pThis->EmuBufferDesc);
g_MemoryManager.Free(pThis->EmuBufferDesc);
delete pThis;
}
@ -1562,7 +1563,7 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateStream)
// TODO: Garbage Collection
*ppStream = new X_CDirectSoundStream();
DSBUFFERDESC *pDSBufferDesc = (DSBUFFERDESC*)CxbxMalloc(sizeof(DSBUFFERDESC));
DSBUFFERDESC *pDSBufferDesc = (DSBUFFERDESC*)g_MemoryManager.Allocate(sizeof(DSBUFFERDESC));
// convert from Xbox to PC DSound
{
@ -1580,7 +1581,7 @@ HRESULT WINAPI XTL::EMUPATCH(DirectSoundCreateStream)
if(pdssd->lpwfxFormat != NULL)
{
pDSBufferDesc->lpwfxFormat = (WAVEFORMATEX*)CxbxMalloc(sizeof(WAVEFORMATEX));
pDSBufferDesc->lpwfxFormat = (WAVEFORMATEX*)g_MemoryManager.Allocate(sizeof(WAVEFORMATEX));
memcpy(pDSBufferDesc->lpwfxFormat, pdssd->lpwfxFormat, sizeof(WAVEFORMATEX));
}
@ -1830,9 +1831,9 @@ ULONG WINAPI XTL::EMUPATCH(DirectSound_CDirectSoundStream_Release)
}
if(pThis->EmuBufferDesc->lpwfxFormat != NULL)
CxbxFree(pThis->EmuBufferDesc->lpwfxFormat);
g_MemoryManager.Free(pThis->EmuBufferDesc->lpwfxFormat);
CxbxFree(pThis->EmuBufferDesc);
g_MemoryManager.Free(pThis->EmuBufferDesc);
delete pThis;
}
@ -3652,7 +3653,7 @@ HRESULT WINAPI XTL::EMUPATCH(IDirectSound_GetEffectData)
// TODO: Implement
if( !pvData )
pvData = CxbxMalloc( dwDataSize );
pvData = g_MemoryManager.Allocate( dwDataSize );
@ -3692,7 +3693,7 @@ HRESULT WINAPI XTL::EMUPATCH(IDirectSoundBuffer_SetNotificationPositions)
{
if( pThis->EmuDirectSoundBuffer8 )
{
hr = pThis->EmuDirectSoundBuffer8->QueryInterface( IID_IDirectSoundNotify, (LPVOID*) pNotify );
hr = pThis->EmuDirectSoundBuffer8->QueryInterface( IID_IDirectSoundNotify, (LPVOID*) &pNotify );
if( SUCCEEDED( hr ) && pNotify != nullptr )
{
hr = pNotify->SetNotificationPositions( dwNotifyCount, paNotifies );

View File

@ -46,6 +46,7 @@ namespace xboxkrnl
#include "EmuFS.h"
#include "EmuAlloc.h" // For CxbxCalloc()
#include "CxbxKrnl.h"
#include "MemoryManager.h"
#undef FIELD_OFFSET // prevent macro redefinition warnings
#include <windows.h>
@ -397,7 +398,7 @@ void EmuGenerateFS(Xbe::TLS *pTLS, void *pTLSData)
uint32 dwCopySize = pTLS->dwDataEndAddr - pTLS->dwDataStartAddr;
uint32 dwZeroSize = pTLS->dwSizeofZeroFill;
pNewTLS = CxbxCalloc(1, dwCopySize + dwZeroSize + 0x100 /* + HACK: extra safety padding 0x100*/);
pNewTLS = g_MemoryManager.AllocateZeroed(1, dwCopySize + dwZeroSize + 0x100 /* + HACK: extra safety padding 0x100*/);
memcpy(pNewTLS, pTLSData, dwCopySize);
@ -438,7 +439,7 @@ void EmuGenerateFS(Xbe::TLS *pTLS, void *pTLSData)
}
// Allocate the xbox KPCR structure
xboxkrnl::KPCR *NewPcr = (xboxkrnl::KPCR*)CxbxCalloc(1, sizeof(xboxkrnl::KPCR));
xboxkrnl::KPCR *NewPcr = (xboxkrnl::KPCR*)g_MemoryManager.AllocateZeroed(1, sizeof(xboxkrnl::KPCR));
xboxkrnl::NT_TIB *XbTib = &(NewPcr->NtTib);
xboxkrnl::PKPRCB Prcb = &(NewPcr->PrcbData);
// Note : As explained above (at EmuKeSetPcr), Cxbx cannot allocate one NT_TIB and KPRCB
@ -480,7 +481,7 @@ void EmuGenerateFS(Xbe::TLS *pTLS, void *pTLSData)
// Initialize a fake PrcbData.CurrentThread
{
xboxkrnl::ETHREAD *EThread = (xboxkrnl::ETHREAD*)CxbxCalloc(1, sizeof(xboxkrnl::ETHREAD)); // Clear, to prevent side-effects on random contents
xboxkrnl::ETHREAD *EThread = (xboxkrnl::ETHREAD*)g_MemoryManager.AllocateZeroed(1, sizeof(xboxkrnl::ETHREAD)); // Clear, to prevent side-effects on random contents
EThread->Tcb.TlsData = pNewTLS;
EThread->UniqueThread = GetCurrentThreadId();

View File

@ -47,6 +47,7 @@
#pragma warning(default:4005)
#include "CxbxKrnl.h"
#include "EmuAlloc.h"
#include "MemoryManager.h"
//#include "Logging.h" // For hex4()
@ -570,7 +571,7 @@ EmuNtSymbolicLinkObject* FindNtSymbolicLinkObjectByRootHandle(const HANDLE Handl
void _CxbxPVOIDDeleter(PVOID *ptr)
{
if (*ptr)
CxbxFree(*ptr);
g_MemoryManager.Free(*ptr);
}
// ----------------------------------------------------------------------------
@ -588,7 +589,7 @@ NtDll::FILE_LINK_INFORMATION * _XboxToNTLinkInfo(xboxkrnl::FILE_LINK_INFORMATION
// Build the native FILE_LINK_INFORMATION struct
*Length = sizeof(NtDll::FILE_LINK_INFORMATION) + convertedFileName.size() * sizeof(wchar_t);
NtDll::FILE_LINK_INFORMATION *ntLinkInfo = (NtDll::FILE_LINK_INFORMATION *) CxbxCalloc(1, *Length);
NtDll::FILE_LINK_INFORMATION *ntLinkInfo = (NtDll::FILE_LINK_INFORMATION *) g_MemoryManager.AllocateZeroed(1, *Length);
ntLinkInfo->ReplaceIfExists = xboxLinkInfo->ReplaceIfExists;
ntLinkInfo->RootDirectory = RootDirectory;
ntLinkInfo->FileNameLength = convertedFileName.size() * sizeof(wchar_t);
@ -608,7 +609,7 @@ NtDll::FILE_RENAME_INFORMATION * _XboxToNTRenameInfo(xboxkrnl::FILE_RENAME_INFOR
// Build the native FILE_RENAME_INFORMATION struct
*Length = sizeof(NtDll::FILE_RENAME_INFORMATION) + convertedFileName.size() * sizeof(wchar_t);
NtDll::FILE_RENAME_INFORMATION *ntRenameInfo = (NtDll::FILE_RENAME_INFORMATION *) CxbxCalloc(1, *Length);
NtDll::FILE_RENAME_INFORMATION *ntRenameInfo = (NtDll::FILE_RENAME_INFORMATION *) g_MemoryManager.AllocateZeroed(1, *Length);
ntRenameInfo->ReplaceIfExists = xboxRenameInfo->ReplaceIfExists;
ntRenameInfo->RootDirectory = RootDirectory;
ntRenameInfo->FileNameLength = convertedFileName.size() * sizeof(wchar_t);

View File

@ -45,6 +45,7 @@ namespace xboxkrnl
#include "Logging.h" // For LOG_FUNC()
#include "EmuKrnlLogging.h"
#include "MemoryManager.h"
// prevent name collisions
namespace NtDll
@ -53,7 +54,7 @@ namespace NtDll
};
#include "Emu.h" // For EmuWarning()
#include "EmuAlloc.h" // For CxbxFree(), CxbxMalloc(), etc.
#include "EmuAlloc.h" // For CxbxFree(), g_MemoryManager.Allocate(), etc.
// Global Variable(s)
PVOID g_pPersistedData = NULL;
@ -88,11 +89,11 @@ XBSYSAPI EXPORTNUM(1) xboxkrnl::PVOID NTAPI xboxkrnl::AvGetSavedDataAddress(void
if (g_pPersistedData)
{
CxbxFree(g_pPersistedData);
g_MemoryManager.Free(g_pPersistedData);
g_pPersistedData = NULL;
}
g_pPersistedData = CxbxMalloc(640 * 480 * 4);
g_pPersistedData = g_MemoryManager.Allocate(640 * 480 * 4);
#if 0
// Get a copy of the front buffer
@ -115,7 +116,7 @@ XBSYSAPI EXPORTNUM(1) xboxkrnl::PVOID NTAPI xboxkrnl::AvGetSavedDataAddress(void
FILE* fp = fopen( "PersistedSurface.bin", "rb" );
fseek( fp, 0, SEEK_END );
long size = ftell( fp );
g_pPersistedData = malloc( size );
g_pPersistedData = g_MemoryManager.Allocate( size );
fread( g_pPersistedData, size, 1, fp );
fclose(fp);
}*/

View File

@ -46,6 +46,7 @@ namespace xboxkrnl
#include "Logging.h" // For LOG_FUNC()
#include "EmuEEPROM.h" // For EmuFindEEPROMInfo, EEPROM, XboxFactoryGameRegion
#include "EmuKrnlLogging.h"
#include "MemoryManager.h"
// prevent name collisions
namespace NtDll
@ -126,7 +127,7 @@ XBSYSAPI EXPORTNUM(15) xboxkrnl::PVOID NTAPI xboxkrnl::ExAllocatePoolWithTag
LOG_FUNC_ARG(Tag)
LOG_FUNC_END;
PVOID pRet = CxbxCalloc(1, NumberOfBytes); // Clear, to prevent side-effects on random contents
PVOID pRet = g_MemoryManager.AllocateZeroed(1, NumberOfBytes); // Clear, to prevent side-effects on random contents
LOG_INCOMPLETE(); // TODO : Actually implement ExAllocatePoolWithTag
@ -157,7 +158,7 @@ XBSYSAPI EXPORTNUM(17) xboxkrnl::VOID NTAPI xboxkrnl::ExFreePool
{
LOG_FUNC_ONE_ARG(P);
CxbxFree(P);
g_MemoryManager.Free(P);
}
// ******************************************************************

View File

@ -48,8 +48,9 @@ namespace xboxkrnl
#include "EmuKrnlLogging.h"
#include "CxbxKrnl.h" // For CxbxKrnlCleanup
#include "Emu.h" // For EmuWarning()
#include "EmuAlloc.h" // For CxbxFree(), CxbxMalloc(), etc.
#include "EmuAlloc.h" // For CxbxFree(), g_MemoryManager.Allocate(), etc.
#include "ResourceTracker.h" // For g_AlignCache
#include "MemoryManager.h"
// prevent name collisions
namespace NtDll
@ -131,22 +132,8 @@ XBSYSAPI EXPORTNUM(166) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateContiguousMemo
// Allocate when input arguments are valid
if (pRet != NULL)
{
//
// NOTE: Kludgey (but necessary) solution:
//
// Since this memory must be aligned on a page boundary, we must allocate an extra page
// so that we can return a valid page aligned pointer
//
// TODO : Allocate differently if(ProtectionType & PAGE_WRITECOMBINE)
pRet = CxbxMalloc(NumberOfBytes + Alignment);
// align to page boundary
DWORD dwRet = (DWORD)pRet;
dwRet += Alignment - dwRet % Alignment;
g_AlignCache.insert(dwRet, pRet);
pRet = (PVOID)dwRet;
pRet = g_MemoryManager.AllocateContiguous(NumberOfBytes, Alignment);
}
RETURN(pRet);
@ -167,7 +154,7 @@ XBSYSAPI EXPORTNUM(167) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateSystemMemory
LOG_FUNC_END;
// TODO: should this be aligned?
PVOID pRet = CxbxMalloc(NumberOfBytes);
PVOID pRet = g_MemoryManager.Allocate(NumberOfBytes);
RETURN(pRet);
}
@ -296,32 +283,18 @@ XBSYSAPI EXPORTNUM(171) xboxkrnl::VOID NTAPI xboxkrnl::MmFreeContiguousMemory
{
LOG_FUNC_ONE_ARG(BaseAddress);
PVOID OrigBaseAddress = BaseAddress;
if (g_AlignCache.exists(BaseAddress))
{
OrigBaseAddress = g_AlignCache.get(BaseAddress);
g_AlignCache.remove(BaseAddress);
}
if (OrigBaseAddress == &DefaultLaunchDataPage)
{
if (BaseAddress == &DefaultLaunchDataPage) {
DbgPrintf("Ignored MmFreeContiguousMemory(&DefaultLaunchDataPage)\n");
LOG_IGNORED();
}
else
{
// TODO : Free PAGE_WRITECOMBINE differently
if (OrigBaseAddress == LaunchDataPage)
DbgPrintf("MmFreeContiguousMemory detected a free of LaunchDataPage\n");
CxbxFree(OrigBaseAddress);
return;
}
// TODO -oDxbx: Sokoban crashes after this, at reset time (press Black + White to hit this).
// Tracing in assembly shows the crash takes place quite a while further, so it's probably
// not related to this call per-se. The strangest thing is, that if we let the debugger step
// all the way through, the crash doesn't occur. Adding a Sleep(100) here doesn't help though.
g_MemoryManager.Free(BaseAddress);
// TODO -oDxbx: Sokoban crashes after this, at reset time (press Black + White to hit this).
// Tracing in assembly shows the crash takes place quite a while further, so it's probably
// not related to this call per-se. The strangest thing is, that if we let the debugger step
// all the way through, the crash doesn't occur. Adding a Sleep(100) here doesn't help though.
}
// ******************************************************************
@ -338,7 +311,7 @@ XBSYSAPI EXPORTNUM(172) xboxkrnl::NTSTATUS NTAPI xboxkrnl::MmFreeSystemMemory
LOG_FUNC_ARG(NumberOfBytes)
LOG_FUNC_END;
CxbxFree(BaseAddress);
g_MemoryManager.Free(BaseAddress);
RETURN(STATUS_SUCCESS);
}
@ -440,7 +413,7 @@ XBSYSAPI EXPORTNUM(177) xboxkrnl::PVOID NTAPI xboxkrnl::MmMapIoSpace
LOG_FUNC_END;
// TODO: should this be aligned?
PVOID pRet = CxbxMalloc(NumberOfBytes);
PVOID pRet = g_MemoryManager.Allocate(NumberOfBytes);
LOG_INCOMPLETE();
RETURN(pRet);
@ -512,8 +485,10 @@ XBSYSAPI EXPORTNUM(179) xboxkrnl::ULONG NTAPI xboxkrnl::MmQueryAddressProtect
// Assume read/write when page is allocated :
ULONG Result = PAGE_NOACCESS;
if (EmuCheckAllocationSize(VirtualAddress, false))
if (g_MemoryManager.IsAllocated(VirtualAddress)) {
Result = PAGE_READWRITE;
}
LOG_INCOMPLETE(); // TODO : Improve the MmQueryAddressProtect implementation
@ -532,7 +507,7 @@ XBSYSAPI EXPORTNUM(180) xboxkrnl::ULONG NTAPI xboxkrnl::MmQueryAllocationSize
LOG_INCOMPLETE(); // TODO : Free PAGE_WRITECOMBINE differently
ULONG uiSize = EmuCheckAllocationSize(BaseAddress, false);
ULONG uiSize = g_MemoryManager.QueryAllocationSize(BaseAddress);
RETURN(uiSize);
}
@ -634,7 +609,7 @@ XBSYSAPI EXPORTNUM(183) xboxkrnl::NTSTATUS NTAPI xboxkrnl::MmUnmapIoSpace
LOG_FUNC_ARG(NumberOfBytes)
LOG_FUNC_END;
CxbxFree(BaseAddress);
g_MemoryManager.Free(BaseAddress);
LOG_INCOMPLETE();
RETURN(STATUS_SUCCESS);

View File

@ -55,7 +55,8 @@ namespace NtDll
#include "CxbxKrnl.h" // For CxbxKrnlCleanup
#include "Emu.h" // For EmuWarning()
#include "EmuFile.h" // For EmuNtSymbolicLinkObject, NtStatusToString(), etc.
#include "EmuAlloc.h" // For CxbxFree(), CxbxMalloc(), etc.
#include "EmuAlloc.h" // For CxbxFree(), g_MemoryManager.Allocate(), etc.
#include "MemoryManager.h"
#pragma warning(disable:4005) // Ignore redefined status values
#include <ntstatus.h>
@ -985,7 +986,7 @@ XBSYSAPI EXPORTNUM(207) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryDirectoryFile
}
NtDll::FILE_DIRECTORY_INFORMATION *NtFileDirInfo =
(NtDll::FILE_DIRECTORY_INFORMATION *) CxbxMalloc(NtFileDirectoryInformationSize + NtPathBufferSize);
(NtDll::FILE_DIRECTORY_INFORMATION *) g_MemoryManager.Allocate(NtFileDirectoryInformationSize + NtPathBufferSize);
// Short-hand pointer to Nt filename :
wchar_t *wcstr = NtFileDirInfo->FileName;
@ -1024,7 +1025,7 @@ XBSYSAPI EXPORTNUM(207) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryDirectoryFile
}
// TODO: Cache the last search result for quicker access with CreateFile (xbox does this internally!)
CxbxFree(NtFileDirInfo);
g_MemoryManager.Free(NtFileDirInfo);
RETURN(ret);
}
@ -1122,7 +1123,7 @@ XBSYSAPI EXPORTNUM(211) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryInformationFil
// We need to retry the operation in case the buffer is too small to fit the data
do
{
ntFileInfo = CxbxMalloc(bufferSize);
ntFileInfo = g_MemoryManager.Allocate(bufferSize);
ret = NtDll::NtQueryInformationFile(
FileHandle,
@ -1134,14 +1135,14 @@ XBSYSAPI EXPORTNUM(211) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryInformationFil
// Buffer is too small; make a larger one
if (ret == STATUS_BUFFER_OVERFLOW)
{
CxbxFree(ntFileInfo);
g_MemoryManager.Free(ntFileInfo);
bufferSize *= 2;
// Bail out if the buffer gets too big
if (bufferSize > 65536)
return STATUS_INVALID_PARAMETER; // TODO: what's the appropriate error code to return here?
ntFileInfo = CxbxMalloc(bufferSize);
ntFileInfo = g_MemoryManager.Allocate(bufferSize);
}
} while (ret == STATUS_BUFFER_OVERFLOW);
@ -1149,7 +1150,7 @@ XBSYSAPI EXPORTNUM(211) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtQueryInformationFil
NTSTATUS convRet = NTToXboxFileInformation(ntFileInfo, FileInformation, FileInformationClass, Length);
// Make sure to free the memory first
CxbxFree(ntFileInfo);
g_MemoryManager.Free(ntFileInfo);
if (FAILED(ret))
EmuWarning("NtQueryInformationFile failed! (0x%.08X)", ret);

View File

@ -43,11 +43,15 @@ namespace xboxkrnl
#include <xboxkrnl/xboxkrnl.h> // For XboxEEPROMKey, etc.
};
// Certificate Key
// Not exported but used to generate per-title keys
xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxCertificateKey = { 0 };
// ******************************************************************
// * 0x0141 - XboxEEPROMKey
// ******************************************************************
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(321) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxEEPROMKey = {};
XBSYSAPI EXPORTNUM(321) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxEEPROMKey = { 0 };
// ******************************************************************
// * 0x0142 - XboxHardwareInfo
@ -61,13 +65,7 @@ XBSYSAPI EXPORTNUM(322) xboxkrnl::XBOX_HARDWARE_INFO xboxkrnl::XboxHardwareInfo
// ******************************************************************
// * 0x0143 - XboxHDKey
// ******************************************************************
XBSYSAPI EXPORTNUM(323) xboxkrnl::UCHAR xboxkrnl::XboxHDKey[16] =
{
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
};
XBSYSAPI EXPORTNUM(323) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxHDKey = { 0 };
// ******************************************************************
// * 0x0144 - XboxKrnlVersion
@ -81,23 +79,23 @@ XBSYSAPI EXPORTNUM(324) xboxkrnl::XBOX_KRNL_VERSION xboxkrnl::XboxKrnlVersion =
// ******************************************************************
// * 0x0145 - XboxSignatureKey
// Generated in SetupPerTitleKeys() using the Certificate Key and the
// XBE's Signature Key
// ******************************************************************
XBSYSAPI EXPORTNUM(325) xboxkrnl::BYTE xboxkrnl::XboxSignatureKey[16] =
{
// cxbx default saved game key
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
XBSYSAPI EXPORTNUM(325) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxSignatureKey = { 0 };
// ******************************************************************
// * 0x0161 - XboxLANKey
// Generated in SetupPerTitleKeys() using the Certificate Key and the
// XBE's LAN Key
// ******************************************************************
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(353) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxLANKey = {};
XBSYSAPI EXPORTNUM(353) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxLANKey = { 0 };
// ******************************************************************
// * 0x0162 - XboxAlternateSignatureKeys
// Generated in SetupPerTitleKeys() using the Certificate Key and the
// XBE's Alternate Signature Keys Key
// ******************************************************************
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(354) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxAlternateSignatureKeys = {};
XBSYSAPI EXPORTNUM(354) xboxkrnl::XBOX_KEY_DATA xboxkrnl::XboxAlternateSignatureKeys[ALTERNATE_SIGNATURE_COUNT] = { 0 };

View File

@ -49,6 +49,7 @@ namespace xboxkrnl
#include "EmuShared.h"
#include "EmuAlloc.h"
#include "EmuXTL.h"
#include "MemoryManager.h"
#include <mmreg.h>
#include <msacm.h>
@ -78,7 +79,7 @@ HRESULT WINAPI XTL::EMUPATCH(XACTEngineCreate)
// TODO: Any other form of initialization?
*ppEngine = (X_XACTEngine*) CxbxCalloc(1, sizeof( X_XACTEngine ) );
*ppEngine = (X_XACTEngine*)g_MemoryManager.AllocateZeroed(1, sizeof( X_XACTEngine ) );
@ -122,7 +123,7 @@ HRESULT WINAPI XTL::EMUPATCH(IXACTEngine_RegisterWaveBank)
// TODO: Implement
*ppWaveBank = (X_XACTWaveBank*) CxbxCalloc(1, sizeof( X_XACTWaveBank ) );
*ppWaveBank = (X_XACTWaveBank*)g_MemoryManager.AllocateZeroed(1, sizeof( X_XACTWaveBank ) );
RETURN(S_OK);
}
@ -145,7 +146,7 @@ HRESULT WINAPI XTL::EMUPATCH(IXACTEngine_RegisterStreamedWaveBank)
// TODO: Implement
*ppWaveBank = (X_XACTWaveBank*) CxbxCalloc(1, sizeof( X_XACTWaveBank ) );
*ppWaveBank = (X_XACTWaveBank*)g_MemoryManager.AllocateZeroed(1, sizeof( X_XACTWaveBank ) );
RETURN(S_OK);
}
@ -170,7 +171,7 @@ HRESULT WINAPI XTL::EMUPATCH(IXACTEngine_CreateSoundBank)
// TODO: Implement
*ppSoundBank = (X_XACTSoundBank*) CxbxCalloc(1, sizeof( X_XACTSoundBank ) );
*ppSoundBank = (X_XACTSoundBank*)g_MemoryManager.AllocateZeroed(1, sizeof( X_XACTSoundBank ) );
RETURN(S_OK);
}
@ -216,7 +217,7 @@ HRESULT WINAPI XTL::EMUPATCH(IXACTEngine_CreateSoundSource)
LOG_FUNC_ARG(ppSoundSource)
LOG_FUNC_END;
*ppSoundSource = (X_XACTSoundSource*) CxbxCalloc(1, sizeof( X_XACTSoundSource ) );
*ppSoundSource = (X_XACTSoundSource*)g_MemoryManager.AllocateZeroed(1, sizeof( X_XACTSoundSource ) );
RETURN(S_OK);
}
@ -513,7 +514,7 @@ HRESULT WINAPI XTL::EMUPATCH(IXACTEngine_UnRegisterWaveBank)
// to IXACTWaveBank is released.
// if(pWaveBank)
// free(pWaveBank);
// g_MemoryManager.Free(pWaveBank);
RETURN(S_OK);
}

View File

@ -64,6 +64,7 @@ const char *Lib_XONLINES = "XONLINES";
#include "HLEDataBase/Xapi.1.0.4432.inl"
#include "HLEDataBase/Xapi.1.0.4627.inl"
#include "HLEDataBase/Xapi.1.0.4721.inl"
#include "HLEDataBase/Xapi.1.0.5028.inl"
#include "HLEDataBase/Xapi.1.0.5233.inl"
#include "HLEDataBase/Xapi.1.0.5344.inl"
#include "HLEDataBase/Xapi.1.0.5558.inl"
@ -75,6 +76,7 @@ const char *Lib_XONLINES = "XONLINES";
#include "HLEDataBase/D3D8.1.0.4361.inl"
#include "HLEDataBase/D3D8.1.0.4432.inl"
#include "HLEDataBase/D3D8.1.0.4627.inl"
#include "HLEDataBase/D3D8.1.0.5028.inl"
#include "HLEDataBase/D3D8.1.0.5233.inl"
#include "HLEDataBase/D3D8.1.0.5344.inl"
#include "HLEDataBase/D3D8.1.0.5558.inl"
@ -86,6 +88,7 @@ const char *Lib_XONLINES = "XONLINES";
#include "HLEDataBase/DSound.1.0.4361.inl"
#include "HLEDataBase/DSound.1.0.4432.inl"
#include "HLEDataBase/DSound.1.0.4627.inl"
#include "HLEDataBase/DSound.1.0.5028.inl"
#include "HLEDataBase/DSound.1.0.5233.inl"
#include "HLEDataBase/DSound.1.0.5344.inl"
#include "HLEDataBase/DSound.1.0.5558.inl"
@ -96,6 +99,7 @@ const char *Lib_XONLINES = "XONLINES";
#include "HLEDataBase/XG.1.0.4361.inl"
#include "HLEDataBase/XG.1.0.4432.inl"
#include "HLEDataBase/XG.1.0.4627.inl"
#include "HLEDataBase/XG.1.0.5028.inl"
#include "HLEDataBase/XG.1.0.5233.inl"
#include "HLEDataBase/XG.1.0.5344.inl"
#include "HLEDataBase/XG.1.0.5558.inl"
@ -105,6 +109,7 @@ const char *Lib_XONLINES = "XONLINES";
#include "HLEDataBase/XNet.1.0.4627.inl"
#include "HLEDataBase/XOnline.1.0.4361.inl"
#include "HLEDataBase/XOnline.1.0.4627.inl"
#include "HLEDataBase/XOnline.1.0.5028.inl"
#include "HLEDataBase/XOnline.1.0.5233.inl"
#include "HLEDataBase/XOnline.1.0.5344.inl"
#include "HLEDataBase/XOnline.1.0.5558.inl"
@ -130,6 +135,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_XAPILIB, XAPI, 4432),
HLE_ENTRY(Lib_XAPILIB, XAPI, 4627),
HLE_ENTRY(Lib_XAPILIB, XAPI, 4721),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5028),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5233),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5344),
HLE_ENTRY(Lib_XAPILIB, XAPI, 5558),
@ -142,6 +148,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_D3D8, D3D8, 4361),
HLE_ENTRY(Lib_D3D8, D3D8, 4432),
HLE_ENTRY(Lib_D3D8, D3D8, 4627),
HLE_ENTRY(Lib_D3D8, D3D8, 5028),
HLE_ENTRY(Lib_D3D8, D3D8, 5233),
HLE_ENTRY(Lib_D3D8, D3D8, 5344),
HLE_ENTRY(Lib_D3D8, D3D8, 5558),
@ -155,6 +162,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_DSOUND, DSound, 4361),
HLE_ENTRY(Lib_DSOUND, DSound, 4432),
HLE_ENTRY(Lib_DSOUND, DSound, 4627),
HLE_ENTRY(Lib_DSOUND, DSound, 5028),
HLE_ENTRY(Lib_DSOUND, DSound, 5233),
HLE_ENTRY(Lib_DSOUND, DSound, 5344),
HLE_ENTRY(Lib_DSOUND, DSound, 5558),
@ -166,6 +174,7 @@ const HLEData HLEDataBase[] =
HLE_ENTRY(Lib_XGRAPHC, XG, 4361),
HLE_ENTRY(Lib_XGRAPHC, XG, 4432),
HLE_ENTRY(Lib_XGRAPHC, XG, 4627),
HLE_ENTRY(Lib_XGRAPHC, XG, 5028),
HLE_ENTRY(Lib_XGRAPHC, XG, 5233),
HLE_ENTRY(Lib_XGRAPHC, XG, 5344),
HLE_ENTRY(Lib_XGRAPHC, XG, 5558),
@ -179,6 +188,7 @@ const HLEData HLEDataBase[] =
// TODO: Verify differences between XONLINE and XONLINES (if any)
HLE_ENTRY(Lib_XONLINES, XOnline, 4627),
HLE_ENTRY(Lib_XONLINES, XOnline, 5028),
HLE_ENTRY(Lib_XONLINES, XOnline, 5233),
HLE_ENTRY(Lib_XONLINES, XOnline, 5344),
HLE_ENTRY(Lib_XONLINES, XOnline, 5558),

View File

@ -40,6 +40,7 @@
#include "HLEDataBase/Xapi.1.0.4361.h"
#include "HLEDataBase/Xapi.1.0.4432.h"
#include "HLEDataBase/Xapi.1.0.4627.h"
#include "HLEDataBase/Xapi.1.0.5028.h"
#include "HLEDataBase/Xapi.1.0.5233.h"
#include "HLEDataBase/Xapi.1.0.5344.h"
#include "HLEDataBase/Xapi.1.0.5558.h"
@ -51,6 +52,7 @@
#include "HLEDataBase/D3D8.1.0.4361.h"
#include "HLEDataBase/D3D8.1.0.4432.h"
#include "HLEDataBase/D3D8.1.0.4627.h"
#include "HLEDataBase/D3D8.1.0.5028.h"
#include "HLEDataBase/D3D8.1.0.5233.h"
#include "HLEDataBase/D3D8.1.0.5344.h"
#include "HLEDataBase/D3D8.1.0.5558.h"
@ -62,6 +64,7 @@
#include "HLEDataBase/DSound.1.0.4361.h"
#include "HLEDataBase/DSound.1.0.4432.h"
#include "HLEDataBase/DSound.1.0.4627.h"
#include "HLEDataBase/DSound.1.0.5028.h"
#include "HLEDataBase/DSound.1.0.5233.h"
#include "HLEDataBase/DSound.1.0.5344.h"
#include "HLEDataBase/DSound.1.0.5558.h"
@ -72,6 +75,7 @@
#include "HLEDataBase/XG.1.0.4361.h"
#include "HLEDataBase/XG.1.0.4432.h"
#include "HLEDataBase/XG.1.0.4627.h"
#include "HLEDataBase/XG.1.0.5028.h"
#include "HLEDataBase/XG.1.0.5233.h"
#include "HLEDataBase/XG.1.0.5344.h"
#include "HLEDataBase/XG.1.0.5558.h"
@ -80,6 +84,7 @@
#include "HLEDataBase/XNet.1.0.3911.h"
#include "HLEDataBase/XOnline.1.0.4361.h"
#include "HLEDataBase/XOnline.1.0.4627.h"
#include "HLEDataBase/XOnline.1.0.5028.h"
#include "HLEDataBase/XOnline.1.0.5233.h"
#include "HLEDataBase/XOnline.1.0.5344.h"
#include "HLEDataBase/XOnline.1.0.5558.h"

View File

@ -2471,7 +2471,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetRenderState_StencilCullEnable
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetRenderState_StencilCullEnable, 3925, 7)
OOVPA_XREF(D3DDevice_SetRenderState_StencilCullEnable, 3925, 8,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x0D, XREF_D3DRS_STENCILCULLENABLE ),
{ 0x0B, 0x56 },
{ 0x16, 0x8B },
@ -3170,7 +3175,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_BlockOnFence
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_BlockOnFence, 3925, 7)
OOVPA_XREF(D3DDevice_BlockOnFence, 3925, 8,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x08, XREF_D3D_BLOCKONTIME ),
{ 0x00, 0x8B },
{ 0x02, 0x24 },
@ -3325,6 +3335,19 @@ OOVPA_XREF(D3D_BlockOnResource, 3925, 9,
{ 0x80, 0x00 },
OOVPA_END;
// ******************************************************************
// * D3DResource_BlockUntilNotBusy
// ******************************************************************
OOVPA_XREF(D3DResource_BlockUntilNotBusy, 3925, 2,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x01, XREF_D3D_BlockOnResource ),
{ 0x00, 0xE9 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_BeginStateBlock
// ******************************************************************
@ -3372,6 +3395,248 @@ OOVPA_NO_XREF(D3DDevice_SetTile, 3925, 9)
{ 0x80, 0x18 }, // (Offset,Value)-Pair #9
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetBackMaterial
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 3925, 9)
{ 0x0A, 0x57 },
{ 0x0B, 0x8D },
{ 0x0C, 0xB8 },
{ 0x0D, 0x5C },
{ 0x0E, 0x0B },
{ 0x0F, 0x00 },
{ 0x14, 0x00 },
{ 0x18, 0x8B },
{ 0x1E, 0x5F },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SwitchTexture
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SwitchTexture, 3925, 10)
// D3DDevice_SwitchTexture+0x00 : mov eax, [addr]
{ 0x00, 0xA1 }, // (Offset,Value)-Pair #1
// D3DDevice_SwitchTexture+0x05 : add eax, 0x0C
{ 0x05, 0x83 }, // (Offset,Value)-Pair #2
{ 0x06, 0xC0 }, // (Offset,Value)-Pair #3
{ 0x07, 0x0C }, // (Offset,Value)-Pair #4
// D3DDevice_SwitchTexture+0x08 : cmp eax, ds:dword_XXXXX
{ 0x08, 0x3B }, // (Offset,Value)-Pair #5
{ 0x09, 0x05 }, // (Offset,Value)-Pair #6
// D3DDevice_SwitchTexture+0x0E : jnb +0x15
{ 0x0E, 0x73 }, // (Offset,Value)-Pair #7
{ 0x0F, 0x15 }, // (Offset,Value)-Pair #8
// D3DDevice_SwitchTexture+0x22 : retn 0x04
{ 0x22, 0xC2 }, // (Offset,Value)-Pair #9
{ 0x23, 0x04 }, // (Offset,Value)-Pair #10
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetModelView
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetModelView, 3925, 10)
{ 0x05, 0x57 },
{ 0x0A, 0x85 },
{ 0x10, 0xB0 },
{ 0x11, 0xE0 },
{ 0x12, 0x05 },
{ 0x13, 0x00 },
{ 0x14, 0x00 },
{ 0x15, 0xB9 },
{ 0x16, 0x10 },
{ 0x1C, 0x5E },
OOVPA_END;
// ******************************************************************
// * D3DDevice_CopyRects
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_CopyRects, 3925, 9)
{ 0x10, 0x0F },
{ 0x11, 0xB6 },
{ 0x12, 0x75 },
{ 0x13, 0x0D },
{ 0x14, 0x8A },
{ 0x15, 0x9E },
{ 0x40, 0xF6 },
{ 0x4F, 0x84 },
{ 0x75, 0x15 },
OOVPA_END;
// ******************************************************************
// * D3DVertexBuffer_GetDesc
// ******************************************************************
OOVPA_NO_XREF(D3DVertexBuffer_GetDesc, 3925, 7)
{ 0x02, 0x24 },
{ 0x06, 0x74 },
{ 0x0A, 0xC7 },
{ 0x0E, 0x00 },
{ 0x15, 0x89 },
{ 0x16, 0x46 },
{ 0x1A, 0x08 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetShaderConstantMode
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetShaderConstantMode, 3925, 8)
{ 0x05, 0x8B },
{ 0x06, 0x88 },
{ 0x07, 0x40 },
{ 0x08, 0x21 },
{ 0x0B, 0x8B },
{ 0x0D, 0x24 },
{ 0x10, 0x0A },
{ 0x13, 0x00 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShader, 3925, 7)
{ 0x05, 0x8B },
{ 0x06, 0x88 },
{ 0x07, 0x74 },
{ 0x0A, 0x00 },
{ 0x0D, 0x24 },
{ 0x10, 0x0A },
{ 0x13, 0x00 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderConstant
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderConstant, 3925, 9)
{ 0x05, 0x8B },
{ 0x06, 0x74 },
{ 0x07, 0x24 },
{ 0x08, 0x08 },
{ 0x09, 0x57 },
{ 0x0A, 0x8B },
{ 0x0B, 0x3D },
{ 0x18, 0x00 },
{ 0x1F, 0xF7 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderInput
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderInput, 3925, 8)
{ 0x00, 0x8B },
{ 0x03, 0x08 },
{ 0x04, 0x85 },
{ 0x05, 0xC9 },
{ 0x06, 0xA1 },
{ 0x10, 0x07 },
{ 0x18, 0x04 },
{ 0x1F, 0x20 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_RunVertexStateShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_RunVertexStateShader, 3925, 9)
{ 0x0D, 0x8B },
{ 0x10, 0x0C },
{ 0x11, 0x85 },
{ 0x12, 0xC9 },
{ 0x13, 0x74 },
{ 0x14, 0x21 },
{ 0x15, 0xD9 },
{ 0x16, 0x41 },
{ 0x1F, 0x41 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderType
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderType, 3925, 7)
{ 0x04, 0x8B },
{ 0x0A, 0x07 },
{ 0x10, 0xEB },
{ 0x16, 0x00 },
{ 0x1C, 0x40 },
{ 0x22, 0xC9 },
{ 0x28, 0x08 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderDeclaration
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderDeclaration, 3925, 9)
{ 0x00F, 0x8B },
{ 0x010, 0x4C },
{ 0x011, 0x24 },
{ 0x012, 0x1C },
{ 0x013, 0xC7 },
{ 0x014, 0x01 },
{ 0x015, 0x00 },
{ 0x11F, 0x83 },
{ 0x129, 0x0F },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderFunction
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderFunction, 3925, 7)
{ 0x16, 0xC0 },
{ 0x2E, 0x01 },
{ 0x46, 0x10 },
{ 0x5E, 0x07 },
{ 0x76, 0xC7 },
{ 0x8E, 0x00 },
{ 0xA6, 0xF8 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetPixelShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetPixelShader, 3925, 7)
{ 0x05, 0x8B },
{ 0x06, 0x88 },
{ 0x07, 0x14 },
{ 0x0A, 0x00 },
{ 0x0D, 0x24 },
{ 0x10, 0x0A },
{ 0x13, 0x00 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_IsFencePending
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_IsFencePending, 3925, 11)
{ 0x05, 0x8B },
{ 0x06, 0x88 },
{ 0x07, 0xF0 },
{ 0x08, 0x03 },
{ 0x09, 0x00 },
{ 0x0A, 0x00 },
{ 0x0B, 0x8B },
{ 0x0C, 0x40 },
{ 0x0D, 0x1C },
{ 0x1A, 0x1B },
{ 0x1F, 0x04 },
OOVPA_END;
// ******************************************************************
// * D3D8_3925
// ******************************************************************
@ -3518,7 +3783,6 @@ OOVPATable D3D8_3925[] = {
REGISTER_OOVPA(D3DDevice_LoadVertexShaderProgram, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_RunPushBuffer, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_BlockOnFence, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_Reset, 3925, PATCH),
REGISTER_OOVPA(D3D_GetAdapterIdentifier, 3925, DISABLED),
REGISTER_OOVPA(D3D_GetDeviceCaps, 3925, DISABLED),
@ -3526,9 +3790,26 @@ OOVPATable D3D8_3925[] = {
REGISTER_OOVPA(D3DDevice_CreateImageSurface, 3925, PATCH),
REGISTER_OOVPA(D3D_BlockOnTime, 3925, PATCH),
REGISTER_OOVPA(D3D_BlockOnResource, 3925, PATCH),
REGISTER_OOVPA(D3DResource_BlockUntilNotBusy, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_BlockOnFence, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_BeginStateBlock, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_EndStateBlock, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_SetTileNoWait, 3925, ALIAS, D3DDevice_SetTile),
REGISTER_OOVPA(D3DDevice_SetBackMaterial, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_SwitchTexture, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetModelView, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_CopyRects, 3925, PATCH),
REGISTER_OOVPA(D3DVertexBuffer_GetDesc, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetShaderConstantMode, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetVertexShader, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetVertexShaderConstant, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetVertexShaderInput, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_RunVertexStateShader, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetVertexShaderType, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetVertexShaderDeclaration, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetVertexShaderFunction, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetPixelShader, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_IsFencePending, 3925, PATCH),
};
// ******************************************************************

View File

@ -1953,6 +1953,37 @@ OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 4134, 11)
{ 0xA5, 0x89 }, // (Offset,Value)-Pair #11
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetModelView
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetModelView, 4134, 7)
{ 0x05, 0x57 },
{ 0x0A, 0x85 },
{ 0x10, 0xB0 },
{ 0x16, 0x10 },
{ 0x1C, 0x5E },
{ 0x22, 0xC1 },
{ 0x28, 0xE0 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_FlushVertexCache
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 4134, 10)
{ 0x00, 0x56 },
{ 0x07, 0x8B },
{ 0x08, 0x06 },
{ 0x0D, 0x05 },
{ 0x13, 0xC7 },
{ 0x15, 0x10 },
{ 0x17, 0x04 },
{ 0x1C, 0x00 },
{ 0x21, 0xC0 },
{ 0x26, 0xC3 },
OOVPA_END;
// ******************************************************************
// * D3D8_4134
// ******************************************************************
@ -2108,6 +2139,8 @@ OOVPATable D3D8_4134[] = {
REGISTER_OOVPA(D3D_SetPushBufferSize, 4034, DISABLED),
REGISTER_OOVPA(D3DDevice_EnableOverlay, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_UpdateOverlay, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_GetModelView, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_FlushVertexCache, 4134, PATCH),
};
// ******************************************************************

View File

@ -1772,6 +1772,37 @@ OOVPA_NO_XREF(D3DDevice_SetVertexShaderInput, 4361, 8)
{ 0xFE, 0x89 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetVertexData2s
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetVertexData2s, 4361, 8)
{ 0x08, 0x06 },
{ 0x0E, 0xE8 },
{ 0x16, 0x08 },
{ 0x17, 0x8D },
{ 0x18, 0x14 },
{ 0x19, 0x8D },
{ 0x1A, 0x00 },
{ 0x1F, 0xBF },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetVertexData4s
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetVertexData4s, 4361, 9)
{ 0x08, 0x06 },
{ 0x0E, 0xE8 },
{ 0x16, 0x08 },
{ 0x17, 0x8D },
{ 0x18, 0x14 },
{ 0x19, 0xCD },
{ 0x1A, 0x80 },
{ 0x1B, 0x19 },
{ 0x1F, 0xBF },
OOVPA_END;
// ******************************************************************
// * D3D8_4361
// ******************************************************************
@ -1921,6 +1952,8 @@ OOVPATable D3D8_4361[] = {
REGISTER_OOVPA(D3DDevice_GetVertexShader, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexShaderInput, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexData2s, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexData4s, 4361, PATCH),
};
// ******************************************************************

View File

@ -99,28 +99,6 @@ OOVPA_NO_XREF(D3DDevice_BeginVisibilityTest, 4627, 11)
{ 0x26, 0x0C }, // (Offset,Value)-Pair #11
OOVPA_END;
// ******************************************************************
// * Direct3D_CreateDevice
// ******************************************************************
OOVPA_NO_XREF(Direct3D_CreateDevice, 5028, 8)
// Direct3D_CreateDevice+0x0A : jnz +0x0A
{ 0x0A, 0x75 }, // (Offset,Value)-Pair #1
{ 0x0B, 0x0A }, // (Offset,Value)-Pair #2
// Direct3D_CreateDevice+0x80 : repe stosd
{ 0x80, 0xF3 }, // (Offset,Value)-Pair #3
{ 0x81, 0xAB }, // (Offset,Value)-Pair #4
// Direct3D_CreateDevice+0x83 : mov eax, esi
{ 0x83, 0x8B }, // (Offset,Value)-Pair #5
{ 0x84, 0xC6 }, // (Offset,Value)-Pair #6
// Direct3D_CreateDevice+0x91 : retn 0x18
{ 0x91, 0xC2 }, // (Offset,Value)-Pair #7
{ 0x92, 0x18 }, // (Offset,Value)-Pair #8
OOVPA_END;
// ******************************************************************
// * D3DDevice_EndVisibilityTest
// ******************************************************************
@ -2164,17 +2142,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderType@8
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderType, 4627, 7)
{ 0x04, 0x8B },
{ 0x0A, 0x07 },
{ 0x10, 0xEB },
{ 0x16, 0x00 },
{ 0x1C, 0x40 },
{ 0x22, 0xC9 },
{ 0x28, 0x08 },
OOVPA_END;
#define D3DDevice_GetVertexShaderType_4627 D3DDevice_GetVertexShaderType_3925
// ******************************************************************
// * D3DDevice_GetVertexShaderDeclaration
@ -2194,16 +2162,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVertexShaderFunction
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVertexShaderFunction, 4627, 7)
{ 0x16, 0xC0 },
{ 0x2E, 0x01 },
{ 0x46, 0x10 },
{ 0x5E, 0x07 },
{ 0x76, 0xC7 },
{ 0x8E, 0x00 },
{ 0xA6, 0xF8 },
OOVPA_END;
#define D3DDevice_GetVertexShaderFunction_4627 D3DDevice_GetVertexShaderFunction_3925
// ******************************************************************
// * D3DDevice_SetVertexShaderInput
@ -3126,6 +3085,21 @@ OOVPA_NO_XREF(D3DDevice_SetBackMaterial, 4627, 9)
{ 0x2E, 0x04 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_PrimeVertexCache
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_PrimeVertexCache, 4627, 8)
{ 0x1A, 0x8B },
{ 0x1B, 0x4D },
{ 0x1C, 0x04 },
{ 0x1D, 0xD1 },
{ 0x1E, 0xEE },
{ 0x2E, 0xC7 },
{ 0x3E, 0x00 },
{ 0x4E, 0x89 },
OOVPA_END;
// ******************************************************************
// * D3D8_4627
// ******************************************************************
@ -3341,6 +3315,7 @@ REGISTER_OOVPA(D3DDevice_SetRenderState_CullMode, 4034, PATCH),
REGISTER_OOVPA(D3DDevice_SetBackMaterial, 4627, PATCH),
// REGISTER_OOVPA(D3DCubeTexture_LockRect, 3925, PATCH), // TODO: This needs to be verified on 4361, not just 4242!
REGISTER_OOVPA(D3D_SetPushBufferSize, 4034, DISABLED),
REGISTER_OOVPA(D3DDevice_PrimeVertexCache, 4627, PATCH),
};
// ******************************************************************

View File

@ -0,0 +1,42 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->D3D8.1.0.5028.h
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef D3D8_5028_H
#define D3D8_5028_H
#include "OOVPA.h"
extern OOVPATable D3D8_5028[];
extern uint32 D3D8_5028_SIZE;
#endif

File diff suppressed because it is too large Load Diff

View File

@ -35,24 +35,7 @@
// ******************************************************************
// * Direct3D_CreateDevice
// ******************************************************************
OOVPA_NO_XREF(Direct3D_CreateDevice, 5233, 8)
// Direct3D_CreateDevice+0x0A : jnz +0x0A
{ 0x0A, 0x75 }, // (Offset,Value)-Pair #1
{ 0x0B, 0x0A }, // (Offset,Value)-Pair #2
// Direct3D_CreateDevice+0x80 : repe stosd
{ 0x80, 0xF3 }, // (Offset,Value)-Pair #3
{ 0x81, 0xAB }, // (Offset,Value)-Pair #4
// Direct3D_CreateDevice+0x83 : mov eax, esi
{ 0x83, 0x8B }, // (Offset,Value)-Pair #5
{ 0x84, 0xC6 }, // (Offset,Value)-Pair #6
// Direct3D_CreateDevice+0x91 : retn 0x18
{ 0x91, 0xC2 }, // (Offset,Value)-Pair #7
{ 0x92, 0x18 }, // (Offset,Value)-Pair #8
OOVPA_END;
#define Direct3D_CreateDevice_5233 Direct3D_CreateDevice_5028
// ******************************************************************
// * D3DDevice_GetDisplayFieldStatus
@ -239,40 +222,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetRenderState_TextureFactor
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetRenderState_TextureFactor, 5233, 9)
// D3DDevice_SetRenderState_TextureFactor+0x07 : mov eax, [esi+0x036C]
{ 0x07, 0x8B }, // (Offset,Value)-Pair #1
{ 0x08, 0x86 }, // (Offset,Value)-Pair #2
{ 0x09, 0x6C }, // (Offset,Value)-Pair #3
{ 0x0A, 0x03 }, // (Offset,Value)-Pair #4
// D3DDevice_SetRenderState_TextureFactor+0x2F : nop
{ 0x2F, 0x90 }, // (Offset,Value)-Pair #5
// D3DDevice_SetRenderState_TextureFactor+0x41 : retn 0x04
{ 0x41, 0xC2 }, // (Offset,Value)-Pair #6
{ 0x42, 0x04 }, // (Offset,Value)-Pair #7
// D3DDevice_SetRenderState_TextureFactor+0x4E : retn 0x04
{ 0x4E, 0xC2 }, // (Offset,Value)-Pair #8
{ 0x4F, 0x04 }, // (Offset,Value)-Pair #9
OOVPA_END;
#define D3DDevice_SetRenderState_TextureFactor_5233 D3DDevice_SetRenderState_TextureFactor_5028
// ******************************************************************
// * D3DDevice_SetRenderState_ZEnable
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetRenderState_ZEnable, 5233, 8)
{ 0x13, 0x8B },
{ 0x22, 0xC9 },
{ 0x34, 0x89 },
{ 0x46, 0x0C },
{ 0x5A, 0x74 },
{ 0x6D, 0x8B },
{ 0x7C, 0xCE },
{ 0x8E, 0x00 },
OOVPA_END;
#define D3DDevice_SetRenderState_ZEnable_5233 D3DDevice_SetRenderState_ZEnable_5028
// ******************************************************************
// * D3DDevice_SetIndices
@ -378,16 +333,7 @@ OOVPA_END;
// ******************************************************************
// * D3DTexture_LockRect
// ******************************************************************
OOVPA_NO_XREF(D3DTexture_LockRect, 5233, 7)
{ 0x03, 0x14 },
{ 0x08, 0x8B },
{ 0x0D, 0x8B },
{ 0x12, 0x8B },
{ 0x17, 0x50 },
{ 0x20, 0xC2 },
{ 0x21, 0x14 },
OOVPA_END;
#define D3DTexture_LockRect_5233 D3DTexture_LockRect_3925
// ******************************************************************
// * Get2DSurfaceDesc
@ -414,28 +360,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetBackBuffer2
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetBackBuffer2, 5233, 12)
// D3DDevice_GetBackBuffer2+0x04 : cmp eax, 0xFFFFFFFF
{ 0x04, 0x83 }, // (Offset,Value)-Pair #1
{ 0x05, 0xF8 }, // (Offset,Value)-Pair #2
{ 0x06, 0xFF }, // (Offset,Value)-Pair #3
// D3DDevice_GetBackBuffer+0x0D : jnz +0x19
{ 0x0D, 0x75 }, // (Offset,Value)-Pair #4
{ 0x0E, 0x19 }, // (Offset,Value)-Pair #5
// D3DDevice_GetBackBuffer+0x15 : mov esi, [ecx+eax*4+0x15C0]
{ 0x15, 0x8B }, // (Offset,Value)-Pair #6
{ 0x16, 0xB4 }, // (Offset,Value)-Pair #7
{ 0x17, 0x81 }, // (Offset,Value)-Pair #8
{ 0x18, 0xC0 }, // (Offset,Value)-Pair #9
{ 0x19, 0x15 }, // (Offset,Value)-Pair #10
// D3DDevice_GetBackBuffer+0x40 : retn 0x04
{ 0x40, 0xC2 }, // (Offset,Value)-Pair #11
{ 0x41, 0x04 }, // (Offset,Value)-Pair #12
OOVPA_END;
#define D3DDevice_GetBackBuffer2_5233 D3DDevice_GetBackBuffer2_5028
// ******************************************************************
// * D3DDevice_UpdateOverlay
@ -542,30 +467,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetDepthStencilSurface2
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetDepthStencilSurface2, 5233, 7)
{ 0x05, 0x56 },
{ 0x06, 0x8B },
{ 0x0A, 0x00 },
{ 0x0E, 0x75 },
{ 0x12, 0x5E },
{ 0x1A, 0x8B },
{ 0x1B, 0xC6 },
OOVPA_END;
#define D3DDevice_GetDepthStencilSurface2_5233 D3DDevice_GetDepthStencilSurface2_5028
// ******************************************************************
// * D3D_GetDeviceCaps
// ******************************************************************
OOVPA_NO_XREF(D3D_GetDeviceCaps, 5233, 7)
{ 0x04, 0x85 },
{ 0x0A, 0x08 },
{ 0x10, 0x83 },
{ 0x16, 0x08 },
{ 0x1C, 0xC2 },
{ 0x22, 0x0C },
{ 0x29, 0x33 },
OOVPA_END;
#define D3D_GetDeviceCaps_5233 D3D_GetDeviceCaps_5028
// ******************************************************************
// * D3DDevice_DrawVertices
@ -584,71 +491,17 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetLight
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetLight, 5233, 12)
// D3DDevice_SetLight+0x11 : mov edi, [ebp+0x390]
{ 0x11, 0x8B }, // (Offset,Value)-Pair #1
{ 0x12, 0xBD }, // (Offset,Value)-Pair #2
{ 0x13, 0x90 }, // (Offset,Value)-Pair #3
{ 0x14, 0x03 }, // (Offset,Value)-Pair #4
// D3DDevice_SetLight+0x30 : shl eax, 0x04
{ 0x30, 0xC1 }, // (Offset,Value)-Pair #5
{ 0x31, 0xE0 }, // (Offset,Value)-Pair #6
{ 0x32, 0x04 }, // (Offset,Value)-Pair #7
// D3DDevice_SetLight+0xBD : rep stosb
{ 0xBD, 0xF3 }, // (Offset,Value)-Pair #8
{ 0xBE, 0xAB }, // (Offset,Value)-Pair #9
// D3DDevice_SetLight+0xFD : mov ecx, [ebx+0x68]
{ 0xFD, 0x8B }, // (Offset,Value)-Pair #10
{ 0xFE, 0x4B }, // (Offset,Value)-Pair #11
{ 0xFF, 0x68 }, // (Offset,Value)-Pair #12
OOVPA_END;
#define D3DDevice_SetLight_5233 D3DDevice_SetLight_5028
// ******************************************************************
// * D3DDevice_LightEnable
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_LightEnable, 5233, 13)
// D3DDevice_LightEnable+0x0F : cmp ebx, [esi+0x0390]
{ 0x0F, 0x3B }, // (Offset,Value)-Pair #1
{ 0x10, 0x9E }, // (Offset,Value)-Pair #2
{ 0x11, 0x90 }, // (Offset,Value)-Pair #3
{ 0x12, 0x03 }, // (Offset,Value)-Pair #4
// D3DDevice_LightEnable+0x6B : test eax, eax
{ 0x6B, 0x85 }, // (Offset,Value)-Pair #5
{ 0x6C, 0xC0 }, // (Offset,Value)-Pair #6
// D3DDevice_LightEnable+0x9E : mov eax, [eax+0x8C]
{ 0x9E, 0x8B }, // (Offset,Value)-Pair #7
{ 0x9F, 0x80 }, // (Offset,Value)-Pair #8
{ 0xA0, 0x8C }, // (Offset,Value)-Pair #9
// D3DDevice_LightEnable+0xBC : jz +0x12
{ 0xBC, 0x74 }, // (Offset,Value)-Pair #10
{ 0xBD, 0x12 }, // (Offset,Value)-Pair #11
// D3DDevice_LightEnable+0xE1 : retn 0x08
{ 0xE1, 0xC2 }, // (Offset,Value)-Pair #12
{ 0xE2, 0x08 }, // (Offset,Value)-Pair #13
OOVPA_END;
#define D3DDevice_LightEnable_5233 D3DDevice_LightEnable_5028
// ******************************************************************
// * D3DVertexBuffer_GetDesc
// ******************************************************************
OOVPA_NO_XREF(D3DVertexBuffer_GetDesc, 5233, 7)
{ 0x02, 0x24 },
{ 0x06, 0x74 },
{ 0x0A, 0xC7 },
{ 0x0E, 0x00 },
{ 0x15, 0x89 },
{ 0x16, 0x46 },
{ 0x1A, 0x08 },
OOVPA_END;
#define D3DVertexBuffer_GetDesc_5233 D3DVertexBuffer_GetDesc_5028
// ******************************************************************
// * D3DDevice_SetVertexShader
@ -681,49 +534,12 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_SetTileNoWait
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetTileNoWait, 5233, 11)
// D3DDevice_SetTileNoWait+0x06 : sub esp, 0x18
{ 0x06, 0x83 }, // (Offset,Value)-Pair #1
{ 0x07, 0xEC }, // (Offset,Value)-Pair #2
{ 0x08, 0x18 }, // (Offset,Value)-Pair #3
// D3DDevice_SetTileNoWait+0x15 : cmp [esi+4], eax
{ 0x15, 0x39 }, // (Offset,Value)-Pair #4
{ 0x16, 0x46 }, // (Offset,Value)-Pair #5
{ 0x17, 0x04 }, // (Offset,Value)-Pair #6
// D3DDevice_SetTileNoWait+0x3D : lea edi, [edx+ecx*8+0x1660]
{ 0x3D, 0x8D }, // (Offset,Value)-Pair #7
{ 0x3E, 0xBC }, // (Offset,Value)-Pair #8
{ 0x3F, 0xCA }, // (Offset,Value)-Pair #9
{ 0x40, 0x60 }, // (Offset,Value)-Pair #10
{ 0x41, 0x16 }, // (Offset,Value)-Pair #11
OOVPA_END;
#define D3DDevice_SetTileNoWait_5233 D3DDevice_SetTileNoWait_5028
// ******************************************************************
// * D3DDevice_AddRef
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_AddRef, 5233, 10)
// D3DDevice_AddRef+0x00 : mov eax, [addr]
{ 0x00, 0xA1 }, // (Offset,Value)-Pair #1
// D3DDevice_AddRef+0x05 : mov ecx, [eax+0x04FC]
{ 0x05, 0x8B }, // (Offset,Value)-Pair #2
{ 0x06, 0x88 }, // (Offset,Value)-Pair #3
{ 0x07, 0xFC }, // (Offset,Value)-Pair #4
{ 0x08, 0x04 }, // (Offset,Value)-Pair #5
// D3DDevice_AddRef+0x0B : inc ecx
{ 0x0B, 0x41 }, // (Offset,Value)-Pair #6
// D3DDevice_AddRef+0x0C : mov [eax+0x04FC], ecx
{ 0x0C, 0x89 }, // (Offset,Value)-Pair #7
{ 0x0D, 0x88 }, // (Offset,Value)-Pair #8
{ 0x0E, 0xFC }, // (Offset,Value)-Pair #9
{ 0x0F, 0x04 }, // (Offset,Value)-Pair #10
OOVPA_END;
#define D3DDevice_AddRef_5233 D3DDevice_AddRef_5028
// ******************************************************************
// * IDirectD3DDevice8_Release
@ -888,19 +704,7 @@ OOVPA_END;
// ******************************************************************
// * D3D::SetFence
// ******************************************************************
OOVPA_XREF(D3D_SetFence, 5233, 7,
XREF_D3D_SETFENCE,
XRefZero)
{ 0x0E, 0x05 },
{ 0x18, 0xC9 },
{ 0x3E, 0x3F },
{ 0x5E, 0x28 },
{ 0x86, 0x5D },
{ 0x98, 0xE8 },
{ 0xA2, 0x04 },
OOVPA_END;
#define D3D_SetFence_5233 D3D_SetFence_5028
// ******************************************************************
// * D3DDevice_InsertFence
@ -921,19 +725,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_IsFencePending
// ******************************************************************
OOVPA_XREF(D3DDevice_IsFencePending, 5233, 6,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x01, XREF_D3DDEVICE ),
{ 0x07, 0x30 },
{ 0x0A, 0x2C },
{ 0x10, 0xD1 },
{ 0x17, 0x1B },
{ 0x1C, 0x04 },
OOVPA_END;
#define D3DDevice_IsFencePending_5233 D3DDevice_IsFencePending_5028
// ******************************************************************
// * D3D::BlockOnTime
@ -1062,15 +854,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_BeginPush
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_BeginPush, 5233, 6)
{ 0x06, 0x6A },
{ 0x07, 0x00 },
{ 0x0D, 0x8B },
{ 0x0E, 0x44 },
{ 0x12, 0x89 },
{ 0x16, 0xE9 },
OOVPA_END;
#define D3DDevice_BeginPush_5233 D3DDevice_BeginPush_5028
// ******************************************************************
// * D3DDevice_EndPush
@ -1189,28 +973,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_End
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_End, 5233, 12)
// D3DDevice_End+0x13 : mov dword ptr [eax], 0x417FC
{ 0x13, 0xC7 }, // (Offset,Value)-Pair #1
{ 0x14, 0x00 }, // (Offset,Value)-Pair #2
{ 0x15, 0xFC }, // (Offset,Value)-Pair #3
{ 0x16, 0x17 }, // (Offset,Value)-Pair #4
{ 0x17, 0x04 }, // (Offset,Value)-Pair #5
{ 0x18, 0x00 }, // (Offset,Value)-Pair #6
// D3DDevice_End+0x28 : test ah, 0x10
{ 0x28, 0xF6 }, // (Offset,Value)-Pair #7
{ 0x29, 0xC4 }, // (Offset,Value)-Pair #8
{ 0x2A, 0x10 }, // (Offset,Value)-Pair #9
// D3DDevice_End+0x2B : jz +0x07
{ 0x2B, 0x74 }, // (Offset,Value)-Pair #10
{ 0x2C, 0x07 }, // (Offset,Value)-Pair #11
// D3DDevice_End+0x3C : retn
{ 0x3C, 0xC3 }, // (Offset,Value)-Pair #12
OOVPA_END;
#define D3DDevice_End_5233 D3DDevice_End_5028
// ******************************************************************
// * D3D8_5233

View File

@ -349,6 +349,355 @@ OOVPA_NO_XREF(D3DDevice_SetRenderTargetFast, 5344, 8)
{ 0xF6, 0xC5 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_CreateTexture2
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_CreateTexture2, 5344, 8)
{ 0x10, 0x0F },
{ 0x14, 0x4C },
{ 0x18, 0x33 },
{ 0x1C, 0x05 },
{ 0x1F, 0x24 },
{ 0x43, 0xF8 },
{ 0x4A, 0x01 },
{ 0x4F, 0x64 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SelectVertexShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SelectVertexShader, 5344, 8)
{ 0x0E, 0x49 },
{ 0x10, 0x8D },
{ 0x14, 0x86 },
{ 0x18, 0x00 },
{ 0x1C, 0x03 },
{ 0x36, 0x4F },
{ 0x38, 0x83 },
{ 0x3C, 0x00 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetRenderTarget
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetRenderTarget, 5344, 8)
{ 0x08, 0x56 },
{ 0x09, 0x33 },
{ 0x0A, 0xF6 },
{ 0x0B, 0x3B },
{ 0x0C, 0xEE },
{ 0x2A, 0xE4 },
{ 0x30, 0x74 },
{ 0x34, 0x14 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetPalette
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetPalette, 5344, 12)
// D3DDevice_SetPalette+0x0D : mov eax, [esi+edi*4+0B78h]
{ 0x0D, 0x8B }, // (Offset,Value)-Pair #1
{ 0x0E, 0x84 }, // (Offset,Value)-Pair #2
{ 0x0F, 0xBE }, // (Offset,Value)-Pair #3
{ 0x10, 0x78 }, // (Offset,Value)-Pair #4
{ 0x11, 0x0B }, // (Offset,Value)-Pair #5
// D3DDevice_SetPalette+0x51 : add ebp, 0x80000
{ 0x51, 0x81 }, // (Offset,Value)-Pair #6
{ 0x52, 0xC5 }, // (Offset,Value)-Pair #7
{ 0x53, 0x00 }, // (Offset,Value)-Pair #8
{ 0x54, 0x00 }, // (Offset,Value)-Pair #9
{ 0x55, 0x08 }, // (Offset,Value)-Pair #10
// D3DDevice_SetPalette+0x8A : retn 0x08
{ 0x8A, 0xC2 }, // (Offset,Value)-Pair #11
{ 0x8B, 0x08 }, // (Offset,Value)-Pair #12
OOVPA_END;
// ******************************************************************
// * D3DDevice_IsBusy
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_IsBusy, 5344, 7)
{ 0x05, 0x8B },
{ 0x08, 0x05 },
{ 0x0C, 0x88 },
{ 0x10, 0x00 },
{ 0x14, 0x32 },
{ 0x18, 0x06 },
{ 0x1C, 0x00 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_CreateVertexBuffer2
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_CreateVertexBuffer2, 5344, 9)
{ 0x08, 0xE8 },
{ 0x0E, 0xF0 },
{ 0x10, 0xF6 },
{ 0x14, 0x44 },
{ 0x18, 0x04 },
{ 0x1C, 0x6A },
{ 0x2C, 0x85 },
{ 0x30, 0x68 },
{ 0x34, 0x24 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_CreatePalette2
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_CreatePalette2, 5344, 8)
{ 0x08, 0xE8 },
{ 0x10, 0xFF },
{ 0x11, 0x75 },
{ 0x12, 0x04 },
{ 0x13, 0x5F },
{ 0x14, 0xC2 },
{ 0x38, 0x85 },
{ 0x3C, 0x68 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_DrawVerticesUP
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_DrawVerticesUP, 5344, 10)
// D3DDevice_DrawVerticesUP+0x03 : sub esp, 0x14
{ 0x03, 0x83 }, // (Offset,Value)-Pair #1
{ 0x04, 0xEC }, // (Offset,Value)-Pair #2
{ 0x05, 0x14 }, // (Offset,Value)-Pair #3
// D3DDevice_DrawVerticesUP+0x37 : mov edx, [edi+834h]
{ 0x37, 0x8B }, // (Offset,Value)-Pair #4
{ 0x38, 0x97 }, // (Offset,Value)-Pair #5
{ 0x39, 0x34 }, // (Offset,Value)-Pair #6
{ 0x3A, 0x08 }, // (Offset,Value)-Pair #7
// D3DDevice_DrawVerticesUP+0xC4 : cmp esi, 0x80
{ 0xC4, 0x81 }, // (Offset,Value)-Pair #8
{ 0xC5, 0xFE }, // (Offset,Value)-Pair #9
{ 0xC6, 0x80 }, // (Offset,Value)-Pair #10
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetVertexDataColor
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetVertexDataColor, 5344, 8)
{ 0x08, 0x06 },
{ 0x0C, 0x57 },
{ 0x0F, 0xE8 },
{ 0x15, 0x4C },
{ 0x19, 0x14 },
{ 0x1A, 0x8D },
{ 0x1B, 0x40 },
{ 0x1C, 0x19 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_End
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_End, 5344, 9)
{ 0x08, 0x06 },
{ 0x0A, 0x46 },
{ 0x0E, 0xE8 },
{ 0x15, 0xFC },
{ 0x17, 0x04 },
{ 0x19, 0xC7 },
{ 0x1A, 0x40 },
{ 0x1B, 0x04 },
{ 0x40, 0xC3 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_CreatePixelShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 5344, 11)
// D3DDevice_CreatePixelShader+0x05 : push 0xFC
{ 0x05, 0x68 }, // (Offset,Value)-Pair #1
{ 0x06, 0xFC }, // (Offset,Value)-Pair #2
// D3DDevice_CreatePixelShader+0x10 : mov eax, 0x8007000E
{ 0x13, 0xB8 }, // (Offset,Value)-Pair #3
{ 0x14, 0x0E }, // (Offset,Value)-Pair #4
{ 0x15, 0x00 }, // (Offset,Value)-Pair #5
{ 0x16, 0x07 }, // (Offset,Value)-Pair #6
{ 0x17, 0x80 }, // (Offset,Value)-Pair #7
// D3DDevice_CreatePixelShader+0x31 : mov ecx, 0x3C
{ 0x34, 0xB9 }, // (Offset,Value)-Pair #8
{ 0x35, 0x3C }, // (Offset,Value)-Pair #9
// D3DDevice_CreatePixelShader+0x42 : retn 0x08
{ 0x45, 0xC2 }, // (Offset,Value)-Pair #10
{ 0x46, 0x08 }, // (Offset,Value)-Pair #11
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetPixelShaderConstant
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_SetPixelShaderConstant, 5344, 9)
{ 0x1A, 0x0C },
{ 0x1B, 0x8B },
{ 0x1C, 0x45 },
{ 0x1D, 0x10 },
{ 0x1E, 0x85 },
{ 0x5B, 0xF3 },
{ 0x60, 0xE0 },
{ 0x64, 0xC0 },
{ 0x68, 0x2D },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetOverlayUpdateStatus
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetOverlayUpdateStatus, 5344, 12)
// D3DDevice_GetOverlayUpdateStatus+0x05 : mov ecx, [eax+1FE0h]
{ 0x05, 0x8B }, // (Offset,Value)-Pair #1
{ 0x06, 0x88 }, // (Offset,Value)-Pair #2
{ 0x07, 0xE0 }, // (Offset,Value)-Pair #3
{ 0x08, 0x1F }, // (Offset,Value)-Pair #4
// D3DDevice_GetOverlayUpdateStatus+0x0C : mov esi, [eax+19B8h]
{ 0x0C, 0x8B }, // (Offset,Value)-Pair #5
{ 0x0D, 0xB0 }, // (Offset,Value)-Pair #6
{ 0x0E, 0xB8 }, // (Offset,Value)-Pair #7
{ 0x0F, 0x19 }, // (Offset,Value)-Pair #8
// D3DDevice_GetOverlayUpdateStatus+0x16 : setnz dl
{ 0x16, 0x0F }, // (Offset,Value)-Pair #9
{ 0x17, 0x95 }, // (Offset,Value)-Pair #10
{ 0x18, 0xC2 }, // (Offset,Value)-Pair #11
// D3DDevice_GetOverlayUpdateStatus+0x1C : retn
{ 0x1C, 0xC3 }, // (Offset,Value)-Pair #12
OOVPA_END;
// ******************************************************************
// * D3DDevice_UpdateOverlay
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_UpdateOverlay, 5344, 10)
{ 0x0A, 0xB8 },
{ 0x13, 0x89 },
{ 0x14, 0x88 },
{ 0x15, 0xF0 },
{ 0x16, 0x17 },
{ 0x74, 0x4F },
{ 0x79, 0x44 },
{ 0x7D, 0x40 },
{ 0x80, 0xE1 },
{ 0x84, 0xCA },
OOVPA_END;
// ******************************************************************
// * IDirectD3DDevice8_Release
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_Release, 5344, 8)
{ 0x07, 0x8B },
{ 0x0C, 0x00 },
{ 0x13, 0xCF },
{ 0x1A, 0x1C },
{ 0x21, 0x05 },
{ 0x28, 0x00 },
{ 0x2F, 0x89 },
{ 0x36, 0xC3 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVisibilityTestResult
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVisibilityTestResult, 5344, 7)
{ 0x0E, 0x08 },
{ 0x10, 0xFF },
{ 0x2A, 0x16 },
{ 0x3C, 0x76 },
{ 0x3F, 0x0C },
{ 0x51, 0x0A },
{ 0x5F, 0x0C },
OOVPA_END;
// ******************************************************************
// * D3DDevice_BlockUntilVerticalBlank
// ******************************************************************
#define D3DDevice_BlockUntilVerticalBlank_5344 D3DDevice_BlockUntilVerticalBlank_5028
// ******************************************************************
// * D3DDevice_PersistDisplay
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_PersistDisplay, 5344, 7)
{ 0x1E, 0x15 },
{ 0x3A, 0xAB },
{ 0x3B, 0xF8 },
{ 0x3C, 0x17 },
{ 0x3D, 0x00 },
{ 0x4E, 0xF5 },
{ 0x6E, 0x01 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_SetVertexShaderConstantNotInline
// ******************************************************************
#define D3DDevice_SetVertexShaderConstantNotInline_5344 D3DDevice_SetVertexShaderConstantNotInline_5028
// ******************************************************************
// * D3DDevice_DeleteVertexShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_DeleteVertexShader, 5344, 6)
{ 0x02, 0x24 },
{ 0x06, 0xFF },
{ 0x0A, 0x08 },
{ 0x0E, 0x00 },
// D3DDevice_DeleteVertexShader+0x18 : retn 4
{ 0x18, 0xC2 },
{ 0x19, 0x04 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_DrawIndexedVerticesUP
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_DrawIndexedVerticesUP, 5344, 9)
{ 0x05, 0x14 },
{ 0x06, 0x53 },
{ 0x07, 0x56 },
{ 0x08, 0x8B },
{ 0x09, 0x35 },
{ 0x2A, 0xFC },
{ 0x3A, 0x89 },
{ 0x4A, 0x81 },
{ 0x5A, 0x56 },
OOVPA_END;
// ******************************************************************
// * D3DDevice_DeletePixelShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_DeletePixelShader, 5344, 7)
{ 0x02, 0x24 },
{ 0x06, 0x75 },
{ 0x0A, 0x04 },
{ 0x0E, 0x0B },
{ 0x12, 0x80 },
{ 0x1A, 0xC2 },
{ 0x1B, 0x04 },
OOVPA_END;
// ******************************************************************
// * D3D8_5344
// ******************************************************************
@ -368,7 +717,7 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3DDevice_GetRenderTarget2, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_GetDepthStencilSurface2, 5233, PATCH),
REGISTER_OOVPA(D3D_CommonSetRenderTarget, 5233, XREF),
REGISTER_OOVPA(D3DDevice_SetRenderTarget, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_SetRenderTarget, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_AddRef, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_Reset, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_SetTileNoWait, 5233, PATCH),
@ -380,11 +729,11 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3DDevice_GetVertexShaderSize, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant1, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexShaderConstant4, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_DeletePixelShader, 4134, PATCH),
REGISTER_OOVPA(D3DDevice_CreatePixelShader, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexShaderConstantNotInline, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_DeletePixelShader, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_CreatePixelShader, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SetPixelShader, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_CreateTexture2, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_CreateTexture2, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_CreateTexture2, 4627, DISABLED),
REGISTER_OOVPA(D3DDevice_SetIndices, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_SetTexture, 5233, PATCH),
@ -394,11 +743,11 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3DDevice_SetVertexData2f, 4627, DISABLED),
REGISTER_OOVPA(D3DDevice_SetVertexData2f, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_Begin, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_End, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_End, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_Clear, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_Swap, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_EnableOverlay, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_CreateVertexBuffer2, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SetTextureState_TexCoordIndex, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_SetTextureState_BumpEnv, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SetTextureState_BorderColor, 4361, PATCH),
@ -447,9 +796,9 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3DResource_Register, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5233, DISABLED),
REGISTER_OOVPA(D3DDevice_GetBackBuffer2, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_UpdateOverlay, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_GetOverlayUpdateStatus, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_BlockUntilVerticalBlank, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_GetViewport, 4627, DISABLED),
REGISTER_OOVPA(D3DDevice_GetViewport, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SetViewport, 5233, DISABLED),
@ -469,10 +818,10 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3DDevice_SetVertexShader, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_DrawVertices, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_GetViewportOffsetAndScale, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 3925, PATCH),
REGISTER_OOVPA(D3DDevice_DeleteVertexShader, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SelectVertexShaderDirect, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_LoadVertexShader, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_Release, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_Release, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5233, DISABLED),
REGISTER_OOVPA(D3DDevice_SetScreenSpaceOffset, 5344, PATCH),
REGISTER_OOVPA(D3D_SetFence, 5233, XREF),
@ -481,7 +830,7 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3D_BlockOnTime, 5233, XREF),
REGISTER_OOVPA(D3DDevice_BlockOnFence, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_GetTransform, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SetPalette, 5233, PATCH),
REGISTER_OOVPA(D3DDevice_SetPalette, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_GetCreationParameters, 4034, PATCH),
REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 5233, DISABLED),
REGISTER_OOVPA(D3DDevice_SetFlickerFilter, 5344, PATCH),
@ -507,6 +856,16 @@ OOVPATable D3D8_5344[] = {
REGISTER_OOVPA(D3DCubeTexture_GetCubeMapSurface2, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_ApplyStateBlock, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_EndVisibilityTest, 4627, PATCH),
REGISTER_OOVPA(D3DDevice_SetRenderState_PSTextureModes, 4361, PATCH),
REGISTER_OOVPA(D3DDevice_SelectVertexShader, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_IsBusy, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_CreatePalette2, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_DrawVerticesUP, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SetVertexDataColor, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_SetPixelShaderConstant, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_GetVisibilityTestResult, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_PersistDisplay, 5344, PATCH),
REGISTER_OOVPA(D3DDevice_DrawIndexedVerticesUP, 5344, PATCH),
};
// ******************************************************************

View File

@ -596,15 +596,7 @@ OOVPA_END;
// ******************************************************************
// * D3DResource_BlockUntilNotBusy
// ******************************************************************
OOVPA_XREF(D3DResource_BlockUntilNotBusy, 5558, 2,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x01, XREF_D3D_BlockOnResource ),
{ 0x00, 0xE9 },
OOVPA_END;
#define D3DResource_BlockUntilNotBusy_5558 D3DResource_BlockUntilNotBusy_3925
// ******************************************************************
// * D3DDevice_SetScissors
@ -663,27 +655,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_CreatePixelShader
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_CreatePixelShader, 5558, 11)
// D3DDevice_CreatePixelShader+0x05 : push 0xFC
{ 0x05, 0x68 }, // (Offset,Value)-Pair #1
{ 0x06, 0xFC }, // (Offset,Value)-Pair #2
// D3DDevice_CreatePixelShader+0x10 : mov eax, 0x8007000E
{ 0x13, 0xB8 }, // (Offset,Value)-Pair #3
{ 0x14, 0x0E }, // (Offset,Value)-Pair #4
{ 0x15, 0x00 }, // (Offset,Value)-Pair #5
{ 0x16, 0x07 }, // (Offset,Value)-Pair #6
{ 0x17, 0x80 }, // (Offset,Value)-Pair #7
// D3DDevice_CreatePixelShader+0x31 : mov ecx, 0x3C
{ 0x34, 0xB9 }, // (Offset,Value)-Pair #8
{ 0x35, 0x3C }, // (Offset,Value)-Pair #9
// D3DDevice_CreatePixelShader+0x42 : retn 0x08
{ 0x45, 0xC2 }, // (Offset,Value)-Pair #10
{ 0x46, 0x08 }, // (Offset,Value)-Pair #11
OOVPA_END;
#define D3DDevice_CreatePixelShader_5558 D3DDevice_CreatePixelShader_5344
// ******************************************************************
// * D3DDevice_DrawVerticesUP
@ -866,16 +838,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetModelView
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetModelView, 5558, 7)
{ 0x05, 0x57 },
{ 0x0A, 0x85 },
{ 0x10, 0xB0 },
{ 0x16, 0x10 },
{ 0x1C, 0x5E },
{ 0x22, 0xC1 },
{ 0x28, 0xE0 },
OOVPA_END;
#define D3DDevice_GetModelView_5558 D3DDevice_GetModelView_4134
// ******************************************************************
// * D3DDevice_SetBackMaterial
@ -1133,16 +1096,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_InsertCallback
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_InsertCallback, 5558, 7)
{ 0x0C, 0x72 },
{ 0x1A, 0x10 },
{ 0x28, 0x85 },
{ 0x36, 0xC7 },
{ 0x44, 0x0C },
{ 0x52, 0x00 },
{ 0x60, 0x00 },
OOVPA_END;
#define D3DDevice_InsertCallback_5558 D3DDevice_InsertCallback_5028
// ******************************************************************
// * D3DDevice_SetRenderState_LineWidth
@ -1177,19 +1131,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_FlushVertexCache
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_FlushVertexCache, 5558, 10)
{ 0x00, 0x56 },
{ 0x07, 0x8B },
{ 0x08, 0x06 },
{ 0x0D, 0x05 },
{ 0x13, 0xC7 },
{ 0x15, 0x10 },
{ 0x17, 0x04 },
{ 0x1C, 0x00 },
{ 0x21, 0xC0 },
{ 0x26, 0xC3 },
OOVPA_END;
#define D3DDevice_FlushVertexCache_5558 D3DDevice_FlushVertexCache_4134
// ******************************************************************
// * D3DDevice_SetRenderState_LogicOp

View File

@ -49,16 +49,7 @@ OOVPA_END;
// ******************************************************************
// * D3DDevice_GetVisibilityTestResult
// ******************************************************************
OOVPA_NO_XREF(D3DDevice_GetVisibilityTestResult, 5788, 7)
{ 0x0E, 0x08 },
{ 0x10, 0xFF },
{ 0x2A, 0x16 },
{ 0x3C, 0x76 },
{ 0x3F, 0x0C },
{ 0x51, 0x0A },
{ 0x5F, 0x0C },
OOVPA_END;
#define D3DDevice_GetVisibilityTestResult_5788 D3DDevice_GetVisibilityTestResult_5344
// ******************************************************************
// * D3DDevice_GetViewport

View File

@ -557,33 +557,53 @@ OOVPA_XREF(CMcpxVoiceClient_SetVolume, 4134, 13,
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetVolume
// * DirectSound_CDirectSoundVoice_SetVolume
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetVolume, 4134, 11,
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetVolume, 4134, 11,
XRefNoSaveIndex,
XREF_DirectSound_CDirectSoundVoice_SetVolume,
XRefOne)
// DirectSound_CDirectSoundStream_SetVolume+0x15 : call [CMcpxVoiceClient::SetVolume]
// DirectSound_CDirectSoundVoice_SetVolume+0x15 : call [CMcpxVoiceClient::SetVolume]
XREF_ENTRY( 0x15, XREF_DSSTREAMSETVOLUME ), // (Offset,Value)-Pair #1
// DirectSound_CDirectSoundStream_SetVolume+0x00 : mov ecx, [esp+0x04]
// DirectSound_CDirectSoundVoice_SetVolume+0x00 : mov ecx, [esp+0x04]
{ 0x00, 0x8B }, // (Offset,Value)-Pair #2
{ 0x01, 0x4C }, // (Offset,Value)-Pair #3
{ 0x02, 0x24 }, // (Offset,Value)-Pair #4
{ 0x03, 0x04 }, // (Offset,Value)-Pair #5
// DirectSound_CDirectSoundStream_SetVolume+0x0B : sub edx, [eax+0x20]
// DirectSound_CDirectSoundVoice_SetVolume+0x0B : sub edx, [eax+0x20]
{ 0x0B, 0x2B }, // (Offset,Value)-Pair #6
{ 0x0C, 0x50 }, // (Offset,Value)-Pair #7
{ 0x0D, 0x20 }, // (Offset,Value)-Pair #8
// DirectSound_CDirectSoundStream_SetVolume+0x11 : mov ecx, [ecx+0x0C]
// DirectSound_CDirectSoundVoice_SetVolume+0x11 : mov ecx, [ecx+0x0C]
{ 0x11, 0x8B }, // (Offset,Value)-Pair #9
{ 0x12, 0x49 }, // (Offset,Value)-Pair #10
{ 0x13, 0x0C }, // (Offset,Value)-Pair #11
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetVolume
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetVolume, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x36, XREF_DirectSound_CDirectSoundVoice_SetVolume ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x35, 0xE8 },
{ 0x40, 0x68 },
{ 0x4B, 0x8B },
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_LockA
// ******************************************************************
@ -879,7 +899,7 @@ OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundBuffer::Play
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundBuffer_Play, 4134, 7,
OOVPA_XREF(DirectSound_CDirectSoundBuffer_Play, 4134, 11,
XREF_DSOUNDPLAY,
XRefZero)
@ -891,7 +911,10 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_Play, 4134, 7,
{ 0x26, 0xEB },
{ 0x2C, 0x8B },
{ 0x2F, 0x57 },
{ 0x30, 0xFF },
{ 0x31, 0x74 },
{ 0x32, 0x24 },
{ 0x33, 0x18 },
OOVPA_END;
// ******************************************************************
@ -1092,6 +1115,7 @@ OOVPA_NO_XREF(DirectSound_CDirectSound_CommitDeferredSettings, 4134, 11)
{ 0x78, 0xC9 }, // (Offset,Value)-Pair #11
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMaxDistance
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, 9,
@ -1169,6 +1193,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetMaxDistance, 4134, 10,
{ 0x23, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetMaxDistance
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetMaxDistance, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3E, XREF_DSVOICESETMAXDISTANCE ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x3D, 0xE8 },
{ 0x48, 0x68 },
{ 0x53, 0x8B },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMinDistance
// ******************************************************************
@ -1247,6 +1291,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 4134, 10,
{ 0x23, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetMinDistance
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetMinDistance, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3E, XREF_DSVOICESETMINDISTANCE ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x3D, 0xE8 },
{ 0x48, 0x68 },
{ 0x53, 0x8B },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetRolloffFactor
// ******************************************************************
@ -1325,6 +1389,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetRolloffFactor, 4134, 10,
{ 0x23, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetRolloffFactor
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetRolloffFactor, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3E, XREF_DSVOICESETROLLOFFFACTOR ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x3D, 0xE8 },
{ 0x48, 0x68 },
{ 0x53, 0x8B },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetDistanceFactor
// ******************************************************************
@ -1557,6 +1641,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeOrientation, 4134, 9,
{ 0x34, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetConeOrientation
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetConeOrientation, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x4E, XREF_DSVOICESETCONEORIENTATION ),
{ 0x00, 0x55 },
{ 0x0F, 0x00 },
{ 0x17, 0x74 },
{ 0x24, 0xB8 },
{ 0x2A, 0x3B },
{ 0x39, 0xEC },
{ 0x44, 0x24 },
{ 0x4D, 0xE8 },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetConeOutsideVolume
// ******************************************************************
@ -1635,6 +1739,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetConeOutsideVolume, 4134, 9,
{ 0x1F, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetConeOutsideVolume
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetConeOutsideVolume, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3A, XREF_DSVOICESETCONEOUTSIDEVOLUME ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x21, 0xB8 },
{ 0x24, 0x00 },
{ 0x39, 0xE8 },
{ 0x3E, 0x85 },
{ 0x4F, 0x8B },
{ 0x53, 0xC2 },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetPosition
// ******************************************************************
@ -1684,6 +1808,25 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetPosition, 4134, 9,
{ 0x66, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetPosition
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetPosition, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x4E, XREF_DSVOICESETPOSITION ),
{ 0x00, 0x55 },
{ 0x0F, 0x00 },
{ 0x17, 0x74 },
{ 0x24, 0xB8 },
{ 0x2A, 0x3B },
{ 0x39, 0xEC },
{ 0x58, 0x68 },
{ 0x63, 0x8B },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetVelocity
@ -1734,6 +1877,26 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, 9,
{ 0x66, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetVelocity
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetVelocity, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x4E, XREF_DSVOICESETVELOCITY ),
{ 0x00, 0x55 },
{ 0x0F, 0x00 },
{ 0x17, 0x74 },
{ 0x24, 0xB8 },
{ 0x2A, 0x3B },
{ 0x35, 0x83 },
{ 0x40, 0x45 },
{ 0x63, 0x8B },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetDopplerFactor
// ******************************************************************
@ -1893,6 +2056,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetI3DL2Source, 4134, 10,
{ 0x1F, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetI3DL2Source
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetI3DL2Source, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3A, XREF_DSVOICESETI3DL2SOURCE ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x39, 0xE8 },
{ 0x44, 0x68 },
{ 0x4F, 0x8B },
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_Stop
// ******************************************************************
@ -1975,6 +2158,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetAllParameters, 4134, 9,
{ 0x1E, 0x0C },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetAllParameters
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetAllParameters, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3A, XREF_DirectSound_CDirectSoundVoice_SetAllParameters ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x39, 0xE8 },
{ 0x44, 0x68 },
{ 0x4F, 0x8B },
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_GetStatus
// ******************************************************************
@ -2057,6 +2260,26 @@ OOVPA_XREF(IDirectSoundBuffer_SetMode, 4134, 9,
{ 0x1E, 0x0C },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetMode
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetMode, 4134, 9,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x3A, XREF_DSBUFFERSETMODEB ),
{ 0x00, 0x56 },
{ 0x0C, 0x00 },
{ 0x14, 0x74 },
{ 0x21, 0xB8 },
{ 0x2A, 0x24 },
{ 0x39, 0xE8 },
{ 0x44, 0x68 },
{ 0x4F, 0x8B },
OOVPA_END;
// ******************************************************************
// * DirectSound::CMcpxVoiceClient::SetFilter
// ******************************************************************
@ -2288,6 +2511,161 @@ OOVPA_XREF(DirectSoundCreateStream, 4134, 12,
{ 0x55, 0x08 }, // (Offset,Value)-Pair #12
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoiceSettings::SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, 10,
XREF_DSSETMIXBINVOLUMESC,
XRefZero)
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x09 : jbe +0x16
{ 0x09, 0x76 }, // (Offset,Value)-Pair #1
{ 0x0A, 0x16 }, // (Offset,Value)-Pair #2
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x18 : mov [ecx+edi*4+0x30], eax
{ 0x18, 0x89 }, // (Offset,Value)-Pair #3
{ 0x19, 0x44 }, // (Offset,Value)-Pair #4
{ 0x1A, 0xB9 }, // (Offset,Value)-Pair #5
{ 0x1B, 0x30 }, // (Offset,Value)-Pair #6
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x1E : jb +0xEC
{ 0x1E, 0x72 }, // (Offset,Value)-Pair #7
{ 0x1F, 0xEC }, // (Offset,Value)-Pair #8
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x22 : retn 0x04
{ 0x22, 0xC2 }, // (Offset,Value)-Pair #9
{ 0x23, 0x04 }, // (Offset,Value)-Pair #10
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4134, 17,
XREF_DSSETMIXBINVOLUMESB,
XRefOne)
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x0D : call [CDirectSoundVoiceSettings::SetMixBinVolumes]
XREF_ENTRY( 0x0D, XREF_DSSETMIXBINVOLUMESC ), // (Offset,Value)-Pair #1
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x01 : mov esi, [esp+8]
{ 0x01, 0x8B }, // (Offset,Value)-Pair #2
{ 0x02, 0x74 }, // (Offset,Value)-Pair #3
{ 0x03, 0x24 }, // (Offset,Value)-Pair #4
{ 0x04, 0x08 }, // (Offset,Value)-Pair #5
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x05 : push [esp+0x0C]
{ 0x05, 0xFF }, // (Offset,Value)-Pair #6
{ 0x06, 0x74 }, // (Offset,Value)-Pair #7
{ 0x07, 0x24 }, // (Offset,Value)-Pair #8
{ 0x08, 0x0C }, // (Offset,Value)-Pair #9
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x09 : mov ecx, [esi+0x10]
{ 0x09, 0x8B }, // (Offset,Value)-Pair #10
{ 0x0A, 0x4E }, // (Offset,Value)-Pair #11
{ 0x0B, 0x10 }, // (Offset,Value)-Pair #12
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x11 : mov ecx, [esi+0x0C]
{ 0x11, 0x8B }, // (Offset,Value)-Pair #13
{ 0x12, 0x4E }, // (Offset,Value)-Pair #14
{ 0x13, 0x0C }, // (Offset,Value)-Pair #15
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x1A : retn 0x08
{ 0x1A, 0xC2 }, // (Offset,Value)-Pair #16
{ 0x1B, 0x08 }, // (Offset,Value)-Pair #17
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundBuffer::SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4134, 17,
XREF_DSSETMIXBINVOLUMESA,
XRefOne)
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x32 : call [CDirectSoundVoice::SetMixBinVolumes]
XREF_ENTRY( 0x32, XREF_DSSETMIXBINVOLUMESB ), // (Offset,Value)-Pair #1
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x21 : mov eax, 0x80004005
{ 0x21, 0xB8 }, // (Offset,Value)-Pair #2
{ 0x22, 0x05 }, // (Offset,Value)-Pair #3
{ 0x23, 0x40 }, // (Offset,Value)-Pair #4
{ 0x24, 0x00 }, // (Offset,Value)-Pair #5
{ 0x25, 0x80 }, // (Offset,Value)-Pair #6
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x29 : push [esp+0x10]; push [esp+0x10]
{ 0x29, 0xFF }, // (Offset,Value)-Pair #7
{ 0x2A, 0x74 }, // (Offset,Value)-Pair #8
{ 0x2B, 0x24 }, // (Offset,Value)-Pair #9
{ 0x2C, 0x10 }, // (Offset,Value)-Pair #10
{ 0x2D, 0xFF }, // (Offset,Value)-Pair #11
{ 0x2E, 0x74 }, // (Offset,Value)-Pair #12
{ 0x2F, 0x24 }, // (Offset,Value)-Pair #13
{ 0x30, 0x10 }, // (Offset,Value)-Pair #14
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x49 : pop edi
{ 0x49, 0x5F }, // (Offset,Value)-Pair #15
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x4B : retn 0x08
{ 0x4B, 0xC2 }, // (Offset,Value)-Pair #16
{ 0x4C, 0x08 }, // (Offset,Value)-Pair #17
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes, 4134, 12,
XRefNoSaveIndex,
XRefOne)
// IDirectSoundBuffer_SetMixBinVolumes+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes]
XREF_ENTRY( 0x15, XREF_DSSETMIXBINVOLUMESA ), // (Offset,Value)-Pair #1
// IDirectSoundBuffer_SetMixBinVolumes+0x04 : push [esp+0x08]
{ 0x04, 0xFF }, // (Offset,Value)-Pair #2
{ 0x05, 0x74 }, // (Offset,Value)-Pair #3
{ 0x06, 0x24 }, // (Offset,Value)-Pair #4
{ 0x07, 0x08 }, // (Offset,Value)-Pair #5
// IDirectSoundBuffer_SetMixBinVolumes+0x0A : add eax, 0xFFFFFFE4
{ 0x0A, 0x83 }, // (Offset,Value)-Pair #6
{ 0x0B, 0xC0 }, // (Offset,Value)-Pair #7
{ 0x0C, 0xE4 }, // (Offset,Value)-Pair #8
// IDirectSoundBuffer_SetMixBinVolumes+0x0F : sbb ecx, ecx
{ 0x0F, 0x1B }, // (Offset,Value)-Pair #9
{ 0x10, 0xC9 }, // (Offset,Value)-Pair #10
// IDirectSoundBuffer_SetMixBinVolumes+0x11 : and ecx, eax
{ 0x11, 0x23 }, // (Offset,Value)-Pair #11
{ 0x12, 0xC8 }, // (Offset,Value)-Pair #12
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4134, 12,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x36, XREF_DSSETMIXBINVOLUMESB ),
{ 0x0D, 0x0F },
{ 0x0E, 0xB6 },
{ 0x0F, 0xF0 },
{ 0x21, 0xB8 },
{ 0x22, 0x05 },
{ 0x23, 0x40 },
{ 0x24, 0x00 },
{ 0x25, 0x80 },
{ 0x4F, 0xC2 },
{ 0x50, 0x08 },
{ 0x51, 0x00 },
OOVPA_END;
// ******************************************************************
// * Direct, 4134
// ******************************************************************
@ -2319,6 +2697,9 @@ OOVPATable DSound_4134[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH),
@ -2349,12 +2730,15 @@ OOVPATable DSound_4134[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMaxDistance, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMaxDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMinDistance, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMinDistance, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMinDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH),
@ -2364,40 +2748,49 @@ OOVPATable DSound_4134[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOrientation, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOrientation, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOrientation, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPosition, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVelocity, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetI3DL2Source, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), // +s
REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(IDirectSound_SetAllParameters, 4134, ALIAS, IDirectSoundBuffer_SetAllParameters), // Use that for now. Okay, it's your call pal...
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetAllParameters, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMode, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMode, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4134, PATCH),
};
// ******************************************************************

View File

@ -215,13 +215,14 @@ OOVPA_END;
// ******************************************************************
// * CMcpxBuffer_PlayA
// ******************************************************************
OOVPA_XREF(CMcpxBuffer_PlayA, 4361, 10,
OOVPA_XREF(CMcpxBuffer_PlayA, 4361, 11,
XREF_CMcpxBuffer_PlayA,
XRefZero)
{ 0x03, 0x8B },
{ 0x0E, 0xF1 },
{ 0x1B, 0x08 },
{ 0x1C, 0x6A },
{ 0x1D, 0x03 },
{ 0x1E, 0xFF },
@ -297,16 +298,16 @@ OOVPA_XREF(CMcpxBuffer_Stop, 4361, 9,
{ 0x0E, 0x3C }, // (Offset,Value)-Pair #1
{ 0x0F, 0x03 }, // (Offset,Value)-Pair #2
// CMcpxBuffer_Stop+0x1C : cmp ax, 0x0203
{ 0x28, 0x66 }, // (Offset,Value)-Pair #3
{ 0x29, 0x3D }, // (Offset,Value)-Pair #4
{ 0x2A, 0x03 }, // (Offset,Value)-Pair #5
{ 0x2B, 0x02 }, // (Offset,Value)-Pair #6
// CMcpxBuffer_Stop+0x17 : jz +0x2A
{ 0x17, 0x74 }, // (Offset,Value)-Pair #3
{ 0x18, 0x2A }, // (Offset,Value)-Pair #4
// CMcpxBuffer_Stop+0x70 : mov eax, [esi+0x90]
{ 0x70, 0x8B }, // (Offset,Value)-Pair #7
{ 0x71, 0x86 }, // (Offset,Value)-Pair #8
{ 0x72, 0x90 }, // (Offset,Value)-Pair #9
// CMcpxBuffer_Stop+0x19 : test [esp+0Ch+arg_0], 2
{ 0x19, 0xF6 }, // (Offset,Value)-Pair #5
{ 0x1A, 0x44 }, // (Offset,Value)-Pair #6
{ 0x1B, 0x24 }, // (Offset,Value)-Pair #7
{ 0x1C, 0x10 }, // (Offset,Value)-Pair #8
{ 0x1D, 0x02 }, // (Offset,Value)-Pair #9
OOVPA_END;
// ******************************************************************
@ -460,22 +461,23 @@ OOVPA_END;
OOVPA_XREF(CMcpxBuffer_Stop2, 4361, 10,
XREF_CMcpxBuffer_Stop2,
XRefZero)
XRefOne)
// CMcpxBuffer_Stop2+0x03 : mov eax, [ebp+arg_0]
{ 0x03, 0x8B },
{ 0x04, 0x45 },
{ 0x05, 0x08 },
// CMcpxBuffer_Stop2+0x14 : mov eax, [esi]
{ 0x14, 0x8B },
{ 0x15, 0x06 },
// CMcpxBuffer_Stop2+0x25 : push [ebp+arg_8]
{ 0x25, 0xFF },
{ 0x26, 0x75 },
{ 0x27, 0x10 },
// CMcpxBuffer_Stop2+0x36 : retn 0xC
{ 0x36, 0xC2 },
{ 0x37, 0x0C },
XREF_ENTRY( 0x2B, XREF_DSOUNDSTOP ),
// CMcpxBuffer_Stop2+0x03 : mov eax, [ebp+arg_0]
{ 0x03, 0x8B },
{ 0x04, 0x45 },
{ 0x05, 0x08 },
// CMcpxBuffer_Stop2+0x14 : mov eax, [esi]
{ 0x14, 0x8B },
{ 0x15, 0x06 },
// CMcpxBuffer_Stop2+0x25 : mov edi, eax
{ 0x2F, 0x8B },
{ 0x30, 0xF8 },
// CMcpxBuffer_Stop2+0x36 : retn 0xC
{ 0x36, 0xC2 },
{ 0x37, 0x0C },
OOVPA_END;
// ******************************************************************
@ -660,6 +662,7 @@ OOVPATable DSound_4361[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4361, XREF),
REGISTER_OOVPA(CMcpxBuffer_PlayA, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 4361, XREF),

View File

@ -197,134 +197,22 @@ OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoiceSettings::SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, 10,
XREF_DSSETMIXBINVOLUMESC,
XRefZero)
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x09 : jbe +0x16
{ 0x09, 0x76 }, // (Offset,Value)-Pair #1
{ 0x0A, 0x16 }, // (Offset,Value)-Pair #2
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x18 : mov [ecx+edi*4+0x30], eax
{ 0x18, 0x89 }, // (Offset,Value)-Pair #3
{ 0x19, 0x44 }, // (Offset,Value)-Pair #4
{ 0x1A, 0xB9 }, // (Offset,Value)-Pair #5
{ 0x1B, 0x30 }, // (Offset,Value)-Pair #6
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x1E : jb +0xEC
{ 0x1E, 0x72 }, // (Offset,Value)-Pair #7
{ 0x1F, 0xEC }, // (Offset,Value)-Pair #8
// DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes+0x22 : retn 0x04
{ 0x22, 0xC2 }, // (Offset,Value)-Pair #9
{ 0x23, 0x04 }, // (Offset,Value)-Pair #10
OOVPA_END;
#define DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes_4627 DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4627, 17,
XREF_DSSETMIXBINVOLUMESB,
XRefOne)
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x0D : call [CDirectSoundVoiceSettings::SetMixBinVolumes]
XREF_ENTRY( 0x0D, XREF_DSSETMIXBINVOLUMESC ), // (Offset,Value)-Pair #1
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x01 : mov esi, [esp+8]
{ 0x01, 0x8B }, // (Offset,Value)-Pair #2
{ 0x02, 0x74 }, // (Offset,Value)-Pair #3
{ 0x03, 0x24 }, // (Offset,Value)-Pair #4
{ 0x04, 0x08 }, // (Offset,Value)-Pair #5
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x05 : push [esp+0x0C]
{ 0x05, 0xFF }, // (Offset,Value)-Pair #6
{ 0x06, 0x74 }, // (Offset,Value)-Pair #7
{ 0x07, 0x24 }, // (Offset,Value)-Pair #8
{ 0x08, 0x0C }, // (Offset,Value)-Pair #9
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x09 : mov ecx, [esi+0x10]
{ 0x09, 0x8B }, // (Offset,Value)-Pair #10
{ 0x0A, 0x4E }, // (Offset,Value)-Pair #11
{ 0x0B, 0x10 }, // (Offset,Value)-Pair #12
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x11 : mov ecx, [esi+0x0C]
{ 0x11, 0x8B }, // (Offset,Value)-Pair #13
{ 0x12, 0x4E }, // (Offset,Value)-Pair #14
{ 0x13, 0x0C }, // (Offset,Value)-Pair #15
// DirectSound_CDirectSoundVoice_SetMixBinVolumes+0x1A : retn 0x08
{ 0x1A, 0xC2 }, // (Offset,Value)-Pair #16
{ 0x1B, 0x08 }, // (Offset,Value)-Pair #17
OOVPA_END;
#define DirectSound_CDirectSoundVoice_SetMixBinVolumes_4627 DirectSound_CDirectSoundVoice_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound_CDirectSoundBuffer::SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4627, 17,
XREF_DSSETMIXBINVOLUMESA,
XRefOne)
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x32 : call [CDirectSoundVoice::SetMixBinVolumes]
XREF_ENTRY( 0x32, XREF_DSSETMIXBINVOLUMESB ), // (Offset,Value)-Pair #1
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x21 : mov eax, 0x80004005
{ 0x21, 0xB8 }, // (Offset,Value)-Pair #2
{ 0x22, 0x05 }, // (Offset,Value)-Pair #3
{ 0x23, 0x40 }, // (Offset,Value)-Pair #4
{ 0x24, 0x00 }, // (Offset,Value)-Pair #5
{ 0x25, 0x80 }, // (Offset,Value)-Pair #6
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x29 : push [esp+0x10]; push [esp+0x10]
{ 0x29, 0xFF }, // (Offset,Value)-Pair #7
{ 0x2A, 0x74 }, // (Offset,Value)-Pair #8
{ 0x2B, 0x24 }, // (Offset,Value)-Pair #9
{ 0x2C, 0x10 }, // (Offset,Value)-Pair #10
{ 0x2D, 0xFF }, // (Offset,Value)-Pair #11
{ 0x2E, 0x74 }, // (Offset,Value)-Pair #12
{ 0x2F, 0x24 }, // (Offset,Value)-Pair #13
{ 0x30, 0x10 }, // (Offset,Value)-Pair #14
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x49 : pop edi
{ 0x49, 0x5F }, // (Offset,Value)-Pair #15
// DirectSound_CDirectSoundBuffer_SetMixBinVolumes+0x4B : retn 0x08
{ 0x4B, 0xC2 }, // (Offset,Value)-Pair #16
{ 0x4C, 0x08 }, // (Offset,Value)-Pair #17
OOVPA_END;
#define DirectSound_CDirectSoundBuffer_SetMixBinVolumes_4627 DirectSound_CDirectSoundBuffer_SetMixBinVolumes_4134
// ******************************************************************
// * IDirectSoundBuffer_SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(IDirectSoundBuffer_SetMixBinVolumes, 4627, 12,
XRefNoSaveIndex,
XRefOne)
// IDirectSoundBuffer_SetMixBinVolumes+0x15 : call [CDirectSoundBuffer::SetMixBinVolumes]
XREF_ENTRY( 0x15, XREF_DSSETMIXBINVOLUMESA ), // (Offset,Value)-Pair #1
// IDirectSoundBuffer_SetMixBinVolumes+0x04 : push [esp+0x08]
{ 0x04, 0xFF }, // (Offset,Value)-Pair #2
{ 0x05, 0x74 }, // (Offset,Value)-Pair #3
{ 0x06, 0x24 }, // (Offset,Value)-Pair #4
{ 0x07, 0x08 }, // (Offset,Value)-Pair #5
// IDirectSoundBuffer_SetMixBinVolumes+0x0A : add eax, 0xFFFFFFE4
{ 0x0A, 0x83 }, // (Offset,Value)-Pair #6
{ 0x0B, 0xC0 }, // (Offset,Value)-Pair #7
{ 0x0C, 0xE4 }, // (Offset,Value)-Pair #8
// IDirectSoundBuffer_SetMixBinVolumes+0x0F : sbb ecx, ecx
{ 0x0F, 0x1B }, // (Offset,Value)-Pair #9
{ 0x10, 0xC9 }, // (Offset,Value)-Pair #10
// IDirectSoundBuffer_SetMixBinVolumes+0x11 : and ecx, eax
{ 0x11, 0x23 }, // (Offset,Value)-Pair #11
{ 0x12, 0xC8 }, // (Offset,Value)-Pair #12
OOVPA_END;
#define IDirectSoundBuffer_SetMixBinVolumes_4627 IDirectSoundBuffer_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound_CDirectSound::SetPositionA
@ -437,28 +325,30 @@ OOVPA_END;
//OOVPA_END;
// ******************************************************************
// * CMcpxBuffer_GetStatusB
// * CMcpxBuffer_GetStatus
// ******************************************************************
OOVPA_XREF(CMcpxBuffer_GetStatusB, 4627, 12,
OOVPA_XREF(CMcpxBuffer_GetStatus, 4831, 13,
XREF_DSBUFFERGETSTATUSA,
XRefZero)
{ 0x16, 0x6A }, // (Offset,Value)-Pair #1
{ 0x17, 0x00 }, // (Offset,Value)-Pair #2
{ 0x18, 0x5A }, // (Offset,Value)-Pair #3
{ 0x00, 0x0F }, // (Offset,Value)-Pair #1
{ 0x1C, 0x42 }, // (Offset,Value)-Pair #4
{ 0x1D, 0xF6 }, // (Offset,Value)-Pair #5
{ 0x1E, 0xC4 }, // (Offset,Value)-Pair #6
{ 0x1F, 0x02 }, // (Offset,Value)-Pair #7
{ 0x16, 0x6A }, // (Offset,Value)-Pair #2
{ 0x17, 0x00 }, // (Offset,Value)-Pair #3
{ 0x18, 0x5A }, // (Offset,Value)-Pair #4
{ 0x29, 0xB9 }, // (Offset,Value)-Pair #8
{ 0x2A, 0x01 }, // (Offset,Value)-Pair #9
{ 0x2B, 0x80 }, // (Offset,Value)-Pair #10
{ 0x1C, 0x42 }, // (Offset,Value)-Pair #5
{ 0x1D, 0xF6 }, // (Offset,Value)-Pair #6
{ 0x1E, 0xC4 }, // (Offset,Value)-Pair #7
{ 0x1F, 0x02 }, // (Offset,Value)-Pair #8
{ 0x3F, 0xC2 }, // (Offset,Value)-Pair #11
{ 0x40, 0x04 }, // (Offset,Value)-Pair #12
{ 0x29, 0xB9 }, // (Offset,Value)-Pair #9
{ 0x2A, 0x01 }, // (Offset,Value)-Pair #10
{ 0x2B, 0x80 }, // (Offset,Value)-Pair #11
{ 0x3F, 0xC2 }, // (Offset,Value)-Pair #12
{ 0x40, 0x04 }, // (Offset,Value)-Pair #13
OOVPA_END;
// ******************************************************************
@ -695,27 +585,9 @@ OOVPA_XREF(CMcpxStream_Pause, 4928, 11,
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundStream_SetMixBinVolumes (untested)
// * DirectSound_CDirectSoundStream_SetMixBinVolumes
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4627, 12,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x36, XREF_DSSETMIXBINVOLUMESB ),
{ 0x0D, 0x0F },
{ 0x0E, 0xB6 },
{ 0x0F, 0xF0 },
{ 0x21, 0x8B },
{ 0x22, 0x05 },
{ 0x23, 0x40 },
{ 0x24, 0x00 },
{ 0x25, 0x80 },
{ 0x4F, 0xC2 },
{ 0x50, 0x08 },
{ 0x51, 0x00 },
OOVPA_END;
#define DirectSound_CDirectSoundStream_SetMixBinVolumes_4627 DirectSound_CDirectSoundStream_SetMixBinVolumes_4134
// ******************************************************************
// * DirectSound::CDirectSound::EnableHeadphones (incorrect?)
@ -1438,7 +1310,7 @@ OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundBuffer::SetNotificationPositions
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, 7,
OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, 10,
XREF_DirectSound_CDirectSoundBuffer_SetNotificationPositions,
XRefZero)
@ -1446,9 +1318,12 @@ OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, 7,
{ 0x0C, 0x00 },
{ 0x1B, 0xFF },
{ 0x25, 0x80 },
{ 0x32, 0x74 },
{ 0x3F, 0xF8 },
{ 0x4C, 0x8B },
{ 0x2C, 0x0C },
{ 0x2D, 0x8B },
{ 0x2E, 0x4E },
{ 0x2F, 0x1C },
{ 0x30, 0x57 },
{ 0x47, 0xE8 },
{ 0x5D, 0x8B },
OOVPA_END;
@ -1648,6 +1523,9 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH),
@ -1663,7 +1541,7 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4134, XREF),
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4721, XREF),
// REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4928, XREF)
REGISTER_OOVPA(CMcpxBuffer_GetStatusB, 4627, XREF),
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetStatus, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF),
@ -1711,7 +1589,7 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
@ -1762,13 +1640,14 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetFilter, 4627, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_PlayA, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 4361, PATCH),
REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF),
REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH),
@ -1792,8 +1671,6 @@ OOVPATable DSound_4627[] = {
REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPitch, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
};
// ******************************************************************

View File

@ -0,0 +1,42 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->DSound.1.0.5028.h
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef DSOUND_5028_H
#define DSOUND_5028_H
#include "OOVPA.h"
extern OOVPATable DSOUND_5028[];
extern uint32 DSOUND_5028_SIZE;
#endif

View File

@ -0,0 +1,259 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->DSound.1.0.5028.cpp
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetFormat
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetFormat, 5028, 8,
XREF_DirectSound_CDirectSoundVoice_SetFormat,
XRefZero)
{ 0x06, 0x4E },
{ 0x0E, 0xE8 },
{ 0x18, 0x4E },
{ 0x25, 0xFF },
{ 0x2E, 0x0C },
{ 0x34, 0x85 },
{ 0x38, 0x8B },
{ 0x43, 0x00 },
OOVPA_END;
// ******************************************************************
// * Direct, 5028
// ******************************************************************
OOVPATable DSound_5028[] = {
REGISTER_OOVPA(DirectSoundCreate, 4134, PATCH),
REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH),
REGISTER_OOVPA(DirectSoundGetSampleTime, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_CreateSoundBuffer, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPlayRegion, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLoopRegion, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetI3DL2Listener, 4134, XREF),
REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetMixBinHeadroom, 4627, XREF),
REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroomA, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4627, XREF),
REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParametersA, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParametersA, 4721, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParametersA, 4831, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetAllParameters, 4928, XREF),
REGISTER_OOVPA(IDirectSound_SetAllParameters, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBins, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBins, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBins, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBinVolumes, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetPositionA, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetPositionA, 4134, XREF), // TODO: Find a cure for laziness...
REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH),
REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH),
REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFrequency, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_LockA, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Lock, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_CreateSoundStream, 4361, XREF),
REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH),
REGISTER_OOVPA(DirectSoundCreateStream, 4361, PATCH),
REGISTER_OOVPA(CMcpxStream_Pause, 4361, XREF),
REGISTER_OOVPA(CMcpxStream_Pause, 4928, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_Pause, 4361, PATCH),
REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetBufferData, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4134, XREF),
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4721, XREF),
// REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4928, XREF)
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetStatus, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_GetSpeakerConfig, 4627, PATCH),
REGISTER_OOVPA(CMcpxBuffer_Play, 4361, XREF),
REGISTER_OOVPA(CMcpxBuffer_Play, 4721, XREF),
REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_Play, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH),
REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH),
REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH),
REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDistanceFactorA, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDistanceFactorA, 4627, XREF),
REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 4627, XREF),
REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_CommitDeferredSettings, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMaxDistance, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMaxDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMinDistance, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMinDistance, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMinDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 4134, XREF), // s+
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeAngles, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeAngles, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOrientation, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOrientation, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOrientation, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOrientation, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPosition, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVelocity, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetI3DL2Source, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_Release, 3936, PATCH), // +s
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFormat, 5028, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFormat, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_EnableHeadphones, 4627, XREF),
REGISTER_OOVPA(IDirectSound_EnableHeadphones, 4627, PATCH),
// REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetHeadroom, 4627, XREF),
// REGISTER_OOVPA(IDirectSoundStream_SetHeadroom, 4627, ALIAS, DirectSound_CDirectSoundStream_SetHeadroom),
REGISTER_OOVPA(IDirectSoundBuffer_AddRef, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_GetOutputLevels, 4627, XREF),
REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(IDirectSound_SetAllParameters, 4134, ALIAS, IDirectSoundBuffer_SetAllParameters), // Use that for now. Okay, it's your call pal...
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetAllParameters, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxBuffer_Pause, 4928, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_Pause, 4928, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Pause, 4928, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxBuffer_GetStatus, 4721, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4721, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBins, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetEG, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetEG, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetEG, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetEG, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_FlushEx, 4627, XREF),
REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH),
REGISTER_OOVPA(XAudioDownloadEffectsImage, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMode, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMode, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetFilter, 4627, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_PlayA, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 4361, PATCH),
REGISTER_OOVPA(CMcpxBuffer_Stop, 4361, XREF),
REGISTER_OOVPA(CMcpxBuffer_Stop2, 4361, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetHeadroom, 4627, XREF),
REGISTER_OOVPA(IDirectSoundStream_SetHeadroom, 4627, ALIAS, DirectSound_CDirectSoundStream_SetHeadroom),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetOutputBuffer, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetOutputBuffer, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetOutputBuffer, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffCurve, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffCurve, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetRolloffCurve, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 4627, PATCH),
REGISTER_OOVPA(XFileCreateMediaObjectEx, 4627, PATCH),
REGISTER_OOVPA(XWaveFileCreateMediaObject, 4627, PATCH),
// REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetNotificationPositions, 4627, XREF),
// REGISTER_OOVPA(IDirectSoundBuffer_SetNotificationPositions, 4627, XREF),
REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetLFO, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLFO, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetPitch, 4627, PATCH),
};
// ******************************************************************
// * DSound_5028_SIZE
// ******************************************************************
uint32 DSound_5028_SIZE = sizeof(DSound_5028);

View File

@ -220,20 +220,7 @@ OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetFormat
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetFormat, 5233, 8,
XREF_DirectSound_CDirectSoundVoice_SetFormat,
XRefZero)
{ 0x06, 0x4E },
{ 0x0E, 0xE8 },
{ 0x18, 0x4E },
{ 0x25, 0xFF },
{ 0x2E, 0x0C },
{ 0x34, 0x85 },
{ 0x38, 0x8B },
{ 0x43, 0x00 },
OOVPA_END;
#define DirectSound_CDirectSoundVoice_SetFormat_5233 DirectSound_CDirectSoundVoice_SetFormat_5028
// ******************************************************************
// DirectSound_CDirectSoundVoice::SetMode
@ -510,7 +497,7 @@ OOVPATable DSound_5233[] = {
REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetBufferData, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_GetStatusB, 4627, XREF),
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetStatus, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF),

View File

@ -95,35 +95,6 @@ OOVPA_XREF(DirectSound_CDirectSoundStream_SetMinDistance, 5344, 8,
{ 0x53, 0x8B },
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_SetMinDistance
// ******************************************************************
OOVPA_XREF(IDirectSoundBuffer_SetMinDistance, 5344, 11,
XRefNoSaveIndex,
XRefOne)
// IDirectSoundBuffer_SetMinDistance+0x1C : call [CDirectSoundBuffer::SetMinDistance]
XREF_ENTRY( 0x1D, XREF_DSBUFFERSETMINDISTANCE ),
{ 0x00, 0xFF },
// IDirectSoundBuffer_SetMinDistance+0x04 : fld [esp+4+arg_4]
{ 0x04, 0xD9 },
{ 0x05, 0x44 },
{ 0x06, 0x24 },
{ 0x07, 0x0C },
// IDirectSoundBuffer_SetMinDistance+0x12 : add eax, 0FFFFFFE4
{ 0x12, 0x83 },
{ 0x13, 0xC0 },
{ 0x14, 0xE4 },
// IDirectSoundBuffer_SetMinDistance+0x21 : retn 0Ch
{ 0x22, 0x0C },
{ 0x23, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSound::SetI3DL2Listener
// ******************************************************************
@ -172,11 +143,11 @@ OOVPA_XREF(DirectSound_CDirectSoundVoice_SetDistanceFactor, 5344, 7,
{ 0x05, 0x41 },
{ 0x0C, 0x00 },
{ 0x10, 0x08 },
{ 0x11, 0x89 },
{ 0x12, 0x50 },
{ 0x13, 0x44 },
{ 0x1A, 0x00 },
{ 0x21, 0xF6 },
{ 0x28, 0x51 },
{ 0x2F, 0xC0 },
{ 0x14, 0x8B },
OOVPA_END;
// ******************************************************************
@ -237,22 +208,27 @@ OOVPA_XREF(DirectSound_CDirectSound_SetDistanceFactor, 5344, 9,
OOVPA_END;
// ******************************************************************
// * IDirectSound_SetDistanceFactor
// * DirectSound::CDirectSoundVoice::SetDopplerFactor
// ******************************************************************
OOVPA_XREF(IDirectSound_SetDistanceFactor, 5344, 8,
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetDopplerFactor, 5344, 9,
XRefNoSaveIndex,
XRefOne)
XREF_DSVOICESETDOPPLERFACTOR,
XRefZero)
XREF_ENTRY( 0x1D, XREF_SETDISTANCEFACTORA ),
{ 0x03, 0x0C },
{ 0x08, 0x8B },
// DirectSound_CDirectSoundVoice_SetDopplerFactor+0x0D : mov edx, [esp+arg_4]
{ 0x0D, 0x8B },
{ 0x12, 0x83 },
{ 0x17, 0x1B },
{ 0x1C, 0xE8 },
{ 0x21, 0xC2 },
{ 0x0E, 0x54 },
{ 0x0F, 0x24 },
{ 0x10, 0x08 },
// DirectSound_CDirectSoundVoice_SetDopplerFactor+0x12 : mov [eax+4Ch], edx
{ 0x11, 0x89 },
{ 0x12, 0x50 },
{ 0x13, 0x4C },
// DirectSound_CDirectSoundVoice_SetDopplerFactor+0x31 : retn 0Ch
{ 0x31, 0x0C },
{ 0x32, 0x00 }
OOVPA_END;
// ******************************************************************
@ -422,6 +398,443 @@ OOVPA_XREF(DirectSound_CDirectSoundVoice_SetMode, 5344, 8,
{ 0x31, 0x0C }, // (Offset,Value)-Pair #8
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSound::SetPositionA
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSound_SetPositionA, 5344, 10,
XREF_DSSETPOSITIONA,
XRefZero)
// DirectSound_CDirectSound_SetPositionA+0x2B : mov ecx, [ebp+0x08]
{ 0x2B, 0x8B }, // (Offset,Value)-Pair #1
{ 0x2C, 0x4D }, // (Offset,Value)-Pair #2
{ 0x2D, 0x08 }, // (Offset,Value)-Pair #3
// DirectSound_CDirectSound_SetPositionA+0x37 : mov [edx+0x3C], edi
{ 0x37, 0x89 }, // (Offset,Value)-Pair #4
{ 0x38, 0x7A }, // (Offset,Value)-Pair #5
{ 0x39, 0x3C }, // (Offset,Value)-Pair #6
// DirectSound_CDirectSound_SetPositionA+0x4C : or dword ptr [eax+34h], 1
{ 0x4C, 0x83 }, // (Offset,Value)-Pair #7
{ 0x4D, 0x48 }, // (Offset,Value)-Pair #8
{ 0x4E, 0x34 }, // (Offset,Value)-Pair #9
{ 0x4F, 0x01 }, // (Offset,Value)-Pair #10
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSound::SetVelocity
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSound_SetVelocity, 5344, 14,
XREF_DSSETVELOCITYA,
XRefZero)
// DirectSound_CDirectSound_SetVelocity+0x24 : mov eax, 0x80004005
{ 0x24, 0xB8 }, // (Offset,Value)-Pair #1
{ 0x25, 0x05 }, // (Offset,Value)-Pair #2
{ 0x26, 0x40 }, // (Offset,Value)-Pair #3
{ 0x27, 0x00 }, // (Offset,Value)-Pair #4
{ 0x28, 0x80 }, // (Offset,Value)-Pair #5
// DirectSound_CDirectSound_SetVelocity+0x37 : mov [edx+0x48], edi
{ 0x37, 0x89 }, // (Offset,Value)-Pair #6
{ 0x38, 0x7A }, // (Offset,Value)-Pair #7
{ 0x39, 0x48 }, // (Offset,Value)-Pair #8
// DirectSound_CDirectSound_SetVelocity+0x4C : or dword ptr [eax+34h], 2
{ 0x4C, 0x83 }, // (Offset,Value)-Pair #9
{ 0x4D, 0x48 }, // (Offset,Value)-Pair #10
{ 0x4E, 0x34 }, // (Offset,Value)-Pair #11
{ 0x4F, 0x02 }, // (Offset,Value)-Pair #12
// DirectSound_CDirectSound_SetVelocity+0x70 : retn 0x14
{ 0x70, 0xC2 }, // (Offset,Value)-Pair #13
{ 0x71, 0x14 }, // (Offset,Value)-Pair #14
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoiceSettings::SetMixBins
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoiceSettings_SetMixBins, 5344, 7,
XREF_DSSETMIXBINSC,
XRefZero)
{ 0x10, 0x10 },
{ 0x11, 0x74 },
{ 0x12, 0x07 },
{ 0x13, 0xB8 },
{ 0x3C, 0x50 },
{ 0x4C, 0x0F },
{ 0x5C, 0x46 },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetPosition
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetPosition, 5344, 8,
XREF_DSVOICESETPOSITION,
XRefZero)
// DirectSound_CDirectSoundVoice_SetPosition+0x0F : mov edx, [ebp+arg_4]
{ 0x0F, 0x8B },
{ 0x10, 0x55 },
{ 0x11, 0x0C },
// DirectSound_CDirectSoundVoice_SetPosition+0x12 : mov [ecx+08h], edx
{ 0x12, 0x89 },
{ 0x13, 0x51 },
{ 0x14, 0x08 },
// DirectSound_CDirectSoundVoice_SetPosition+0x50 : retn 14h
{ 0x50, 0x14 },
{ 0x51, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetVelocity
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetVelocity, 5344, 8,
XREF_DSVOICESETVELOCITY,
XRefZero)
// DirectSound_CDirectSoundVoice_SetVelocity+0x0F : mov edx, [ebp+arg_4]
{ 0x0F, 0x8B },
{ 0x10, 0x55 },
{ 0x11, 0x0C },
// DirectSound_CDirectSoundVoice_SetVelocity+0x12 : mov [ecx+14h], edx
{ 0x12, 0x89 },
{ 0x13, 0x51 },
{ 0x14, 0x14 },
// DirectSound_CDirectSoundVoice_SetVelocity+0x50 : retn 14h
{ 0x50, 0x14 },
{ 0x51, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSound::SynchPlayback
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSound_SynchPlayback, 5344, 8,
XREF_DSSYNCHPLAYBACKA,
XRefZero)
{ 0x07, 0x3D },
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x2D, 0x48 },
{ 0x2E, 0x0C },
{ 0x2F, 0x57 },
{ 0x36, 0xF6 },
{ 0x3B, 0x68 },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetI3DL2Source
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetI3DL2Source, 5344, 10,
XREF_DSVOICESETI3DL2SOURCE,
XRefZero)
// DirectSound_CDirectSoundVoice_SetI3DL2Source+0x12 : mov esi, [ecx]
{ 0x12, 0x8B },
{ 0x13, 0x31 },
// DirectSound_CDirectSoundVoice_SetI3DL2Source+0x14 : mov [edx+80h], esi
{ 0x14, 0x89 },
{ 0x15, 0xB2 },
{ 0x16, 0x80 },
// DirectSound_CDirectSoundVoice_SetI3DL2Source+0x50 : fld dword ptr [ecx+10h]
{ 0x50, 0xD9 },
{ 0x51, 0x41 },
{ 0x52, 0x10 },
// DirectSound_CDirectSoundVoice_SetI3DL2Source+0xC7 : retn 0Ch
{ 0xC7, 0xC2 },
{ 0xC8, 0x0C }
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSound::CommitDeferredSettings
// ******************************************************************
OOVPA_NO_XREF(DirectSound_CDirectSound_CommitDeferredSettings, 5344, 11)
// DirectSound_CDirectSound_CommitDeferredSettings+0x11 : movzx eax, al
{ 0x11, 0x0F }, // (Offset,Value)-Pair #1
{ 0x12, 0xB6 }, // (Offset,Value)-Pair #2
{ 0x13, 0xC0 }, // (Offset,Value)-Pair #3
// DirectSound_CDirectSound_CommitDeferredSettings+0x27 : mov eax, 0x80004005
{ 0x28, 0xB8 }, // (Offset,Value)-Pair #4
{ 0x29, 0x05 }, // (Offset,Value)-Pair #5
{ 0x2A, 0x40 }, // (Offset,Value)-Pair #6
{ 0x2C, 0x80 }, // (Offset,Value)-Pair #7
// DirectSound_CDirectSound_CommitDeferredSettings+0x6D : mov [eax+0x34], edi
{ 0x6E, 0x89 }, // (Offset,Value)-Pair #8
{ 0x6F, 0x78 }, // (Offset,Value)-Pair #9
{ 0x70, 0x34 }, // (Offset,Value)-Pair #10
// DirectSound_CDirectSound_CommitDeferredSettings+0x97 : leave
{ 0x97, 0xC9 }, // (Offset,Value)-Pair #11
OOVPA_END;
// ******************************************************************
// * DirectSound::CMcpxVoiceClient::SetFilter
// ******************************************************************
OOVPA_XREF(DirectSound_CMcpxVoiceClient_SetFilter, 5344, 8,
XREF_DirectSound_CMcpxVoiceClient_SetFilter,
XRefZero)
{ 0x1B, 0xF6 },
{ 0x1C, 0xBA },
{ 0x1D, 0xFF },
{ 0x1E, 0xFF },
{ 0x1F, 0x00 },
{ 0x3E, 0x73 },
{ 0x5E, 0x3E },
{ 0x7E, 0x0B },
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundBuffer::StopEx
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundBuffer_StopEx, 5344, 9,
XREF_DirectSound_CDirectSoundBuffer_StopEx,
XRefZero)
{ 0x0C, 0x00 },
{ 0x16, 0x68 },
{ 0x25, 0x80 },
{ 0x26, 0xEB },
{ 0x27, 0x2D },
{ 0x28, 0x8B },
{ 0x30, 0xFF },
{ 0x41, 0x85 },
{ 0x47, 0x68 },
OOVPA_END;
// ******************************************************************
// * IDirectSound_SetEffectData
// ******************************************************************
OOVPA_NO_XREF(IDirectSound_SetEffectData, 5344, 7)
{ 0x04, 0x75 },
{ 0x0A, 0x75 },
{ 0x10, 0x14 },
{ 0x16, 0x10 },
{ 0x1C, 0x1B },
{ 0x26, 0x5D },
{ 0x28, 0x18 },
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSound::EnableHeadphones
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSound_EnableHeadphones, 5344, 9,
XREF_DirectSound_CDirectSound_EnableHeadphones,
XRefZero)
{ 0x04, 0x51 },
{ 0x05, 0x83 },
{ 0x06, 0x65 },
{ 0x07, 0xFC },
{ 0x08, 0x00 },
{ 0x09, 0xE8 },
{ 0x2D, 0x05 },
{ 0x3D, 0x08 },
{ 0x4D, 0xC3 },
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetAllParameters
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetAllParameters, 5344, 10,
XREF_DirectSound_CDirectSoundVoice_SetAllParameters,
XRefZero)
{ 0x0C, 0x50 },
{ 0x10, 0xB4 },
{ 0x14, 0xD9 },
{ 0x1E, 0x92 },
{ 0x13, 0x00 },
{ 0x14, 0xD9 },
{ 0x15, 0x5A },
{ 0x16, 0x08 },
{ 0x17, 0xD9 },
{ 0x21, 0x00 },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetConeOutsideVolume
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 5344, 9,
XREF_DSVOICESETCONEOUTSIDEVOLUME,
XRefZero)
// DirectSound_CDirectSoundVoice_SetConeOutsideVolume+0x0D : mov edx, [esp+arg_4]
{ 0x0D, 0x8B },
{ 0x0E, 0x54 },
{ 0x0F, 0x24 },
{ 0x10, 0x08 },
// DirectSound_CDirectSoundVoice_SetConeOutsideVolume+0x11 : mov [eax+34h], edx
{ 0x11, 0x89 },
{ 0x12, 0x50 },
{ 0x13, 0x34 },
// DirectSound_CDirectSoundVoice_SetConeOutsideVolume+0x30 : retn 0Ch
{ 0x31, 0x0C },
{ 0x32, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetRolloffFactor
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetRolloffFactor, 5344, 9,
XREF_DSVOICESETROLLOFFFACTOR,
XRefZero)
// DirectSound_CDirectSoundVoice_SetRolloffFactor+0x0D : mov edx, [esp+arg_4]
{ 0x0D, 0x8B },
{ 0x0E, 0x54 },
{ 0x0F, 0x24 },
{ 0x10, 0x08 },
// DirectSound_CDirectSoundVoice_SetRolloffFactor+0x11 : mov [eax+48h], edx
{ 0x11, 0x89 },
{ 0x12, 0x50 },
{ 0x13, 0x48 },
// DirectSound_CDirectSoundVoice_SetRolloffFactor+0x30 : retn 0Ch
{ 0x31, 0x0C },
{ 0x32, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundVoice::SetRolloffCurve
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetRolloffCurve, 5344, 8,
XREF_DSVOICESETROLLOFFCURVE,
XRefZero)
{ 0x07, 0x8B },
{ 0x10, 0x08 },
{ 0x11, 0x89 },
{ 0x12, 0x51 },
{ 0x13, 0x50 },
{ 0x14, 0x8B },
{ 0x3E, 0x33 },
{ 0x40, 0xC2 },
OOVPA_END;
// ******************************************************************
// * WaveFormat::CreateXboxAdpcmFormat
// ******************************************************************
OOVPA_XREF(WaveFormat_CreateXboxAdpcmFormat, 5344, 7,
XREF_DirectSound_WaveFormat_CreateXboxAdpcmFormat,
XRefZero)
{ 0x07, 0x08 },
{ 0x10, 0xE9 },
{ 0x19, 0x8D },
{ 0x22, 0x66 },
{ 0x2B, 0x04 },
{ 0x34, 0x66 },
{ 0x3D, 0x12 },
OOVPA_END;
// ******************************************************************
// * XAudioCreateAdpcmFormat
// ******************************************************************
OOVPA_XREF(XAudioCreateAdpcmFormat, 5344, 2,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x01, XREF_DirectSound_WaveFormat_CreateXboxAdpcmFormat ),
{ 0x00, 0xE9 },
OOVPA_END;
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetConeAngles
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundVoice_SetConeAngles, 5344, 9,
XREF_DSVOICESETCONEANGLES,
XRefZero)
// DirectSound_CDirectSoundVoice_SetConeAngles+0x0D : mov edx, [esp+arg_4]
{ 0x0D, 0x8B },
{ 0x0E, 0x54 },
{ 0x0F, 0x24 },
{ 0x10, 0x08 },
// DirectSound_CDirectSoundVoice_SetConeAngles+0x11 : mov [ecx+20h], edx
{ 0x11, 0x89 },
{ 0x12, 0x51 },
{ 0x13, 0x20 },
// DirectSound_CDirectSoundVoice_SetConeAngles+0x40 : retn 10h
{ 0x41, 0x10 },
{ 0x42, 0x00 }
OOVPA_END;
// ******************************************************************
// * DirectSound::CDirectSoundBuffer::SetHeadroom
// ******************************************************************
OOVPA_XREF(DirectSound_CDirectSoundBuffer_SetHeadroom, 5344, 8,
XREF_DirectSound_CDirectSoundBuffer_SetHeadroom,
XRefOne)
XREF_ENTRY( 0x32, XREF_DirectSound_CDirectSoundVoice_SetHeadroom ),
{ 0x0C, 0x00 },
{ 0x12, 0x85 },
{ 0x1C, 0x15 },
{ 0x26, 0xEB },
{ 0x30, 0x10 },
{ 0x3A, 0x74 },
{ 0x47, 0x8B },
OOVPA_END;
// ******************************************************************
// * IDirectSoundBuffer_SetHeadroom
// ******************************************************************
OOVPA_XREF(IDirectSoundBuffer_SetHeadroom, 5344, 8,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x15, XREF_DirectSound_CDirectSoundBuffer_SetHeadroom ),
{ 0x02, 0x24 },
{ 0x06, 0x24 },
{ 0x0A, 0x83 },
{ 0x0E, 0xD9 },
{ 0x12, 0xC8 },
{ 0x19, 0xC2 },
{ 0x1A, 0x08 },
OOVPA_END;
// ******************************************************************
// * Direct, 5344
// ******************************************************************
@ -431,20 +844,20 @@ OOVPATable DSound_5344[] = {
REGISTER_OOVPA(DirectSoundDoWork, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_CreateSoundBuffer, 4134, XREF),
REGISTER_OOVPA(CMcpxAPU_SynchPlayback, 5233, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SynchPlayback, 5233, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SynchPlayback, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SynchPlayback, 5233, PATCH),
REGISTER_OOVPA(CMcpxStream_Pause, 5233, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_Pause, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetI3DL2Listener, 4134, DISABLED),
REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetVelocity, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SetVelocity, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBins, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBins, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBins, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBins, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMixBins, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMixBins, 5233, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetPositionA, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSound_SetPositionA, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSoundCreateBuffer, 4627, PATCH),
REGISTER_OOVPA(IDirectSound_CreateSoundBuffer, 4134, PATCH),
@ -465,50 +878,48 @@ OOVPATable DSound_5344[] = {
REGISTER_OOVPA(CMcpxBuffer_SetBufferData, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetBufferData, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetBufferData, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_GetStatusB, 4627, XREF),
REGISTER_OOVPA(CMcpxBuffer_GetStatus, 4831, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetStatus, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetStatus, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_GetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_GetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_GetCurrentPosition, 3936, PATCH),
REGISTER_OOVPA(CMcpxBuffer_Play, 4928, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_Play, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_Play, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_FlushEx, 5233, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 5233, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_EnableHeadphones, 5233, XREF),
REGISTER_OOVPA(IDirectSound8_EnableHeadphones, 5233, PATCH),
REGISTER_OOVPA(IDirectSoundStream_FlushEx, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_EnableHeadphones, 5344, XREF),
REGISTER_OOVPA(IDirectSound_EnableHeadphones, 4627, PATCH),
REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH),
REGISTER_OOVPA(IDirectSound_SetOrientation, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDistanceFactor, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDistanceFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDistanceFactor, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDistanceFactorA, 4627, XREF),
REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 4134, DISABLED),
REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, DISABLED),
REGISTER_OOVPA(IDirectSound_SetDistanceFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDopplerFactor, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDopplerFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetDopplerFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 4627, DISABLED),
REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSound_CommitDeferredSettings, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 4134, DISABLED),
REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSound_CommitDeferredSettings, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMaxDistance, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMaxDistance, 5344, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMinDistance, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMinDistance, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetMinDistance, 5344, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMinDistance, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMinDistance, 4134, DISABLED),
REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMaxDistance, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMaxDistance, 4134, DISABLED),
REGISTER_OOVPA(IDirectSoundBuffer_SetMaxDistance, 4134, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMinDistance, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPosition, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPosition, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVelocity, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVelocity, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVelocity, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetI3DL2Source, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetI3DL2Source, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetI3DL2Source, 4134, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_Stop, 4134, PATCH),
@ -517,26 +928,74 @@ OOVPATable DSound_5344[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFormat, 5233, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFormat, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFormat, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 5233, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 5344, XREF), // Add when needed...
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMode, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMode, 5233, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMode, 5233, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffCurve, 5233, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffCurve, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffCurve, 5233, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffCurve, 5233, PATCH),
REGISTER_OOVPA(IDirectSound_AddRef, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetI3DL2Listener, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SetI3DL2Listener, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetRolloffFactor, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 5344, XREF),
REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLoopRegion, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH),
// REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetDistanceFactor, 5558, XREF), // Add when needed...
// REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetDistanceFactor, 5558, XREF), // Add when needed...
// REGISTER_OOVPA(IDirectSoundBuffer_SetDistanceFactor, 5558, PATCH), // Add when needed...
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLoopRegion, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetLoopRegion, 4134, PATCH),
REGISTER_OOVPA(CMcpxBuffer_SetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetCurrentPosition, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetCurrentPosition, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetMixBinHeadroom, 4627, XREF),
REGISTER_OOVPA(IDirectSound_SetMixBinHeadroom, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetHeadroom, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetHeadroom, 5344, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetHeadroom, 5344, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetLFO, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetLFO, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetLFO, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetLFO, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetEG, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetEG, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetEG, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetEG, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetEG, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CMcpxVoiceClient_SetFilter, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFilter, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetFilter, 4627, PATCH),
REGISTER_OOVPA(IDirectSoundBuffer_SetFilter, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoiceSettings_SetMixBinVolumes, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetMixBinVolumes, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetMixBinVolumes, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetMixBinVolumes, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_StopEx, 5344, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 4361, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_GetOutputLevels, 4627, XREF),
REGISTER_OOVPA(IDirectSound_GetOutputLevels, 4627, PATCH),
REGISTER_OOVPA(IDirectSound_SetEffectData, 5344, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetOutputBuffer, 4627, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetOutputBuffer, 4627, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetOutputBuffer, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetOutputBuffer, 4627, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetAllParameters, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetAllParameters, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetAllParameters, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeOutsideVolume, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeOutsideVolume, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeOutsideVolume, 4134, PATCH),
REGISTER_OOVPA(WaveFormat_CreateXboxAdpcmFormat, 5344, XREF),
REGISTER_OOVPA(XAudioCreateAdpcmFormat, 5344, PATCH),
REGISTER_OOVPA(IDirectSound_CreateSoundStream, 3936, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetConeAngles, 5344, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetConeAngles, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetConeAngles, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPlayRegion, 4361, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPlayRegion, 4361, PATCH),
};
// ******************************************************************

View File

@ -744,32 +744,12 @@ OOVPA_END;
// ******************************************************************
// * WaveFormat::CreateXboxAdpcmFormat
// ******************************************************************
OOVPA_XREF(WaveFormat_CreateXboxAdpcmFormat, 5558, 7,
XREF_DirectSound_WaveFormat_CreateXboxAdpcmFormat,
XRefZero)
{ 0x07, 0x08 },
{ 0x10, 0xE9 },
{ 0x19, 0x8D },
{ 0x22, 0x66 },
{ 0x2B, 0x04 },
{ 0x34, 0x66 },
{ 0x3D, 0x12 },
OOVPA_END;
#define WaveFormat_CreateXboxAdpcmFormat_5558 WaveFormat_CreateXboxAdpcmFormat_5344
// ******************************************************************
// * XAudioCreateAdpcmFormat
// ******************************************************************
OOVPA_XREF(XAudioCreateAdpcmFormat, 5558, 2,
XRefNoSaveIndex,
XRefOne)
XREF_ENTRY( 0x01, XREF_DirectSound_WaveFormat_CreateXboxAdpcmFormat ),
{ 0x00, 0xE9 },
OOVPA_END;
#define XAudioCreateAdpcmFormat_5558 XAudioCreateAdpcmFormat_5344
// ******************************************************************
// * DirectSound_CDirectSoundVoice::SetFormat

View File

@ -1516,16 +1516,7 @@ OOVPA_END;
// ******************************************************************
// * No XRefs! Woohoo!
// ******************************************************************
OOVPA_NO_XREF(IDirectSound_SetEffectData, 5788, 7)
{ 0x04, 0x75 },
{ 0x0A, 0x75 },
{ 0x10, 0x14 },
{ 0x16, 0x10 },
{ 0x1C, 0x1B },
{ 0x26, 0x5D },
{ 0x28, 0x18 },
OOVPA_END;
#define IDirectSound_SetEffectData_5788 IDirectSound_SetEffectData_5344
// ******************************************************************
// * DirectSound::CMemoryManager::PoolAlloc

View File

@ -1725,6 +1725,9 @@ OOVPATable DSound_5849[] = {
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetFrequency, 4134, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetFrequency, 4134, PATCH),
REGISTER_OOVPA(CMcpxVoiceClient_SetVolume, 4134, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 5849, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 5849, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundStream_SetVolume, 4134, PATCH),
REGISTER_OOVPA(IDirectSound_Release, 3936, PATCH),
REGISTER_OOVPA(IDirectSound_DownloadEffectsImage, 3936, PATCH),
@ -1768,15 +1771,11 @@ OOVPATable DSound_5849[] = {
REGISTER_OOVPA(IDirectSoundBuffer_StopEx, 5849, ALIAS, DirectSound_CDirectSoundBuffer_StopEx),
REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 5849, XREF),
REGISTER_OOVPA(IDirectSound_SetRolloffFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSound_SetRolloffFactor, 5344, DISABLED),
REGISTER_OOVPA(DirectSound_CDirectSound_SetDopplerFactor, 5849, XREF),
REGISTER_OOVPA(IDirectSound_SetDopplerFactor, 4134, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetPitch, 5849, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetPitch, 5849, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetPitch, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetVolume, 5849, XREF),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_SetVolume, 5849, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_SetVolume, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundBuffer_PlayEx, 5849, XREF),
REGISTER_OOVPA(IDirectSoundBuffer_PlayEx, 5849, PATCH),
REGISTER_OOVPA(DirectSound_CDirectSoundVoice_SetRolloffFactor, 5849, XREF),

View File

@ -0,0 +1,42 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->XG.1.0.5028.h
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef XG_5028_H
#define XG_5028_H
#include "OOVPA.h"
extern OOVPATable XG_5028[];
extern uint32 XG_5028_SIZE;
#endif

View File

@ -0,0 +1,50 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->XG.1.0.5028.cpp
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * XG_5028
// ******************************************************************
OOVPATable XG_5028[] = {
REGISTER_OOVPA(XGIsSwizzledFormat, 4361, DISABLED),
// REGISTER_OOVPA(XGSwizzleRect, 4361, PATCH), // Leave unpatched
// REGISTER_OOVPA(XGUnswizzleRect, 4627, PATCH), // Leave unpatched
REGISTER_OOVPA(XGSwizzleBox, 4627, PATCH),
REGISTER_OOVPA(XGWriteSurfaceOrTextureToXPR, 4627, PATCH),
};
// ******************************************************************
// * XG_5028_SIZE
// ******************************************************************
uint32 XG_5028_SIZE = sizeof(XG_5028);

View File

@ -0,0 +1,42 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->XOnline.1.0.5028.h
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef XONLINE_5028_H
#define XONLINE_5028_H
#include "OOVPA.h"
extern OOVPATable XOnline_5028[];
extern uint32 XOnline_5028_SIZE;
#endif

View File

@ -0,0 +1,54 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->XOnline.1.0.5028.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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * XOnline_5028
// ******************************************************************
OOVPATable XOnline_5028[] ={
REGISTER_OOVPA(XNetStartup, 4361, PATCH),
REGISTER_OOVPA(WSAStartup, 4361, PATCH),
REGISTER_OOVPA(XnInit, 4627, XREF),
REGISTER_OOVPA(socket, 4361, EMUTHIS),
REGISTER_OOVPA(bind, 4361, EMUTHIS),
REGISTER_OOVPA(listen, 4361, EMUTHIS),
REGISTER_OOVPA(ioctlsocket, 4361, EMUTHIS),
REGISTER_OOVPA(XNetGetEthernetLinkStatus, 4627, PATCH),
REGISTER_OOVPA(XoUpdateLaunchNewImageInternal, 4627, XREF),
};
// ******************************************************************
// * XOnline_5028_SIZE
// ******************************************************************
uint32 XOnline_5028_SIZE = sizeof(XOnline_5028);

View File

@ -0,0 +1,42 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.5028.h
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef XAPI_5028_H
#define XAPI_5028_H
#include "OOVPA.h"
extern OOVPATable XAPI_5028[];
extern uint32 XAPI_5028_SIZE;
#endif

View File

@ -0,0 +1,101 @@
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->Xapi.1.0.5028.cpp
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
// ******************************************************************
// * XAPI_5028
// ******************************************************************
OOVPATable XAPI_5028[] = {
REGISTER_OOVPA(XFormatUtilityDrive, 4627, PATCH),
REGISTER_OOVPA(SetThreadPriorityBoost, 4627, PATCH),
REGISTER_OOVPA(SetThreadPriority, 3911, PATCH),
REGISTER_OOVPA(GetThreadPriority, 4627, PATCH),
REGISTER_OOVPA(XRegisterThreadNotifyRoutine, 3911, PATCH),
REGISTER_OOVPA(XMountUtilityDrive, 4432, PATCH),
REGISTER_OOVPA(XInitDevices, 3911, PATCH),
REGISTER_OOVPA(XGetDevices, 4134, PATCH),
REGISTER_OOVPA(XInputOpen, 4361, PATCH),
REGISTER_OOVPA(XInputPoll, 4134, PATCH),
REGISTER_OOVPA(XID_fCloseDevice, 4627, XREF),
REGISTER_OOVPA(XID_fCloseDevice, 4928, XREF),
REGISTER_OOVPA(XInputClose, 4928, PATCH),
REGISTER_OOVPA(XInputGetCapabilities, 4361, PATCH),
REGISTER_OOVPA(XInputGetState, 4361, PATCH),
REGISTER_OOVPA(XInputGetState, 4928, PATCH),
REGISTER_OOVPA(XInputGetCapabilities, 4928, PATCH),
REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities2),
REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities3),
REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities4),
REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities5),
REGISTER_OOVPA(XInputSetState, 4361, PATCH),
REGISTER_OOVPA(XInputSetState, 4928, PATCH),
// REGISTER_OOVPA(XapiThreadStartup, 4361, PATCH), // obsolete?
REGISTER_OOVPA(XInputGetCapabilities, 4831, PATCH),
REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities2),
REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities3),
REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities4),
REGISTER_OOVPA(XInputGetCapabilities, 4831, ALIAS, XInputGetCapabilities5),
REGISTER_OOVPA(XInputGetCapabilities, 4928, ALIAS, XInputGetCapabilities6),
// REGISTER_OOVPA(XCalculateSignatureBeginEx, 4627, PATCH), // +s, not necessary?
// REGISTER_OOVPA(XCalculateSignatureBegin, 4627, PATCH),
// REGISTER_OOVPA(XCalculateSignatureUpdate, 4627, PATCH),
// REGISTER_OOVPA(XCalculateSignatureEnd, 4627, PATCH), // s+
REGISTER_OOVPA(CreateFiber, 3911, DISABLED),
REGISTER_OOVPA(DeleteFiber, 3911, DISABLED),
REGISTER_OOVPA(SwitchToFiber, 3911, DISABLED),
REGISTER_OOVPA(ConvertThreadToFiber, 3911, DISABLED),
REGISTER_OOVPA(GetTimeZoneInformation, 3911, DISABLED),
REGISTER_OOVPA(GetExitCodeThread, 3911, PATCH),
REGISTER_OOVPA(GetOverlappedResult, 4627, PATCH),
REGISTER_OOVPA(XLaunchNewImage, 4627, ALIAS, XLaunchNewImageA),
REGISTER_OOVPA(XLaunchNewImage, 4928, ALIAS, XLaunchNewImageA),
REGISTER_OOVPA(XGetLaunchInfo, 4627, DISABLED),
REGISTER_OOVPA(XSetProcessQuantumLength, 4627, PATCH),
REGISTER_OOVPA(SignalObjectAndWait, 3911, PATCH),
REGISTER_OOVPA(timeSetEvent, 4627, PATCH),
REGISTER_OOVPA(timeKillEvent, 4627, PATCH),
REGISTER_OOVPA(RaiseException, 4627, PATCH),
REGISTER_OOVPA(QueueUserAPC, 3911, PATCH),
REGISTER_OOVPA(XMountAlternateTitle, 4627, ALIAS, XMountAlternateTitleA),
REGISTER_OOVPA(XMountAlternateTitle, 4928, ALIAS, XMountAlternateTitleA),
REGISTER_OOVPA(XUnmountAlternateTitle, 4627, ALIAS, XUnmountAlternateTitleA),
REGISTER_OOVPA(XInputGetDeviceDescription, 4831, PATCH),
REGISTER_OOVPA(OutputDebugStringA, 3911, PATCH),
// REGISTER_OOVPA(MoveFileA, 4627, PATCH),
};
// ******************************************************************
// * XAPI_5028_SIZE
// ******************************************************************
uint32 XAPI_5028_SIZE = sizeof(XAPI_5028);

View File

@ -207,7 +207,6 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
if(BuildVersion == 4928) { BuildVersion = 4627; }
if(BuildVersion == 5455) { BuildVersion = 5558; }
if(BuildVersion == 5659) { BuildVersion = 5558; }
if(BuildVersion == 5028) { BuildVersion = 4627; }
if(BuildVersion == 5120) { BuildVersion = 5233; }
if(BuildVersion == 5933) { BuildVersion = 5849; } // These XDK versions are pretty much the same
/*
@ -319,16 +318,16 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
{
if(strcmp(Lib_XAPILIB, szLibraryName) == 0 &&
(BuildVersion == 3911 || BuildVersion == 4034 || BuildVersion == 4134 || BuildVersion == 4361
|| BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344
|| BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
|| BuildVersion == 4432 || BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233
|| BuildVersion == 5344 || BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
{
xbaddr lower = pXbeHeader->dwBaseAddr;
xbaddr upper = pXbeHeader->dwBaseAddr + pXbeHeader->dwSizeofImage;
}
else if(strcmp(Lib_D3D8, szLibraryName) == 0 /*&& strcmp(Lib_D3D8LTCG, szOrigLibraryName)*/ &&
(BuildVersion == 3925 || BuildVersion == 4134 || BuildVersion == 4361 || BuildVersion == 4432
|| BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558
|| BuildVersion == 5788 || BuildVersion == 5849))
|| BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
|| BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849))
{
// Save D3D8 build version
g_BuildVersion = BuildVersion;
@ -364,8 +363,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
Increment = 82 * 4;
patchOffset = 142 * 4; // TODO: Verify
//Increment = 72 * 4;
//Decrement = 0x19F; // TODO: Clean up (?)
//Increment = 72 * 4;
//patchOffset = 142*4; // TODO: Verify
}
else if (BuildVersion == 4034)
@ -389,8 +388,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
Increment = 83 * 4;
patchOffset = 143 * 4;
}
else if (BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558
|| BuildVersion == 5788 || BuildVersion == 5849)
else if (BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
|| BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849)
{
// WARNING: Not thoroughly tested (just seemed very correct right away)
DerivedAddr_D3DRS_CULLMODE = *(xbaddr*)(pFunc + 0x2B);
@ -456,8 +455,8 @@ void EmuHLEIntercept(Xbe::Header *pXbeHeader)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4134, lower, upper);
else if(BuildVersion == 4361 || BuildVersion == 4432)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4361, lower, upper);
else if(BuildVersion == 4627 || BuildVersion == 5233 || BuildVersion == 5344 || BuildVersion == 5558
|| BuildVersion == 5788 || BuildVersion == 5849)
else if(BuildVersion == 4627 || BuildVersion == 5028 || BuildVersion == 5233 || BuildVersion == 5344
|| BuildVersion == 5558 || BuildVersion == 5788 || BuildVersion == 5849)
pFunc = EmuLocateFunction((OOVPA*)&D3DDevice_SetTextureState_TexCoordIndex_4627, lower, upper);
if (pFunc != (xbaddr)nullptr)

View File

@ -0,0 +1,232 @@
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->MemoryManager.cpp
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#include "CxbxKrnl.h"
#include "Emu.h"
#include "Logging.h"
#include "MemoryManager.h"
MemoryManager g_MemoryManager;
MemoryManager::MemoryManager()
{
InitializeCriticalSectionAndSpinCount(&m_CriticalSection, 0x400);
}
MemoryManager::~MemoryManager()
{
DeleteCriticalSection(&m_CriticalSection);
}
void* MemoryManager::Allocate(size_t size)
{
LOG_FUNC_ONE_ARG(size);
EnterCriticalSection(&m_CriticalSection);
void* ptr = malloc(size);
if (ptr != nullptr) {
MemoryBlockInfo info;
info.offset = (uint32_t)ptr;
info.size = size;
info.type = MemoryType::STANDARD;
m_MemoryBlockInfo[info.offset] = info;
}
LeaveCriticalSection(&m_CriticalSection);
RETURN(ptr);
}
void* MemoryManager::AllocateAligned(size_t size, size_t alignment)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(size) ;
LOG_FUNC_ARG(alignment);
LOG_FUNC_END;
EnterCriticalSection(&m_CriticalSection);
void* ptr = _aligned_malloc(size, alignment);
if (ptr != nullptr) {
MemoryBlockInfo info;
info.offset = (uint32_t)ptr;
info.size = size;
info.type = MemoryType::ALIGNED;
m_MemoryBlockInfo[info.offset] = info;
}
LeaveCriticalSection(&m_CriticalSection);
RETURN(ptr);
}
void* MemoryManager::AllocateContiguous(size_t size, size_t alignment)
{
LOG_FUNC_BEGIN
LOG_FUNC_ARG(size);
LOG_FUNC_ARG(alignment);
LOG_FUNC_END;
EnterCriticalSection(&m_CriticalSection);
// If the end address of the block won't meet the alignment, adjust the size
if (size % alignment > 0) {
size = (size + alignment) + (size % alignment);
}
uint32_t addr = NULL;
// If the allocation table is empty, we can allocate wherever we please
if (m_ContiguousMemoryRegions.size() == 0) {
// Start allocating Contiguous Memory after the Kernel image header to prevent overwriting our dummy Kernel
addr = XBOX_KERNEL_BASE + sizeof(DUMMY_KERNEL);
} else {
// Locate the first available Memory Region with enough space for the requested buffer
// This could be improved later on by always locating the smallest block with enough space
// in order to reduce memory fragmentation.
for (auto it = m_ContiguousMemoryRegions.begin(); it != m_ContiguousMemoryRegions.end(); ++it) {
ContiguousMemoryRegion current = it->second;
if (std::next(it) == m_ContiguousMemoryRegions.end()) {
addr = current.offset + current.size;
break;
}
ContiguousMemoryRegion next = std::next(it)->second;
if (((current.offset + current.size + size) < next.offset)) {
addr = current.offset + current.size;
break;
}
}
}
if (addr + size > MM_SYSTEM_PHYSICAL_MAP + CONTIGUOUS_MEMORY_SIZE) {
EmuWarning("MemoryManager::AllocateContiguous exhausted it's allowed memory buffer");
addr = NULL;
}
if (addr != NULL) {
ContiguousMemoryRegion region;
region.offset = addr;
region.size = size;
m_ContiguousMemoryRegions[addr] = region;
MemoryBlockInfo info;
info.type = MemoryType::CONTIGUOUS;
info.offset = region.offset;
info.size = region.size;
m_MemoryBlockInfo[addr] = info;
}
LeaveCriticalSection(&m_CriticalSection);
RETURN((void*)addr);
}
void* MemoryManager::AllocateZeroed(size_t num, size_t size)
{
void* buffer = Allocate(num * size);
memset(buffer, 0, num * size);
return buffer;
}
bool MemoryManager::IsAllocated(void* block)
{
LOG_FUNC_ONE_ARG(block);
EnterCriticalSection(&m_CriticalSection);
bool result = m_MemoryBlockInfo.find((uint32_t)block) != m_MemoryBlockInfo.end();
LeaveCriticalSection(&m_CriticalSection);
RETURN(result);
}
void MemoryManager::Free(void* block)
{
LOG_FUNC_ONE_ARG(block);
EnterCriticalSection(&m_CriticalSection);
if (IsAllocated(block)) {
MemoryBlockInfo info = m_MemoryBlockInfo[info.offset];
switch (info.type) {
case MemoryType::ALIGNED:
_aligned_free((void*)info.offset);
m_MemoryBlockInfo.erase(info.offset);
break;
case MemoryType::STANDARD:
free((void*)info.offset);
m_MemoryBlockInfo.erase(info.offset);
break;
case MemoryType::CONTIGUOUS:
m_ContiguousMemoryRegions.erase(info.offset);
m_MemoryBlockInfo.erase(info.offset);
break;
default:
CxbxKrnlCleanup("Fatal: MemoryManager attempted to free memory of an unknown type");
break;
}
} else {
__debugbreak();
CxbxKrnlCleanup("Fatal: Attempted to free memory that was not allocated via MemoryManager");
}
LeaveCriticalSection(&m_CriticalSection);
}
size_t MemoryManager::QueryAllocationSize(void* block)
{
LOG_FUNC_ONE_ARG(block);
EnterCriticalSection(&m_CriticalSection);
size_t ret = 0;
if (IsAllocated(block)) {
MemoryBlockInfo info = m_MemoryBlockInfo[(uint32_t)block];
ret = info.size;
}
else {
EmuWarning("MemoryManager: Attempted to query memory that was not allocated via MemoryManager");
}
LeaveCriticalSection(&m_CriticalSection);
RETURN(ret);
}

View File

@ -0,0 +1,92 @@
// This is an open source non-commercial project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
// ******************************************************************
// *
// * .,-::::: .,:: .::::::::. .,:: .:
// * ,;;;'````' `;;;, .,;; ;;;'';;' `;;;, .,;;
// * [[[ '[[,,[[' [[[__[[\. '[[,,[['
// * $$$ Y$$$P $$""""Y$$ Y$$$P
// * `88bo,__,o, oP"``"Yo, _88o,,od8P oP"``"Yo,
// * "YUMMMMMP",m" "Mm,""YUMMMP" ,m" "Mm,
// *
// * Cxbx->Win32->CxbxKrnl->MemoryManager.h
// *
// * 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) 2002-2003 Aaron Robinson <caustik@caustik.com>
// *
// * All rights reserved
// *
// ******************************************************************
#ifndef MEMORY_MANAGER_H
#define MEMORY_MANAGER_H
#include <Windows.h>
#include <cstdint>
#include <map>
#include <unordered_map>
// Define virtual base and alternate virtual base of kernel.
#define KSEG0_BASE 0x80000000
// Define virtual base addresses for physical memory windows.
#define MM_SYSTEM_PHYSICAL_MAP KSEG0_BASE
#define MM_HIGHEST_PHYSICAL_PAGE 0x07FFF
#define MM_64M_PHYSICAL_PAGE 0x04000
#define MM_INSTANCE_PHYSICAL_PAGE 0x03FE0 // Chihiro arcade should use 0x07FF0
#define MM_INSTANCE_PAGE_COUNT 16
#define CONTIGUOUS_MEMORY_SIZE (64 * ONE_MB)
enum struct MemoryType {
STANDARD = 0,
ALIGNED,
CONTIGUOUS
};
typedef struct {
MemoryType type;
uint32_t offset;
size_t size;
} MemoryBlockInfo;
typedef struct {
uint32_t offset;
size_t size;
} ContiguousMemoryRegion;
class MemoryManager
{
public:
MemoryManager();
~MemoryManager();
void* Allocate(size_t size);
void* AllocateAligned(size_t size, size_t alignment);
void* AllocateContiguous(size_t size, size_t alignment);
void* AllocateZeroed(size_t num, size_t size);
bool IsAllocated(void* block);
void Free(void* block);
size_t QueryAllocationSize(void* block);
private:
std::unordered_map<uint32_t, MemoryBlockInfo> m_MemoryBlockInfo;
std::map<uint32_t, ContiguousMemoryRegion> m_ContiguousMemoryRegions;
CRITICAL_SECTION m_CriticalSection;
};
extern MemoryManager g_MemoryManager;
#endif

10
src/CxbxVersion.h Normal file
View File

@ -0,0 +1,10 @@
#pragma once
#include "Version.h"
/*! version string dependent on trace flag */
#ifndef _DEBUG_TRACE
#define _CXBX_VERSION _GIT_VERSION " (" __DATE__ ")"
#else
#define _CXBX_VERSION _GIT_VERSION "-Trace (" __DATE__ ")"
#endif