Found it; a few of the DirectDraw ICOM_VTABLE declarations did not have the ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE macro prefixing their elements. This meant that, well, all sorts of havoc broke loose when wrong functions were called :) I hope this is an uncontentious patch attached.