narzoul / DDrawCompat

DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11
BSD Zero Clause License
893 stars 67 forks source link

Space Rangers 2 - Peculiar case (maybe?) #139

Closed chestfindman closed 1 year ago

chestfindman commented 1 year ago

This might be outside the scope of the project.

The game has issues rendering on a modern OS, and this project fixes them, which is really good news. The problem is, the game uses mixed 2D/3D rendering (and different DirectX versions).

Running the game bare will yield a black screen (rendering broken), but you can reach the 3D area by using keyboard shortcuts (Planetary battles) which according to sources renders in DX8 (although imports indicate DX9, it's a bit confusing and above my pay grade), and the 3D will render just fine (again, bare game).

Applying this project instantly fixes the 2D rendering, the game renders everything and works better than ever before (faster loading than something like DgVoodoo, for example), however, if attempting to enter the 3D rendering area (Planetary battles) the game will stop rendering (black screen) or hang up on the loading screen, or simply crash, 3D rendering becomes broken.

This is "wishful thinking" but perhaps there is something within the scope of the project that can be done here.

narzoul commented 1 year ago

Direct3D 8/9 are not supported, and planetary battles seem to be rendered via Direct3D 9, so it's definitely out of scope for this project, and I'm not planning to add such support any time soon (if ever).

By coincidence, it seems to work well enough with DDrawCompat v0.2.1 however, so you could try that. Only the loading screen was not visible for me (shows desktop instead). Alternatively, some people on Steam forums suggested it might work with WineD3D also.

chestfindman commented 1 year ago

Thanks for the tip, I'll check it out.

The best solution I was able to find was cnc-ddraw in windowed mode (because fullscreen breaks lighting in DX9 rendering for some reason).