On Sat, Feb 10, 2001 at 12:16:34PM +0100, Christoph Reichenbach wrote:
> And it seems to work there for you...

But the loop isn't set to -1 the first time.
 
> No, I don't have a client object either, and it works fine. The calling script
> is probably checking doorSound explicitly.

Hmm.  This is interesting.
I don't have this code at all getting executed here...

2B54: [B] callk IsObject[6] 02   -- acc=0001  (0xaab2; the sound handle)
2B57: [W] not                    -- acc=0000
2B58: [W] bnt 0001  [2b59]
2B5C: [B] lsp 01
2B5E: [W] push0
2B5F: [B] &rest 02
2B61: [B] lat 02
2B63: [W] send 04            doorSound::check[FUNCT]()
419D: [B] pToa 12       (signal)
419F: [W] bnt 0019  [41b8]
41A2: [W] push1
41A3: [B] pTos 16       (client)
41A5: [B] callk IsObject[6] 02  Kernel params: (0000)
41A8: [W] bnt 0008  [41b0]
41B3: [B] pToa 12       (signal)
41B5: [B] aTop 14       (prevSignal)

what's on the stack when you call doorSound::check[FUNCT]() ?
 
> I haven't seen this one in your trace, but this is the place where
> the door sound is actually "finished": When the "loop" signal reaches
> the object, the signal property is set to 0xffff, so the 'eq' after
> (1) matches, and DoSound(STOP_ALL) is invoked. I haven't checked what

This isn't happening for me, because the door sound never "finishes" --
it's looping, after all.  :)

> happens then, but I'd guess that doorSound gets the "stopped" message
> from the sound server, and the game continues as soon as soon as
> it realizes that doorSound has been stopped.

Yes, this is what happens when I disable the loop.

> This is how it works on my system with my version of SQ3. Please go
> on checking where you left off- the "loop" signal (0xffff) should come
> next...

The 'loop' signal seems to be getting lost, from what I can tell:
> snk

Kernel CHECK: Animate[b](90b8, 0001)
FSCI: process_sound_events(ksound.c L105): Received absolute cue 9 for aab2
FSCI: process_sound_events(ksound.c L67): Received loop signal (-1) for aab2
pc=3a2b acc=0456 o=0456 fp=69be sp=69c2
prev=3c sbase=6994 globls=23fa &restmod=0
Step #363011
3A2B: [B] callk IsObject[6] 02
 Kernel params: (0000)
> heapobj 0xaab2
Object doorSound
Species=000a, Superclass=4250
Local variables @ 0xacb0
Variable selectors:
  species[0000] = 000a
  superClass[0001] = 4250
  -info-[0002] = 0000
  name[0017] = aca2
  state[0020] = 0002
  number[002b] = 0005
  priority[003f] = 0000
  loop[0006] = ffff
  handle[002c] = 0000
  signal[0011] = 0009
  prevSignal[0081] = 0009
  client[002d] = 0000
  owner[0082] = 0000

So 'loop' is getting set correctly, but 'signal' has the value of the
previous signal.

Time to find out why.

 - Pizza
-- 
Solomon Peachy                                    pizzaATfucktheusers.org
I ain't broke, but I'm badly bent.                           ICQ# 1318344
Patience comes to those who wait.
    ...It's not "Beanbag Love", it's a "Transanimate Relationship"...

Reply via email to