IPB

Добро пожаловать, гость ( Вход | Регистрация )

> PSX STR/ZXA, музыка
-=CHE@TER=-
Jul 30 2008, 10:59
Сообщение #1


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,355
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Откопал одну старую игру - The Note / Playstation.
Там офигенная музыка, но достать её не могу.
На диске есть каталог \ZXA\ с файлами:
CODE
XA_001.STR
XA_002.STR
XA_003.STR
XA_004.STR
XA_005.STR
XA_006.STR
XA_007.STR

Однако, ни один конвертер для PSX их не берёт, потому что это чистый звук, без заголовка (файлы большие - самый мелкий - 9 Мб). Если попытаться проиграть его как RAW PCM в Audition, то через хрип и храп угадывается мелодия. Перепробовал все возможные способы открытия (stereo-mono, 8-16-32 bit, intel-motorola-?law, etc) - как был храп, так и остался.
Кто-нибудь знает, чем можно это сконвертировать в .WAV?
Что за упаковщик не знаю, но первый файл начинается вот так:
CODE
&&))&&))**))**))

второй вот так:
CODE
((**((**++**++**

Остальные - похоже.

Кто-нибудь может помочь?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
 
Reply to this topicStart new topic
Ответов
-=CHE@TER=-
Aug 3 2009, 19:11
Сообщение #2


Walter Sullivan
***

Группа: Root Admin
Сообщений: 1,355
Регистрация: 4-February 08
Пользователь №: 3
Спасибо сказали: 311 раз(а)



Год спустя...
До меня, наконец, дошло что же там такое, после того как ещё одну PSX-игру посмотрел. Оказывается, это .XA файлы, но без заголовка. Нашёл прогу с иходными кодами - cdxa (см. ссылку справа "Tar/GZ"). Попытался декодировать, звук перестал трещать (т.е. декодировался нормально), но почему-то стал заикаться. При увеличении дорожки видно, что между кусками звука торчит пустота. Эксперементы с длинной буфера желаемого результата не принесли. Попытки пропустить пустоту, про которую говорил товарищ Axsis, тоже ничего особо не дало.
Кто-нибудь может помочь?

После распаковки архива по ссылке выше нужно из каталога /xmms-cdxaaudio/ взять файлы xadecode.c и xadecode.h и использовать их в такой вот тестовой программке:

CODE

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include "xadecode.h"

int main(void){
FILE *fl, *fw;
SoundSector *blk;
long sz;
char *buf;
  fl = fopen("XA_004.STR", "rb");
  fw = fopen("XA_004.DAR", "wb+");
  blk = (SoundSector *)malloc(kNumOfSGs * sizeof(SoundGroup) + 0x18);
  memset(blk->sectorFiller, 0, 0x18); /* этого заголовка, увы, в файлах нет...*/
  buf = (char *)malloc(0xFFFF);
  do{
    fread(blk->SoundGroups, 1, kNumOfSGs * sizeof(SoundGroup), fl);
    sz = decodeSoundSect1(blk, buf);
    fwrite(buf, 1, sz, fw);
  }while(!feof(fl));
  free(buf);
  free(blk);
  fclose(fw);
  fclose(fl);
  return(0);
}


Заранее спасибо.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Сообщения в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0 -

 



Упрощённая версия Сейчас: 16th May 2024 - 15:08