Правила, действующие в этом форуме и всех его подфорумах:
1) Запрещена реклама в любых её проявлениях (сразу бан без предупреждения)! 2) Мат тоже не приветствуется на форуме, но иногда можно выразить свои чувства ( лучше заменяйте матные слова точками, пробелами, другими буквами)! 3) Категорически запрещается унижать, посылать, издеваться над участниками форума! Мы здесь все - одна большая и дружная семья! Поэтому за нарушение этого правила автоматически будем банить! 4) Разрешены ссылки на информацию, которые относятся к тому или иному разделу форума! 5) Ссылки не в тему будут удаляться и пользователь получит предупреждение или будет забанен! 6) Пользователям разрешено задавать любые вопросы относящиеся к теме, а мы все дружно ответим на эти вопросы. А также отвечать на вопросы и высказывать своё мнение. 7) Повторные темы, которые будут создаваться, будут удалены! Создавайте темы, удостоверившись, что такой темы нет на форуме! 8) Запрещён флуд во всех его проявлениях, сообщения не по теме, сообщения состоящие из одного или нескольких смайликов без текста, сообщения типа - Вах!, Рулез!, Круто! и т.п. Пользуйтесь пожалуйста кнопкой [EDIT], не плодите бессодержательные сообщения. 9) Использование смайликов разрешается не более 3-х подряд!
Данная программа предназначена для проигрывания/просмотра/извлечения/замены ресурсов в играх для приставки 3DO Interactive Multiplayer (R.E.A.L). Музыку можно извлечь из потоковых файлов STREAM, ZStream, видеофайлов, BIN-файлов (бинарные файлы) путём конвертирования сжатых AIFC файлов и извлеченной музыки в формат WAV или AIFF, а так же обратное сжатие WAV/AIFF в AIFC (формат SDX2 моно/стерео) и замена звука в играх. Аудио данные также извлекаются из видеофайлов. Расширения аудио файлов могут быть отличными от Stream, ZStream, weave, AIFC, поэтому экспериментируйте. Поддерживается конвертирование видео из 3DO формата Stream в AVI файлы. Так же возможен просмотр IMAG файлов, извлечение файлов CEL и ANIM из архивных файлов.
ZStream Chunks Reader 0.9.1 - конвертирует 3DO видео в AVI.
А видео формата DUK не проигрывается? Если нет, то вот исходники игры, которая должна уметь их воспроизводить http://sc2.sourceforge.net/downloads.php Сам ничего не понял, но формат файлов вроде такой же.
Нет. Только хреновый звук конвертится. Проблема в том, что 3DO DUK какой-то недоделанный ранний вариант более позднего кодека True Motion Video. В Windows нет подходящего декодера этого видео кодека, там есть DUK (Phantasmagoria 2,например), но он отличается. В SC2 как раз более свежий (финальный). Но всё равно спасибо, проверю ссылку, может повезёт.
bits_per_pixel[CEL_PRE0_BPP(CelIm.ccb_chank.pre0)]=8131->3->4 конвертится в bits per pixel = 4
CEL_PRE0_BPP(CelIm.ccb_chank.pre0)=3
по этому числу попадает в проверку CEL_FLAG_PACKED (CelIm.ccb_chank.flags=2145828896) с результатом false (т.е. не запаковано)
Далее выполняется код
for{while} i:=0 to Pred(CelIm.y_res) {i++} do begin k:= ((CelIm.x_res*bpp+31)) shr 5; k:= (k shl 2)*i; dec_shift:= 0; for{while} j:=0 to Pred(CelIm.x_res) {j++} do begin CelIm.image_buf[i*CelIm.x_res+j]:= ConvertPix_PLUT(get_bits((CelIm.pdat_buf[k]),bpp),bpp); --- вероятно здесь не правильно конвертирует т.к. всегда 0 k:= k + (dec_inc); end;
для рабочего файла 3do.cel из Horde разбор bpp CEL_PRE0_BPP(CelIm.ccb_chank.pre0=15326). bpp=16
CEL_PRE0_BPP(CelIm.ccb_chank.pre0=15326) даёт результат 6 и выбирается другой алгоритм декодирования
CelIm.image_buf[i*CelIm.x_res+j]:= ConvertPix_16UC(...) здесь правильно набирается буфер картинки
Для Doom cel'ов, как я и писал,по флагам переходит на часть кода, где буфер забивается нулями при обработке PLUT, отсюда чёрный прямоугольник. Более конкретно - ошибка работы функции get_bits, криво переведена в Delphi код из-за сложной работы со сдвигом массива в памяти через указатели, что напрямую из Си невозможно перевести, нужно изменять алгоритм. Мозгов и времени не хватило на тот момент.
Спасибо за разбор. Видимо, мне нужно будет скомпилировать CelViewer и уже в отладчике колдовать.
Добавлено спустя 14 минут 11 секунд: Хм... А я был уверен, что компрессия применялась. Иначе, как можно было получить такой малый размер cel-ки? 16 кб на 256х128 px...
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Иначе, как можно было получить такой малый размер cel-ки? 16 кб на 256х128 px
А фиг знает, может все эти сдвиги памяти с выборкой битов и дают некий эффект распаковки, но сжатием не считаются. Так-то 32 кб получается должно быть несжатых данных.
Добавлено спустя 2 часа 2 минуты 25 секунд: Добавил звук при конвертации из MOV в Stream. Проверил Demo Player'ом. Итог - ни звука, ни изображения. При этом звук рипнулся из обратно из созданного файла правильно. Эх. Наверно надо в разые игры пробовать сунуть эти самопальные видяхи, собирать образ обратно и проверять на них.
В архиве исполняемые файлы плееров для запуска на 3DO и пробный Stream со звуком и видео полученным из MOV файла. В демке есть файл bscpPlay. Предполагаю, что это сам плеер. Но есть файл bsinit. Как он влияет на работу bscpPlay фиг знает, это описано в lauchme, но его исходников нет и поправить ничего нельзя. По идее вместо bscpPlay можно положить любой из плееров в архиве с таким же именем. Я так пробовал, ничего не запустилось.
Я глянул во внутренности этих bin'ов. У них там какие-то левые заголовки в шапке, а непосредственно программа начинается со строки "E1A00000EB002F74EB00000CEB00003B", такая же строка идёт первой в bscpPlay. Возможно бинарники нужно поправить, обрезав лишнюю шапку.
В идеале хорошы бы иметь плеер, который скидывает лог ошибок. Это прям очень помогло бы. Только где же такой взять.
Взять работоспособный плеер (попробуем выбрать такой), залезть в его исходники, прописать там вывод типа printf, и выводить на экран поверх видео. Это в теории.
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Насколько я помню лишние байты появляются при копировании файлов из образов Мака в винду. Вроде бы это даже как-то фиксится, но проще всего ручками вырезать.
aliast, т.е. просто убрать шапку лишнюю и всё? Там просто в конце тоже какая-то левая информация (как мне показалось) или данные в конце не влияют на работу? Примерно как в exe'шниках, если в конец свои стихи дописать прога всё равно будет прекрасно работать.
Versus писал(а):
Взять работоспособный плеер (попробуем выбрать такой), залезть в его исходники, прописать там вывод типа printf
Только пока не вышло ни одного плеера на Win32 собрать. :(
Только пока не вышло ни одного плеера на Win32 собрать. :(
Буду пробовать собрать под старым маком. Тока пока не могу все сразу успеть. PS. Я переношу файлы из мака в винду простым перетаскиванием на диск С. Ничего не портится и не дописывается.
_______________________________________ There are 10 types of people in the world: those who understand binary, and those who don't.
Пробую поднять исходники плеера Duk файлов с переводом на Delphi в свою утилиту. Ппц, все кодеры на Сях любители указателей??? Или это такой офигенный прирост в скорости работы даёт, что их очень часто вижу? Работа с файлами там обставлена ого-го как. Но, это же плеер, наверно так и надо. Много запчастей, которые мне для конвертации в общем не нужны, но затрудняют разбор алгоритма. Хотел для начала убедиться, что оно переварит Dukи из Hord'e, но куда файлы кидать для игры Ur-Quan masters не понял. Жаль они плеер отдельно от игры не сделали.
Versus,да так-то в самом указателе особой сложности нет. По сути это ссылка на область памяти, где лежит значение некой переменной или даже целый массив данных. Си оперирует с указателями как угодно, даже двигать массив данных может влево/вправо только по указателю на область с массивом. Но путаницу это создаёт не слабую в голове. Мне не понятно,зачем кидать в процедуру/функцию указатель на файл! и там через указатель обращаться к данным. Когда можно сделать глобальную переменную и читай как угодно во всей программе.
Задолбался с этими указателями. Код плеера на сях собирать тоже то ещё удовольствие, т.к. отдельного проекта нет. Написал им на форуме Ur-Quan Masters, что если можно, то пусть релизят плеер отдельно, чтобы видяхи с 3DO смотреть. Как можно было сделать плеер для DUK'ов в игре, но не сделать отдельно утилиту? Ещё интереснее, откуда ноги у исходников алгоритма декодирования растут. Явно не сами додумались это просто нереально. Может кто-то из разрабов поделился кодом плеера...эх, в общем тяжело это для моего скилла.
Провёл эксперимент. Запихнул по инструкции в Ur-Quan Masters вступительный ролик из Гекса. Всё отлично воспроизвелось. Значит формат DUK именно тот, что нужно.
Там кстати есть исходники движка игры Star Control II на гитхабе и в версии .01 есть утилитка, выдирающая звук в формате raw. Но что с этим raw делать дальше я не понял. В ZStreamReader всё те же шумы, что и раньше (шумы не идентичны). https://sourceforge.net/p/urquanmasters ... tools/duk/
Последний раз редактировалось aliast 01 июн 2016, 14:48, всего редактировалось 1 раз.
aliast, да, я исходник даже скачивал unduck.c и unduck.h. Raw файл потом можно во что угодно сконвертить, там (в Raw) по сути несжатый звук хранится после декодирования из файла Duk. В ZStreamReader'e новых правок пока нет.
Сейчас этот форум просматривают: Trendiction [Bot] и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения