https://bugs.winehq.org/show_bug.cgi?id=43935
--- Comment #33 from GloriousEggroll@gmail.com --- (In reply to javitonino from comment #32)
Created attachment 59691 [details] ntdll: Return STATUS_PENDING from NtReadFileScatter on success or EOF
Building on top of Stefan's patch I managed to solve the black screen lock when switching levels, by treating EOF errors as SUCCESS. I noticed that when the game locked, it was looping trying to get the status of a EOF file, and this seems to work around it. If you want to apply this, revert Stefan's patch first, or else you'll get the patch applied to a wrong part of the code (Hunk offset ~ 400 lines).
With this, I managed to get a handful of chapters into the game without major problems, aside from some audio choppiness, which ranges in severity depending on the level (framerate related maybe?).
for pulseaudio try adding a delay to the launch option envars. i found this fixes a lot of wine audio problems with various games. will give this patch a try when i'm off work.
PULSE_LATENCY_MSEC=60
I don't know why I didn't think to try it your way, as I actually tested setting the status to EOF rather than leaving it as pending and checking if the status was EOF or success as you did. good call :D