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::


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

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