Автор Тема: Извлечение мультимедиа (звук, видео, музыка) данных из игр CD/DVD приставок  (Прочитано 456146 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн denben0487

  • Пользователь
  • Сообщений: 134
  • Пол: Мужской
  • Ps2 Forever...
    • Просмотр профиля
denben0487, не знаю на счёт обратно (UPD: PSS Plex умеет туда и обратно), в Ripkit.chm указанного у SILENT_Pavel
Благодарю за информацию. Но меня интересует как править эти архивы в целом, так как мне нужно добраться до текстур в PIC.MGF. Есть ли у тебя насчёт этого какая информация?

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
denben0487, я посмотрел USA версию - http://redump.org/disc/8455/. Там не совсем архив, набор текстур подряд. Часть легко перевести, которые представлены как RGBA8888, но полная непрозрачность равна 128, а не 255 (UPD: это норма для PS2). Нашёл байты отвечающие за формат и ширину/высоту. Преобразовал 125 из 240.
Позже добавлю скрипт, если нужно. В принципе, любой разбирающийся в форматах PS2 легко разберётся.
Одна из текстур для примера:
210078-0
« Последнее редактирование: 12 Май 2019, 18:55:20 от Sharpnull »

Оффлайн denben0487

  • Пользователь
  • Сообщений: 134
  • Пол: Мужской
  • Ps2 Forever...
    • Просмотр профиля
Позже добавлю скрипт, если нужно. В принципе, любой разбирающийся в форматах PS2 легко разберётся.
Да, конечно добавляй. Спасибо заранее!

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
denben0487, сделал только для RGBA8888 (PSMCT32), с индексированными цветами нужно ещё как-то пиксели переставлять (по PS2 swizzle что-то гуглится, но я не стал пробовать, долго).

Скрипт, правой кнопкой по Raw -> Сохранить объект. Нужны Python 3 и PIL (для установки/обновления в командной строке: pip install -U pillow).
Можно перетащить файл на скрипт или вызвать с аргументом пути до PIC.MGF (или только имя, если файл в текущей папке командной строки), png-файлы распакуются в PIC.MGF_extracted. Для запаковки добавьте флаг -p, тогда все найденные png-файлы в папке PIC.MGF_extracted будут обновлены в архиве и он сохранится как PIC.MGF_new.MGF.
Чтобы увидеть ошибки в скрипте, лучше запускайте через командную строку.

В BG.MGF тоже есть текстуры, но они с индексированным цветом. Первая картинка из PIC.MGF, которую я не смог преобразовать, выглядит так (лого Konami):
210088-0

Оффлайн Bigmanjapan

  • Пользователь
  • Сообщений: 1
    • Просмотр профиля
Парни, а кто-нибудь знает чем можно распаковать/запаковать .mgf архивы в Silent Hill 2 (PS2)?

Существует скрипт для полной распаковки файловой структуры PS2 билдов SH2: https://github.com/Nisto/sh2ex

Оффлайн denben0487

  • Пользователь
  • Сообщений: 134
  • Пол: Мужской
  • Ps2 Forever...
    • Просмотр профиля
Sharpnull, благодарю за помощь, буду пробовать...

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
Bigmanjapan, и правда, я видел этот скрипт, но почему-то не подумал, что он распакует текстуры. Но:
* Из PIC.MGF не хватает текстур.
* Он разделил архив без изменения содержания (хотя может это стандартный формат .tex для PS2).
* Запаковывать не умеет.
Плюс конечно, что имена были даны.

denben0487, я обновил свой скрипт, теперь умеет работать с индексированными текстурами в PIC.MGF, но в BG.MGF проблемы. Алгоритм перемешивания (swizzle) оказался стандартный для 8 бит, так что я сделал велосипед.

Так как цвета палитры там RGBA (с прозрачностью), а Photoshop, PIL и многие другие не умеют работать с PNG с индексированным прозрачным цветом (а только с одним прозрачный цветом), пришлось сохранять PNG как полноценный RGBA, а при запаковке я всем цветам раздаю индексы. Если в изображении больше 256 цветом, будет прерывание текущей картинки с сообщением (нужно было сделать выход из программы). Нужно быть осторожным: для прозрачных картинок в Photoshop не поймёшь сколько было использовано цветов, наложил слой на слой и уже доп. цвета.
Пробовал заменять: 55310336.png - логотип Konami, 63481856.png - текст в главном меню (кажется его вы хотели изменить на русский).

Запаковка медленная, так что не забывайте убирать лишние картинки из папки (PIC.MGF_extracted), кроме того одни и те же индексированные изображения будут представлены по-другому из-за другого алгоритма построения.
« Последнее редактирование: 14 Май 2019, 11:27:06 от Sharpnull »

Оффлайн denben0487

  • Пользователь
  • Сообщений: 134
  • Пол: Мужской
  • Ps2 Forever...
    • Просмотр профиля
Sharpnull, ещё раз спасибо за помощь, жму руку...

Оффлайн Ogr

  • Пользователь
  • Сообщений: 7392
    • Просмотр профиля
а только с одним прозрачный цветом
потому что не предусмотрено форматами.
а при запаковке я всем цветам раздаю индексы
лично я бы предпочёл бы чтобы мне в отдельном текстовом документе писали какие индексы игра считает прозрачными, чтобы при возникновении проблем, можно было вручную проконтролировать правильность обратной индексации.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
потому что не предусмотрено форматами.
PNG поддерживает индексированные цвета с разной прозрачностью (alpha), это Photoshop не поддерживает: Alpha transparency in indexed-png images. Откройте http://adamhaskell.net/img/gradient1c.png в нормальном просмотрщике (XnView, Firefox, говорят даже IE6) и сравните с открытием в Photoshop (он сразу преобразует в RGB Color).
--------
Кстати, там посоветовали хорошую программку Color quantizer, с помощью неё без проблем можно PNG-24 преобразовать до 256 цветов с альфа-прозрачностью, чтобы вставить в Silent Hill 2 (для моего скрипта нужно выбрать Force RGB в диалоге сохранения).
« Последнее редактирование: 15 Май 2019, 16:08:26 от Sharpnull »

Оффлайн Ogr

  • Пользователь
  • Сообщений: 7392
    • Просмотр профиля
PNG поддерживает индексированные цвета с разной прозрачностью (alpha), это Photoshop не поддерживает: Alpha transparency in indexed-png images
ЕСЛИ БЫ ЭТО БЫЛО БЫ ПРЕДУСМОТРЕНО ФОРМАТОМ, не пришлось бы городить не стандартный огород:
Цитата
Вот снова то же самое изображение, только на этот раз оно было преобразовано в PNG с индексированной альфа-версией с помощью сценария PHP, который я написал:
;)

