Opened 20 years ago
Closed 20 years ago
Last modified 5 years ago
#8223 closed patch
SAM: Hack to fix bug #737387
|Reported by:||eriktorbjorn||Owned by:||fingolfin|
|Cc:||Game:||Sam and Max|
This patch fixes bug #737387 ("SAM: Part of text (subtitles) disappears when moving mouse"), albeit in a slightly hacky way.
The problem is that our useIm01Cursor() works by drawing the cursor image to the upper left corner, from which it then copies it into _grabbedCursor before finally restoring the screen. It's the last step that doesn't quite work. I think it simply redraws the original background, and that does not include the text that was drawn there.
This patch fixes that by copying the screen are to a temporary buffer and restore it from there instead. A nicer solution would probably be if useIm01Cursor() could render the image directly into _grabbedCursor instead, like useBompCursor() does, but I'm not familiar enough with the code.
There is a possibly related glitch with The Dig, where it draws a cursor image in the upper left corner without erasing it afterwards. Unfortunately this patch does nothing whatsoever to fix that.
Ticket imported from: #738100. Ticket imported from: patches/328.
Change History (4)
by , 20 years ago
comment:1 by , 20 years ago
I think this isn't really a hack, rather it cleans up the hack which useIm01Cursor is ;-)
Anyway, the "nice" fix you mention would mean to either write a seperate function to decode the image data (i.e. duplicate code from drawBitmap), or to make drawBitmap "retargetable". Neither seems very appealing to me.
BTW a somewhat related issue: the only place useIm01Cursor is called is setCursorImg(), which is also called in script_v5.cpp. Yet for both V6 *and* older games, it seems thsi code is executed: setCursorHotspot(READ_LE_UINT16(&foir.imhd->old.hotspot.x), READ_LE_UINT16(&foir.imhd->old.hotspot.y)); w = READ_LE_UINT16(&foir.cdhd->v6.w) >> 3; h = READ_LE_UINT16(&foir.cdhd->v6.h) >> 3;
cdhd->v6 ? Not cdhd->old for V5 games ??? Very strange...
comment:2 by , 20 years ago
|Status:||new → closed|
comment:3 by , 5 years ago
|Component:||→ Engine: SCUMM|
|Game:||→ Sam and Max|
Patch against a May 14 CVS snapshot