VOGONS


First post, by OpenRift

User metadata
Rank Newbie
Rank
Newbie

The one thing that I find that dgVoodoo doesn't do very well is whenever it utilizes system fonts in combination with game graphics (I assume thru GDI), it causes a lot of issues. Black squares around text, graphical elements being misaligned or showing as black squares, elements not scaling properly, so on. This appears to happen in the following scenarios:
- Battle.net interface for Diablo 1 and Warcraft II Battle.net Edition
- The menus for the WON version of Half-Life

There are probably other games that have similar issues, but those are just the ones I know of.

That said, are there any plans to improve support for these sorts of scenarios?

EDIT: Forgot to mention DDrawCompat seems to fix most of these issues, perhaps some code can be borrowed from there?

Last edited by OpenRift on 2023-01-24, 23:11. Edited 1 time in total.

Reply 1 of 2, by aqrit

User metadata
Rank Member
Rank
Member

> Battle.net interface for Diablo 1 and Warcraft II Battle.net Edition

DWM redirects GDI and DDRAW drawing to different layers. Which prevents DDRAW from erasing things drawn by GDI.

A proper fix for this issue would require the ability to redirect GDI drawing operations to an offscreen device context under our control, including the drawing done by the default USER32 WndProcs. Instead, this mod tries to sync bits between ddraw and gdi surfaces during dds->Lock/Unlock.

Reply 2 of 2, by OpenRift

User metadata
Rank Newbie
Rank
Newbie
aqrit wrote on 2023-01-24, 21:27:

> Battle.net interface for Diablo 1 and Warcraft II Battle.net Edition

DWM redirects GDI and DDRAW drawing to different layers. Which prevents DDRAW from erasing things drawn by GDI.

A proper fix for this issue would require the ability to redirect GDI drawing operations to an offscreen device context under our control, including the drawing done by the default USER32 WndProcs. Instead, this mod tries to sync bits between ddraw and gdi surfaces during dds->Lock/Unlock.

Updated my main post.