Добавлено позже:
полагаю, там картинка с индексированными цветами (2-8 битный растр + палитра к нему) и в дополнения к ней самая обыкновенная 8 битная растровая маска, а не "индексированные цвета с разной прозрачностью".
« Последнее редактирование: 15 Май 2019, 16:59:43 от Ogr »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
Ogr, это предусмотрено спецификаций PNG: 6.2 Alpha representation, 3.1.4 alpha table, а если программы не умеют работать с форматом, это их проблема.
Огород не связан с форматом: человек попытался сконвертировать через GIMP, который не поддерживает, а после скриптом который смог.
Photoshop не предназначен для работы с индексированными цветами, сделано для галочки. Мало кому нужно и пришлось бы перестраивать интерфейс, поэтому и не реализовано, хотя PNG-8+Alpha открылся правильно, но с преобразованием в RGBA.
--------
полагаю, там картинка с индексированными цветами (2-8 битный растр + палитра к нему) и в дополнения к ней самая обыкновенная 8 битная растровая маска, а не "индексированные цвета с разной прозрачностью".
Объяснял чтобы было понятно, это PNG-8 + Alpha table, то есть как обычное индексированное 8 битное изображение, но у каждого цвета в палитре есть своя прозрачность (0 - 255). В общем читайте спецификацию.
« Последнее редактирование: 15 Май 2019, 17:14:32 от Sharpnull »

Оффлайн Ogr

  • Пользователь
  • Сообщений: 7392
    • Просмотр профиля
Photoshop не предназначен для работы с индексированными цветами, сделано для галочки.
все редакторы предназначенные работать исключительно с индексированными цветами (ибо другого не умеют в принципе) что я смотрел, не умеют в степени прозрачности (даже современные для пиксельарта) как и ФШ, могут только 1 цвет в палитре прозрачным назначать. ;) ...видимо они не для этого предназначены, хоть ничего другого и не могут. :lol:
« Последнее редактирование: 15 Май 2019, 17:52:14 от Ogr »

Оффлайн Dwayde

  • Пользователь
  • Сообщений: 120
  • Пол: Мужской
    • Просмотр профиля
