https://bugs.winehq.org/show_bug.cgi?id=42740
--- Comment #3 from Alexandre Julliard julliard@winehq.org --- (In reply to Johannes from comment #2)
I am actually the OpenMPT developer who implemented this work-around.
Great!
The work-around we utilize for Wine is also used on other systems which do not support 32-bit images with alpha channel, e.g. when using a 24-bit graphics mode. What Wine 2.4 does is neither consistent with Windows in 32-bit mode, nor with Windows in 16-bit or 24-bit mode. In the latter case (which is applied for Wine), the 8-bit alpha is pre-calculated and reduced to a 1-bit mask and the image is loaded with ILC_COLOR24 | ILC_MASK. However, Wine now ignores this 1-bit mask completely, which it previously did not.
It seems to me that the issue is that you pass a mask with an alpha channel, so if we are in 32-bit mode, the alpha channel breaks the reduction to 1-bit (previously it worked because alpha was ignored in 32->1 blits, but this was incorrect). My suspicion is that you'd get the same behavior if you used the 24-bit code path on a modern 32-bit Windows, but I haven't verified it.
It's very possible that there are still other issues with the imagelist code, but it hasn't changed lately so I'd expect the issues to be identical in 2.0.