#include <rsound_phantom.h>
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 () |
| Channel * | playSound (int offset) |
| Channel * | playSoundChannels1To5 (int offset) |
| Channel * | playSoundAny (int offset) |
| Channel * | playSoundChannels5To8 (int offset) |
| Channel * | playSoundChannels1To6 (int offset) |
| Channel * | playSoundData (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 |
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().
|
overridevirtual |
Execute a player command. Most commands represent sounds to play, but some low number commands also provide control operations.
| commandId | Player ommand to execute. |
| param | Optional parameter used by a few commands |
Implements MADS::SoundDriver.