Народ, помнится в этой теме (по-моему) у кого-то было htm руководство по выдиранию мультимедиа с довольно-таки внушительным списком игр. Если кто понимает о чем я, можете его кинуть в ответном сообщении?

Оффлайн dedok179

  • Пользователь
  • Сообщений: 496
  • Пол: Мужской
    • Youtube
    • Просмотр профиля
Народ, помнится в этой теме (по-моему) у кого-то было htm руководство по выдиранию мультимедиа с довольно-таки внушительным списком игр. Если кто понимает о чем я, можете его кинуть в ответном сообщении?
Надеюсь это то что ты искал.

Оффлайн Dwayde

  • Пользователь
  • Сообщений: 120
  • Пол: Мужской
    • Просмотр профиля
dedok179, да да. Он самый. Большое спасибо :)

Оффлайн Golk

  • Пользователь
  • Сообщений: 157
    • Просмотр профиля
Кто-то знает, как извлечь все семплы из рокстаровского Beaterator?

Оффлайн Veshurik

  • Пользователь
  • Сообщений: 8
    • Просмотр профиля
Ребята, мне нужно извлечь ресурсы из игры на PS2 - https://downloadgameps3.com/hana-to-otome-ni-shukufuku-o-harukaze-no-okurimono-ps2-free/

Можете помочь? Я вообще без понятия, какие программы есть и как их использовать. Спасибо!

Игра весит 5Гб.

Оффлайн Rockman Z

  • Пользователь
  • Сообщений: 11946
  • Пол: Мужской
    • ВКонтакте
    • Просмотр профиля
Что имено нужно? С музыкой будет проще. С голосами/звуками врядли

Оффлайн Veshurik

  • Пользователь
  • Сообщений: 8
    • Просмотр профиля
Нужны изображения (арты из игры), а также музыку и видеоролики.

Пробовал через Apache, не воспринимает.

Оффлайн Zetper

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
  • Потерянный в пустоте
    • ВКонтакте
    • Просмотр профиля
Ребята, мне нужно извлечь ресурсы из игры на PS2 - https://downloadgameps3.com/hana-to-otome-ni-shukufuku-o-harukaze-no-okurimono-ps2-free/

Можете помочь? Я вообще без понятия, какие программы есть и как их использовать. Спасибо!

Игра весит 5Гб.
Привет я открывал образ прогой UltraISO внутри есть архив CD.BIN Я для него написал распаковщик на Python. Скачиваешь его по ссылке https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi и устанавливаешь его, потом делаешь папку кидаешь туда мой скрипт и файлы SLPM_552.63 и CD.BIN запускаешь срипт, дожидаешься пока появится надпись Закрыть. Рядом появится папка Unpack в ней будут файлы звук(.ahx .ADX), видео(.sfd), не сжатая картинка(.T2), сжатые картинки(.1tex), сжатый файл(.1BIN), остальные файлы не разобранные это(bin).

Скрипт https://yadi.sk/d/k3k5UtqEhBh7Eg

Звуки можно слушать ExtractData_v1.20_English понимает .ahx а PSound 2.0 понимает .ADX (надо правильно выставить частоту звука в настройках программы чтобы правильно игрался звук). Видео можно смотреть VLC media player но будет без звука.

Программы https://dropmefiles.com/wipZY

Если интересно то дополнительная информация.
В файле SLPM_552.63 есть таблица файлов на байте 2405840 размером в 245360 байта,
С начало идёт начало файла оффсет 4 байта номер сектора(*2048) потом 4 байта размер файла, и так для каждого файла, получается 30670 файла. Имён у файлов нет пришлось идентифицировать форматы файлов по заголовкам внутри файлов.

Файлы картинки и файл .1BIN сжаты, потом попытаюсь разобраться со сжатием.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
Zetper, только хотел написать... Но вы продолжайте, я больше ничего не знаю.

