PSX Planet: SONY PlayStation Community

PSX Planet: SONY PlayStation Community (https://psxplanet.ru/forum/index.php)
-   (PSX) RUS-de-RUS Section (https://psxplanet.ru/forum/forumdisplay.php?f=253)
-   -   Создаём рабочий игровой диск PlayStation (https://psxplanet.ru/forum/showthread.php?t=6823)

YAGAMI55 31.10.2019 00:50

Bambuch0, нашёл версию error_recalc.exe 1.1
Изменения:
Поддержка консольных команд(хотя одна всего лишь - error_recalc image.bin 1)Вторая команда с 0 на конце.
Алгоритм сменился на ECC/EDC
Написано, что и аудиотреки теперь поддерживает(не проверял)

Так же исходник прилагается внутри архива.

https://www.romhacking.net/utilities/1264/

Так же идея давно возникла, автоматом исправлять XA/STR. Что бы каждый раз через блокнот не править xml файл. Обычной командой консольной, думаю все знают, как текстовики(xml не отличается) фиксить через CMD. Но тут же возник вопрос. Кто знает "какие есть расширения у XA?"
Пример:
Resident Evil там XA это XAS файлы.
Вот думаю - значит есть ещё такие изменения. По сути это те же XA и тип выставлять им XA надо. Иначе не работает. Где то читал что XA6 есть или наподобие.
В общем суть такая - загнать все поддерживаемые XA(XAS, XA6, XAL, XAX и т.д) расширения в заголовок XA.

SlavaVlasov 31.10.2019 01:19

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254819)
В общем суть такая - загнать все поддерживаемые XA(XAS, XA6, XAL, XAX и т.д) расширения в заголовок XA.

А если hex-редактором открыть, какой будет заголовок? Если он не отличается, то можно "ухватиться" за него. Например, в Bugs Bunny - Lost in Time в файлах MUSIC.XA и SPEECHES.XA (извлеченных с помощью isodump) заголовок начинается как:
01 00 64 01 01 00 64 01

Bambuch0 31.10.2019 02:39

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254819)
Алгоритм сменился на ECC/EDC

Значит раньше был другой. Спасибо, заменю.
Я как раз CDMagic(ом) эти поля пересчитываю после замены медиафайлов. Но иногда они сопротивляются, тогда ECCRegen.
Цитата:

Сообщение от YAGAMI55 (Сообщение 254819)
Так же идея давно возникла, автоматом исправлять XA/STR.

У меня в скрипте это уже реализовано. Я сразу это сделал, т.к. мне точно будет лень каждый раз править. Сделал через потоковый текстовый редактор - хвала всемогущему SED ::Worthy::=)
При распаковке образа у меня автоматом генерится XML, который на лету правится - меняются типы на XA/STR и лицензия прописывается.
Если дадите все варианты, какие могут быть у XA/STR, добавлю в скрипт, это плевое дело.
Надеюсь скоро допишу его. Вначале прописал только команды, затем захотел получше, начал добавлять условия, проверки разные, пару раз сломал так, что дебажил потом сутки ::blush::
Цитата:

Сообщение от YAGAMI55 (Сообщение 254819)
Обычной командой консольной, думаю все знают, как текстовики(xml не отличается) фиксить через CMD

А что за команду ты имел ввиду? Ты меня прямо заинтересовал...

YAGAMI55 31.10.2019 14:41

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от SlavaVlasov (Сообщение 254820)
А если hex-редактором открыть, какой будет заголовок? Если он не отличается, то можно "ухватиться" за него. Например, в Bugs Bunny - Lost in Time в файлах MUSIC.XA и SPEECHES.XA (извлеченных с помощью isodump) заголовок начинается как:
01 00 64 01 01 00 64 01

Неее, не обязательно хексом открывать. Можно ориентироваться на расширение файлов. Суть простая например SOUND.XA автоматом тип XA ставится. Но есть SOUND.XAS, что бы им тоже автоматом тип XA проставлялся и т.д

YAGAMI55 31.10.2019 14:57

Ответ: Создаём рабочий игровой диск PlayStation
 
Bambuch0, например таким скриптом, посредством самой CMD

@echo off
setlocal enabledelayedexpansion
Set infile=GAME.XML
Set find=.XA type="data"
Set replace=.XA type="xa"
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>TMP.TXT
)
move TMP.TXT %infile%le%


Это набросок, нужно правильно параметры указать, иначе будет что то крякозябное вроде этого


SOUND.XA type="data".XA type="xa"

Bambuch0 31.10.2019 15:08

Ответ: Создаём рабочий игровой диск PlayStation
 
YAGAMI55, Спасибо. =)
Я поступил проще, вот кусок кода. Использую потоковый текстовый редактор SED:

sed.exe -i -e "s/XA\" type=\"data/XA\" type=\"xa/g" file.xml

Но у виндового SED есть баг, что он несмотря на ключ -i все равно создает файл бэкапа с произвольным именем, и чтобы держать все под контролем, в том числе мусор, который потом чистим, сделал так:

sed.exe -e "s/XA\" type=\"data/XA\" type=\"xa/g" file.tmp > file.xml && del file.tmp

YAGAMI55 31.10.2019 15:14

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от Bambuch0 (Сообщение 254832)
Я поступил проще, вот кусок кода. Использую потоковый текстовый редактор SED:

sed.exe -i -e "s/XA" type="data/XA" type="xa/g" file.xml

Но у виндового SED есть баг, что он несмотря на ключ -i все равно создает файл бэкапа с произвольным именем, и чтобы держать все под контролем, в том числе мусор, который потом чистим, сделал так:

sed.exe -e "s/XA" type="data/XA" type="xa/g" file.tmp > file.xml && del file.tmp

Ну понял, тупо файл бэкапа незаметно удалять, что бы глаза не мозолил

Ну да, у тебя гораздо проще через sed.exe прописано)))

Bambuch0 31.10.2019 20:15

Ответ: Создаём рабочий игровой диск PlayStation
 
Завис на одном моменте, глаз уже замылился, не вижу решения.
Ткните носом, как обойти.
Идея - проверяются расширения всех файлов в каталоге и одновременно из множества на предмет совпадения. Если нет - посылают лесом.


В данном примере я понимаю, почему меня туда все время посылают, даже если лежит MDF. Скрипт упирается в первый тип из множества, а это BIN и шлет меня, не рассматривая дальше.

Как заставить его перебирать все варианты, а не стопориться на первом? Уже мозг закипел.
Решение 100% будет элементарным =)


Код:

set ImageTypes=bin iso img mdf


for %%i in ("%WorkDir%%InPath%*.*") do (
    for %%x in (%ImageTypes%) do (
        if not "%%~xi" == ".%%x" (
            goto ERROR_NOTHING_TO_EXTRACT
        )
    )           
)


YAGAMI55 31.10.2019 22:30

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от Bambuch0 (Сообщение 254840)
Решение 100% будет элементарным =)


Код:

set ImageTypes=bin iso img mdf


for %%i in ("%WorkDir%%InPath%*.*") do (
    for %%x in (%ImageTypes%) do (
        if not "%%~xi" == ".%%x" (
            goto ERROR_NOTHING_TO_EXTRACT
        )
    )           
)


Не уверен! Но если так попробовать.



Код:

set ImageTypes=bin
set ImageTypes=iso
set ImageTypes=img
set ImageTypes=mdf


for %%i in ("%WorkDir%%InPath%*.*") do (
    for %%x in (%ImageTypes%) do (
        if not "%%~xi" == ".%%x" (
            goto ERROR_NOTHING_TO_EXTRACT
        )
    )           
)


Bambuch0 31.10.2019 23:58

Ответ: Создаём рабочий игровой диск PlayStation
 
YAGAMI55, Не, не подходит. Так переменная ImageTypes будет иметь только последнее значение - mdf, остальные пролетают. ::wacko::

MFS 01.11.2019 00:19

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254819)
Кто знает "какие есть расширения у XA?"

Какие угодно, в принципе. В MК4 например их обозвали PXA. Разрабы могли давать этим файлам любые окончания.
Цитата:

Сообщение от SlavaVlasov (Сообщение 254820)
Например, в Bugs Bunny - Lost in Time в файлах MUSIC.XA и SPEECHES.XA (извлеченных с помощью isodump) заголовок начинается как:

У всех XA/STR-файлов стандартный 44-байтный заголовок, можешь выдрать его из любого подобного файла и потом использовать как универсальный.

Меня вот что интересует. Кто-нибудь пересобирал/редактировал ХА-файлы через jPSXdec? Вроде в последних версиях это можно делать. Но сам процесс не тривиален. В забугорном инете не особо много инфы по данному вопросу, а хорошо бы мануал от того, кто в курсе)

YAGAMI55 01.11.2019 08:10

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от MFS (Сообщение 254855)
Какие угодно, в принципе. В MК4 например их обозвали PXA. Разрабы могли давать этим файлам любые окончания.

Спасибо!
Bambuch0, добавь пожалуйста эти расширения в скрипт тоже
.XAS
.PXA
Остальные будем выяснять по ходу разбора/сбора тогда.

Ну а если переменную ни одну указать. Например ImageTypes1=bin, ImageTypes2=iso и т.д

YAGAMI55 01.11.2019 08:18

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от MFS (Сообщение 254855)
Меня вот что интересует. Кто-нибудь пересобирал/редактировал ХА-файлы через jPSXdec? Вроде в последних версиях это можно делать. Но сам процесс не тривиален. В забугорном инете не особо много инфы по данному вопросу, а хорошо бы мануал от того, кто в курсе)

Я не пробовал, но уверен что вставляет он их коряво, когда как вытаскивает на Ура!
Хотя он мне помог однажды, при распаковке образа без ошибок, одна заставка игровая была повреждена, но вот Jpsdec вытащил её без проблем. Хотя может у меня руки кривые)

Bambuch0 01.11.2019 12:25

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254856)
Ну а если переменную ни одну указать.

Если не одну, то все работает, изначально так и было. И сейчас пока к этому варианту и вернулся. Минус этого решения - если нужно добавить новый тип образа для распаковки, то нужно в коде строчку добавлять. А с одной переменной достаточно было в шапке в эту переменную добавить расширение и все.
Но я еще подумаю над этим вопросом.
Впринципе основные типы я прописал - bin/cue, iso, img, mdf. Этого должно хватить, вроде это самые ходовые. Ну или если какие забыл - скажите.

Цитата:

Сообщение от YAGAMI55 (Сообщение 254856)
добавь пожалуйста эти расширения в скрипт тоже .XAS .PXA Остальные будем выяснять по ходу разбора/сбора тогда.

Ок, добавлю.
Сейчас при выборе пункта "Распаковка" идет подпункт выбора региона игры, это для вставки лицензии в XML, могу еще дополнительно третий подпункт встроить на 2 пункта - стандартные типы ХА - это те, которые уже прописаны в коде и на ручное указание.
Не будет ли это слишком громоздко?

YAGAMI55 01.11.2019 12:57

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от Bambuch0 (Сообщение 254865)
Минус этого решения - если нужно добавить новый тип образа для распаковки, то нужно в коде строчку добавлять.
Но я еще подумаю над этим вопросом.
Впринципе основные типы я прописал - bin/cue, iso, img, mdf. Этого должно хватить, вроде это самые ходовые. Ну или если какие забыл - скажите.

Думаю основных типов хватит, других и не бывает. PocketIso формат не нужен думаю, лишнее.
Цитата:

Сообщение от Bambuch0 (Сообщение 254865)
Ок, добавлю.
Сейчас при выборе пункта "Распаковка" идет подпункт выбора региона игры, это для вставки лицензии в XML, могу еще дополнительно третий подпункт встроить на 2 пункта - стандартные типы ХА - это те, которые уже прописаны в коде и на ручное указание.
Не будет ли это слишком громоздко?

Лучше оставить те, которые прописаны, ручной выбор у не понимающих может проблемы создать. А кому надо сам пропишет типы в батнике.

SlavaVlasov 01.11.2019 18:09

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от MFS (Сообщение 254855)
У всех XA/STR-файлов стандартный 44-байтный заголовок

Что-то много 44 байта... в спецификациях читаю - 8 байт (и в файлах BBLIT и CTR совпадает)
XA Subheader Information

XA Subheader Information
========================


XA subheader information is 8 bytes, 2 blocks of 4 bytes, each block being identical.


Byte Offset
0 file number
1 channel number
2 submode
3 coding info
4 file number
5 channel number
6 submode
7 coding info


Byte 0, File Number
=============
0 standard data file
1-255 interleaved


Byte 1, Channel Number
======================
0-15 ADPCM
0-31 Data/Video
ADPCM data can only be up to 16 channels, this would be reduced to 8 if the PlayStation didn't have double speed CD-ROM access


Byte 2, Submode
===============
Split into 8 bits:
Bit# Field Description
7 EOF set at end of file
6 Real time sector
5 Form
4 Trigger for use with application
3 Data set if data sector
2 Audio set if audio sector
1 Video set if video sector
0 EOR end of record


Byte 3, Coding Information
==========================
Split into 8 bits:
Bit# Field Description
7 Reserved 0
6 Emphasis emphasis
5,4 Bits per sample 00 = 4bit (level B/C)
01 = 8bit (level A)
3,2 Sample rate 00 = 37.8kHz (level A/B)
01 = 18.9kHz (level C)
1,0 mono/stereo 00 = mono


Bambuch0 01.11.2019 18:55

Ответ: Создаём рабочий игровой диск PlayStation
 
В общем, я думаю, можно релизить первую ревизию скрипта. Вроде бы все проверил.

Чтобы образ распаковать, нужно положить его в каталог IN. Принимаются BIN, IMG, ISO, MDF. При распаковке автоматом генерируется XML-файл и лежать он будет в каталоге XML. Он уже пропарсен и XA и STR заменены на нужные. После пересборки, новый образ будет лежать в каталоге OUT.

Скрипт может распаковать сразу несколько образов, главное чтобы они были одного региона, т.к. при распаковке задается файл лицензии.
Если вы хотите распаковать несколько образов, а запаковать один, удалите лишние XML-файлы.

Будут пожелания - вэлкам.

"Не стреляйте в пианиста - он играет как умеет" (с) :Grin:
Этот текст скрыт Вы должны зарегистрироваться чтобы увидеть скрытый текст. После регистрации и активации аккаунта нажмите кнопку 'Спасибо', чтобы увидеть скрытый текст содержащейся здесь. Регистрация возможна через e-mail и OpenID. Если Вы испытываете проблемы с регистрацией, пожалуйста свяжитесь с Администратором volgame@gmail.com

SlavaVlasov 01.11.2019 19:06

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от Bambuch0 (Сообщение 254879)
"Не стреляйте в пианиста - он играет как умеет" (с)

Классная фраза :Derisive:

Цитата:

Сообщение от Bambuch0 (Сообщение 254879)
Будут пожелания - вэлкам.

А почему он распакованные файлы удаляет? И еще почему-то в OUT не появляется образ (и скрипт сборки подозрительно быстро выполняется).

Bambuch0 02.11.2019 00:59

Ответ: Создаём рабочий игровой диск PlayStation
 
SlavaVlasov, Ты точно дождался окончания работы распаковки?
Объясню. Де факто образ распаковывается 2 раза - один раз во временную папку ~XMLTempDir - это работает isodump и при этом он генерит XML-файл. Затем эта папка удаляется и образ распаковывается уже другим распаковщиком, который нормально вытаскивает XA/STR.
Результатом работы станет папка с именем образа в IN и в скрипте окно с поздравлением об успешной распаковке.
Тут ты волен менять файлы, озвучку, текстуры и т.д.

А в папке OUT появляется уже образ, который мы собираем.

Т.е. Распаковываем - Шаманим с файлами образа - Собираем - Имеем готовый образ.


P.S. В пути до папки желательно не иметь русских букв и сам образ по русски не называть.
P.P.S. Писал скрипт на работе, там Win 7 Pro. Дома не смотрел, сейчас протестирую еще на Win 10.

YAGAMI55 02.11.2019 01:03

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от SlavaVlasov (Сообщение 254880)
Классная фраза :Derisive:

А почему он распакованные файлы удаляет? И еще почему-то в OUT не появляется образ (и скрипт сборки подозрительно быстро выполняется).

SlavaVlasov, я все проверил. Все работает. Скрипт сборки у mkpsxiso так и работает, очень шустро)
Bambuch0, мастерская работа))) огромное тебе спасибо за твой труд! Абсолютно все работает, как часы!) Глаз радуется.


Но есть пара Но. В общем по LBA он как не собирал, так и не собирает. Проверил на BLADE. Думаю все же для таких игр импорт через CDMage лучшее решение.
И так же есть нюанс с регистром расширений образов, например верхний регистр .BIN .ISO .MDF он не видит, видит только нижний регистр .bin .iso и т.д

SlavaVlasov 02.11.2019 01:11

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254892)
Скрипт сборки у mkpsxiso так и работает, очень шустро)

И образ тоже готовый не появляется? =) Я распаковал образ, в папку IN положил папку с файлами (название папки соответствует названию образа), запустил батник, запустил "2", но в папке OUT образ так и не появился. Может я что-то не то делаю?

YAGAMI55 02.11.2019 01:19

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от SlavaVlasov (Сообщение 254894)
И образ тоже готовый не появляется? =) Я распаковал образ, в папку IN положил папку с файлами (название папки соответствует названию образа), запустил батник, запустил "2", но в папке OUT образ так и не появился. Может я что-то не то делаю?

А как он у тебя без xml парсинга появится? Ты же распаковал образ не через сам скрипт, верно?

Объясню...суешь образ в папку IN, нажимаешь 1, химичешь с игрой, нажимаешь 2, потом на твоё усмотрение ошибки фиксишь 1, 2 или 3


Все, образ разбирается и собирается меньше минуты.Сборник все в одном. Не нужно игры через что то другое распаковывать.

Bambuch0 02.11.2019 01:24

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254892)
Но есть пара Но. В общем по LBA он как не собирал, так и не собирает. Проверил на BLADE. Думаю все же для таких игр импорт через CDMage лучшее решение.

Именно по LBA нет, эта утилита не умеет. Она собирает в том же порядке, что и на диске. Думаю если будет смещение на пару секторов - это не страшно для игр, у которых нет привязки к LBA.
Насчет регистра - посмотрю, исправлю этот момент.
И что-то на Win 10 скрипт не хочет у меня CDMage запускать. Вернее скрипт то его запускает, это CDMage ругается на временную папку, в то же время на Win 7 все работает как часы.
Ну что ж, значит будет версия 1.1

Bambuch0 02.11.2019 01:29

Ответ: Создаём рабочий игровой диск PlayStation
 
SlavaVlasov, Если ты распаковал образ не через скрипт, то у тебя нет XML-файла, а сборка идет именно по нему. Тогда скрипт у тебя должен был выдать окно с сообщением об отсутствии XML-файла...


Так, запуск CDMage уже победил... винда блин косячная... внесу в код еще пару правок. Точно будет 1.1

YAGAMI55 02.11.2019 01:34

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от Bambuch0 (Сообщение 254897)
Именно по LBA нет, эта утилита не умеет. Она собирает в том же порядке, что и на диске. Думаю если будет смещение на пару десятков секторов - это не страшно для игр, у которых нет привязки к LBA.
Насчет регистра - посмотрю, исправлю этот момент.
И что-то на Win 10 скрипт хе хочет у меня CDMage запускать. Вернее скрипт то его запускает, это CDMage ругается на временную папку, в то же время на Win 7 все работает как часы.
Ну что ж, значит будет версия 1.1

А у меня на Win 10 работает все) уже абсолютно все проверил. Хотя может сборка винды влияет.

YAGAMI55 02.11.2019 01:37

Ответ: Создаём рабочий игровой диск PlayStation
 
Bambuch0, думаю версию 1.1 можно смело в шапку вносить. Лучше этого не придумать)

Bambuch0 02.11.2019 05:05

Ответ: Создаём рабочий игровой диск PlayStation
 
Исправил регистр расширений, теперь они сами переводятся в нижний при распаковке. Плюс еще пару строк поправил.
Версия 1.1
Этот текст скрыт Вы должны зарегистрироваться чтобы увидеть скрытый текст. После регистрации и активации аккаунта нажмите кнопку 'Спасибо', чтобы увидеть скрытый текст содержащейся здесь. Регистрация возможна через e-mail и OpenID. Если Вы испытываете проблемы с регистрацией, пожалуйста свяжитесь с Администратором volgame@gmail.com

SlavaVlasov 02.11.2019 16:32

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от YAGAMI55 (Сообщение 254895)
А как он у тебя без xml парсинга появится? Ты же распаковал образ не через сам скрипт, верно?

Распаковывать пришлось, да, не через сам скрипт, но парсинг тем не менее до этого я сделал и XML был.
Цитата:

Сообщение от Bambuch0 (Сообщение 254898)
Тогда скрипт у тебя должен был выдать окно с сообщением об отсутствии XML-файла...

А он выдал об успешной сборке образа )) Ладно, попробую еще потом похимичить...=)
Нажмите
Я понимаю, что это я туплю )). Просто пытаюсь понять, где :Derisive:

SlavaVlasov 02.11.2019 17:14

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от Bambuch0 (Сообщение 254904)
Версия 1.1

Только что потестил (правда на другом компе) - все работает.=) И папка не исчезает с распакованными файлами, и образ появляется. Скрипт был распакован в папку на рабочем столе (Win 10, x64)

Bambuch0 02.11.2019 17:33

Ответ: Создаём рабочий игровой диск PlayStation
 
Цитата:

Сообщение от SlavaVlasov (Сообщение 254926)
Распаковывать пришлось, да, не через сам скрипт, но парсинг тем не менее до этого я сделал и XML был.

Если распаковываешь сторонними программами и XML делаешь тоже сам, а собрать хочешь через скрипт, то положи XML-файл в папку XML, а папку с распакованным образом в папку IN.
И имя XML-файла должно совпадать с именем папки с распакованным образом.


Правда тут есть еще один нюанс, в самом XML файле прописан путь до ресурсов, там тебе его тоже менять придется.
Проще все делать через скрипт, он все сделает за тебя.


Часовой пояс GMT +3, время: 17:28.

Перевод: zCarot
Права | Copyright ©
© PSX Planet Community 2003-2024