TASEmulators / pcem

PCem (short for PC Emulator) is an IBM PC emulator. This version of PCem has multi-threading disabled in order to ensure determinism when running though libTAS.
http://tasvideos.org/EmulatorResources/PCem.html
GNU General Public License v2.0
5 stars 1 forks source link

voodoo 3 card fails dxdiag's Direct3D spinning cube test #10

Closed vadosnaprimer closed 7 months ago

vadosnaprimer commented 1 year ago

upstream v17 build running windows xp in libtas, the cube looks normal and spins slowly

https://www.youtube.com/watch?v=7lTd-yfXx0E

windows xp on st build in libtas, the cube is distorted and spins like crazy

https://www.youtube.com/watch?v=6eWYl_09rjQ

I'm using this machine config for both tests windowsxp.zip

InputEvelution commented 1 year ago

The distortions of the cube in the single-threaded build appears to be a rather extreme form of tearing, where new frames are being rendered to the screen every few lines of pixels. Extra rows of black pixels will appear in-between these frames when Direct3D vsync is turned on in 3dfx settings (https://www.youtube.com/watch?v=sAScodwAnLM), but do not appear when it is turned off (https://www.youtube.com/watch?v=veIK96mWJu4). Additionally, on the upstream build, the cube will only spin slowly when vsync is turned on, and will spin much quicker (with less extreme tearing) when it is turned off (https://www.youtube.com/watch?v=3hoLQO7iUPw).

Testing the game Phonics Racing Adventure in single-threaded PCem, tearing is also a problem (albeit a far less extreme one), being particularly noticeable during the transitions in the menu (https://www.youtube.com/watch?v=leNbzUiufuc). For some reason, setting the monitor's framerate to 100fps in PCem makes this tearing take on a rather consistent visual rhythm (https://www.youtube.com/watch?v=h0eZzG_xPak). Turning on vsync causes a persistent flickering bar to appear across the screen that causes parts of the scene to become invisible (Photoepilepsy warning: https://www.youtube.com/watch?v=VQ0UsKiNJEQ). Testing on the upstream build, tearing does not follow a consistent rhythm at 100fps (https://youtu.be/Dn7HL9Vwtis) and vsync works as intended (https://youtu.be/sU04KJf0mOQ).

Please note that the incorrect texturing seen in some of the above videos is a separate issue not related to single-threading or vsync, and is likely related to the weak capabilities of the voodoo3 3000.

vadosnaprimer commented 7 months ago

Should be fixed by 054a35fa1d66ce90d68e5652f8cc529bd7d286e1