Veshurik, размер игры 1.5 ГБ, на самом деле. Много пустоты.
Извлекаете cd.bin и SLPM_552.63 с помощью 7zip или других программ для работы с ISO. В cd.bin ресурсы, SLPM_552.63 - исполняемый файл. По размеру mpeg2 видео, которое в начале, нашёл в SLPM_552.63 информацию по смещениям и размеру в cd.bin, начиная с 24B5D0 идёт 4 байта - смещение / 2048 байт, потом 4 байта - размер в байтах:
00 00 00 00 00 B8 DC 05 - первый ролик
97 BB 00 00 00 58 02 05 - второй
E2 5B 01 00 00 30 36 05 - третий
и так далее, 30670 файлов.
Написал скрипт на Python 3, который всё разделяет на файлы. Скачиваете ПКМ по Raw -> Сохранить объект. Кладёте рядом с теми двумя файлами и запускаете. В папку EXTRACTED всё распакуется. Первые 3 файла переименуйте в .mpg, чтобы запускать через плеер. Но звук может обрываться при промотке, потому что аудио там adpcm_adx. Музыка самая последняя начиная с file0000779846.bin. Чтобы убедиться запускаете ffmpeg:
ffmpeg -i file0000779846.binВывод
Input #0, adx, from 'file0000779846.bin':
  Duration: 00:02:05.89, start: 0.000000, bitrate: 432 kb/s
    Stream #0:0: Audio: adpcm_adx, 48000 Hz, stereo, s16p, 432 kb/s
Можете сконвертировать с помощью ffmpeg:
ffmpeg -i file0000779846.bin output.wavВозможно лучше специальной программой https://github.com/losnoco/vgmstream или через GUI - https://sourceforge.net/projects/vgmtoolbox/, или какой-то ещё для работы с adpcm_adx.
Текстуры и звуки должны быть тоже в этих файлах, но это надо изучать. Начальные буквы могут помочь, видел 1tex.

Оффлайн megavolt85

  • Пользователь
  • Сообщений: 1464
  • Пол: Мужской
    • Просмотр профиля
добавлю пять копеек
sfd видео прекрасно проигрывается через ffplay и так же замечательно конвертируется через ffmpeg

Оффлайн Veshurik

  • Пользователь
  • Сообщений: 8
    • Просмотр профиля
Ребята, спасибо вам.

У Sharpnall скрипт не работает, и после запуска окошко сразу закрывается. У другого человека, что написал скрипт, всё успешно извлеклось, спасибо!
Попробую переконвертировать видео.
Я в программировании ноль полный, поэтому сам бы точно не разобрался.

Осталось только изображения вытащить, да. Можно было бы ещё игровой текст, но там с этим сложнее, наверное.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
У Sharpnall скрипт не работает, и после запуска окошко сразу закрывается.
Если вы скачали доисторический по ссылке Zetper (https://www.python.org/ftp/python/3.4.3/python-3.4.3.msi), то мой работать не будет, потому что использую интерполяцию строк (https://www.python.org/dev/peps/pep-0498/). Качайте последний, на данный момент https://www.python.org/downloads/release/python-380/, для x64 - https://www.python.org/ftp/python/3.8.0/python-3.8.0-amd64.exe, x86 - https://www.python.org/ftp/python/3.8.0/python-3.8.0.exe.
Чтобы точно узнать проблему, нужно запускать через консоль: Shift + ПКМ в проводнике -> Открыть консоль команд, там набрать имя скрипта и после Enter.
P.S. Но смысла нет в моём скрипте, так как от Zetper делает тоже самое + расставляет расширения файлов.
--------
Ещё про различия скриптов.
Я грузил весь файл в ОЗУ по привычке, так что должно быть свободно 2ГБ ОЗУ.
У Zetper это сработает только под Windows из-за обратных слэшей:
path = os.path.realpath(os.path.dirname(sys.argv[0]))
f = open(path+"\\"+"SLPM_552.63","rb")
В Python давно можно указывать / в open под Windows (open(path+"/SLPM_552.63","rb")), но сейчас рекомендуемый способ через pathlib, там всегда можно указывать / и можно написать так:
from pathlib import Path
path = Path(__file__).resolve().parent
f = open(path / "SLPM_552.63","rb")
# Или
f = open(Path(path, "SLPM_552.63"),"rb")
« Последнее редактирование: 03 Ноябрь 2019, 17:10:14 от Sharpnull »

Оффлайн Veshurik

  • Пользователь
  • Сообщений: 8
    • Просмотр профиля
ffmpeg почему-то сжимает качество видео при обработке.

То есть, сначала видео весило 82Мб, а при обработке стало 13Мб, и качество заметно ухудшилось при просмотре.

Что с этим можно сделать?

========

Заметил, что в извлечённых файлах при помощи скрипта от Zetper файлов музыки там нет... То есть, там нет вообще file000...
Просто до 1731166208.ADX
« Последнее редактирование: 03 Ноябрь 2019, 17:41:50 от Veshurik »

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
ffmpeg почему-то сжимает качество видео при обработке.
Потому что нужно задать настройки, по умолчанию качество среднее. На самом деле, вам нужно только аудио перекодировать, видео везде воспроизводится. Уже обсуждали к переводу Rainbow Cotton программу SFDMUX, ей разделить на видео и аудио, перекодировать аудио и назад совместить.

Если хотите в h264, https://trac.ffmpeg.org/wiki/Encode/H.264.
Быстро / большой файл:
ffmpeg -i input -c:v libx264 -preset ultrafast -crf 0 output.mkvМедленно / маленький файл:
ffmpeg -i input -c:v libx264 -preset veryslow -crf 0 output.mkvНаверно ещё надо будет для аудио установить.
--------
Вот про разделение: http://www.emu-land.net/forum/index.php/topic,82378.msg1407588.html#msg1407588
Но она здесь не нужна и разделение тоже, попутал. Попробуйте так:
ffmpeg -i input.sfd -c:v copy output.mpgВидео будет как было без конвертации. Нужно посмотреть как аудио настраивать, чтобы качество сделать получше.
--------
Заметил, что в извлечённых файлах при помощи скрипта от Zetper файлов музыки там нет... То есть, там нет вообще file000...
Просто до 1731166208.ADX
Это и есть музыка, у меня то другие имена были.
« Последнее редактирование: 03 Ноябрь 2019, 17:59:45 от Sharpnull »

Оффлайн Veshurik

  • Пользователь
  • Сообщений: 8
    • Просмотр профиля
Спасибо, получилось с помощью кода для ffmpeg с видео.
Аудио вроде и так хорошее в нём, в настройках написано, что стерео 384кбит.

А-а, вы имели в виду аудиофайлы именно. Они весят по 5-6Мб, наверное, это MP3, но точно не WAV.
UPD. Посмотрел по Spek, там график уходит далеко за границы... наверное, всё же WAV? 1536кбит...
« Последнее редактирование: 03 Ноябрь 2019, 18:39:19 от Veshurik »

Оффлайн Zetper

  • Пользователь
  • Сообщений: 85
  • Пол: Мужской
  • Потерянный в пустоте
    • ВКонтакте
    • Просмотр профиля
Veshurik я написал распаковщик сжатия и конвертации картинок с начало надо установить Pillow для работы с графикой в Python  https://files.pythonhosted.org/packages/7d/06/287ee4b3744d3d4c7657c657d8e59bb556e48a79cf7485c7d4cd926cd42c/Pillow-4.1.1.win32-py3.4.exe надеюсь ты не менял пути установки Python (Этот Pillow подходит к версии Python которую я кидал по ссылке).

Скидываешь все файлы с расширением .1tex в папку со скриптом и запускаешь его, если сделал всё правильно побегут имена файлов. Время распаковки всех файлов занимает примерно 8 минут дождись пока появится надпись Закрыть. Рядом появится папка Unpack в ней будут картинки .png

Скрипт https://yadi.sk/d/eC4TXUykP6in5A

Из интересного
По сжатию это разновидность RLE на его разбор ушло 1 час 30 минут.
В одном файле .1tex может быть по несколько картонок.
Не думал что на PS2 официально выпускали хентай игры.

Оффлайн Sharpnull

  • Пользователь
  • Сообщений: 5005
    • Просмотр профиля
надо установить Pillow для работы с графикой в Python  https://files.pythonhosted.org/packages/7d/06/287ee4b3744d3d4c7657c657d8e59bb556e48a79cf7485c7d4cd926cd42c/Pillow-4.1.1.win32-py3.4.exe надеюсь ты не менял пути установки Python (Этот Pillow подходит к версии Python которую я кидал по ссылке).
Что мешает установить новый PIL к новому Python через pip? В консоли:
pip install -U pillow
Добавлено позже:
На будущее, это:
def HEX_byte(byte): # Переделавает строчку байт в нормальный вид b'd;\x00\x00' в 64 3b 00 00
    HEX = ""
    for elem in byte:
        HEX += hex(elem)[2:].rjust(2, '0') + " "
    HEX = HEX.upper() # Преобразование строки к верхнему регистру
    return (HEX)

print(HEX_byte(b"test_string"))
Заменяется на:
print(b"test_string".hex(' ').upper())
« Последнее редактирование: 03 Ноябрь 2019, 21:57:01 от Sharpnull »