diff options
| author | Jussi Pitkanen | 2011-04-12 18:07:35 +0300 | 
|---|---|---|
| committer | Jussi Pitkanen | 2011-04-12 18:07:35 +0300 | 
| commit | 506f3bdc101b301e93a99fc4626701b32b4f66b3 (patch) | |
| tree | e2c85e4e9c9e22c0a3eaa5800becd9fbea85433d | |
| parent | d099ad3a48a15472b634317ac9acf3438e684850 (diff) | |
| download | scummvm-rg350-506f3bdc101b301e93a99fc4626701b32b4f66b3.tar.gz scummvm-rg350-506f3bdc101b301e93a99fc4626701b32b4f66b3.tar.bz2 scummvm-rg350-506f3bdc101b301e93a99fc4626701b32b4f66b3.zip | |
AGI: Formatting
| -rw-r--r-- | engines/agi/sound_2gs.cpp | 114 | ||||
| -rw-r--r-- | engines/agi/sound_2gs.h | 130 | 
2 files changed, 127 insertions, 117 deletions
| diff --git a/engines/agi/sound_2gs.cpp b/engines/agi/sound_2gs.cpp index 7d33f963bd..71cc2d4183 100644 --- a/engines/agi/sound_2gs.cpp +++ b/engines/agi/sound_2gs.cpp @@ -138,10 +138,10 @@ void SoundGen2GS::stop() {   * @return Number of generated samples   */  uint32 SoundGen2GS::generateOutput() { -	memset(_out, 0, _outSize*2*2); +	memset(_out, 0, _outSize * 2 * 2);  	if (!_playing || _playingSound == -1) -		return _outSize*2; +		return _outSize * 2;  	int16 *p = _out;  	int n = _outSize; @@ -207,25 +207,35 @@ uint32 SoundGen2GS::generateOutput() {  			// Take envelope and MIDI volume information into account.  			// Also amplify. -			s0 *= vol * g->vel/127 * 80/256; -			s1 *= vol * g->vel/127 * 80/256; +			s0 *= vol * g->vel / 127 * 80 / 256; +			s1 *= vol * g->vel / 127 * 80 / 256; -			if (g->osc[0].chn) outl += s0; -			else               outr += s0; -			if (g->osc[1].chn) outl += s1; -			else               outr += s1; +			// Select output channel. +			if (g->osc[0].chn) +				outl += s0; +			else +				outr += s0; + +			if (g->osc[1].chn) +				outl += s1; +			else +				outr += s1;  		} -		if (outl > 32768) outl = 32768; -		if (outl <-32767) outl =-32767; -		if (outr > 32768) outr = 32768; -		if (outr <-32767) outr =-32767; +		if (outl > 32768) +			outl = 32768; +		if (outl < -32767) +			outl = -32767; +		if (outr > 32768) +			outr = 32768; +		if (outr < -32767) +			outr = -32767;  		*p++ = outl;  		*p++ = outr;  	} -	return _outSize*2; +	return _outSize * 2;  }  void SoundGen2GS::advancePlayer() { @@ -388,26 +398,26 @@ void SoundGen2GS::midiNoteOn(int channel, int note, int velocity) {  		wb++;  	// Prepare the generator. -	g->osc[0].base = i->wave[0][wa].base; -	g->osc[0].size = i->wave[0][wa].size; -	g->osc[0].pd   = doubleToFrac(midiKeyToFreq(note, (double)i->wave[0][wa].tune / 256.0) / (double)_sampleRate); -	g->osc[0].p    = 0; -	g->osc[0].halt = i->wave[0][wa].halt; -	g->osc[0].loop = i->wave[0][wa].loop; -	g->osc[0].swap = i->wave[0][wa].swap; -	g->osc[0].chn  = i->wave[0][wa].chn; - -	g->osc[1].base = i->wave[1][wb].base; -	g->osc[1].size = i->wave[1][wb].size; -	g->osc[1].pd   = doubleToFrac(midiKeyToFreq(note, (double)i->wave[1][wb].tune / 256.0) / (double)_sampleRate); -	g->osc[1].p    = 0; -	g->osc[1].halt = i->wave[1][wb].halt; -	g->osc[1].loop = i->wave[1][wb].loop; -	g->osc[1].swap = i->wave[1][wb].swap; -	g->osc[1].chn  = i->wave[1][wb].chn; - -	g->seg = 0; -	g->a   = 0; +	g->osc[0].base	= i->wave[0][wa].base; +	g->osc[0].size	= i->wave[0][wa].size; +	g->osc[0].pd	= doubleToFrac(midiKeyToFreq(note, (double)i->wave[0][wa].tune / 256.0) / (double)_sampleRate); +	g->osc[0].p		= 0; +	g->osc[0].halt	= i->wave[0][wa].halt; +	g->osc[0].loop	= i->wave[0][wa].loop; +	g->osc[0].swap	= i->wave[0][wa].swap; +	g->osc[0].chn	= i->wave[0][wa].chn; + +	g->osc[1].base	= i->wave[1][wb].base; +	g->osc[1].size	= i->wave[1][wb].size; +	g->osc[1].pd	= doubleToFrac(midiKeyToFreq(note, (double)i->wave[1][wb].tune / 256.0) / (double)_sampleRate); +	g->osc[1].p		= 0; +	g->osc[1].halt	= i->wave[1][wb].halt; +	g->osc[1].loop	= i->wave[1][wb].loop; +	g->osc[1].swap	= i->wave[1][wb].swap; +	g->osc[1].chn	= i->wave[1][wb].chn; + +	g->seg	= 0; +	g->a	= 0;  	// Print debug messages for instruments with swap mode or vibrato enabled  	if (g->osc[0].swap || g->osc[1].swap) @@ -442,7 +452,7 @@ void SoundGen2GS::setProgramChangeMapping(const IIgsMidiProgramMapping *mapping)  IIgsMidi::IIgsMidi(uint8 *data, uint32 len, int resnum, SoundMgr &manager) : AgiSound(manager) {  	_data = data; // Save the resource pointer  	_ptr = _data + 2; // Set current position to just after the header -	_len  = len;  // Save the resource's length +	_len = len;  // Save the resource's length  	_type = READ_LE_UINT16(data); // Read sound resource's type  	_ticks = 0;  	_isValid = (_type == AGI_SOUND_MIDI) && (_data != NULL) && (_len >= 2); @@ -505,21 +515,21 @@ IIgsSample::IIgsSample(uint8 *data, uint32 len, int resnum, SoundMgr &manager) :  bool IIgsInstrumentHeader::read(Common::SeekableReadStream &stream, bool ignoreAddr) {  	for (int i = 0; i < ENVELOPE_SEGMENT_COUNT; i++) { -		env[i].bp  = intToFrac(stream.readByte()); +		env[i].bp = intToFrac(stream.readByte());  		env[i].inc = intToFrac(stream.readUint16LE()) >> 8;  	} -	seg          = stream.readByte(); -	/*priority   =*/ stream.readByte(); // Not needed. 32 in all tested data. -	bend         = stream.readByte(); -	vibDepth     = stream.readByte(); -	vibSpeed     = stream.readByte(); +	seg			= stream.readByte(); +	/*priority	=*/ stream.readByte(); // Not needed. 32 in all tested data. +	bend		= stream.readByte(); +	vibDepth	= stream.readByte(); +	vibSpeed	= stream.readByte();  	stream.readByte(); // Not needed? 0 in all tested data.  	waveCount[0] = stream.readByte();  	waveCount[1] = stream.readByte();  	for (int i = 0; i < 2; i++)  	for (int k = 0; k < waveCount[i]; k++) { -		wave[i][k].key  = stream.readByte(); +		wave[i][k].key = stream.readByte();  		wave[i][k].base = (int8*)(stream.readByte() << 8);  		wave[i][k].size = 0x100 << (stream.readByte() & 7);  		uint8 b = stream.readByte(); @@ -536,10 +546,10 @@ bool IIgsInstrumentHeader::read(Common::SeekableReadStream &stream, bool ignoreA  		}  		// Parse the generator mode byte to separate fields. -		wave[i][k].halt =   b & 0x1;         // Bit 0     = HALT -		wave[i][k].loop = !(b & 0x2);        // Bit 1     =!LOOP -		wave[i][k].swap =  (b & 0x6) == 0x6; // Bit 1&2   = SWAP -		wave[k][k].chn  = (b >> 4) > 0; // Output channel (left or right) +		wave[i][k].halt = b & 0x1;			// Bit 0     = HALT +		wave[i][k].loop = !(b & 0x2);		// Bit 1     =!LOOP +		wave[i][k].swap = (b & 0x6) == 0x6;	// Bit 1&2   = SWAP +		wave[k][k].chn = (b >> 4) > 0;		// Output channel (left or right)  	}  	return !(stream.eos() || stream.err()); @@ -564,13 +574,13 @@ bool IIgsInstrumentHeader::finalize(int8 *wavetable) {  }  bool IIgsSampleHeader::read(Common::SeekableReadStream &stream) { -	type             = stream.readUint16LE(); -	pitch            = stream.readByte(); -	unknownByte_Ofs3 = stream.readByte(); -	volume           = stream.readByte(); -	unknownByte_Ofs5 = stream.readByte(); -	instrumentSize   = stream.readUint16LE(); -	sampleSize       = stream.readUint16LE(); +	type				= stream.readUint16LE(); +	pitch				= stream.readByte(); +	unknownByte_Ofs3	= stream.readByte(); +	volume				= stream.readByte(); +	unknownByte_Ofs5	= stream.readByte(); +	instrumentSize		= stream.readUint16LE(); +	sampleSize			= stream.readUint16LE();  	// Read the instrument header *ignoring* its wave address info  	return instrument.read(stream, true);  } diff --git a/engines/agi/sound_2gs.h b/engines/agi/sound_2gs.h index d60ea16d14..2d08ef101c 100644 --- a/engines/agi/sound_2gs.h +++ b/engines/agi/sound_2gs.h @@ -47,14 +47,14 @@ namespace Agi {  #define ENVELOPE_COEF 100 / _sampleRate  // MIDI player commands -#define MIDI_NOTE_OFF       0x8 -#define MIDI_NOTE_ON        0x9 -#define MIDI_CONTROLLER     0xB -#define MIDI_PROGRAM_CHANGE 0xC -#define MIDI_PITCH_WHEEL    0xE +#define MIDI_NOTE_OFF		0x8 +#define MIDI_NOTE_ON		0x9 +#define MIDI_CONTROLLER		0xB +#define MIDI_PROGRAM_CHANGE	0xC +#define MIDI_PITCH_WHEEL	0xE -#define MIDI_STOP_SEQUENCE  0xFC -#define MIDI_TIMER_SYNC     0xF8 +#define MIDI_STOP_SEQUENCE	0xFC +#define MIDI_TIMER_SYNC		0xF8  // Size of the SIERRASTANDARD file (i.e. the wave file i.e. the sample data used by the instruments).  #define SIERRASTANDARD_SIZE 65536 @@ -73,23 +73,23 @@ namespace Agi {  struct IIgsInstrumentHeader {  	struct { -		frac_t bp;      // Envelope segment breakpoint -		frac_t inc;     // Envelope segment velocity +		frac_t bp;		///< Envelope segment breakpoint +		frac_t inc;		///< Envelope segment velocity  	} env[ENVELOPE_SEGMENT_COUNT]; -	uint8 seg;          // Envelope release segment -	uint8 bend;         // Maximum range for pitch bend -	uint8 vibDepth;     // Vibrato depth -	uint8 vibSpeed;     // Vibrato speed -	uint8 waveCount[2]; // Wave count for both generators +	uint8 seg;			///< Envelope release segment +	uint8 bend;			///< Maximum range for pitch bend +	uint8 vibDepth;		///< Vibrato depth +	uint8 vibSpeed;		///< Vibrato speed +	uint8 waveCount[2];	///< Wave count for both generators  	struct { -		uint8 key;      // Highest MIDI key to use this wave -		int8* base;     // Pointer to wave data -		uint size;      // Wave size -		bool halt;      // Oscillator halted? -		bool loop;      // Loop mode? -		bool swap;      // Swap mode? -		bool chn;       // Output channel (left / right) -		int16 tune;     // Fine tune in semitones (8.8 fixed point) +		uint8 key;		///< Highest MIDI key to use this wave +		int8* base;		///< Pointer to wave data +		uint size;		///< Wave size +		bool halt;		///< Oscillator halted? +		bool loop;		///< Loop mode? +		bool swap;		///< Swap mode? +		bool chn;		///< Output channel (left / right) +		int16 tune;		///< Fine tune in semitones (8.8 fixed point)  	} wave[2][MAX_OSCILLATOR_WAVES];  	/** @@ -126,21 +126,21 @@ public:  	IIgsGenerator() : ins(NULL), key(-1), chn(-1) {}  	const IIgsInstrumentHeader *ins; ///< Currently used instrument -	int key;                   ///< MIDI key -	int vel;                   ///< MIDI velocity (& channel volume) -	int chn;                   ///< MIDI channel +	int key;		///< MIDI key +	int vel;		///< MIDI velocity (& channel volume) +	int chn;		///< MIDI channel  	struct { -		int8 *base;             ///< Sample base pointer -		uint size;              ///< Sample size -		frac_t p;               ///< Sample pointer -		frac_t pd;              ///< Sample pointer delta -		bool halt;              ///< Is oscillator halted? -		bool loop;              ///< Is looping enabled? -		bool swap;              ///< Is swapping enabled? -		bool chn;               ///< Output channel (left / right) +		int8 *base;	///< Sample base pointer +		uint size;	///< Sample size +		frac_t p;	///< Sample pointer +		frac_t pd;	///< Sample pointer delta +		bool halt;	///< Is oscillator halted? +		bool loop;	///< Is looping enabled? +		bool swap;	///< Is swapping enabled? +		bool chn;	///< Output channel (left / right)  	} osc[2]; -	int seg;                   ///< Current envelope segment -	frac_t a;                  ///< Current envelope amplitude +	int seg;		///< Current envelope segment +	frac_t a;		///< Current envelope amplitude  };  class IIgsMidi : public AgiSound { @@ -168,8 +168,8 @@ public:  	const IIgsSampleHeader &getHeader() const { return _header; }  	const int8 *getSample() const { return _sample; }  protected: -	IIgsSampleHeader _header; ///< Apple IIGS AGI sample header -	int8 *_sample;           ///< Sample data (8-bit signed format) +	IIgsSampleHeader _header;	///< Apple IIGS AGI sample header +	int8 *_sample;				///< Sample data (8-bit signed format)  };  /** Apple IIGS MIDI program change to instrument number mapping. */ @@ -185,21 +185,21 @@ struct IIgsMidiProgramMapping {  /** Apple IIGS AGI instrument set information. */  struct IIgsInstrumentSetInfo { -	uint byteCount;          ///< Length of the whole instrument set in bytes -	uint instCount;          ///< Amount of instrument in the set -	const char *md5;         ///< MD5 hex digest of the whole instrument set +	uint byteCount; ///< Length of the whole instrument set in bytes +	uint instCount; ///< Amount of instrument in the set +	const char *md5; ///< MD5 hex digest of the whole instrument set  	const char *waveFileMd5; ///< MD5 hex digest of the wave file (i.e. the sample data used by the instruments)  	const IIgsMidiProgramMapping *progToInst; ///< Program change to instrument number mapping  };  /** Apple IIGS AGI executable file information. */  struct IIgsExeInfo { -	enum AgiGameID gameid;            ///< Game ID -	const char *exePrefix;            ///< Prefix of the Apple IIGS AGI executable (e.g. "SQ", "PQ", "KQ4" etc) -	uint agiVer;                      ///< Apple IIGS AGI version number, not strictly needed -	uint exeSize;                     ///< Size of the Apple IIGS AGI executable file in bytes -	uint instSetStart;                ///< Starting offset of the instrument set inside the executable file -	const IIgsInstrumentSetInfo *instSet;   ///< Information about the used instrument set +	enum AgiGameID gameid;	///< Game ID +	const char *exePrefix;	///< Prefix of the Apple IIGS AGI executable (e.g. "SQ", "PQ", "KQ4" etc) +	uint agiVer;			///< Apple IIGS AGI version number, not strictly needed +	uint exeSize;			///< Size of the Apple IIGS AGI executable file in bytes +	uint instSetStart;		///< Starting offset of the instrument set inside the executable file +	const IIgsInstrumentSetInfo *instSet; ///< Information about the used instrument set  };  class IIgsMidiChannel { @@ -238,12 +238,12 @@ private:  	void setProgramChangeMapping(const IIgsMidiProgramMapping *mapping);  	// Player methods -	void advancePlayer();      ///< Advance the player -	void advanceMidiPlayer();  ///< Advance MIDI player -	uint generateOutput();     ///< Fill the output buffer +	void advancePlayer();		///< Advance the player +	void advanceMidiPlayer();	///< Advance MIDI player +	uint generateOutput();		///< Fill the output buffer -	void haltGenerators();     ///< Halt all generators -	uint activeGenerators();   ///< How many generators are active? +	void haltGenerators();		///< Halt all generators +	uint activeGenerators();	///< How many generators are active?  	void midiNoteOff(int channel, int note, int velocity);  	void midiNoteOn(int channel, int note, int velocity); @@ -251,21 +251,21 @@ private:  	IIgsInstrumentHeader* getInstrument(uint8 program) { return &_instruments[_progToInst->map(program)]; };  	IIgsGenerator* allocateGenerator() { IIgsGenerator* g = &_generators[_nextGen++]; _nextGen %= 16; return g; } -	bool _disableMidi;   ///< Disable MIDI if loading instruments fail -	int _playingSound;   ///< Resource number for the currently playing sound -	bool _playing;       ///< True when the resource is still playing - -	IIgsGenerator _generators[MAX_GENERATORS];         ///< IIGS sound generators that are used to play single notes -	uint _nextGen;                                     ///< Next generator available for allocation -	IIgsMidiChannel _channels[16];                     ///< MIDI channels -	Common::Array<IIgsInstrumentHeader> _instruments;  ///< Instrument data -	const IIgsMidiProgramMapping *_progToInst;         ///< MIDI program number to instrument mapping -	int8 *_wavetable;                                  ///< Sample data used by the instruments -	uint _ticks;                                       ///< MIDI ticks (60Hz) -	int16 *_out;                                       ///< Output buffer -	uint _outSize;                                     ///< Output buffer size +	bool _disableMidi;	///< Disable MIDI if loading instruments fail +	int _playingSound;	///< Resource number for the currently playing sound +	bool _playing;		///< True when the resource is still playing + +	IIgsGenerator _generators[MAX_GENERATORS];			///< IIGS sound generators that are used to play single notes +	uint _nextGen;										///< Next generator available for allocation +	IIgsMidiChannel _channels[16];						///< MIDI channels +	Common::Array<IIgsInstrumentHeader> _instruments;	///< Instrument data +	const IIgsMidiProgramMapping *_progToInst;			///< MIDI program number to instrument mapping +	int8 *_wavetable;									///< Sample data used by the instruments +	uint _ticks;										///< MIDI ticks (60Hz) +	int16 *_out;										///< Output buffer +	uint _outSize;										///< Output buffer size -	static const int kSfxMidiChannel = 15;  ///< MIDI channel used for playing sample resources +	static const int kSfxMidiChannel = 15; ///< MIDI channel used for playing sample resources  };  } // End of namespace Agi | 
