Closed Vort closed 2 months ago
Yesterday I have applied your suggested fix for this issue.
I worried that such change may hurt performance. However adding more code to handle this case (like caching equality of buffer addresses) may hurt readability. But maybe I'm overcomplicating things and this change is just fine. I'm closing this issue anyway. Performance improvements may have their own issue if needed.
After Diablo II game is started in 3dfx Glide mode with Voodoo 3 card, black screen appears instead of video playback.
It happens because
v->fbi.video_changed
is never set to1
during video playback. Game renders video data using LFB writes, which are processed bylfb_w
function ofvoodoo_func.h
. In this function,video_changed
is modified only in front buffer case, which is never triggered because ofVOODOO_BANSHEE
check.With the help of debugger, I noticed that during video playback, back and front buffer addresses are the same. So in fact, writes are happening to both buffers at the same time. I made such change to take this property into account:
And video started to appear:
I do not know how proper fix for this problem should look like however.
To reproduce this problem, Diablo II version 1.00 should be installed first.
Then Glide mode should be selected:
Then either patch
D2Patch_109d.exe
andLoader.exe
should be used in case of Windows 95. OrD2Patch_113d.exe
without loader in case of Windows 98.I found 3 ISO images needed for installation on BitTorrent tracker, so I can't give direct links to the files. But I can find these files somewhere else if needed.
Version: f5e3dd9