https://bugs.winehq.org/show_bug.cgi?id=43935
--- Comment #32 from javitonino@gmail.com --- Created attachment 59691 --> https://bugs.winehq.org/attachment.cgi?id=59691 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?).