aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2002-11-11 15:25:30 +0000
committerMax Horn2002-11-11 15:25:30 +0000
commit06082772d31cd8312e8e85d99ae90df7a6a433bf (patch)
treec63d7dc7d06f7a91e2b2b0704715ebe01ae990e3
parent1c86b35f2a81a909ddd00ff05c88eeb4e4a974a5 (diff)
downloadscummvm-rg350-06082772d31cd8312e8e85d99ae90df7a6a433bf.tar.gz
scummvm-rg350-06082772d31cd8312e8e85d99ae90df7a6a433bf.tar.bz2
scummvm-rg350-06082772d31cd8312e8e85d99ae90df7a6a433bf.zip
fixed endian bug that prevented Simon2 SFX from playing on big endian machinese
svn-id: r5518
-rw-r--r--simon/simon.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/simon/simon.cpp b/simon/simon.cpp
index d0f75d8124..573ae536bd 100644
--- a/simon/simon.cpp
+++ b/simon/simon.cpp
@@ -3312,6 +3312,10 @@ void SimonState::readSfxFile(const char *filename)
_effects_file->seek(0, SEEK_SET);
_effects_file->read(_effects_offsets, size);
+#if defined(SCUMM_BIG_ENDIAN)
+ for (uint r = 0; r < num; r++)
+ _effects_offsets[r] = FROM_LE_32(_effects_offsets[r]);
+#endif
} else if (_game & GAME_SIMON2) { /* simon 2 */
int num_per_set[] = {0, 188, 223, 217, 209, 179, 187, 189, 116, 174, 203,
173, 176, 38, 205, 134, 213, 212, 167, 141};
@@ -3338,16 +3342,12 @@ void SimonState::readSfxFile(const char *filename)
_game_file->read(_effects_offsets, num * sizeof(uint32));
for (i = 0; i < num; i++) {
+#if defined(SCUMM_BIG_ENDIAN)
+ _effects_offsets[i] = FROM_LE_32(_effects_offsets[i]);
+#endif
_effects_offsets[i] += offs;
}
}
-#if defined(SCUMM_BIG_ENDIAN)
- uint r;
- if (_effects_offsets) {
- for (r = 0; r < num; r++)
- _effects_offsets[r] = READ_LE_UINT32(&_effects_offsets[r]);
- }
-#endif
}
void SimonState::video_putchar(FillOrCopyStruct *fcs, byte c)
@@ -4140,7 +4140,7 @@ void SimonState::openGameFile()
resfile_read(_game_offsets_ptr, 0, gss->NUM_GAME_OFFSETS * sizeof(uint32));
#if defined(SCUMM_BIG_ENDIAN)
for (uint r = 0; r < gss->NUM_GAME_OFFSETS; r++)
- _game_offsets_ptr[r] = READ_LE_UINT32(&_game_offsets_ptr[r]);
+ _game_offsets_ptr[r] = FROM_LE_32(_game_offsets_ptr[r]);
#endif
}
@@ -4793,12 +4793,12 @@ void SimonState::initSound()
uint r;
if (_voice_offsets) {
for (r = 0; r < gss->NUM_VOICE_RESOURCES; r++)
- _voice_offsets[r] = READ_LE_UINT32(&_voice_offsets[r]);
+ _voice_offsets[r] = FROM_LE_32(_voice_offsets[r]);
}
if (_effects_offsets) {
for (r = 0; r < gss->NUM_EFFECTS_RESOURCES; r++)
- _effects_offsets[r] = READ_LE_UINT32(&_effects_offsets[r]);
+ _effects_offsets[r] = FROM_LE_32(_effects_offsets[r]);
}
#endif
}
@@ -4910,7 +4910,7 @@ void SimonState::playWav(File *sound_file, uint32 *offsets, uint sound, PlayingS
return;
}
- sound_file->seek(READ_LE_UINT32(&wave_hdr.size) - sizeof(wave_hdr) + 20, SEEK_CUR);
+ sound_file->seek(FROM_LE_32(wave_hdr.size) - sizeof(wave_hdr) + 20, SEEK_CUR);
data[0] = sound_file->readUint32LE();
data[1] = sound_file->readUint32LE();
@@ -4923,7 +4923,7 @@ void SimonState::playWav(File *sound_file, uint32 *offsets, uint sound, PlayingS
byte *buffer = (byte *)malloc(data[1]);
sound_file->read(buffer, data[1]);
- _mixer->playRaw(sound_handle, buffer, data[1], READ_LE_UINT32(&wave_hdr.samples_per_sec), flags);
+ _mixer->playRaw(sound_handle, buffer, data[1], FROM_LE_32(wave_hdr.samples_per_sec), flags);
}
void SimonState::playVoice(uint voice)