[Scummvm-cvs-logs] CVS: scummvm/scumm player_v1.cpp,1.15,1.16 player_v2.cpp,2.41,2.42 player_v2.h,2.22,2.23

Chris Apers chrilith at users.sourceforge.net
Thu Dec 18 03:49:01 CET 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv22640

Modified Files:
	player_v1.cpp player_v2.cpp player_v2.h 
Log Message:
PalmOS sound API cannot access globals or functions out of the first segment

Index: player_v1.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v1.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- player_v1.cpp	8 Nov 2003 21:59:32 -0000	1.15
+++ player_v1.cpp	18 Dec 2003 11:47:58 -0000	1.16
@@ -132,8 +132,10 @@
 
  parse_again:
 	_chunk_type = READ_LE_UINT16(_next_chunk);
+#ifndef __PALM_OS__
 	debug(6, "parseSpeakerChunk: sound %d, offset %4x, chunk %x", 
 			_current_nr, _next_chunk - _current_data, _chunk_type);
+#endif
 
 	_next_chunk += 2;
 	switch (_chunk_type) {
@@ -169,8 +171,10 @@
 		_repeat_ctr = READ_LE_UINT16(_next_chunk + 8);
 		_channels[0].freq = _start;
 		_next_chunk += 10;
+#ifndef __PALM_OS__
 		debug(6, "chunk 1: mplex %d, freq %d -> %d step %d  x %d", 
 				_mplex, _start, _end, _delta, _repeat_ctr);
+#endif
 		break;
 	case 2:
 		_start = READ_LE_UINT16(_next_chunk);
@@ -179,8 +183,10 @@
 		_channels[0].freq = 0;
 		_next_chunk += 6;
 		_forced_level = -1;
+#ifndef __PALM_OS__
 		debug(6, "chunk 2: %d -> %d step %d", 
 				_start, _end, _delta);
+#endif
 		break;
 	case 3:
 		_start = READ_LE_UINT16(_next_chunk);
@@ -189,8 +195,10 @@
 		_channels[0].freq = 0;
 		_next_chunk += 6;
 		_forced_level = -1;
+#ifndef __PALM_OS__
 		debug(6, "chunk 3: %d -> %d step %d", 
 				_start, _end, _delta);
+#endif
 		break;
 	}
 }
@@ -208,15 +216,18 @@
 			_time_left = READ_LE_UINT16(_next_chunk);
 			_next_chunk += 2;
 		}
+#ifndef __PALM_OS__
 		debug(7, "nextSpeakerCmd: chunk %d, offset %4x: notelen %d", 
 				_chunk_type, _next_chunk - 2 - _current_data, _time_left);
-
+#endif
 		if (_time_left == 0) {
 			parseSpeakerChunk();
 		} else {
 			_channels[0].freq = READ_LE_UINT16(_next_chunk);
 			_next_chunk += 2;
+#ifndef __PALM_OS__
 			debug(7, "freq_current: %d", _channels[0].freq);
+#endif
 		}
 		break;
 
@@ -265,8 +276,10 @@
 parse_again:
 
 	_chunk_type = READ_LE_UINT16(_next_chunk);
+#ifndef __PALM_OS__
 	debug(6, "parsePCjrChunk: sound %d, offset %4x, chunk %x", 
 		  _current_nr, _next_chunk - _current_data, _chunk_type);
+#endif
 
 	_next_chunk += 2;
 	switch (_chunk_type) {
@@ -351,9 +364,11 @@
 			}
 			*_value_ptr_2 = _start_2;
 		}
+#ifndef __PALM_OS__
 		debug(6, "chunk 1: %d: %d step %d for %d, %d: %d step %d for %d", 
 			  _value_ptr - (uint*)_channels, _start, _delta, _time_left,
 			  _value_ptr_2 - (uint*)_channels, _start_2, _delta_2, _time_left_2);
+#endif
 		break;
 
 	case 2:
@@ -363,8 +378,10 @@
 		_channels[0].freq = 0;
 		_next_chunk += 6;
 		_forced_level = -1;
