ScummVM API documentation
MADS::Phantom::RSound1 Class Reference

#include <rsound_phantom.h>

Inheritance diagram for MADS::Phantom::RSound1:
MADS::Phantom::RSound MADS::SoundDriver

Public Member Functions

 RSound1 (Audio::Mixer *mixer)
 
int command (int commandId, int param) override
 
- Public Member Functions inherited from MADS::Phantom::RSound
 RSound (Audio::Mixer *mixer, const Common::Path &filename, int dataOffset, int dataSize, int sysExOffset)
 
int stop () override
 
int poll () override
 
void noise () override
 
void setVolume (int volume) override
 
int getFrameCounter ()
 
- Public Member Functions inherited from MADS::SoundDriver
 SoundDriver (Audio::Mixer *mixer, const Common::Path &filename, int dataOffset, int dataSize)
 

Additional Inherited Members

- Public Attributes inherited from MADS::Phantom::RSound
Channel _channels [9]
 
int _frameCounter
 
bool _isDisabled
 
int _pollResult
 
- Protected Member Functions inherited from MADS::Phantom::RSound
byte * loadData (int offset)
 
void resetChannelRange (int first, int last)
 
void resultCheck ()
 
ChannelplaySound (int offset)
 
ChannelplaySoundChannels1To5 (int offset)
 
ChannelplaySoundAny (int offset)
 
ChannelplaySoundChannels5To8 (int offset)
 
ChannelplaySoundChannels1To6 (int offset)
 
ChannelplaySoundData (byte *pData, int startingChannel, int freeScanEnd, int fallbackScanEnd)
 
bool isSoundActive (byte *pData)
 
int getRandomNumber ()
 
void sendMidiByte (byte value)
 
void sendStatus (int midiChannel, byte statusNibble)
 
void sendNoteOn (int midiChannel, int note, int velocity)
 
void sendProgramChange (int midiChannel, int program)
 
void sendVolume (int midiChannel, int volume)
 
void sendVolumeCC (int midiChannel, int volume)
 
void resetPitchBend (int midiChannel)
 
void sendPitchBend (int midiChannel, int value)
 
void sendPan (int midiChannel, int value)
 
void muteChannel (int midiChannel)
 
void sendGmReset (int count)
 
void sendSysExData (const byte *pData)
 
void sendSysEx (int offset)
 
void sendPatchInitSequence ()
 
void sendReverbSysEx (int mode, int time, int level)
 
void noOpHandler (int param)
 
virtual int command0 ()
 
int command1 ()
 
int command2 ()
 
int command3 ()
 
void enableUpperChannels ()
 
void resetAndGmResetUpperChannels ()
 
int command6 ()
 
int command7 ()
 
int command8 ()
 
int nullCommand ()
 
- Protected Member Functions inherited from MADS::SoundDriver
Common::MemoryReadStream getDataStream (int offset) const
 
- Protected Attributes inherited from MADS::Phantom::RSound
int _commandParam
 
int _randomAmbianceTriggerFlag
 
int _fadeCheckPeriod
 
- Protected Attributes inherited from MADS::SoundDriver
Audio::Mixer_mixer
 
Common::Array< byte > _soundData
 
Common::Mutex _driverMutex
 

Detailed Description

RSound1 (rsound.ph1)

Dispatch table layout (funcs_10960/10976/1098C/109A2/109B8 in the disassembly - a 5-bucket sparse dispatch, mirroring the sibling ASound1's identical structure). There is no command 17 - bucket 2's dispatch bounds check only ever admits index 16 (confirmed: word_13047 = 16, an inclusive upper bound equal to the bucket's own lower bound). commands 0-8 (base class, except command4/5 - see RSound::command4/5) command 16 (random-ambiance picker, this class) commands 24-27 (this class) commands 32-39 (this class) commands 64-76 (this class - unlike ASound1's equivalent range, this one WAS reconstructable from the disassembly)

command16 picks one of five alternatives at random (avoiding immediate repeats via _lastRandomAmbianceIndex), after first checking whether one of five known pieces is already playing via isSoundActive() gates. sound1() doesn't exist as a separate function in the disassembly - index 0 of funcs_122AD dispatches directly to command38 (also independently reachable as a direct command) - but is declared here as a thin wrapper for consistency with sound2()-sound5().

Member Function Documentation

◆ command()

int MADS::Phantom::RSound1::command ( int  commandId,
int  param 
)
overridevirtual

Execute a player command. Most commands represent sounds to play, but some low number commands also provide control operations.

Parameters
commandIdPlayer ommand to execute.
paramOptional parameter used by a few commands

Implements MADS::SoundDriver.


The documentation for this class was generated from the following file: