Я так до сих пор и остался владельцем приставки с Cobra ODE, на прошивку с HEN обновляться боюсь даже после некоторой сомнительной инфы, что на 4.86 >Cobra< ODE (но не E3 ODE Pro) работает (с диск-свапом или без инфы не нашёл). Решил я как-то, что называется, 'тряхнуть стариной' и пройти Ratchet & Clank аж с первого, но не на PS2, а на PS3, шоб с трофейчиками там. Скачал образ "Ratchet & Clank Trilogy" BCES01503. На моей приставке при запуске он работает так, что я вижу заставочные экраны, притормаживающую заставку "Idolminds", а как экран где должен бы быть выбор игры я вижу только притормаживающее видео по центру слева. Ну, нажатие на крестик запускает игру (то что это экран с местом выбора игр я догадался, но КАК... у меня всегда так совпадало, что что бы я не жал, всегда запускалась первая часть XD. Только потом, когда я это дело 'наладил' и увидел истинный экран, оказалось, что здесь стрелочка вправо листает 1,2,3,1..., а влево выбирает Credits). Прошёл первую часть. Гуглил по ачивкам, и нашёл статейку об игре: Ratchet and Clank Collection (famdom.com) , в которой написано о различиях, что в преимуществе своём представляют из себя упущения и ухудшения. Ну или баги, если хотите. Инфу по различиям я держал в голове, и тем временем выбил платину в первой части. Хотел было приступить ко второй части, да мне что-то комом в горле встали эти тормозящие видео при запуске игры, и чёрный экран с выбором частей игры. И я решил начать копать по пересборке игры...
Пересборка игры улучшенным makeps3iso для случая запуска игры с iso исправляет тормоза начальных видео и восстанавливает экран с выбором частей игры - теперь всё видно.
Посмотрев оригинальное содержимое сборки, мы можем видеть, что это как бы одна игра BCES01503, имеющая дальнейшую возможность запускать находящиеся по соседству .self'ы (чем-то это мне напомнило PS2'шный Ultimate $ony Multi Loader... не знаю ток чем...). При углубленном анализе, возможно можно было бы даже понять здешнюю структуру файлов .uid и .json и прочих, и в конечном итоге наладить трёхигровочный (количество запускаемых .self'ов вроде как вшито в EBOOT.ELF) мультилоадер с кастомными .self'ами, заставочными видео, картинкой и прочим. Но я бы хотел отписать не об этом, а скорее даже об обратном, о том, чтобы НЕ использовать этот мультилоадер, а пересобрать всё в трёхигровку, такую, которая если бы была настоящим диском, при вставке такого диска, он определяется в XMB в Играх как три игры. От слов к делу. Скачал многоигровку "Fighting edition" BLES02129, понял структуру как оно должны быть, прошёлся по LIC.DAT чтобы поправить в них TitleID игр, и, руководствуясь информацией по LIC.DAT (сайт которого того гляди скоро отвалится, сохранил его страничку себе), также поправил CRC32 сумму (что по сути, наверное, не важно, я про это не знал, у меня с Cobra ODE все игры с не верными суммами CRC32 в LIC.DAT запускаются, НО тут решил вникнуть, и в прикреплённым архиве оно верное). Чтобы пересобрать трилогию в трёхигровку, проделаем следующее: - скачайте и распакуйте прикреплённый архив; - во все папки кроме PS3_UPDATE скопируйте файлы ICON0.PNG , PIC1.PNG и PS3LOGO.DAT ; - создайте в каждой папке кроме PS3_UPDATE папки USRDIR и TROPDIR ; - помещайте папки из трилогии в TriplePS3 по следующим директориям: NPWR_02335_00 в PS3_GAME\TROPDIR\ rc1 в PS3_GAME\USRDIR\ RC1.ppu.self в PS3_GAME\USRDIR\ с переименованием его в EBOOT.BIN NPWR_02346_00 в PS3_GM01\TROPDIR\ rc2 в PS3_GM01\USRDIR\ RC2.ppu.self в PS3_GM01\USRDIR\ с переименованием его в EBOOT.BIN NPWR_02347_00 в PS3_GM02\TROPDIR\ rc3 в PS3_GM02\USRDIR\ RC3.ppu.self в PS3_GM02\USRDIR\ с переименованием его в EBOOT.BIN * я перестраховался и скопировал во все папки PS3_G*** папки Common и PS3Data, но можно было бы попробовать этого не делать, т.к. вероятно к этим файлам (и то не ко всем) обращается оригинальный EBOOT из трилогии. Файл прошивки, есенно, можно и упустить. -* в Up Your Arsenal звездолёт(космолёт?..) при перемещениях между планетами летает со звуками не соответствующими видеофрагментам. Чтобы это исправить, переименовывайте файлы в PS3_GM02\USRDIR\rc3\ps3data\global\transition5\ : sound4.bnk -> sound0.bnk sound0.bnk -> sound1.bnk sound1.bnk -> sound2.bnk sound3.bnk оставляем sound2.bnk -> sound4.bnk (кстати, для воспроизведения .bnk файлов, используется прога foobar2000 с плагином vgmstream) - всё, собираем образ улучшенным makeps3iso, указав путь к папке TriplePS3 и имя собираемого .iso без расширения ".iso" .
Что изменилось (что я заметил) по сравнению с тем как оно было в трилогии. Очевидно, добились того, что диск видится в Играх как три игры; тем самым, раз избавились от мультилоадера, сократили время загрузки ; Если у вас были сохранёнки от игр из трилогии - они не будут видеться (но если переподписать их, раскидав файлы по нужным местам, то работать будут...) ; сохранения стали называться по-другому, с добавкой HD Remaster (не дословно, по памяти, вы поняли, увидите) Каким-то волшебным образом исправилось то, что теперь в Going Commando можно активировать субтитры .
Пересобранная трёхигровка работает как и должна... но, как по моему мнению, она пересобрана не идеально Копировав картинки из трилогии во все три папки PS3_G***, они и отображаются одинаковые при наведении на иконку диска в категории Игры. В прикреплённых к посту частях разбитого архива RNCTriple.zip я подготовил соответствующие тематические картинки, а это: - нарыл 3 картинки, похожие на PIC1.PNG из трилогии, но для каждой игры в отдельности. Т.е., для первой части - как у PIC1.PNG слева, для второй - как у PIC1.PNG всередине, для третей - как у PIC1.PNG справа ; - переконвертировал .bik'и из PS3_GAME\USRDIR\PS3Data\Movies\ трилогии в ICON1.PAM (кстати, пользовался инструкцией наших коллег). IdolLogo.bik + Ratchet_1_1.bik (с интро от Idolminds как дань уважения портёрам) для первой части, Ratchet_2_1.bik для второй и Ratchet_3_1.bik для третей; - ICON0.PNG взяты конвертацией файлов с расширением .PS3 с трилогии по инструкции ниже.
Во встречаемых в интернете инструкциях к работе с PAMFTools всё там понятно, всё, да не всё. Части по подготовке видеофайла следовало бы уделить особое внимание, т.к. с rawvideo форматом 'в быту' мало кто сталкивается. Из инструкции на pspx прослеживается намёк на использование XviD4PSP - я бы рад попробовать, но у меня Win7, я пару версий скачал, чёт неповезло, не пошло. Искал инфу нарвался на статейку AKuHAK'а об использовании XviD4PS5 для создания видео годных для PS2BBN, из её смысла могу сделать вывод, что из этой проги 'скармливают' появляющийся с её помощью файл.m2v PS3StreamComposer'у. Я же пошёл путём конвертации видео в .avi . Преимущественное большинство прог представляют из себя gui для ffmpeg. Зачем мне gui, когда быстрее бесплатнее (но чуть сложнее) оперировать с самим ffmpeg из-под командной строки. Итак, файл.avi, годный для PS3StreamComposer'а, я получаю командой:
ffmpeg -i file.bik -vcodec rawvideo -pix_fmt bgr24 -r 29.97 [добавки_на_всякий] -acodec pcm_s16le -ar 48000 -ac 2 out.avi - шо не ясно разберётесь, элементарно же ж, а вот что за [добавки_на_всякий] - бывает при конвертации видео то отображено зеркально по горизонтали или вертикали, то перевёрнуто на 180градусов -vf hflip - лечит зеркальное отображение по горизонтали -vf vflip - лечит зеркальное отображение по вертикали -vf "rotate=3.14:bilinear=0" - переворачивает на 180градусов (на пи), а bilinear=0 может и не надо, советуют использовать при поворотах... Бывают нужно сразу два, тогда вот пример -vf "hflip,rotate=3.14:bilinear=0"
Создаётся файл out.avi . Раздувается он из 11мегового 5секундного видеофайлика в 408меговый; из 30секундного в 2.5Гига... Битрейт при lossless кодировках не выставишь.
Для выуживания аудиодорожки из видеофайла сразу в нужном для PS3Composer'а формате WAV:
(а без "-vn" команда для конвертации аудиофайла в WAV'ку)
Искав 'какую-нибудь ещё' инфу, я нашёл, что если у ICON1.PAM в HEX'овом редакторе обрезать начало длиной в 7FF, то получится принимаемый плеерами файлик MPEG-2 Program Stream с кодеком h264. Я пытался найти такую команду для ffmpeg, у которой на выходе был бы файл в аналогичном формате...
...но всё же, файл получается не таким... А должен получиться такой файл, как на выходе от PS3Composer'а или Umd Stream Composer'а - файл с расширением .MPS . К слову, т.е., сравнивая файлы .MPS и .PAM на выходе от PS3Composer'а - отличие .PAM от .MPS тем, что в .PAM в начале есть какой-то заголовок длиной в 7FF . Также, .MPS без аудио, полученный на выходе от Umd Stream Composer'а (используемый для подготовке файлов для PSP), годен для создания ICON1.PAM ЕСЛИ он в разрешении 320x176 И к нему внедрить 7FF заголовок от .PAM . По сути годится любой заголовок от файла ICON1.PAM от любой игры где оно есть видео (а не loop как гифка), но в нём указывается длина воспроизведения. Методом проб и ошибок зануления и подсовывания PS3StreamComposer'у, я выяснил, что изменяя число с оффсета 59 - ведёт к изменению максимального времени (возможно это битность) изменяя число с оффсета 5F (возможно только два байта) - влияет на время воспроизведения
.MPS , созданный в Umd Stream Composer'е, при аналогичных параметрах качества выставленных в PS3 Composer'е, получается чуть легче по весу. Для подготовки видеофайлов, годных для последующей конвертации в Umd Stream Composer'е, для ffmpeg команда следующая:
Насчёт галочек в "Audio Format" в PARAM.SFO в папках PS3_G*** . Если кто-то знает имеет ли смысл здесь ставить что-то кроме "2 LPCM", и может это обоснованно объяснить - пожалуйста, отпишитесь.
Также, среди описанных в различиях багов, присутствует следующее:
Цитата
In both Going Commando and Up Your Arsenal, the music is no longer stereophonic; only the left channel can be heard.
При игре с этой оригинальной трёхигровки, я так и не заметил, чтобы музыка играла только в одном динамике. ---------------------------------------------
В директории PS3_GAME\USRDIR\PS3Data\UI\Images\ образа игры лежат файлы с расширением .PS3 . Раз они лежат в папке Images, то очевидно все они здесь - картинки.
Я не нашёл информации какого типа картинки могут быть эти файлы игры. Пробовал сувать их на сайты-определители файлов. Какие-то сайты говорили что это, конечно же, неизвестный формат файла, а какие-то сайты сказали, что это .tga-файлы. Пробовал я всякие проги - tile molester, Paint.NET... ни одно, естественно, открывать что-то не смогает... Тогда я сам решил проверить теорию сайтов-определителей файлов о том, что это всё-таки .tga-файлы. Между собой эти файлы существенно разные после первых байтах в количестве 2A. Т.е., предположу, что первые байты в количестве 2A - это header файлов .PS3 . Также, сравнивая между собой эти файлы, догадался, что с оффсета 1C 2 байта - ширина с оффсета 1E 2 байта - длина Далее, сравнивая между собой всячески изготовленные мной в Paint.NET файлы .tga, вижу, что они одинаковы в первых байтах в шестнадцатеричном количестве 12 . Длина данных изображения в .tga-файле равна количеству пикселей умноженных на 4 (тобишь каждый пиксель описывается 4мя байтами, на экране изображения оно заполняется с нижнего левого угла слева направо, при заполнении строчки поднимается на пиксель повыше и так до верхнего правого угла). Незнаю как другие проги, которые могут создавать .tga-картинки, но вот Paint.NET сразу после данных изображения добавляет метадату, в хексовом формате которая начинается с EF 01 ... и до конца файла - вот её можно удалять, и такой 'безметадашный' .tga-файл всё равно открывается в Paint.NET . Также, догадался, что в header .tga-файлов с оффсета C 2 байта HEX-инвертировано - ширина с оффсета E 2 байта HEX-инвертировано - длина
я (правильно) предположил где в заголовках в файлах .PS3 и .tga соответственно находятся места деклараций ширин и длин для этих файлов, решил попробовать эксперимент - взять файл .PS3, создать файл .tga с такими же параметрами ширины и длины, как и у взятого .PS3-файла, удалить в файле .PS3 первые байты в количестве 2A, и вставить вместо них сюда первые байты в шестнадцатеричном количестве 12 из созданного файла .tga . Что ж... очертания картинки я увидел, но перевёрнутую и других цветов... Далее, я подумал - раз в заголовках файлов .PS3 декларации ширины и длины написаны в прямом байтовом порядке, а в заголовках файлов .tga - в инвертированном, так быть может .PS3-файлы - это некие инвертированные .tga-файлы ?!?.. Поискал как байтово инвертировать бинарный файл, тобишь чтобы файл стал написан относительно исходного с последнего байта по первый. Ответ нашёлся довольно быстро, особенно если искать в поисковике "How to reverse the content of binary file?" Это делается, например, в линуксовской утилите командной строки perl . У меня установлен Cygwin, мне легче
perl -0777pe '$_=reverse $_' file.PS3 > out.tga
предварительно удалил из файла.PS3 первые байты в количестве 2A . В полученный файл .tga добавил вставкой заголовок из настоящего файла .tga соответствующих значений ширины и длины, и... увидел картинку НО отражённую по горизонтали. Ну это решается одним щелчком в редакторе .tga-файлов.
Итого, исходя из всего этого,
Как преобразовать файл с расширением .PS3 в картинку .tga .
Сперва удалить из файла.PS3 первые байты в количестве 2A, затем на таком правленном урезанном файле:
perl -0777pe '$_=reverse $_' file.PS3 > out.tga
(ну или чтобы два раза не открывать файл(ы) в HEX'овом редакторе, можно сразу применять эту команду не урезая файл, но в полученном после этой команды файле, открыв в HEX'овом редакторе, удалить последние байты в количестве 2A)
Затем, копируем из любого .tga-файла первые байты в шестнадцатеричном количестве 12 и вставляем их в самое начало полученного файла .tga, открытого в HEX-редакторе . Теперь же, нужно поправить ширину и длину. Пример: в исходном файле .PS3 на оффсетах 1C , 1D (ширина) значения 04 00 соответственно . Тогда в полученном файле .tga во вручную добавленном заголовке на оффсетах C , D будут значения 00 04 ; в исходном файле .PS3 на оффсетах 1E , 1F (длина) значения 02 00 соответственно . Тогда в полученном файле .tga во вручную добавленном заголовке на оффсетах E , F будут значения 00 02 .
Сохраняем полученный файл .tga со всеми правками, открываем файл в любом редакторе .tga картинок и отображаем картинку по горизонтале. Дело сделано .
По поводу ачивки в первой части - собрать миллион болтов. Множитель болтов ввели в игру только со второй части, а в первой части собрать миллион проблема ещё та. Лично я за два прохождения с покупкой всего "стандартного" имел в 'кармане' лишь около 300.000 болтов... Читая в интернете 'советы' как быстро набить болтов, хочется выть волком - перепройти игру раз ещё 8; найти глич, зажать кнопку джойстика часа на три... варики так се. Не знаю как ваше мнение, а как моё, так когда всё уже пройдено и развито и остаётся только купить какие-то вещи, которыми и пользоваться-то не станешь - такие старания выбивать подобного рода ачивки скрадывают всё положительное впечатление от игр, иной раз сводя его на нет. Я предпочитаю для экономии времени и нервов читерить На примере первой части из трилогии. Будем переподписывать файл сохранения игры с правкой. Для этой цели, вам необходимо знать: - IDPS (aka ConsoleID) от вашей консоли (как его узнавать, инфу ищите); - UserID (запустите какой-нибудь файловый менеджер на PS3, зайдите в /dev_hdd0/home/ , оно здесь. Если их здесь несколько, то сами соображайте какой из них ваш); - accountID (смотреть в сейве с приставки) Если всё у вас приготовлено, то поехали. Скопируйте сейв игры с PS3 на флешку. С флешки из PS3\SAVEDATA\ папку NPEA00385_RC1_SAVEDATA_A скопируйте в директорию с aldo's ps3tools\tools\BruteforceSaveData\Икуда-нибудь ещё на всякий! Запускаем BruteforceSaveData Если это ваш первый запуск, жмём Set Profile->Edit Global Settings - здесь прописываем что просят. Теперь, на файлике USR-DATA пр.кн.мыши щёлк->Decrypt PFD. Если что спросят - "Да". Имеем на этот момент декриптованные файлы сейва. Зайдите в папку NPEA00385_RC1_SAVEDATA_A и откройте в хексовом редакторе файл USR-DATA . На оффсете 24 - 4хбайтовое шестнадцатеричное значение имеющегося количества болтов ; На оффсете 48 - 4хбайтовое шестнадцатеричное значение всего собранных за игру болтов . Из второго значения вычитаем первое - полученную разницу куды-нить записываем ; Правим значение всего собранных за всю игру болтов на "тыщщу до ачивки", например, на 999.000, что в 4хбайтовом хексовом представлении 000F3E58 ; Правим значение имеющегося количества болтов на |значение всего собранных за всю игру болтов минус посчитанная разница|, есенно в хексовом представлении. Всё, сохраняем. В BruteforceSaveData выбираем файлик USR-DATA, жмём подсвеченную зелёным кнопку Encrypt PFD->Encrypt Decrypted Files . Попросят сказать "Да", ну уж скажите. Проверьте в PARAM.SFO на всякий, что accountID верный. Папку NPEA00385_RC1_SAVEDATA_A суём обратно на флешку в PS3\SAVEDATA\ с перезаписью, копируем сейв с флешки в приставку с заменой, запускаем игру, добиваем нехватающее количество болтов до ачивки, облегчённо выдыхаем.
В Going Commando из этой трилогии шестнадцатеричное значение имеющегося количества болтов находится там же - на оффсете 24, а вот шестнадцатеричное значение всего собранных за игру болтов находится на оффсете 78. Правда, не то что болты, платина в этой части достигается быстрее, чем развить всё оружие до Ультра (хотя до Ультра-то не надо, для ачивок достаточно каждое оружие, которое может апгрейдиться, проапгрейдить лишь один раз).
В Up Your Arsenal и без читерства платина вышибается без капли пота. Но если кому-то принципиально, то наверняка она там же не дальше 99го оффсета.
К слову заодно уж, в Size Matters (по кр.мере PS2'шной версии)... Там на оффсете 18, как я предполагаю, находится CRC32 сумма (возможно в HEX-инвертированном формате) какой-то длины данных в сейве. На оффсете 2C количество болтов видимых на экране загрузки сейва, но НЕ количество имеющихся болтов в самой игре. Это значение на оффсете 2C и два соседних (что бы они ни значили) на оффсетах 34 и 3C изменять можно, но смысла от этого никакого. Есть такое же как на оффсете 3C значение, располагающееся на оффсете 1CE8, НО если его изменить - сейв не загрузится. Поэтому я и считаю, что на оффсете 18 может находиться CRC32 сумма. PS4 CUH-1108A OFW 5.05 + VR CUH-ZVR2 PS3 SuperSlim CECH-4208a OFW v4.50 Cobra ODE PS2 SCPH-77008a SLIM чиповка; припаян YPbPr - компонент PS2 SCPH-55004 FAT чиповка + orig SCPH-10281 Network Adapter SATA mod