protonscr

[d3d8] Railroad Tycoon 3 - zoomed in terrain shuffle

dxvkclosed d3d8
doitsujin/dxvk#4114 · opened 2024-07-07 by WinterSnowfall · updated 2026-06-18 · 8 comments · github
WWinterSnowfall 2024-07-07 github

This is going to be a rather hard one to describe, so I've captured a video. The TLDR of it is that when scrolling through some of the closest zoom levels on the game map, the terrain textures sort of shuffle around in a crazy dance.

I've captured a trace, but since the game does "wonderful" things with buffers, apitrace has mostly caught garbage. The issue can be seen in the trace as well though, among the madness.

Software information

Railroad Tycoon 3

System information

  • GPU: RTX 4070
  • Driver: 535.183.01
  • Wine version: 9.12 Staging
  • DXVK version: fe9c875

Apitrace file(s)

RT3.trace.tar.xz

Log files

RT3.log

WWinterSnowfall 2024-09-12 github

Could be an ANV bug, but on Intel the game doesn't render geometry properly at all and ultimately crashes with:

/usr/i686-w64-mingw32/include/c++/13.1.0/array:202: constexpr std::array<_Tp, _Nm>::value_type& std::array<_Tp, _Nm>::operator[](size_type) [with _Tp = dxvk::DxsoSemantic; unsigned int _Nm = 32; reference = dxvk::DxsoSemantic&; size_type = unsigned int]: Assertion '__n < this->size()' failed.

WWinterSnowfall 2024-09-19 github

New set of logs, collected with a debug build from @K0bin: RT3.log

Edit: Second set of more verbose logs: RT3.log

WWinterSnowfall 2024-09-19 github

Trace captured with dxvk on Intel: RT3_Intel.trace.tar.xz

KK0bin maintainer 2024-09-19 github

We just fixed the Intel crash at least.

KK0bin maintainer 2024-09-19 github

Apparently it crashes on ANV inside vkCreateGraphicsPipeline now.

There are a bunch of validation errors that need to get investigated.
RT3 validation errors.txt

Ddoitsujin maintainer 2026-06-16 github

This should work with dxbc-spirv.

WWinterSnowfall 2026-06-16 github

Nope, still doing the terrain shuffle (see the large patch at the bottom).

Image
Ddoitsujin maintainer 2026-06-16 github

apparently I misunderstood the issue because the trace is borked and all the discussion was around an ANV crash.

Anyway, debugged this now and the game is requiring fixed-function vertex shaders to produce identical math to their own custom programmable shaders, which is completely insane.

Nothing extracted yet.