Hi,
> Bugs so far in the sound code:
>
> sq3 -- when you pop up the text entry window, the sound server
> attempts to suspend an invalid handle, 0000. When it closes, this is
> followed by an attempt to suspend the invalid handle 4250.
Those "attempt to suspend invalid handle" bugs are pretty old...
> lsl3 shows a similar problem, except it's 0000 and 75c0. Looks like
> this is effectively maps to SUSPEND_SOUND and RESUME_SOUND
> but since the values differ, I'm not sure of how to go about fixing this
> properly.
The handles usually map to objects in SCI heap space. 0x0000 might mean
something special, but 0x75c0 is probably a bug of sorts- it might force
the referenced object's song to be loaded, or skipped quietly in SCI, or
something like that.
> lsl3 -- "attempt to fade on an invalid handle 0000" -- looks like
> another case of "0000" referring to "everything" in the soundsystem.
Possible, but it would be better if we had some pointers or evidence
before guessing wildly (0000 might also mean "current song").
> I can easily write in a hack so that it treats "0000" as a global call,
> but the harder part will be to figure out why we're suspending another
> value instead of possibly resuming "0000" as well. I'm not sure if this
> is by design in SCI or something else should be happening here
> Or, poking thorugh the docs -- does "0000" refer to "the most recent"?
> ..input?
0000 is invalid heap space (like NULL in ANSI C).
Other bugs in the sound system:
- message transfers are expected to be atomic on read() or write(), but
this isn't neccessarily true. This means that transferring sound
commands, events, or even status messages may break during transfer.
- message transfers use 'int's for some information. This defies one of
the points of having a separate sound server (possibility of running
it on a different system).
Fixing both of these could be done simultaneously, and would clean up some
of the things in sound.c and soundserver_null.c that ought to have been
written differently in the first place.
> sq3 -- you can't use the mouse to select menu entries for the
> "death dialog" boxes (restart/restore/quit?). Similarly, you can't use
> the mouse to select stuff in the quit dialogs.
> Also, in lsl3, the "bail out/go ahead, offend me" initial dialog works
> fine wiht the mouse, but when I try to select my age, the mouse doesn't
> seem to work unless the little circilar focus thingey is about 10 above
> the button. And just in -- the auto-save prompt also needed me to click
> several pixels above the box in order for the event to register. Looks
> like the cursor "point" isn't getting set properly.
So this isn't SCI01 only...
> hq1 -- you can't type in the player name! I hit esc, it asked me if I
> wanted to pick another player, and I clicked on 'no' -- the gfx system
> basically froze at that point, except for the mouse cursor. I had to
> ctrl-c to get the thing to quit, and it also pegged the cpu.
Whoah- that's weird. Entering the player name works fine for me, BTW.
The game freezing might mean that, somehow, you entered "menubar mode"
(where the interpreter is inactive). Is this always the case for you, or
only sometimes? Can you do other things in the player setup screen?
> I'm aslo getting a core dump on exiting.
>
> And my laptop says it will die in about :10, so I thinkI should send
> this off and go to bed before the battery dies.. :)
Thanks a lot for the report! I'll file in your bugs along with Bas' ones
when I get home.
llap,
Christoph