Отправлено 02 April 2006 - 10:43
Я так понимаю, OST'ом называется то, что лежит в каталоге: \Crime Life - Gang Wars\musicpc\ ?
.CMP файлы имеют такую структуру (все поля по 4 байта):
SIGN - сигнатура, четыре символа: CMP1
SIZE - по-видимому размер распакованного потока, см. ниже (Mototolla byte order)
HERZ - всегда 22050 Hz (Mototolla byte order)
CMPR - поток сжат (1) или нет (0) (Intel byte order)
Mototolla byte order - означает, что значение нужно развернуть задом наперёд. Т.е. если у вас было четыре байта подряд: 12 34 56 78, то нужно: 78 56 34 12 (эта тема уже на форуме проскакивала, так что углубляться не буду).
Как понятно - все поля по 4 байта и их 4 => 16 байт заголовок.
Если CMPR = 0, то Размер_CMP_Файла-16 равно полю SIZE, иначе SIZE - больше размера файла.
Я посмотрел .WAV файлы в каталоге \sounds\, большинство из них в 22050 Hz, 16 bit, Mono.
Скорее всего музыка .CMP в таком же формате (разве что, может быть, Stereo).
Непосредственно с самим алгоритмом сжатия не разобрался. Похоже, что это какая-то модификация RLE, потому что, если пытаться проиграть "в тупую" поток как 22050 Hz, 16 bit (Mono или Stereo - не важно), то среди треска и писка слышится музыка, только в ускоренном виде. Что странно - несжатые файлы тоже проигрываются с треском (?) - тогда я, собственно, не совсем понимаю, назначение полей SIZE и CMPR, если все файлы как-то сжаты...
Добавлено: нашёл в .EXE файле такие вот строки:
VAG WAV Failed to open sound bank file: %s
Хм... Похоже тут используется Sony VAG сжатие.
Xplorer!
Извини за беспокойство. (*улыбается*)
А ты можешь переделать конвертер от ColdFear, чтобы он эти файлы конвертировал? У тебя там, вроде, была поддержка VAG.