Godfather
#21
Отправлено 01 May 2006 - 09:43
к сожалению, я немного забросил распаковку - есть неотложные дела.
shaokahn:
наоборот. eaconv конвертирует новый формат, который появился начиная с underground'а.
#22
Отправлено 03 May 2006 - 21:39
eaconv.exe версии 0.1c и старый формат, вроде, конвертирует.
shaokahn!
Парсер могу выложить... Короче, описываю суть проблемы:
Если я сейчас выкладываю парсер, то потом по сети будет ходить сделанные самопалом на нём версии всяких extractor'ов, которые через пень-колоду и абы-как распаковывают музыку. Если вам не обломно такими вещами пользоваться - пожалуйста. Я знаю по личному опыту, что стоит один раз написать прогу, которая, якобы, вытаскивает музыку - как она тутже расползётся по всей сети. Все вытащат при помощи неё кривой музон и благополучно забудут об этом деле. И даже если ты потом уже сделаешь правильную программу - хорошо если её хотя бы 1% заново скачает и воспользуется.
У меня всё никак руки не доходят до .MPF файла одну идею проверить - занят сильно.
Короче - предлагаю так: если вы ещё раз просите программу-парсер - я её выкладываю, но НИКАКОЙ ответственности за все те горе-конвертеры, которые потом будут мелькать в сети, я не несу. Делайте, что хотите, а мы тут будем по маленьку правильный конвертер собирать...
#23
Отправлено 06 May 2006 - 12:06
Код |
0 0 73 0 1 127 0 0 1 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 3 0 20 65 24 0 65 110 44 0 110 127 58 0 2 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 4 0 20 65 25 0 65 110 44 0 110 127 58 0 3 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 5 0 20 65 26 0 65 110 44 0 110 127 58 0 4 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 27 0 65 110 44 0 110 127 58 0 5 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 7 0 20 65 28 0 65 110 44 0 110 127 58 0 6 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 8 0 20 65 29 0 65 110 44 0 110 127 58 0 7 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 9 0 20 65 30 0 65 110 44 0 110 127 58 0 8 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 44 0 110 127 58 0 9 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 11 0 20 65 32 0 65 110 44 0 110 127 58 0 10 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 12 0 20 65 33 0 65 110 44 0 110 127 58 0 11 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 13 0 20 65 34 0 65 110 44 0 110 127 58 0 12 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 14 0 20 65 35 0 65 110 44 0 110 127 58 0 13 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 15 0 20 65 36 0 65 110 44 0 110 127 58 0 14 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 16 0 20 65 37 0 65 110 44 0 110 127 58 0 15 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 17 0 20 65 38 0 65 110 44 0 110 127 58 0 16 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 18 0 20 65 39 0 65 110 44 0 110 127 58 0 17 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 44 0 110 127 58 0 18 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 20 0 20 65 41 0 65 110 47 0 110 127 62 0 19 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 21 0 20 65 42 0 65 110 47 0 110 127 62 0 20 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 22 0 20 65 43 0 65 110 47 0 110 127 62 0 21 0 32 0 17 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 47 0 110 127 62 0 22 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 3 0 20 65 24 0 65 110 44 0 110 127 58 0 23 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 4 0 20 65 25 0 65 110 44 0 110 127 58 0 24 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 5 0 20 65 26 0 65 110 44 0 110 127 58 0 25 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 27 0 65 110 44 0 110 127 58 0 26 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 7 0 20 65 28 0 65 110 44 0 110 127 58 0 27 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 8 0 20 65 29 0 65 110 44 0 110 127 58 0 28 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 9 0 20 65 30 0 65 110 44 0 110 127 58 0 29 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 44 0 110 127 58 0 30 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 11 0 20 65 32 0 65 110 44 0 110 127 58 0 31 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 12 0 20 65 33 0 65 110 44 0 110 127 58 0 32 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 13 0 20 65 34 0 65 110 44 0 110 127 58 0 33 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 14 0 20 65 35 0 65 110 44 0 110 127 58 0 34 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 15 0 20 65 36 0 65 110 44 0 110 127 58 0 35 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 16 0 20 65 37 0 65 110 44 0 110 127 58 0 36 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 17 0 20 65 38 0 65 110 44 0 110 127 58 0 37 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 18 0 20 65 39 0 65 110 44 0 110 127 58 0 38 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 44 0 110 127 58 0 39 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 20 0 20 65 41 0 65 110 47 0 110 127 62 0 40 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 21 0 20 65 42 0 65 110 47 0 110 127 62 0 41 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 22 0 20 65 43 0 65 110 47 0 110 127 62 0 42 0 32 0 22 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 47 0 110 127 62 0 43 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 45 0 110 127 59 0 44 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 46 0 110 127 61 0 45 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 47 0 110 127 62 0 46 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 48 0 110 127 63 0 47 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 49 0 110 127 64 0 48 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 50 0 110 127 65 0 49 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 51 0 110 127 66 0 50 0 32 0 26 32 64 1 0 0 0 4 0 0 0 0 65 110 52 0 110 127 67 0 51 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 53 0 110 127 68 0 52 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 54 0 110 127 69 0 53 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 55 0 110 127 70 0 54 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 56 0 110 127 71 0 55 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 57 0 110 127 72 0 56 0 32 0 26 64 64 1 0 0 0 4 0 0 0 0 255 20 10 0 20 65 31 0 65 110 44 0 110 127 58 0 57 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 45 0 110 127 59 0 58 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 45 0 110 127 60 0 59 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 46 0 110 127 61 0 60 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 6 0 20 65 23 0 65 110 47 0 110 127 62 0 61 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 48 0 110 127 63 0 62 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 49 0 110 127 64 0 63 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 50 0 110 127 65 0 64 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 65 110 51 0 110 127 66 0 65 0 32 0 25 32 64 1 0 0 0 4 0 0 0 0 65 110 52 0 110 127 67 0 66 0 32 0 25 64 64 1 0 0 0 4 0 0 0 0 255 20 19 0 20 65 40 0 |
Это результат распарсивания файла MW_Music_D.mpf из NFS9MW DEMO.
Прошу обратить внимание на 9-ый слева столбец - это, видимо, порядковый номер строки таблицы, так как постоянно увеличивается.
И, наконец, 6-ой справа - это, как мне кажется, то, что мы ищем - порядок проигрывания композиций (правда я за это не ручаюсь).
О таблице:
- 32 байта строка (я их тут как раз и вывел)
- прошу обратить внимение на строки, где нехватает в конце 8-ми байт - это конец одной таблицы и начало другой, как он определяется я пока не знаю, так что выравнял вручную
- я не уверен, что у меня правильно стоит смещение начала таблицы - т.к. я сдвигал, скажем так, "на глаз"
Это одна из первых таблиц в .MPF файле (её начало), за что отвечают другие - пока не знаю, буду разбираться.
Если кто-то будет смотреть эту таблицу, то лучше делать это через текстовый файл, т.к. из-за переносов непонятно что и куда.
Если у кого-то есть ещё соображения - пишите, обсудим, только без оффтопика.
#24
Отправлено 07 May 2006 - 06:18
Возьми, поменяй пару значений и поиграй, если время есть, то методом тыка можно выяснить какой столбец и за что отвечает и т.д. Я так с несколькими играми делал, чтобы понять для чего нужны некоторые байты, назначение которых изначально небыло очевыдным...
#25
Отправлено 07 May 2006 - 21:41
Дело в том, что у меня все NFS начиная с первого Underground'а не идут. (*улыбается*)
#26
Отправлено 11 May 2006 - 15:34
Предлагаю написать небольшой редактор, желательно удобный и поручить кому-нибудь поэксперементировать с игрой\играми с MPF файлами...
#27
Отправлено 12 May 2006 - 17:40
О! Первая здравая идея, которую я услышал с начала этого топика.
Ок, тогда я чего-нить налобаю, как время появится, и попрошу кого-нить, кто может, потестить.
#28
Отправлено 21 May 2006 - 18:20
Нет времени и представлений, что ещё можно с этим форматом делать, да и к тому же, у меня нет возможности проверить свои соображения.
Я могу полностью отдать исходные коды двум людям: Xplorer'у и jTommy. Не в обиду всем остальными - просто я сомневаюсь, что кто-то ещё сможет это сделать или вообще у него будет желание за это браться.
Если кого-то из вышеперечисленных всё это интересует - чиркните в личку свои соображения и e-mail, куда слать ценную бандероль.
Мне не хотелось бы это всё забрасывать, поэтому буду рад, если кто-нибудь примет эстафету заместо меня.
В принципе, можно оставить всё как есть - но тогда я уже не дам никаких определённых гарантий, что что-то будет и когда оно будет.
Если никого из вышеперечисленных это не заинтересует - выложу парсер, который будет сразу склеивать, что ему укажешь - там уже, фанаты сами, на слух, найдут что с чем склеивать. Может и неверно, но хоть что-то чем ничего. Просто хотелось сделать правильный распаковщик...
Формат надо расковырять, т.к. EA его будет во всех следующих играх использовать.
#29
Отправлено 21 May 2006 - 21:30
А что у тебя реализовано в исходниках? Или ты говоришь про Total Converter?
И еще вопросик: кто правильно определяет кол-во кусочков в mus-файле, eatools или gap?
Сейчас посмотрел все nfs. Аналог mpf-файла есть еще в nfs3, но в виде отдельных .lin и .map файлов.
P.S.: Мне кажется что аудио данные в mus-файле закодированы не вариантом mp3 а вариантом ADPCM. На это указывает разница в 4 раза в размерах сжатых и распакованных данных. И тот факт, что кое-какие звуки можно уловить, если послушать mus-файл. Если так, то это на порядок легче. Но это сейчас не главное.
#30
Отправлено 22 May 2006 - 06:27
Кодирование и декодирование MUS сейчас проблемы не составляет, нужно MPF ковырять!
#31
Отправлено 22 May 2006 - 14:04
1) А что у тебя реализовано в исходниках? Или ты говоришь про Total Converter?
Я говорю про nfs9mwme (Music Extracotr) - там алгоритм пропарсивания и склеивания .MUS файлов в один, чтобы eatools мог его как один .WAV обработать (по большей части у меня там реализована работа со структурой .MUS файлов).
Этот алгоритм я потом целиком засунул в Total Converter.
2) И еще вопросик: кто правильно определяет кол-во кусочков в mus-файле, eatools или gap?
Правильно определяет GAP. Конвертер eaconv.exe, зачем-то склеивает некоторые .MUS файлы в один (я так и не понял почему, наверное он склеивает те, которые идут друг за другом без пустых выравнивающих полей между ними). Как следствие, если его просто натравить в тупую на здоровый .MUS файл от NFS9 или The Godfather, то он вытащит кучу .WAV, но некоторые из них будут представлять собой склееные между собой .MUS файлы. На этом накололись все, кто делал конвертер для музыки - там получалось, что у тебя в одном .WAV файле начало и конец разных песен. Только когда я уже сам, вручную, в nfs9mwme пропарсил и сделал готовые .MUS файлы - только тогда песни стали верно извлекаться (в MCT я знал, что там начало/конец не такие и приходилось резать где попало .WAV файлы, чтобы левые куски не попадались).
Если нужно - чиркни в личку e-mail, вышлю исходные коды.
Вы правы - сейчас действительно нужно разобраться с .MPF файлом, тогда можно через nfs9mwme склеить куски и для конвертирования юзать хоть тот же VAG'овский конвертер.
#32
Отправлено 24 May 2006 - 11:49
P.S. Насколько я помню, в NFS:U2 тоже есть MPF файл.
#33
Отправлено 24 May 2006 - 15:11
Большое тебе спасибо, что откликнулся!
А DEMO от NFS9 тебе подойдёт?
MW_Music_D.mus - 85 Мб.
Есть ли у тебя возможность откуда-нибудь скачать?
Кстати, а если тебе прислать .MPF файл и ещё какой-нибудь, в котором, скажем, для статистики занесены только размеры и смещения .MUS файлов внутри большого? Этого будет достаточно или нет?
И да, про NFS:U2 - ты верно заметил. Там тоже есть. Попробую достать и посмотреть что к чему, там динамической музыки не было, и все трэки подряд шли. Может что и выгорит.
#34
Отправлено 25 May 2006 - 12:54
Код |
.text:0073A510 sub_73A510 proc near ; CODE XREF: sub_483F20+28p .text:0073A510 .text:0073A510 var_4 = dword ptr -4 .text:0073A510 arg_0 = dword ptr 4 .text:0073A510 .text:0073A510 push ecx .text:0073A511 mov al, byte_8B7BBC .text:0073A516 test al, al .text:0073A518 push edi .text:0073A519 mov edi, 4 .text:0073A51E mov [esp+8+var_4], 0FFFFFFFFh .text:0073A526 jnz short loc_73A52D .text:0073A528 call sub_73A480 .text:0073A52D .text:0073A52D loc_73A52D: ; CODE XREF: sub_73A510+16j .text:0073A52D mov eax, dword_8B7BC0 .text:0073A532 test eax, eax .text:0073A534 jz short loc_73A53E .text:0073A536 mov eax, 0FFFFFFEEh .text:0073A53B pop edi .text:0073A53C pop ecx .text:0073A53D retn .text:0073A53E; --------------------------------------------------------------------------- .text:0073A53E .text:0073A53E loc_73A53E: ; CODE XREF: sub_73A510+24j .text:0073A53E mov eax, dword_8B5744 .text:0073A543 push ebx .text:0073A544 mov ebx, [esp+0Ch+arg_0] .text:0073A548 push ebp .text:0073A549 xor ebp, ebp .text:0073A54B test eax, eax .text:0073A54D push esi .text:0073A54E movzx esi, byte ptr [ebx+0Ch] .text:0073A552 jnz short loc_73A558 .text:0073A554 xor edi, edi .text:0073A556 jmp short loc_73A565 .text:0073A558; --------------------------------------------------------------------------- .text:0073A558 .text:0073A558 loc_73A558: ; CODE XREF: sub_73A510+42j .text:0073A558 movzx eax, byte ptr [eax+0Ch] .text:0073A55C cmp eax, esi .text:0073A55E jnz short loc_73A565 .text:0073A560 mov ebp, 1 .text:0073A565 .text:0073A565 loc_73A565: ; CODE XREF: sub_73A510+46j .text:0073A565 ; sub_73A510+4Ej .text:0073A565 mov eax, dword_8B606C .text:0073A56A test eax, eax .text:0073A56C jnz short loc_73A57A .text:0073A56E cmp edi, 4 .text:0073A571 jnz short loc_73A583 .text:0073A573 mov edi, 1 .text:0073A578 jmp short loc_73A583 .text:0073A57A; --------------------------------------------------------------------------- .text:0073A57A .text:0073A57A loc_73A57A: ; CODE XREF: sub_73A510+5Cj .text:0073A57A movzx ecx, byte ptr [eax+0Ch] .text:0073A57E cmp ecx, esi .text:0073A580 jnz short loc_73A583 .text:0073A582 inc ebp .text:0073A583 .text:0073A583 loc_73A583: ; CODE XREF: sub_73A510+61j .text:0073A583 ; sub_73A510+68j ... .text:0073A583 mov eax, dword_8B6994 .text:0073A588 test eax, eax .text:0073A58A jnz short loc_73A598 .text:0073A58C cmp edi, 4 .text:0073A58F jnz short loc_73A5A1 .text:0073A591 mov edi, 2 .text:0073A596 jmp short loc_73A5A1 .text:0073A598; --------------------------------------------------------------------------- .text:0073A598 .text:0073A598 loc_73A598: ; CODE XREF: sub_73A510+7Aj .text:0073A598 movzx edx, byte ptr [eax+0Ch] .text:0073A59C cmp edx, esi .text:0073A59E jnz short loc_73A5A1 .text:0073A5A0 inc ebp .text:0073A5A1 .text:0073A5A1 loc_73A5A1: ; CODE XREF: sub_73A510+7Fj .text:0073A5A1 ; sub_73A510+86j ... .text:0073A5A1 mov eax, dword_8B72BC .text:0073A5A6 test eax, eax .text:0073A5A8 jnz short loc_73A5B6 .text:0073A5AA cmp edi, 4 .text:0073A5AD jnz short loc_73A5C2 .text:0073A5AF mov edi, 3 .text:0073A5B4 jmp short loc_73A5BF .text:0073A5B6; --------------------------------------------------------------------------- .text:0073A5B6 .text:0073A5B6 loc_73A5B6: ; CODE XREF: sub_73A510+98j .text:0073A5B6 movzx eax, byte ptr [eax+0Ch] .text:0073A5BA cmp eax, esi .text:0073A5BC jnz short loc_73A5BF .text:0073A5BE inc ebp .text:0073A5BF .text:0073A5BF loc_73A5BF: ; CODE XREF: sub_73A510+A4j .text:0073A5BF ; sub_73A510+ACj .text:0073A5BF cmp edi, 4 .text:0073A5C2 .text:0073A5C2 loc_73A5C2: ; CODE XREF: sub_73A510+9Dj .text:0073A5C2 jge loc_73A709 .text:0073A5C8 cmp dword ptr [ebx], 50464478h .text:0073A5CE jnz loc_73A709 .text:0073A5D4 cmp byte ptr [ebx+4], 4 .text:0073A5D8 jnz loc_73A709 .text:0073A5DE mov edx, edi .text:0073A5E0 imul edx, 928h .text:0073A5E6 xor eax, eax .text:0073A5E8 lea edi, dword_8B5710[edx] .text:0073A5EE mov ecx, 24Ah .text:0073A5F3 rep stosd .text:0073A5F5 mov ecx, ebp .text:0073A5F7 mov eax, 10000000h .text:0073A5FC shl eax, cl .text:0073A5FE mov ecx, esi .text:0073A600 mov edi, 1000000h .text:0073A605 shl edi, cl .text:0073A607 mov dword_8B5744[edx], ebx .text:0073A60D or eax, edi .text:0073A60F push eax .text:0073A610 mov dword_8B5740[edx], eax .text:0073A616 call sub_73B3D0 .text:0073A61B mov edx, dword_8B7BB0 .text:0073A621 mov eax, [edx+34h] .text:0073A624 add eax, 20h .text:0073A627 mov [edx+38h], eax .text:0073A62A mov ecx, [edx+34h] .text:0073A62D movzx ecx, word ptr [ecx+12h] .text:0073A631 lea eax, [eax+ecx*2] .text:0073A634 mov [edx+3Ch], eax .text:0073A637 mov eax, [edx+34h] .text:0073A63A movzx ecx, word ptr [eax+12h] .text:0073A63E mov edi, [edx+38h] .text:0073A641 movsx ecx, word ptr [edi+ecx*2-2] .text:0073A646 lea eax, [eax+ecx*4] .text:0073A649 mov ecx, [eax+4] .text:0073A64C shr ecx, 0Ch .text:0073A64F and ecx, 1Fh .text:0073A652 lea eax, [eax+ecx*4+13h] .text:0073A656 and eax, 0FFFFFFFCh .text:0073A659 mov [edx+40h], eax .text:0073A65C mov ecx, [edx+34h] .text:0073A65F movzx ecx, byte ptr [ecx+0Fh] .text:0073A663 lea eax, [eax+ecx*2+3] .text:0073A667 and eax, 0FFFFFFFCh .text:0073A66A mov [edx+44h], eax .text:0073A66D mov eax, [edx+34h] .text:0073A670 movzx ecx, byte ptr [eax+0Fh] .text:0073A674 mov edi, [edx+40h] .text:0073A677 movsx ecx, word ptr [edi+ecx*2-2] .text:0073A67C lea eax, [eax+ecx*4] .text:0073A67F xor ecx, ecx .text:0073A681 mov cl, [eax+0Eh] .text:0073A684 add esp, 4 .text:0073A687 and ecx, 3Fh .text:0073A68A shl ecx, 4 .text:0073A68D lea eax, [ecx+eax+13h] .text:0073A691 and eax, 0FFFFFFFCh .text:0073A694 mov [edx+48h], eax .text:0073A697 mov ecx, [edx+34h] .text:0073A69A movzx edi, byte ptr [ecx+10h] .text:0073A69E mov eax, [eax+edi*4] .text:0073A6A1 lea eax, [ecx+eax*4] .text:0073A6A4 mov [edx+4Ch], eax .text:0073A6A7 mov ecx, [edx+34h] .text:0073A6AA movzx ecx, byte ptr [ecx+0Dh] .text:0073A6AE lea eax, [eax+ecx*4+4] .text:0073A6B2 mov [edx+50h], eax .text:0073A6B5 mov eax, [edx+34h] .text:0073A6B8 mov edi, [edx+4Ch] .text:0073A6BB movzx ecx, byte ptr [eax+0Dh] .text:0073A6BF mov ecx, [edi+ecx*4] .text:0073A6C2 lea eax, [eax+ecx*4] .text:0073A6C5 mov [edx+54h], eax .text:0073A6C8 xor eax, eax .text:0073A6CA lea edi, [edx+0DCh] .text:0073A6D0 mov ecx, 10h .text:0073A6D5 rep stosd .text:0073A6D7 mov dword ptr [edx+0Ch], 32h .text:0073A6DE mov dword ptr [edx+10h], 0Ah .text:0073A6E5 xor ecx, ecx .text:0073A6E7 mov dword ptr [edx+14h], 3E8h .text:0073A6EE mov dword ptr [edx+18h], 1 .text:0073A6F5 mov eax, esi .text:0073A6F7 mov dword_8B7BC0, ecx .text:0073A6FD mov dword_8B7BB0, ecx .text:0073A703 pop esi .text:0073A704 pop ebp .text:0073A705 pop ebx .text:0073A706 pop edi .text:0073A707 pop ecx .text:0073A708 retn .text:0073A709; --------------------------------------------------------------------------- .text:0073A709 .text:0073A709 loc_73A709: ; CODE XREF: sub_73A510:loc_73A5C2j .text:0073A709 ; sub_73A510+BEj ... .text:0073A709 mov eax, [esp+14h+var_4] .text:0073A70D pop esi .text:0073A70E pop ebp .text:0073A70F xor ecx, ecx .text:0073A711 pop ebx .text:0073A712 mov dword_8B7BC0, ecx .text:0073A718 mov dword_8B7BB0, ecx .text:0073A71E pop edi .text:0073A71F pop ecx .text:0073A720 retn .text:0073A720 sub_73A510 endp |
Это дизассемблированный под IDA speed2.exe от Underground2.
Код |
.text:0073A5C8 cmp dword ptr [ebx], 50464478h .text:0073A5CE jnz loc_73A709 .text:0073A5D4 cmp byte ptr [ebx+4], 4 .text:0073A5D8 jnz loc_73A709 |
50464478h - это сигнатура .MPF файла - "xDFP"
Следом идёт cmp [ebx+4], 4 <- это сравнение пятого байта с 4-ой, и если он не равен - тогда перейти на завершение данной процедуры.
Посмотрел .MPF файл от NFSU2 - там, действительно, 5-ый байт - 4-ка.
В .MPF от NFS9MW и The Godfather - там 5-ка, т.е. формат изменился.
Я так предпологаю, что это версия .MPF формата.
Плюс в .MPF файле от NFSU2 я НЕ нашёл секции с именами (типа "pursuitid" и т.д.).
Так что там, в чём-то, схожие форматы, но 5-ый - расширили.
Один фиг - с U2 не проще. Хотя там в .MUS файле всего 43 штуки .MUS (видимо, тогда их ещё не били на куски по 3-5 секунд) и они идут сразу, без 256-ти байт в заголовке.
У кого ещё будут какие соображения?..
#35
Отправлено 26 May 2006 - 18:09
Ладно, попробую собрать все игры, где есть MPF файлы.
#36
Отправлено 27 May 2006 - 07:58
#37
Отправлено 28 May 2006 - 06:41
#38
Отправлено 20 June 2006 - 13:41
Тогда может кто нибудь сделает прогу которая просто бы mus файлы распаковывала и все конвертировала в wav? (сам то я в программировании не рублю)
А кому надо тот, наверное, и сам все склеит в отдельные треки.
Заранее спасибо!
#39
Отправлено 20 June 2006 - 13:43
Тогда может кто нибудь сделает прогу которая просто бы mus файлы распаковывала и все конвертировала в wav? (сам то я в программировании не рублю)
А кому надо тот, наверное, и сам все склеит в отдельные треки.
Заранее спасибо!
PS Извините за повторное сообщение. просто вывело ошибку об отправке и пришлось повторить.
Кстати, а свои сообщения можно удалять?
#40
Отправлено 29 June 2006 - 06:11