#7263 closed feature request
support comi demo
Reported by: | SF/khalek | Owned by: | cyxx |
---|---|---|---|
Priority: | normal | Component: | Engine: SCUMM |
Version: | Keywords: | ||
Cc: | Game: | Monkey Island 3 |
Description
It would be nice if the comi demo could be supported or at least not cause scummvm to segfault.
ftp://ftp.lucasarts.com/demos/pc/cursedemo.exe is the web version that doesn't come with smush files.
Ticket imported from: #690559. Ticket imported from: feature-requests/79.
Change History (10)
comment:1 by , 22 years ago
comment:2 by , 22 years ago
The exe might be a self extracting zip file I can't remember. In any event if yourself or anyone else feels like looking at this I can upload a zip of the webdemo (about 18 meg or so)
backtrace is as follows #0 0x402c519a in mallopt () from /lib/libc.so.6 #1 0x402c4172 in free () from /lib/libc.so.6 #2 0x08072fce in ~NutRenderer (this=0x403688a0) at scumm/nut_renderer.cpp:34 #3 0x080606f9 in CharsetRendererNut (this=0x81836e0, vm=0x403688a0) at scumm/charset.cpp:403 #4 0x0804e964 in Scumm::scummInit() (this=0x8164b50) at scumm/scummvm.cpp:224
comment:4 by , 22 years ago
still a few issues * music doesn't work * text seems to be spaced rather widely... * long pause between dialogue lines * guybrush dissapears after he picks up the oar or if the intro is skipped * can't pickup hook/use cannon and as a result can't finish the demo
comment:6 by , 20 years ago
I think I found something interesting regarding the "guybrush disappears if intro is skipped" issue.
If intro is skipped, a call to o6_putActorAtObject() is made, which calls getObjectXYPos(). If we dump some values in this function, we get : imhd->v8.hotspot[state].x = 237 imhd->v8.hotspot[state].y = 1195461961
The y_hotspot seems obviously wrong.
If we look at the disassembly of this function, we can see that these values are computed like this : x_h = *(uint32 *)((const byte *)imhd + 8 * state + 0x44) y_h = *(uint32 *)((const byte *)imhd + 8 * state + 0x48)
If we compare with the ImageHeader structure defined in scumm/object.h, we see that the offsets don't match.
As I am not familiar at all with the Scumm engine, the only possible explanation I can found is that they added a 4 bytes field to that structure in the interpreter bundled with the full game.
Below is a (very hackish) patch ; with it, I have been able to finish the demo without experiencing any glitches. Of course, this shouldn't be committed, that's just a proof :)
http://membres.lycos.fr/cyxdown/scummvm/comidemo_imhd.di ff
comment:9 by , 20 years ago
Owner: | set to |
---|---|
Status: | new → closed |
comment:10 by , 6 years ago
Component: | → Engine: SCUMM |
---|---|
Game: | → Monkey Island 3 |
A .exe? I think some windows user will have to do that :-)