+#ifndef __PALM_OS__
 		debug(6, "chunk 2: %d -> %d step %d", 
 			  _start, _end, _delta);
+#endif
 		break;
 	case 3: 
 		set_mplex(READ_LE_UINT16(_next_chunk));
@@ -408,8 +425,10 @@
 					_channels[i].hull_counter = 1;
 					_channels[i].freq = dummy;
 				}
+#ifndef __PALM_OS__
 				debug(7, "chunk 0: channel %d play %d for %d", 
 					  i, dummy, _channels[i].notelen);
+#endif
 				_channels[i].cmd_ptr += 4;
 			}
 
@@ -483,7 +502,9 @@
 			return;
 		}
 		set_mplex(_start);
+#ifndef __PALM_OS__
 		debug(7, "chunk 2: mplex %d  curve %d", _start, _forced_level);
+#endif
 		_forced_level = -_forced_level;
 		break;
 	case 3:
@@ -532,14 +553,18 @@
 			int sample = _forced_level * _volumetable[0];
 			for (i = 0; i < len; i++)
 				data[2*i] = data[2*i+1] = sample;
+#ifndef __PALM_OS__
 			debug(9, "speaker: %8x: forced one", _tick_len);
+#endif
 		} else if (!_level) {
 			return;
 		}
 	} else {
 		squareGenerator(0, _channels[0].freq, 0, 0, data, len);
+#ifndef __PALM_OS__
 		debug(9, "speaker: %8x: freq %d %.1f", _tick_len,
 				_channels[0].freq, 1193000.0 / _channels[0].freq);
+#endif
 	}
 	lowPassFilter(data, len);
 }
@@ -556,7 +581,9 @@
 		for (i = 0; i < len; i++)
 			data[2*i] = data[2*i+1] = sample;
 		hasdata = true;
+#ifndef __PALM_OS__
 		debug(9, "channel[4]: %8x: forced one", _tick_len);
+#endif
 	}
 
 	for (i = 1; i < 3; i++) {
@@ -587,8 +614,10 @@
 		} else if (i < 3) {
 			hasdata = true;
 			squareGenerator(i, freq, vol, 0, data, len);
+#ifndef __PALM_OS__
 			debug(9, "channel[%d]: %8x: freq %d %.1f ; volume %d", 
 				  i, _tick_len, freq, 111860.0 / freq,  vol);
+#endif
 		} else {
 			int noiseFB = (freq & 4) ? FB_WNOISE : FB_PNOISE;
 			int n = (freq & 3);
@@ -596,8 +625,10 @@
 			freq = (n == 3) ? 2 * (_channels[2].freq) : 1 << (5 + n);
 			hasdata = true;
 			squareGenerator(i, freq, vol, noiseFB, data, len);
+#ifndef __PALM_OS__
 			debug(9, "channel[%d]: %x: noise freq %d %.1f ; volume %d", 
 				  i, _tick_len, freq, 111860.0 / freq,  vol);
+#endif
 		}
 	}
 

Index: player_v2.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2.cpp,v
retrieving revision 2.41
retrieving revision 2.42
diff -u -d -r2.41 -r2.42
--- player_v2.cpp	8 Nov 2003 21:59:32 -0000	2.41
+++ player_v2.cpp	18 Dec 2003 11:47:58 -0000	2.42
@@ -42,14 +42,14 @@
 #define FB_PNOISE 0x08000       /* feedback for periodic noise */
 
 #ifdef __PALM_OS__
