Many titles show nothing but a black screen (some play sound in the background) for some, while others get to see intro video's at least (some can go as far as playable.)
See issues #21, #225, #230, https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/issues/285#issuecomment-290620509
One possible cause could be the playback of intro movies - some GPU's support native YUV overlays, which makes Cxbx take another code-path. This path might be the cause for the black screen, since the other path (software based YUV to RGB conversion) had some issues recently, which when fixed restored video playback.
Another thing to keep in mind is that many games make use of full screen post-processing effects which require a texture to be a render target. I recall there being an issue with Panzer Dragoon Orta where the whole screen was filled with a black rectangle which was supposed to have the rendered scene, but Cxbx manipulated the texture in such a way that it would no longer become a valid render target.
@StrikerX3 Welcome back! And yes, render target emulation is not perfect yet, although with my recent pixel format changes, there's​ a chance that as a result, some cases already improved.
I've been keeping tabs with the progress of this emulator. Nice to see that even Shogun is back.
The thread where I investigated the issue with render targets mentioned that the issue happens because the texture that was supposed to be a render target was being resized to a 512x512 square when it was supposed to be 512x384 or 400x300. Since the game validated the width and height of the texture and the new size exceeded the required dimensions, it would just fail.
EMUPATCH(D3DDevice_SetRenderTarget) (https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/9e42bc55176eba25688ff176104b1ffd1e9548e5/src/CxbxKrnl/EmuD3D8.cpp#L8246 ) doesn't alter the dimensions, and there are no other mentions of "square" or "reset", so we'll have to dig further to recover the cause for this.
EDIT :
There's this (disabled) dirty hack in EMUPATCH(D3DDevice_CreateTexture): https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/9e42bc55176eba25688ff176104b1ffd1e9548e5/src/CxbxKrnl/EmuD3D8.cpp#L3188
This used to call EmuAdjustPower2, which is currently only done in EMUPATCH(D3DDevice_CreateVolumeTexture) (see https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/blob/9e42bc55176eba25688ff176104b1ffd1e9548e5/src/CxbxKrnl/EmuD3D8.cpp#L3320)
That should no longer be an issue then. My Google-fu is failing me today, but I think (the PC version of) Direct3D 8 was the limiting factor regarding texture dimensions. So upgrading to 9 (which has conditional support for non-power-of-two textures) or perhaps even 11 (with unconditional support for them), or even switching to OpenGL 4 is the way to go in the future.
I concur. To be frank, even OpenGL 2.1 would be better suited for this than Direct3D8. But even though I started that once I had little patience for it. :(
Shogun