[Scummvm-cvs-logs] CVS: scummvm/simon simon.cpp,1.21,1.22
Ruediger Hanke
tomjoad at users.sourceforge.net
Sun Apr 21 05:52:01 CEST 2002
Update of /cvsroot/scummvm/scummvm/simon
In directory usw-pr-cvs1:/tmp/cvs-serv19415
Modified Files:
simon.cpp
Log Message:
Endian and alignment fixes to make Simon games boot (and play) on big endian systems
Index: simon.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/simon/simon.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -d -r1.21 -r1.22
*** simon.cpp 20 Apr 2002 04:09:02 -0000 1.21
--- simon.cpp 21 Apr 2002 12:51:13 -0000 1.22
***************
*** 7705,7708 ****
--- 7705,7712 ----
resfile_read(_game_offsets_ptr, 0, gss->NUM_GAME_OFFSETS*sizeof(uint32));
+ #if defined(SCUMM_BIG_ENDIAN)
+ for( int r = 0; r < gss->NUM_GAME_OFFSETS; r++ )
+ _game_offsets_ptr[ r ] = READ_LE_UINT32( &_game_offsets_ptr[ r ] );
+ #endif
}
***************
*** 8238,8241 ****
--- 8242,8249 ----
if (fread(_voice_offsets, gss->NUM_VOICE_RESOURCES * sizeof(uint32), 1, _voice_file) != 1)
error("Cannot read voice offsets");
+ #if defined(SCUMM_BIG_ENDIAN)
+ for( int r = 0; r < gss->NUM_VOICE_RESOURCES; r++ )
+ _voice_offsets[ r ] = READ_LE_UINT32( &_voice_offsets[ r ] );
+ #endif
}
}
***************
*** 8256,8260 ****
uint16 block_align;
uint16 bits_per_sample;
! };
void SimonState::playVoice(uint voice) {
--- 8264,8268 ----
uint16 block_align;
uint16 bits_per_sample;
! } GCC_PACK;
void SimonState::playVoice(uint voice) {
***************
*** 8272,8284 ****
if (fread(&wave_hdr, sizeof(wave_hdr), 1, _voice_file)!=1 ||
! wave_hdr.riff!='FFIR' || wave_hdr.wave!='EVAW' || wave_hdr.fmt!=' tmf' ||
! wave_hdr.format_tag!=1 || wave_hdr.channels!=1 || wave_hdr.bits_per_sample!=8) {
warning("playVoice(%d): cannot read RIFF header", voice);
return;
}
! fseek(_voice_file, wave_hdr.size - sizeof(wave_hdr) + 20, SEEK_CUR);
! if (fread(data, sizeof(data), 1, _voice_file) != 1 ||
data[0] != 'atad' ) {
warning("playVoice(%d): cannot read data header",voice);
--- 8280,8295 ----
if (fread(&wave_hdr, sizeof(wave_hdr), 1, _voice_file)!=1 ||
! wave_hdr.riff!=MKID('RIFF') || wave_hdr.wave!=MKID('WAVE') || wave_hdr.fmt!=MKID('fmt ') ||
! READ_LE_UINT16(&wave_hdr.format_tag)!=1 || READ_LE_UINT16(&wave_hdr.channels)!=1 ||
! READ_LE_UINT16(&wave_hdr.bits_per_sample)!=8) {
warning("playVoice(%d): cannot read RIFF header", voice);
return;
}
! fseek(_voice_file, READ_LE_UINT32(&wave_hdr.size) - sizeof(wave_hdr) + 20, SEEK_CUR);
! data[ 0 ] = fileReadLE32(_voice_file);
! data[ 1 ] = fileReadLE32(_voice_file);
! if (//fread(data, sizeof(data), 1, _voice_file) != 1 ||
data[0] != 'atad' ) {
warning("playVoice(%d): cannot read data header",voice);
***************
*** 8286,8290 ****
}
! _mixer->play_raw(&_voice_sound, _voice_file, data[1], wave_hdr.samples_per_sec,
SoundMixer::FLAG_FILE|SoundMixer::FLAG_UNSIGNED);
}
--- 8297,8301 ----
}
! _mixer->play_raw(&_voice_sound, _voice_file, data[1], READ_LE_UINT32(&wave_hdr.samples_per_sec),
SoundMixer::FLAG_FILE|SoundMixer::FLAG_UNSIGNED);
}
***************
*** 8303,8307 ****
}
! p = _sfx_heap + ((uint32*)_sfx_heap)[sound];
for(;;) {
--- 8314,8318 ----
}
! p = _sfx_heap + READ_LE_UINT32(&((uint32*)_sfx_heap)[sound]);
for(;;) {
***************
*** 8317,8321 ****
}
! _mixer->play_raw(&_playing_sound, p+8,*(uint32*)(p+4),22050,SoundMixer::FLAG_UNSIGNED);
} else {
warning("playSound(%d)", sound);
--- 8328,8332 ----
}
! _mixer->play_raw(&_playing_sound, p+8,READ_LE_UINT32(p+4),22050,SoundMixer::FLAG_UNSIGNED);
} else {
warning("playSound(%d)", sound);
More information about the Scummvm-git-logs
mailing list