Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#927 closed defect

ZAK256: Missing opcode 02/82

Reported by: SF/hibernatus Owned by: fingolfin
Priority: normal Component: Engine: SCUMM
Keywords: Cc:
Game: Zak McKracken

Description

This opcode is used for audio CD commands.

Here is what to do:

r is the result
b is the parameter

b == 0:
if an audio track is playing: r = 0
else: r = 1

b == FF:
I don't know what it's used for, but anyway it's never
used in the scripts.

b == FE:
if an audio track is playing: r = the SO block number
else: r = 0

b == FD:
pause the audio track
r = anything

b == FC:
unpause (start where it was when you paused)
r = anything

b == a CD track number:
r = track length in seconds

To check scummvm returns the right track length you
can look at the global script #9 (0x888A in 49.LFL).

FD and FC are used to let the game load several
resources without hanging when a CD track is playing. I
guess it's already not a problem in scummvm :)

Ticket imported from: #762589. Ticket imported from: bugs/927.

Change History (4)

comment:1 Changed 16 years ago by SF/hibernatus

er, i forgot a little detail when i say "if an audio track is
playing":

for b == 0 "playing" means "physically playing".

for b == FE "playing" means that an audio track is currently
supposed to play. You don't care if it's paused, you still return
the soundID.

comment:2 Changed 16 years ago by SF/hibernatus

About this:

b == 0:
if an audio track is playing: r = 0
else: r = 1

You wrote the opposite in cvs.
That function returns 0 when a track is playing.
Anyway, it's not used from scripts either, only from code.

comment:3 Changed 16 years ago by fingolfin

This can be closed, the opcode is now implemented (although
some parts, like (un)pausing the CD track, is not implemented,
but that is already marked with a TODO in the source code).

comment:4 Changed 16 years ago by fingolfin

Owner: set to fingolfin
Status: newclosed
Note: See TracTickets for help on using tickets.