-const uint8 *note_lengths;
-static const uint16 *hull_offsets;
-static const int16 *hulls;
-static const uint16 *freqmod_lengths;
-static const uint16 *freqmod_offsets;
-static const int8 *freqmod_table;
-static const uint16 *spk_freq_table;
-static const uint16 *pcjr_freq_table;
+const uint8 *g_note_lengths;
+static const uint16 *g_hull_offsets;
+static const int16 *g_hulls;
+static const uint16 *g_freqmod_lengths;
+static const uint16 *g_freqmod_offsets;
+static const int8 *g_freqmod_table;
+static const uint16 *g_spk_freq_table;
+static const uint16 *g_pcjr_freq_table;
 #else
 const uint8 note_lengths[] = {
 	0,  
@@ -343,7 +343,18 @@
 
 Player_V2::Player_V2(ScummEngine *scumm, bool pcjr) {
 	int i;
-	
+
+#ifdef __PALM_OS__
+	note_lengths = g_note_lengths;
+	hull_offsets = g_hull_offsets;
+	hulls = g_hulls;
+	freqmod_lengths = g_freqmod_lengths;
+	freqmod_offsets = g_freqmod_offsets;
+	freqmod_table = g_freqmod_table;
+	spk_freq_table = g_spk_freq_table;
+	pcjr_freq_table = g_pcjr_freq_table;
+#endif
+
 	_isV3Game = (scumm->_version >= 3);
 	_scumm = scumm;
 	_system = scumm->_system;
@@ -588,15 +599,19 @@
 		if (opcode >= 0xf8) {
 			switch (opcode) {
 			case 0xf8: // set hull curve
+#ifndef __PALM_OS__
 				debug(7, "channels[%d]: hull curve %2d", 
 				channel - _channels, *script_ptr);
+#endif
 				channel->d.hull_curve = hull_offsets[*script_ptr / 2];
 				script_ptr++;
 				break;
 
 			case 0xf9: // set freqmod curve
+#ifndef __PALM_OS__
 				debug(7, "channels[%d]: freqmod curve %2d", 
 				channel - _channels, *script_ptr);
+#endif
 				channel->d.freqmod_table = freqmod_offsets[*script_ptr / 4];
 				channel->d.freqmod_modulo = freqmod_lengths[*script_ptr / 4];
 				script_ptr++;
@@ -604,7 +619,9 @@
 
 			case 0xfd: // clear other channel
 				value = READ_LE_UINT16 (script_ptr) / sizeof (ChannelInfo);
+#ifndef __PALM_OS__
 				debug(7, "clear channel %d", value);
+#endif
 				script_ptr += 2;
 				// In Indy3, when traveling to Venice a command is
 				// issued to clear channel 4. So we introduce a 4th
@@ -620,8 +637,10 @@
 				// fall through
 
 			case 0xfa: // clear current channel
+#ifndef __PALM_OS__
 				if (opcode == 0xfa)
 					debug(9, "clear channel");
+#endif
 				channel->d.next_cmd   = 0;
 				channel->d.base_freq  = 0;
 				channel->d.freq_delta = 0;
@@ -647,7 +666,9 @@
 
 			case 0xfc: // call subroutine
 				offset = READ_LE_UINT16 (script_ptr);
+#ifndef __PALM_OS__
 				debug(7, "subroutine %d", offset);
+#endif
 				script_ptr += 2;
 				_retaddr = script_ptr;
 				script_ptr = _current_data + offset;
@@ -657,7 +678,9 @@
 				opcode = *script_ptr++;
 				offset = READ_LE_UINT16 (script_ptr);
 				script_ptr += 2;
+#ifndef __PALM_OS__
 				debug(7, "loop if %d to %d", opcode, offset);
+#endif
 				if (!channel->array[opcode / 2] || --channel->array[opcode/2])
 					script_ptr += offset;
 				break;
@@ -666,8 +689,10 @@
 				opcode = *script_ptr++;
 				value = READ_LE_UINT16 (script_ptr);
 				channel->array[opcode / 2] = value;
+#ifndef __PALM_OS__
 				debug(7, "channels[%d]: set param %2d = %5d", 
 						channel - &_channels[0], opcode, value);
+#endif
 				script_ptr += 2;
 				if (opcode == 14) {
 				    /* tempo var */
@@ -706,14 +731,14 @@
 					note = (*script_ptr++) & 0x7f;
 				}
 
-
+#ifndef __PALM_OS__
 				debug(8, "channels[%d]: @%04x note: %3d+%d len: %2d hull: %d mod: %d/%d/%d %s", 
 						dest_channel - channel, script_ptr ? script_ptr - _current_data - 2 : 0,
 						note, (signed short) dest_channel->d.transpose, channel->d.time_left,
 						dest_channel->d.hull_curve, dest_channel->d.freqmod_table,
 						dest_channel->d.freqmod_incr,dest_channel->d.freqmod_multiplier,
 						is_last_note ? "last":"");
-
+#endif
 
 				uint16 myfreq;
 				dest_channel->d.time_left = channel->d.time_left;
@@ -774,11 +799,13 @@
 		* (int) channel->d.freqmod_multiplier / 256
 		+ channel->d.base_freq;
 
+#ifndef __PALM_OS__
 	debug(9, "Freq: %d/%d, %d/%d/%d*%d %d",
 			channel->d.base_freq, (int16)channel->d.freq_delta,
 			channel->d.freqmod_table, channel->d.freqmod_offset,
 			channel->d.freqmod_incr, channel->d.freqmod_multiplier,
 			channel->d.freq);
+#endif
 
 	if (channel->d.note_length && !--channel->d.note_length) {
 		channel->d.hull_offset  = 16;
@@ -992,14 +1019,14 @@
 #include "scumm_globals.h"
 
 _GINIT(PlayerV2)
-_GSETPTR(Scumm::note_lengths, GBVARS_NOTELENGTHS_INDEX, uint8, GBVARS_SCUMM)
-_GSETPTR(Scumm::hull_offsets, GBVARS_HULLOFFSETS_INDEX, uint16, GBVARS_SCUMM)
-_GSETPTR(Scumm::hulls, GBVARS_HULLS_INDEX, int16, GBVARS_SCUMM)
-_GSETPTR(Scumm::freqmod_lengths, GBVARS_FREQMODLENGTHS_INDEX, uint16, GBVARS_SCUMM)
-_GSETPTR(Scumm::freqmod_offsets, GBVARS_FREQMODOFFSETS_INDEX, uint16, GBVARS_SCUMM)
-_GSETPTR(Scumm::freqmod_table, GBVARS_FREQMODTABLE_INDEX, int8, GBVARS_SCUMM)
-_GSETPTR(Scumm::spk_freq_table, GBVARS_SPKFREQTABLE_INDEX, uint16, GBVARS_SCUMM)
-_GSETPTR(Scumm::pcjr_freq_table, GBVARS_PCJRFREQTABLE_INDEX, uint16, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_note_lengths, GBVARS_NOTELENGTHS_INDEX, uint8, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_hull_offsets, GBVARS_HULLOFFSETS_INDEX, uint16, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_hulls, GBVARS_HULLS_INDEX, int16, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_freqmod_lengths, GBVARS_FREQMODLENGTHS_INDEX, uint16, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_freqmod_offsets, GBVARS_FREQMODOFFSETS_INDEX, uint16, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_freqmod_table, GBVARS_FREQMODTABLE_INDEX, int8, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_spk_freq_table, GBVARS_SPKFREQTABLE_INDEX, uint16, GBVARS_SCUMM)
+_GSETPTR(Scumm::g_pcjr_freq_table, GBVARS_PCJRFREQTABLE_INDEX, uint16, GBVARS_SCUMM)
 _GEND
 
 _GRELEASE(PlayerV2)
@@ -1014,4 +1041,3 @@
 _GEND
 
 #endif
-

Index: player_v2.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/player_v2.h,v
retrieving revision 2.22
retrieving revision 2.23
diff -u -d -r2.22 -r2.23
--- player_v2.h	8 Nov 2003 21:59:32 -0000	2.22
+++ player_v2.h	18 Dec 2003 11:47:58 -0000	2.23
@@ -84,6 +84,18 @@
 	virtual int  getMusicTimer() const;
 	virtual int  getSoundStatus(int sound) const;
 
+#ifdef __PALM_OS__
+private:
+	const uint8 *note_lengths;
+	const uint16 *hull_offsets;
+	const int16 *hulls;
+	const uint16 *freqmod_lengths;
+	const uint16 *freqmod_offsets;
+	const int8 *freqmod_table;
+	const uint16 *spk_freq_table;
+	const uint16 *pcjr_freq_table;
+#endif
+
 protected:
 	bool _isV3Game;
 	SoundMixer *_mixer;





More information about the Scummvm-git-logs mailing list