The respective function should be inspected with a disassembler to be sure.
We should keep track of this bug so we don't suddenly have regressions when upgrading to a 32 bit framebuffer.
(The same function also isn't resolution independent and would fail in high-dpi scenarios, although that is another issue)
Some of the reverse engineered code suggests that counting pixels which pass a CPU based Z-test, only works if the z-buffer is 1 or 2 bytes per pixel.
The function responsible for these checks can be found at 0x42D440 in the demo version. It has been decompiled and partially rewritten and documented here: https://github.com/OpenSWE1R/swe1r-re/blob/4c945a6b5f403b682012bda43c0ef11ef820fe1e/swep1rcr.exe/RE:-Occlusion-Queries.md (not latest revision)
The respective function should be inspected with a disassembler to be sure. We should keep track of this bug so we don't suddenly have regressions when upgrading to a 32 bit framebuffer.
(The same function also isn't resolution independent and would fail in high-dpi scenarios, although that is another issue)