From 2f9b24859f38a8a3eec602f24a9caa053e794f07 Mon Sep 17 00:00:00 2001 From: blueshogun96 Date: Sat, 17 Apr 2010 03:21:41 +0000 Subject: [PATCH] Updating (the hard way) because I can't get TSVN to do it automatically! Happy now? Happy now? Happy now? Happy now? Cleanup time. --- build/win32/Cxbx.suo | Bin 0 -> 166912 bytes build/win32/CxbxKrnl.vcproj | 33 + doc/Changelog.txt | 20 + doc/ShogunChangelog.txt | 561 +++- doc/ShogunTodo.txt | 13 +- resource/Cxbx.aps | Bin 0 -> 200116 bytes resource/Cxbx.rc | 77 +- resource/Thumbs.db | Bin 12288 -> 0 bytes src/Common/Win32/XBVideo.cpp | 8 +- src/Common/Win32/XBVideo.h | 7 + src/Cxbx.h | 8 +- src/Cxbx/DlgVideoConfig.cpp | 8 +- src/Cxbx/ResCxbx.h | 9 +- src/CxbxKrnl/Emu.cpp | 315 +- src/CxbxKrnl/Emu.h | 6 +- src/CxbxKrnl/EmuD3D8.cpp | 1010 ++++-- src/CxbxKrnl/EmuD3D8.h | 115 +- src/CxbxKrnl/EmuD3D8/Convert.cpp | 52 +- src/CxbxKrnl/EmuD3D8/Convert.h | 52 +- src/CxbxKrnl/EmuD3D8/PixelShader.cpp | 366 +++ src/CxbxKrnl/EmuD3D8/PixelShader.h | 434 +++ src/CxbxKrnl/EmuD3D8/PushBuffer.cpp | 22 +- src/CxbxKrnl/EmuD3D8/State.cpp | 117 +- src/CxbxKrnl/EmuD3D8/VertexBuffer.cpp | 71 +- src/CxbxKrnl/EmuD3D8/VertexBuffer.h | 6 +- src/CxbxKrnl/EmuD3D8/VertexShader - Copy.cpp | 2095 ++++++++++++ src/CxbxKrnl/EmuD3D8/VertexShader.cpp | 108 +- src/CxbxKrnl/EmuD3D8Types.h | 14 + src/CxbxKrnl/EmuDSound.cpp | 470 ++- src/CxbxKrnl/EmuDSound.h | 161 +- src/CxbxKrnl/EmuKrnl.cpp | 180 +- src/CxbxKrnl/EmuXG.cpp | 74 +- src/CxbxKrnl/EmuXG.h | 10 + src/CxbxKrnl/EmuXOnline.cpp | 56 + src/CxbxKrnl/EmuXOnline.h | 22 + src/CxbxKrnl/EmuXTL.h | 1 + src/CxbxKrnl/EmuXactEng.cpp | 97 +- src/CxbxKrnl/EmuXactEng.h | 63 + src/CxbxKrnl/EmuXapi.cpp | 740 ++++- src/CxbxKrnl/EmuXapi.h | 177 +- src/CxbxKrnl/HLEDataBase.cpp | 52 + src/CxbxKrnl/HLEDataBase.h | 31 + src/CxbxKrnl/HLEDataBase/D3D8.1.0.3925.inl | 2372 ++++++++++++++ src/CxbxKrnl/HLEDataBase/D3D8.1.0.4134.inl | 2838 ++++++++++++++++- src/CxbxKrnl/HLEDataBase/D3D8.1.0.4361.inl | 709 ++++ src/CxbxKrnl/HLEDataBase/D3D8.1.0.4432.inl | 1121 +++---- src/CxbxKrnl/HLEDataBase/D3D8.1.0.4627.inl | 525 +-- src/CxbxKrnl/HLEDataBase/D3D8.1.0.5233.inl | 340 +- src/CxbxKrnl/HLEDataBase/D3D8.1.0.5558.inl | 403 ++- src/CxbxKrnl/HLEDataBase/D3D8.1.0.5849.inl | 87 +- src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.h | 45 + .../HLEDataBase/D3D8LTCG.1.0.5849.inl | 1659 ++++++++++ src/CxbxKrnl/HLEDataBase/DSound.1.0.3936.inl | 1266 +++++++- src/CxbxKrnl/HLEDataBase/DSound.1.0.4361.inl | 321 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.4432.inl | 110 +- src/CxbxKrnl/HLEDataBase/DSound.1.0.4627.inl | 1025 +++++- src/CxbxKrnl/HLEDataBase/DSound.1.0.5558.inl | 32 + src/CxbxKrnl/HLEDataBase/DSound.1.0.5849.inl | 129 + src/CxbxKrnl/HLEDataBase/HLE_3911.rar | Bin 0 -> 30746 bytes src/CxbxKrnl/HLEDataBase/XG.1.0.3911.h | 42 + src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl | 208 ++ src/CxbxKrnl/HLEDataBase/XG.1.0.4627.inl | 32 + src/CxbxKrnl/HLEDataBase/XOnline.1.0.4627.inl | 63 + src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.h | 42 + src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.inl | 233 ++ src/CxbxKrnl/HLEDataBase/XactEng.1.0.4627.inl | 438 ++- src/CxbxKrnl/HLEDataBase/Xapi.1.0.3911.inl | 105 + src/CxbxKrnl/HLEDataBase/Xapi.1.0.4034.inl | 20 + src/CxbxKrnl/HLEDataBase/Xapi.1.0.4134.inl | 463 +++ src/CxbxKrnl/HLEDataBase/Xapi.1.0.4361.inl | 86 + src/CxbxKrnl/HLEDataBase/Xapi.1.0.4432.inl | 40 + src/CxbxKrnl/HLEDataBase/Xapi.1.0.4627.inl | 510 ++- src/CxbxKrnl/HLEDataBase/Xapi.1.0.5233.inl | 82 + src/CxbxKrnl/HLEDataBase/Xapi.1.0.5558.inl | 176 + src/CxbxKrnl/HLEDataBase/Xapi.1.0.5849.inl | 171 + src/CxbxKrnl/HLEIntercept.cpp | 123 +- src/CxbxKrnl/KernelThunk.cpp | 8 +- 77 files changed, 21654 insertions(+), 1831 deletions(-) create mode 100644 build/win32/Cxbx.suo create mode 100644 resource/Cxbx.aps delete mode 100644 resource/Thumbs.db create mode 100644 src/CxbxKrnl/EmuD3D8/PixelShader.cpp create mode 100644 src/CxbxKrnl/EmuD3D8/PixelShader.h create mode 100644 src/CxbxKrnl/EmuD3D8/VertexShader - Copy.cpp create mode 100644 src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.h create mode 100644 src/CxbxKrnl/HLEDataBase/D3D8LTCG.1.0.5849.inl create mode 100644 src/CxbxKrnl/HLEDataBase/HLE_3911.rar create mode 100644 src/CxbxKrnl/HLEDataBase/XG.1.0.3911.h create mode 100644 src/CxbxKrnl/HLEDataBase/XG.1.0.3911.inl create mode 100644 src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.h create mode 100644 src/CxbxKrnl/HLEDataBase/XOnline.1.0.5233.inl diff --git a/build/win32/Cxbx.suo b/build/win32/Cxbx.suo new file mode 100644 index 0000000000000000000000000000000000000000..26b0d7080385cee633f8b35d89387ef8c9db8f57 GIT binary patch literal 166912 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 i?x|t@?XCN$Y)6)#Yw7hhtbbc0P + + @@ -442,6 +447,10 @@ RelativePath="..\..\src\CxbxKrnl\HLEDataBase\Xapi.1.0.5849.h" > + + @@ -470,6 +479,10 @@ RelativePath="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4627.h" > + + + + @@ -1304,6 +1321,10 @@ /> + + @@ -1628,6 +1649,10 @@ /> + + @@ -1752,6 +1777,10 @@ RelativePath="..\..\src\CxbxKrnl\HLEDataBase\XOnline.1.0.4627.inl" > + + + + diff --git a/doc/Changelog.txt b/doc/Changelog.txt index e30c7d1f2..d6793d5f4 100644 --- a/doc/Changelog.txt +++ b/doc/Changelog.txt @@ -1,5 +1,25 @@ Cxbx Home Page: http://www.caustik.com/cxbx/ +version: 0.8.1 (2/3/10) +-------------------------------- + +- Cxbx's compatibility has vastly increased (see compatibility list). + +- Added video option to enable/disable hardware YUV surfaces for video playback. + (This should fix problems with videos not showing up or robotic sounds). + +- Fixed bug in vertex patching code for Vista (thanks defiance)! + +- Most XDKs have at least basic support. + +- Fixed pipeline bumpmapping is now supported. + +- Multiple thread notification routines now supported. + +- Lots of bug fixes. + +- And many more I can't remember (it's been a long time)! + version: 0.8.0 (??/??/??) -------------------------------- diff --git a/doc/ShogunChangelog.txt b/doc/ShogunChangelog.txt index 9fcc9b48a..10d8c438a 100644 --- a/doc/ShogunChangelog.txt +++ b/doc/ShogunChangelog.txt @@ -192,4 +192,563 @@ TODO: Investigate 0x2AE7F2 and 0x2C8877 for Panzer. - Added the following texture formats D3DFMT_A8B8G8R8 (Swizzled) - D3DFMT_UYVY (Swizzled, afaik) \ No newline at end of file + D3DFMT_UYVY (Swizzled, afaik) + +11/11/09 +- Added the following texture format(s) + D3DFMT_UNKNOWN (Undefined) (For MetalSlug 3) + +- Added the following functions + IDirect3DDevice8_SetShaderConstantMode (5849) + IDirect3DDevice8_SetViewport (5849) + QueueUserAPC (5849) (Possibly too high level) + CDirectSound_SetAllParameters (4721) + +11/18/09 +- Added the following function(s) + IDirect3D8_CreateDevice (5028) + +11/20/09 +- Added the following function(s) + RtlReallocateHeap (4361) + RtlSizeHeap (4361) + CDirectSoundVoiceSettings::SetMixBinVolumes (4361) + CDirectSoundVoice::SetMixBinVolumes (4361) + CDirectSoundBuffer::SetMixBinVolumes (4361) + +- Removed DSOUND 4361 alias to 4627 (This will break Smashing Drive!) + +11/22/09 +- Temporarily set DSOUND 4361 alias to 4627 again. +- Added the following function(s) + CDirectSoundStream_SetMixBins (4627) + CMcpxVoiceClient_SetEG (4627) + CDirectSoundVoice_SetEG (4627) + CDirectSoundStream_SetEG (4627) + CDirectSoundStream_FlushEx (4627) + IDirectSoundStream_FlushEx (4627) + +11/23/09 +- Added the following function(s) + RtlCreateHeap (4134) + RtlAllocateHeap (4134) + RtlFreeHeap (4134) + RtlReAllocateHeap (4134) + RtlSizeHeap (4134) + XapiBootDash (4134) + XRegisterThreadNotifyRoutine (4134) + XGetDeviceChanges (4134) + XID_fCloseDevice (XREF) (4134) + XInputClose (4134) + XInputGetCapabilities (4134) + SetThreadPriorityBoost (4134) + GetThreadPriority (4134) + XGetDevices (4134) + QueryPerformanceCounter (4134) + QueryPerformanceFrequency (4134) + XInputPoll (4134 - 4928) + XGetSectionHandleA (4134 - 4928) + XLoadSectionByHandle (4134 - 4928) + XFreeSectionByHandle (4134 - 4928) + RtlDestroyHeap (4134 - 4928) + D3DDevice_CreatePixelShader (4134) + IDirect3DSurface8_LockRect (4134) + Lock2DSurface (4134) + D3DDevice_SetGammaRamp (4134) + IDirect3D8_CheckDeviceFormat (4134) + IDirect3D8_GetAdapterModeCount (4134) + IDirect3D8_EnumAdapterModes (4134) + IDirect3DDevice8_LoadVertexShader (4134) + IDirect3DDevice8_SelectVertexShader (4134) + IDirect3DDevice8_CopyRects (4134) + IDirect3DDevice8_CreateImageSurface (4134) + IDirect3DDevice8_SetVertexShaderConstant (4134) + IDirect3DDevice8_SetPixelShader (4134) + IDirect3DDevice8_SetTextureState_BumpEnv (4134) + IDirect3DDevice8_SetIndices (4134) + IDirect3DDevice8_SetTexture (4134) + IDirect3DDevice8_SetRenderState_VertexBlend (4134) + IDirect3DDevice8_SetRenderState_TextureFactor (4134) + IDirect3DDevice8_SetRenderState_EdgeAntiAlias (4134) + IDirect3DDevice8_SetRenderState_Simple (4134) + IDirect3DDevice8_SetRenderState_ZEnable (4134) + IDirect3DDevice8_SetRenderState_StencilEnable (4134) + IDirect3DDevice8_SetRenderState_MultiSampleAntiAlias (4134) + IDirect3DDevice8_GetTransform (4134) + IDirect3DDevice8_SetStreamSource (4134) + IDirect3DDevice8_SetVertexShader (4134) + IDirect3DDevice8_DrawVertices (4134) + IDirect3DDevice8_DrawVerticesUP (4134) + IDirect3DDevice8_DrawIndexedVertices (4134) + IDirect3DDevice8_SetLight (4134) + IDirect3DDevice8_SetMaterial (4134) + IDirect3DDevice8_LightEnable (4134) + IDirect3DVertexBuffer8_Lock (4134) + Get2DSurfaceDesc (4134) + IDirect3DSurface8_GetDesc (4134) + IDirect3DDevice8_SetRenderState_StencilFail (4134) + IDirect3DDevice8_SetRenderState_NormalizeNormals (4134) + IDirect3DDevice8_Reset (4134 - 4361) + IDirect3D8_KickOffAndWaitForIdle (4134 - 4361) + IDirect3DDevice8_SetTextureState_TwoSidedLighting (4134 - 4361) + IDirect3DDevice8_SetRenderState_BackFillMode (4134 - 4361) + IDirect3DDevice8_SetTextureState_ColorKeyColor (4134 - 4361) + IDirect3DDevice8_SetRenderState_FrontFace (4134 - 4361) + IDirect3DDevice8_SetRenderState_LogicOp (4134 - 4361) + IDirect3DDevice8_SetRenderState_StencilFail (4134 - 4361) + IDirect3DDevice8_SetRenderState_OcclusionCullEnable (4134 - 4361) + IDirect3DDevice8_SetRenderState_StencilCullEnable (4134 - 4361) + +- Move the following functions + XInputPoll (4928 -> 4134) + XGetSectionHandleA (4627 -> 4134) + XLoadSectionByHandle (4627 -> 4134) + XFreeSectionByHandle (4627 -> 4134) + RtlDestroyHeap (4627 -> 4134) + IDirect3DDevice8_Reset (4134) + IDirect3D8_KickOffAndWaitForIdle (4432 -> 4134) + IDirect3DDevice8_SetTextureState_TwoSidedLighting (4432 -> 4134) + IDirect3DDevice8_SetRenderState_BackFillMode (4432 -> 4134) + IDirect3DDevice8_SetTextureState_ColorKeyColor (4432 -> 4134) + IDirect3DDevice8_SetRenderState_FrontFace (4432 -> 4134) + IDirect3DDevice8_SetRenderState_LogicOp (4432 -> 4134) + IDirect3DDevice8_SetRenderState_StencilFail (4432 -> 4134) + IDirect3DDevice8_SetRenderState_OcclusionCullEnable (4432 -> 4134) + IDirect3DDevice8_SetRenderState_StencilCullEnable (4432 -> 4134) + +- Added a bit of code to print out more details about the Direct3D device + each Xbox game is trying to create. +- Added a hack to disable Tripple Buffering. JSRF needs this for cards that + don't support it with the parameters it's using. + +11/24/09 +- Added the following functions(s) + IDirect3DDevice8_FillMode (4134) + IDirect3DDevice8_SetRenderState_RopZCmpAlwaysRead (4134 - 4627) + IDirect3DDevice8_SetRenderState_RopZRead (4134 - 4627) + IDirect3DDevice8_SetRenderState_DoNotCullUncompressed (4134 - 4627) + IDirect3DDevice8_SetRenderState_Dxt1NoiseEnable (4134 - 4361) + IDirect3DDevice8_SetRenderState_MultiSampleMask (4134 - 4361) + IDirect3DDevice8_SetRenderState_MultiSampleMode (4134 - 4361) + IDirect3DDevice8_SetRenderState_MultiSampleRenderTargetMode (4134 - 4361) + IDirect3DDevice8_SetRenderState_ShadowFunc (4134 - 4361) + IDirect3DDevice8_SetRenderState_YuvEnable (4134 - 4361) + IDirect3DDevice8_DrawIndexedVerticesUP (4134 - 4361) + IDirect3DDevice8_SetPixelShaderConstant (4134 - 4627) + IDirect3DDevice8_DeletePixelShader (4134 - 4627) + IDirect3DDevice8_SetRenderState_CullModeB (4134 - 4627) + IDirect3DDevice8_DeleteVertexShader (4134 - 4627) + IDirect3DDevice8_SetScreenSpaceOffset (4134 - 4627) + D3D::SetFence (XREF) (4134 - 4627) + IDirect3DDevice8_SetRenderState_LineWidth (4134 - 4361) + IDirect3DDevice8_GetGammaRamp (4134) + SetThreadPriorityBoost (4134 - 4361) + IDirect3DDevice8_BlockUntilVerticalBlank (4134) + IDirect3DDevice8_SetSwapCallback (4134 - 4361) + IDirect3DDevice8_GetTile (4134 - 4361) + IDirect3DDevice8_SetTile (4134 - 4361) + IDirect3DDevice8_IsBusy (4134 - 4361) + +- Fix a bug in D3D8 4134. IDirect3DDevice8_SetRenderState_Fillmode_1_0_3925 was giving + us a false positive. The problem exists in 4034 as well because whoever started + trying to add 4034 and 4134 support just threw in a bunch of signatures from D3D8 3925 + must have been looking for similarities in that XDK. Good idea when you don't have + a certain XDK, but it's not 100% safe to do (or leave in unattended). +- Attempting to impliment IDirect3DDevice8_SetSwapCallback. Some of the steps necessary + will revolve around IDirect3DDevice8_SetVerticalBlankCallback's inner workings. Adding + the callback function to execute each time D3DDevice_Present/Swap is called is easy, but + Some of the parameters require a bit of leg work. Right now, some of my implementation + is guess work. Hopefully Caustik will have a good idea of what to do. +- Even worse, the signatures for D3DDevice_SetSwapCallback and D3DDevice_SetVerticalBlankCallback + are almost completely identical and are different by an extremely small margin. For 4134, + it looks the same as 4361's. I might be over reacting, but I just don't want to screw this + up because working on JSRF is proving to be a delicate operation! + +11/26/09 +- Added the following function(s) + XnInit (5233) + bind (5233) + ioctlsocket (5233) + WSAStartup (5233) + XNetStartup (5233 - 5344) + CDirectSoundStream_SetMode (3936) + +12/1/09 +- Added the following function(s) + XACT::CEngine::RegisterNotification (4627) + IXACTEngine_RegisterNotification (4627) + XACT::CEngine::GetNotification (4627) + IXACTEngine_GetNotification (4627) + XACT::CEngine::CreateSoundBank (4928) + IXACTEngine::CreateSoundBank (4928) + XACT::CEngine::RegisterWaveBank (4928) + IXACTEngine::RegisterWaveBank (4928) + XAudioDownloadEffectsImage (4627 - 4928) + +12/2/09 +- Added the following function(s) + XACT::CEngine::UnRegisterWaveBank (4928)(*) + IXACTEngine_UnRegisterWaveBank (4928)(*) + IDirect3DDevice8_PersistDisplay (4627 & 4928) + XNetGetEthernetLinkStatus (4627 - 4928, 5233 & 5344) + XGWriteSurfaceOrTextureToXPR (4627 - 4928) +- Other things + Added D3DTOP_BLENDCURRENTALPHA (13) + +- Unreal Championship gets passed the loading screen and the menus appear to be interactive + as well. It took F-O-R-E-V-E-R, but I'm finally beginning to make some significant progress + since my last updates for this game. + +(*) Could be wrong. Look into IXACTEngine_SetNotification as well... + +12/3/09 +- Added the following function(s) + XLaunchNewImageA (4627 & 4928) + XGetLaunchInfo (4627 - 4928) +- Unreal Championship appears to be "almost" ingame. The LaunchData parameter from XLaunchNewImageA + is saved in a .bin file (CxbxLaunchData.bin) and is loaded once XGetLaunchInfo is called. After it + is loaded, the file is deleted so that Unreal Championship is started normally. When CxbxLaunchData.bin + is loaded by XGetLaunchInfo, Unreal Championship will use this data to load the desired level and + data that goes with it. The biggest problem is that the controller is no longer recognized after + Cxbx is restarted. It may take yet another hack to get around this. If we can, we'll find out whether + this game can be played or not. + +12/26/09 +- Added the following function(s) + XSetProcessQuantumLength (4627 & 4721) + XGetFileCacheSize (5233 & 5344) + IDirect3DDevice8_Unknown1 (5233) (*) + IDirect3DDevice8_SetRenderState_TwoSidedLighting (5120 & 5233) + IDirect3DDevice8_SetRenderState_FrontFace (4531 - 5233) + IDirect3DDevice8_SetRenderState_LogicOp (4721 - 5344) + IDirect3DDevice8_BeginPush (5233 & 5344) + IDirect3DDevice8_EndPush (5233 & 5344) + +(*) This is not the actual function name. Since I was unable to find any functions even somewhat similar +to it (I don't have 5233, but not even 5344 helped this time), I just created a dummy function to the game +from crashing. There were 4 functions that had access to it, and I had no idea which one was calling it, +nor could I find out what those functions were either. The only lead I had was that it called the kernel +function AvSendTVEncoderOption, which led me to the assumption that we can get away with ignoring this function +for now. So far, this only occurs in games known as "Run Like Hell" and "Oddworld Munch's Oddyssee". + +12/27/09 +- Added the following function(s) + IDirect3DDevice8_AddRef (3925) [3911] + CDirectSoundStream_GetInfo (All) (*) + IDirect3DDevice8_Unknown1 (3925) (**) + IDirect3DDevice8_GetViewport (3925) + IDirect3DDevice8_GetGammaRamp (3925) + SignalObjectAndWait (3911 - 4627) + PulseEvent (3911) + IDirect3DDevice8_GetDisplayFieldStatus (3925) + +- Stopped Cxbx from trying to assemble "empty" shaders in Azurik: Rize of Perathia. + +(*) Since this function is part of the DirectSoundStream VTable (CDirectSoundStream::vtbl), the XDK doesn't +matter. +(**) See update for 12/26/09 + +12/28/09 +- Added the following function(s) + IDirect3DDevice8_SetSwapCallback (4928) + IDirect3DDevice8_SetRenderState_MultiSampleAntiAlias (3925) [3911] + +12/29/09 +- Added the following function(s) + CDirectSoundVoice_SetMode (4627 - 4831) + CDirectSoundBuffer_SetMode (4627 - 4831) + IDirectSoundBuffer_SetMode (4627 - 4831) + IDirect3DDevice8_SetRenderState_FrontFace (4531 - 5120) + IDirect3DDevice8_SetRenderState_MultiSampleMode (4531 - 4831) + IDirect3DDevice8_SetRenderState_MultiSampleRenderTargetMode (4531 - 4831) + IDirect3DDevice8_SetRenderState_StencilCullEnable (4531 - 4831) + +1/1/2010 +- Added the following function(s) + IDirect3DDevice8_SetGammaRamp (4242 - 4531) + IDirect3DDevice8_CreateVertexBuffer (4432) + IDirect3DDevice8_SetShaderConstantMode (4361 - 4432) + IDirect3DDevice8_SetVertexShaderConstant (4432 & 4531?) + IDirect3DDevice8_CreatePixelShader (4432 & 4531) + IDirect3DDevice8_GetViewport (4400 - 4531?) + IDirect3DDevice8_DrawVertices (4400 - 4531?) + IDirect3DDevice8_SetFlickerFilter (4361 & 4432) + IDirect3DDevice8_SetSoftDisplayFilter (4361 & 4432) + IDirect3DDevice8_SetGammaRamp (4432) + IDirect3DDevice8_DrawIndexedVertices (4400 - 4531?) + IDirect3DDevice8_PrimeVertexCache (4361) + IDirect3DDevice8_BeginPush/EndPush (4361) + IDirect3DDevice8_Begin/End (4361 - 4531?) + IDirect3DDevice8_SetVertexData2f (4361 - 4531?) + IDirect3DDevice8_SetVertexData4f (4361 - 4531?) + IDirect3DDevice8_SetVertexData4ub (4361 - 4531?) + CDirectSoundBuffer_PlayEx (4361 - 4627)(*) + IDirectSoundBuffer8_PlayEx (4361 - 4627)(*) + CMxpxBuffer_Stop2 (4361 - 4432)(**) + CDirectSoundBuffer_StopEx (4361 - 4627) + IDirectSoundBuffer8_StopEx (4361 - 4627) + CDirectSound_SetPosition (4361 - 4432) + +- Added support for D3DVSDE_BLENDWEIGHT + +(*) Not yet confirmed +(**) There are two versions of CMcpxBuffer_Stop. One has one parameter (ulong), and the other has two and calls + the first one (__int64, ulong). My signature is for the one with 2 params. + +1/2/10 +- Added the following function(s) + CDirectSound_SetVelocity (4432) + CDirectSoundVOice_SetPosition (4432) + IDirect3DDevice8_SetIndices (4400 - 4531) + +- Added all known blending operations (a bit surprised Caustik only added D3DBLENDOP_ADD) + +1/3/10 +- Added the following function(s) + IDirect3DDevice8_SetRenderState_VertexBlend (3925) [3911] + IDirect3DDevice8_SetRenderState_BackFillMode (3925) [3911] + IDirect3DDevice8_SetRenderState_TwoSidedLighting (3925) [3911] + IDirect3DDevice8_SetRenderState_NormalizeNormals (3925) [3911] + IDirect3DDevice8_SetRenderState_FrontFace (3925) [3911] + IDirect3DDevice8_SetRenderState_TextureFactor (3925) [3911] + IDirect3DDevice8_SetRenderState_LogicOp (3925) [3911] + IDirect3DDevice8_SetRenderState_EdgeAntiAlias (3925) [3911] + IDirect3DDevice8_SetRenderState_MultiSampleMask (3925) [3911] + IDirect3DDevice8_SetRenderState_MultiSampleMode (3925) [3911] + CreateFiber (4432) + DeleteFiber (4432) + +- Added the following kernel function(s) + KeBugCheck (*) + +- Fixed up EmuIDirect3DDevice8_UpdateOverlay a bit. Updating the overlay + in software lets me see video playback again and let's me take screen + shots because it's a YUV -> RGB conversion. Videos also play at more + "correct" speeds in software anyway. Unreal Championship requires + this to be done in software to avoid crashing. Also, since the YUV + overlay is done in software, it's not updated automatically like a hard- + ware accelerated overlay, so I added a hack to update the screen if + Present or Swap was not called since the last update of the overlay. + this fixes most problems I've had with video playback. + +(*) TODO: Find out what is calling this (possibly XapiFiberStartup) + +1/4/10 +- Added the following function(s) + IDirect3DDevice8_SetRenderState_ShadowFunc (3925) [3911] + IDirect3DDevice8_SetRenderState_LineWidth (3925) [3911] + IDirect3DDevice8_SetRenderState_YuvEnable (3925) [3911] + IDirect3DDevice8_PersistDisplay (3925) [3911] + +1/5/10 +- Added the following function(s) + CDirectSoundVoice_SetPitch (4627) + CDirectSoundBuffer_SetPitch (4627) + IDirectSoundBuffer8_SetPitch (4627) + CMcpxBuffer_GetStatus (4721) + IDirect3DDevice8_CreateIndexBuffer (5558) + IDirect3DDevice8_CreateIndexBuffer2 (5558) + IDirect3DDevice8_SetVerticalBlankCallback (5233) + +- The TechCertGame works again, but freezes ingame. + +1/6/10 +- Added the following function(s) + IDirect3DDevice8_SampleAlpha (5233 - 5344) + IDirect3DDevice8_GetVertexShaderSize (4134 - 4531) + +1/8/10 +- Added the following function(s) + CMcpxBuffer_Pause (4928 - 5344) + CDirectSoundBuffer_Pause (4928 - 5344) + IDirectSoundBuffer8_Pause (4928 - 5344) + CreateSemaphore (5558) (*) + ReleaseSemaphore (5558) (*) + IDirect3D8_GetAdapterModeCount (4721 - 5558) + IDirect3D8_EnumAdapterModes (4721 - 5558) + IDirect3DDevice8_SetverticalBlankCallback (5558) + IDirect3DDevice8_SetSwapCallback (5558) + IDirect3DDevice8_GetGammaRamp (5558 - 5659?) + IDirect3DDevice8_SetRenderState_TextureFactor (5558) + IDirect3DDevice8_SetRenderState_VertexBlend (5558) + +- Created new function EmuXB2PC_D3DMultisampleFormat(DWORD Type) in convert.cpp +- Fixed a bug in IDirect3D8_CheckMultiSampleDeviceType, actually use PCSurfaceFormat + flag instead of actual parameter! + +(*) Yes they are high level, but it fixes some problems with Metal Arms (5558) + +1/15/10 +- Added the following function(s) + IDirect3DDevice8_DrawVertices (3925) [3911] + IDirect3DDevice8_DrawVerticesUP (3925) [3911] + IDirect3DDevice8_DrawIndexedVerticesUP (3925) [3911] + CMcpxAPU::Set3dDopplerFactor (3936) [3911] + CDirectSound::SetDopplerFactor (3936) [3911] + IDirectSound8_SetDopplerFactor (3936) [3911] + IDirect3DDevice8_GetDisplayMode (3925) [3911] + XGIsSwizzledFormat (3911) + XGSizzleRect (3911) + XGUnswizzleRect (3911) + XGSwizzleBox (3911) + XGWriteSurfaceOrTextureToXPR (3911) + +- Added the following kernel function(s) + IoDismountVolumeByName + HalReadSMCTrayState + +- Added XG.1.0.3911.h/inl (it's about damn time!) + +1/16/09 +- Added the folliwing function(s) + IDirect3DDevice8_SetTextureState_BumpEnv (3925) [3911] + IDirect3DDevice8_SetTextureState_ColorKeyColor (3925) [3911] + IDirect3DDevice8_SetVertexData4s (3925) [3911] + IDirect3D8_SetPushBufferSize (3925) [3911] + CSensaura3d::GetFullHRTFFilterPair (3936) [3911] + DirectSoundUseFullHRTF (3936) [3911] + CDirectSound::GetCaps (3936) [3911] + IDirectSound8_GetCaps (3936) [3911] + +1/22/09 +- Added the following function(s) + timeSetEvent (4627 & 4721) + timeKillEvent (4627 & 4721) + CDirectSoundVoice::SetConeAngles (3936) [3911] + DirectSoundEnterCriticalSection (3936) [3911] + CDirectSoundBuffer::PlayEx (3936) [3911] + IDirectSoundBuffer8_PlayEx (3936) [3911] + DirectSoundUseFullHRTF (3936) [3911] + RaiseException (4627 - 4928) + +1/23/10 +- Added the following function(s) + D3D_AllocContiguousMemory (3925) [3911] (*) + IDirect3DResource8_GetType (3925) [3911] (*) + +(*) Cxbx doesn't crash without this signature... +(**) Just for testing purposes. You can remove it if you want/need. + +1/24/10 +- Added the following function(s) + IDirect3DDevice8_SetRenderState_Deferred (3925) [3911] (*) + IDirect3DDevice8_SetLight (3925) [3911] + IDirect3DDevice8_LightEnable (3925) [3911] + IDirect3DDevice8_CreateVertexShader (3925) [3911] + IDirect3DDevice8_SetRenderTarget (3948) [3911] + +(*) This can/should be removed once the detection of 3911's D3DDeferredRenderState +is properly located. + +- Fixed the ordering problem with Deferred Texture States in 3911. +- TODO: Compensate the difference in modified vertex shader constants. + +1/25/10 +- Added the following function(s) + IDirect3DSurface8_GetDesc (3925) [3911] + IDirectSound8_AddRef (3936) / [3911] - 4242 + DirectSoundGetSampleTime (3936) [3911] + IDirectSoundBuffer8_AddRef (3936) [3911] - 4627 + +- Moved the following function(s) + IDirectSound8_AddRef (4361 -> 3936) + IDirectSoundBuffer8_AddRef (4627 -> 3936) + +- Fix some bugs in EmuDirectSoundBufferCreate. DSBCAPS_MIXIN,_FXIN AND _FXIN2 + were getting by the "AcceptableMask" undetected. + +1/27/10 +- Added the following function(s) + IDirect3DDevice8_SetTile (3925) [3911] + CDirectSoundBuffer::SetMinDistance (3936) [3911] + IDirectSoundBuffer8_SetMinDistance (3936) [3911] + CDirectSoundBuffer::SetMaxDistance (3936) [3911] + IDirectSoundBuffer8_SetMaxDistance (3936) [3911] + IDirect3DDevice8_ApplyStateBlock (3925) [3911] + IDirect3DDevice8_CaptureStateBlock (3925) [3911] + IDirect3DDevice8_CreateStateBlock (3925) [3911] + IDirect3DDevice8_DeleteStateBlock (3925) [3911] + IDirect3DDevice8_DeletePixelShader (3925) [3911] + IDirectSoundBuffer8_SetMixBinVolumes (3925) [3911] + +_ Added the following kernel function(s) + KeRaiseIrqlToDpcLevel + +1/28/10 +- Added the following function(s) + QueueUserAPC (3911 - 5788) + GetThreadPriority (5849) + SetThreadPriorityBoost (5849) + IDirect3DDevice8_BlockUntilVerticalBlank (5849) + XGetSectionHandleA (5849) + XLoadSectionByHandle (5949) + XFreeSectionByHandle (5849) + XGetSectionSize (5849) + +- Moved the following function(s) + QueueUserAPC (5849 -> 3911) + +- Fixed the problem with QueueUserAPC, it works now. Had to set the + right permisions for it to work on windows. +- Made another signature for CMcpxBuffer::GetCurrentPosition (3911). The original + was off by one byte. + +2/4/10 +- Added the following function(s) + D3D::KickOffAndWaitForIdle (5344 - 5558) + IDirect3DDevice8_Reset (5558) + IDirect3DDevice8_SetGammaRamp (5455 - 5558) + IDirect3DDevice8_GetViewport (5558) + GetFileAttributesA (5558) + VirtualProtect (4627 - 5558) (*) + +(*) Probably too high level... + +4/9/10 +- Added new Simple Renderstates + D3DRS_STENCILZFAIL + D3DRS_STENCILPASS + D3DRS_STENCILFUNC + D3DRS_STENCILREF + D3DRS_STENCILMASK + D3DRS_STENCILWRITEMASK + +- Added the following function(s) + D3DDevice_SetModelView (3925) [3911] + D3DDevice_FlushVertexCache (3925) [3911] + D3DDevice_SetScissors (3925) [3911] + D3DDevice_SetVertexShaderInput (3925) [3911] + D3DDevice_PrimeVertexCache (3925) [3911] + D3DDevice_SetVertexData4ub (3925) [3911] + D3DDevice_SetVertexShaderConstant (3925) [3911] + D3DDevice_BeginPushBuffer (3925) [3911] + D3DDevice_EndPushBuffer (3925) [3911] + D3DDevice_SetRenderState_RopZCmpAlwaysRead (3925) [3911] + D3DDevice_SetRenderState_RopZRead (3925) [3911] (*) + D3DDevice_SetRenderState_DoNotCullUncompressed (3925) [3911] (*) + +(*) Not yet verified. Signatures are right, but XRefs probably aren't. + +4/10/10 +- Added a new fix for Halo in EmuFlushIVB(). Use g_IVBFVF when the current FVF is 0. +- Added the following function(s) + D3D::SetFence (XRef) (3925) [3911] + D3DDevice_InsertFence (3925) [3911] + D3DDevice_LoadVertexShaderProgram (3925) [3911] + D3DDevice_RunPushBuffer (3925) [3911] + IDirectSoundBuffer8_Play (3936) [3911] (Fixed) + +- Azurik: Rize of Perathia now goes ingame! + +4/11/10 +- Fixed a minor bug with the deferred texture state (D3DTSS_MAGFILTER) for XDK 3911. +- Fixed a major bug in the push buffer execution code. The stride was not incremented + for the D3DFVF_XYZ flag. Using the position mask to find position related FVFs. +- Robotech: Battlecry is now playable! + +4/13/10 +- Added the following function(s) + Direct3D_EnumAdapterModes (5233-5344) + D3DDevice_SetVerticalBlankCallback (5455) + D3DDevice_GetProjection + \ No newline at end of file diff --git a/doc/ShogunTodo.txt b/doc/ShogunTodo.txt index 87bd21d35..7e13b0f54 100644 --- a/doc/ShogunTodo.txt +++ b/doc/ShogunTodo.txt @@ -11,8 +11,12 @@ Emulation: - Ensure the Cxbx has some basic support for every XDK. We're close, but 5028, 5120, 5455 and 5788 need further investigation. - The Xbox's version of the .xsb format needs to be reversed for XACT. - - Verify that section loading APIs can really be ignored. + - Cache xbe section addresses and names for XLoad/FreeSection[ByHandle] - Basic network capabilities? + - Some vertex shaders have their constant register usage modified by Cxbx (to balance out + the fact that Xbox vertex shaders can use constant values -96 to 96. Adding 96 in + SetVertexShaderConstant fixes some samples and Petit Copter, but breaks Turok. + - Indexed geometry rendered with D3DPT_QUADLIST is badly broken (Panzer and Robotech: Battlecry). More: - For completion's sake, we're going to have to use Direct3D 9 or OpenGL (OpenGL is better for @@ -21,10 +25,9 @@ More: - An option to disable sound processing. Quantum Redshift may need this... Game Specific: - - Add I/CDirectSoundBuffer_Pause and I/CDirectSoundBuffer_GetStatus for 4721 (Robotech Battlecry) - - The engine used by Taz: Wanted (4432) and Zapper (4831) are almost completely the same. There's - a missing XAPI function causing the crash, so fixing one will essentially fix the other. - - Unreal Championship requires XACT emulation. - Azurik: Rize of Perathia (possibly the hardest Xbox game to emulate) has some unusual situations going on (heap corruption, empty shaders, etc.). We need better solutions for such scenarios. - DOA3 is getting close... + - Fusion Frenzy: There are some bugs in the D3DFMT_P8 -> D3DFMT_A8R8G8B8 conversion code. + - Keep working on Run Like Hell, you might be surprised! + - Find out what's causing the stack corruption with Petit Copter. \ No newline at end of file diff --git a/resource/Cxbx.aps b/resource/Cxbx.aps new file mode 100644 index 0000000000000000000000000000000000000000..148c2461c6fe52d9674ceb07dc248a29ad7be8b6 GIT binary patch literal 200116 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

dQ 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