Index: music.c =================================================================== --- music.c (revision 3718) +++ music.c (working copy) @@ -635,7 +635,8 @@ if ( (ext && MIX_string_equals(ext, "MPG")) || (ext && MIX_string_equals(ext, "MP3")) || (ext && MIX_string_equals(ext, "MPEG")) || - (magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0) ) { + (magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0) || + (strncmp((char *)magic, "ID3", 3) == 0) ) { if ( Mix_InitMP3() == 0 ) { SMPEG_Info info; music->type = MUS_MP3; @@ -656,7 +657,8 @@ (ext && MIX_string_equals(ext, "MP3")) || (ext && MIX_string_equals(ext, "MPEG")) || (ext && MIX_string_equals(ext, "MAD")) || - (magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0) ) { + (magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0) || + (strncmp((char *)magic, "ID3", 3) == 0) ) { music->type = MUS_MP3_MAD; music->data.mp3_mad = mad_openFile(file, &used_mixer); if (music->data.mp3_mad == 0) { @@ -1546,7 +1548,7 @@ } else #endif #ifdef MP3_MUSIC - if ( magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0 ) { + if ( ( magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0) || ( strncmp((char *)magic, "ID3", 3) == 0 ) ) { if ( Mix_InitMP3() == 0 ) { SMPEG_Info info; music->type = MUS_MP3; @@ -1563,7 +1565,7 @@ } else #endif #ifdef MP3_MAD_MUSIC - if ( magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0 ) { + if ( ( magic[0] == 0xFF && (magic[1] & 0xF0) == 0xF0) || ( strncmp((char *)magic, "ID3", 3) == 0 ) ) { music->type = MUS_MP3_MAD; music->data.mp3_mad = mad_openFileRW(rw, &used_mixer); if (music->data.mp3_mad == 0) {