formato .PSARC

alfax está baneado por "troll"
hola amigos. Estoy trasteando con los archivos .psarc más que nada par aligerar el tamaño de mis copias de seguridad, y me gustaría saber cuales han sido vuestras experiencias, de los que os hayáis interesado en trabajar con estos archivos,

sé que son archivos con muchas sutilezas, y más allá del caso del archivo .psarc de Uncharted 2, al final, si queremos meterle mano y ripearlos, pues tenemos que crear uno nuevo con los cambios. Y esto puede bastante laborioso, verdad ?
Hola @alfax, como bien dices, estos archivos sobre todo dan problemas al ser más de 4GB de normal, de hecho hace tiempo descomprimiendo el .PSARC (son un mix de PS3 para agrupar recursos y una vez descomprimido tenemos, un empaquetado de las escenas, vídeos, imágenes, sonidos, etc...) y haciendo unos pasos y demás, era posible jugar a juegos con archivos de más de 4GB desde externo en FAT32. Lo malo es que los tiempos de carga se hacian horribles y tediosos.

Pero supongo que (no lo he probado nunca si te soy sincero), si no es tu caso las limitaciones de 4GB y usas un HDD externo en NTFS o lo copias dentro de la PS3, posiblemente puedas abrir el .PSARC, coger vídeos, audio y todo aquello que puedas ripear y reducir su tamaño, respetando el formato en el que este para que lo coja bien la PS3, quiero decir que si el audio es un .waw o un .mp3, tenga la misma extensión, al igual que el resto de archivos reducibles.

Una vez todo reducido, es empaquetar de nuevo en el .PSARC y ver si funciona bien en la PS3. Un saludo y ya me cuentas a ver si lo has probado y como ha ido ;)
Voy a poner el link a la pagina que escribi en psdevwiki, esta en ingles pero esta casi todo explicado
PlayStation archive (PSARC)

En general... puedo decir que todos los juegos de PS3 con archivos PSARC se pueden reconstruir, los juegos no hacen ningun tipo de verificacion de seguridad a los archivos .PSARC (por ejemplo, comprobaciones de su tamaño o de su hash, nada de eso, eres libre para conejerarlo a tu gusto)

Yo he reconstruido un monton de PSARC de juegos (para eliminar cosas) y siempre ha funcionado bien
Solo hay dos juegos donde no he podido reconstruir los PSARC, es largo de explicar que tienen de especial estos dos juegos... pero en realidad se puede hacer tambien, no lo hice porque necesitaba automatizarlo y la cantidad de archivos era brutal

-----------------------
Hay una regla de oro que siempre hay que respetar al reconstruir un PSARC... esta relaccionada con la forma en la que el juego accede al contenido del PSARC
El primer archivo dentro de un PSARC se le llama el "manifest", funciona como un "index" del resto de archivos, y a cada archivo se le asigna un identificador que es simplemente el numero de la posicion en la lista

Por ejemplo... si el PSARC original tiene 1358 archivos... el resultado al reconstruirlo tiene que ser tambien 1358 y el "manifest" tiene que ser el mismo

O dicho de otra manera... si quieres "ripear" archivos nunca los debes eliminar (eso desplazaria los demas archivos que van a continuacion del que has eliminado, cambiaria su ID y el juego no podria encontrarlo)
Lo que tienes que hacer es reemplazarlos por dummies de tamaño 0kb... eso hace que se preserven las posciones del los demas

----------------------
Lo mas importante a la hora de reconstruirlos es que tienes que mantener las mismas "flags" que estaba usando el PSARC original que quieres reemplazar
Estas "flags" estan relaccionadas con el tipo de "manifest" que he mencionado antes
Para mas informacion empollaros la pagina de la wiki, es largo de explicar y actualmente hay montones de programas que soportan PSARC pero no soportan esas "flags" asi que los PSARC reconstruidos con esas herramientas no funcionan (porque no estan respetando los "flags" originales)

----------------------
El psarc.exe oficial admite tres formas diferentes de construir un PSARC
La mejor forma de todas (y la mas complicada) es la que he llamado "by file"
PlayStation archive (PSARC)#create_by_file

La bueno al hacerlo de esta forma es que estas indicando opciones especificas para cada uno de los archivos dentro del PSARC, es decir, que cada uno de los archivos (antes de crear el PSARC) puede estar almacenado en un hdd diferente de tu PC, puedes indicar niveles de compresion diferentes para cada archivo, etc...
Hay algunos PSARC donde necesitas hacerlo de esta manera (es imposible hacerlo de otra forma)
Otros PSARC no necesitan hacer esto... pero si lo haces asi te van a funcionar bien

Es decir... que si no estas seguro de como hacerlo para un PSARC en concreto (o si estas escribiendo un script o un programa que se trague todos los PSARC sin hacer preguntas) es mejor hacerlo asi siempre, "by file" ;)
alfax está baneado por "troll"
@Sandungas cuáles son los 2 títulos que no has podido reconstruir y por qué no ? qué necesitaríamos para poder hacerlo ?

los .psarc tienen un archivo .xml con el manifest en la primera entrada, pero el ejecutable no tiene ningún parámetro para extraer ese .xml, Me equivoco ?
alfax escribió:los .psarc tienen un archivo .xml con el manifest en la primera entrada, pero el ejecutable no tiene ningún parámetro para extraer ese .xml, Me equivoco ?

Correcto, aunque en realidad el manifest que hay dentro del psarc no es un archivo .xml
El psarc.exe tiene funciones donde se usa el formato .xml como "plantillas" con instrucciones que le indican a psarc.exe lo que tiene que hacer... pero no puede crear .xml

El truco que yo uso para ver como esta hecho el manifest es usar el comando list, por ejemplo, (copio de psdevwiki)
C:\>psarc.exe list "C:\psarctests\source files\test.psarc"
Listing C:\psarctests\source files\test.psarc
dummy.txt (0/0 100%)
BMPfolder1/Image1.bmp (8018/6220854 0%)
JPGfolder1/JPGfolder2/Image2.jpg (209/12524 1%)
PNGfolder1/PNGfolder2/PNGfolder3/Image3.png (6142/6142 100%)


Ese es un psarc un poco especial que hice yo para usarlo de ejemplo, ahi puedes ver:
-El orden de los archivos (si no respetas el orden original el juego no puede acceder al contenido)
-Las rutas (presta especial atencion a como cambia el primer caracter mas a la izquierda dependendo de las "flags" del header)
-Los tamaños y los ratios de compresion de cada archivo

Esa informacion es imprescindible para crear el .xml necesario para reconstruir el .psarc
Lo que tienes que tener en cuenta siempre en todo momento es que la informacion que te muestra el comando list del psarc original tiene que ser exactamente la misma en tu psarc modificado (excepto el ratio de compresion y los tamaños)
Es decir... que el primer paso es hacerle un "list" al psarc original (y guardar la informacion del "list" porque esto es lo que tienes que imitar)... y justo despues de crear tu psarc modificado le tienes que hacer otro "list" y comparar la informacion de los dos "list"

Por cierto... cuando uses el psarc en linea de comandos recuerda que puedes guardar la informacion que aparece en pantalla redireccionandola a un archivo.txt usando >
Por ejemplo... este es el mismo comando del ejemplo anterior y te crearia un archivo .txt con lo que se ve en pantalla
C:\>psarc.exe list "C:\psarctests\source files\test.psarc" > archivo.txt


*Notepad++ tiene un plugin para comparar archivos (y winmerge tambien) ;)
alfax escribió:@Sandungas cuáles son los 2 títulos que no has podido reconstruir y por qué no ? qué necesitaríamos para poder hacerlo ?

El killzone 3 (y supongo que puede pasar lo msimo con el killzone 2)
El problema que tienen los psarc del killzone 3 es que dentro del psarc hay almacenados muchos archivos con la misma ruta, por ejemplo, al hacerle un "list" te saldria algo asi:

C:\>psarc.exe list engendro.psarc
Listing C:\engendro.psarc
BMPfolder1/Image1.bmp (8018/6220854 0%)
BMPfolder1/Image1.bmp (501/32204 0%)
BMPfolder1/Image1.bmp (218/7224 0%)


El psarc tiene dentro 3 archivos, son diferentes porque tienen distintos tamaños, pero el nombre del archivo y la ruta es exactamente igual, solo se diferencian porque a cada uno se le asigna una ID que corresponde con su posicion

Si extraes el contenido del psarc en una carpeta pueden pasar dos cosas (hay una opcion en el psarc.exe que te permite elegir una de estas dos opciones)
-Se extrae el primero y los otros se ignoran
-Se extraen todos y se van sobreescribiendo en orden... por lo tanto al final lo que tienes es un solo archivo que es el que estaba colocado en ultima posicion

Ves el problema, no ?... el psarc original tenia 3 archivos, pero al extraerlo solo tienes 1 :)
Bueno... pues multiplica eso por miles de archivos... porque los psarc del killzone tienen dentro miles de archivos (es exagerao)
Asi que para empezar... esa extraccion hay que automatizarla (con un script o un programa), porque es imposible hacerlo a mano... te puedes tirar un dia entero y te aseguro que al final vas a tener algun error y la vas a cagar porque es imposible estar concentrado tanto tiempo haciendo algo tan repetitivo

Lo que hay que hacer es identificar las rutas duplicadas y extrar esos archivos a directorios diferentes
...porque en realidad es asi como se crearon esos psarcs... la razon de porque tienen rutas identicas es poque lo que guarda el manifest no es la ruta completa orignal del PC

Al crear el psarc hay una opcion con la que puedes "cortar" parte de la ruta original del PC... por ejemplo puedes crear un unico psarc usando archivos de tu PC que esten en varios hdd's diferentes... o usando varios hdd's que esten en la red local en otros PCs

Por ejemplo, los archivos del ejemplo anterior, digamos que estaban en mi PC en las rutas:
C:/Pruebas/BMPfolder1/Image1.bmp
F:/pendrive500mb/cosasraras/BMPfolder1/Image1.bmp
H:/BMPfolder1/Image1.bmp


Al crear el psarc le recorto el principio de las rutas de forma selectiva (usando unas funciones especificas que tienes que preparar en el xml si no recuero mal) y al hacerle un "list" al psarc (para ver el manifest) quedaria asi...
C:\>psarc.exe list "C:\psarctests\source files\test.psarc"
Listing C:\psarctests\source files\test.psarc
BMPfolder1/Image1.bmp (8018/6220854 0%)
BMPfolder1/Image1.bmp (5018/3220854 0%)
BMPfolder1/Image1.bmp (2018/7220854 0%)


Esto es lo que he recortado del principio de las rutas. solo lo pongo aqui de ejemplo pero en realidad cuando creas el psarc eto no se guarda... es como si le dijeras a psarc.exe... "ok, creame un psarc pero no me guardes esto"
C:/Pruebas/
F:/pendrive500mb/cosasraras/
H:/
alfax está baneado por "troll"
o sea que son archivos con el mismo nombre, misma ruta aparente, pero no con el mismo contenido ?
esto es un problema, hay que automatizarlos para trabajar con esa posibilidad.
@Sandungas, @alfax, se podría modificar el código del PSARC para que cuando va extrayendo los archivos compruebe si existe ya en el directorio de extracción??. Si no existe sigue su curso igual pero para aquellos archivos con igual nombre, se les añade un timestamp al inicio del nombre o se añaden, como dice Sandungas, a una subcarpeta en otra ruta.
Ya luego es a la hora de armarlos como decías usar las diferentes subcarpetas y rutas para montar de nuevo el PSARC. O si se cambian los nombres con el timestamp, luego es hacer un script para quitar este y mover los archivos dónde se quieran para luego empaquetar como has comentado.

Un saludo a ambos y seguir con este tema que me esta gustando :)
alfax está baneado por "troll"
el secreto de estos psarc es mantener los ids, y la compresión o la falta de ella en cada archivo. Acabo de concluir con éxito el ripeo de Mass Effect 3, quitando idiomas y dejando solamente español e inglés. He conseguido liberar 3 GB y pico y por la prueba que he hecho, el juego funciona perfecto.

Tengo que pensar en una manera de automatizar eficazmente el tema de los archivos con el mismo nombre pero con distinto contenido... automatizar extracción y creación.... Esos killzone hay que ripearlos a lo grande !
theblackhat escribió:@Sandungas, @alfax, se podría modificar el código del PSARC para que cuando va extrayendo los archivos compruebe si existe ya en el directorio de extracción??. Si no existe sigue su curso igual pero para aquellos archivos con igual nombre, se les añade un timestamp al inicio del nombre o se añaden, como dice Sandungas, a una subcarpeta en otra ruta.
Ya luego es a la hora de armarlos como decías usar las diferentes subcarpetas y rutas para montar de nuevo el PSARC. O si se cambian los nombres con el timestamp, luego es hacer un script para quitar este y mover los archivos dónde se quieran para luego empaquetar como has comentado.

Un saludo a ambos y seguir con este tema que me esta gustando :)

Hay un par de versiones de herramientas psarc que estan hechas en codigo libre, pero no soportan ni la mitad de funciones que la oficial, una de las cosas mas importantes (o mejor dicho, imprescindible) es todo lo relaccionado con el formato .xml eso solo lo soporta el psarc oficial
Asi que una de las formas mas faciles de hacerlo es preparando un programa o script que le pase los comandos al psarc oficial

Primero harias un "list" al psarc original, y leerias el header
Luego tienes que analizar si hay rutas duplicadas en el "list" y hay que identificar el tipo de compresion que usa
Con eso ya tienes la informacion necesaria para reconstruirlo... y hay que preparar un .xml con esa informacion
Todo esto hay que hacerlo en el momento que estas extrayendo archivos

El concepto seria muy parecido a lo que hace el programa "rcomage"... cuando extraes el contenido de un archivo rco con rcomage se crea un archivo .xml principal (que en realidad no existe dentro del rco)
Ese archivo xml contiene toda la informacion necesaria para reconstruirlo

Y una vez que tienes el xml preparado (que se ha creado automaticamente en el momento de la extraccion) lo unico que hay que hacer es:
c:\psarc.exe tragate_esto.xml


alfax escribió:el secreto de estos psarc es mantener los ids, y la compresión o la falta de ella en cada archivo. Acabo de concluir con éxito el ripeo de Mass Effect 3, quitando idiomas y dejando solamente español e inglés. He conseguido liberar 3 GB y pico y por la prueba que he hecho, el juego funciona perfecto.

Tengo que pensar en una manera de automatizar eficazmente el tema de los archivos con el mismo nombre pero con distinto contenido... automatizar extracción y creación.... Esos killzone hay que ripearlos a lo grande !

Ademas de verdad que hay que hacerlo "a lo grande" con el killzone 3 :D
Una de las cosas mas molestas de los .psarc del killzone 3 es que cuando etraes el contenido es enorme... no recuerdo la cantidad de archivos que hay ni el tamaño, pero debe ser algo asi como 15gb y unos 10.000 archivos

Si te pones a hacer experimentos con ese psarc lo vas a tener que extraer varias veces... y ya sabes... extraerlo 1 vez o 3 veces es aceptable... 5 veces ya empieza a ser molesto... si lo extraes 10 veces ya la cosa empieza a ser excesiva
No me refiero al espacio usado en hdd porque vas borrando los anteriores, sino a que estas "abusando" del hdd porque estas copiando montones de archivos montones de veces repetidas

*Al mass effect 3 yo le quite tambien el audio en ingles, funciona perfecto :D
Soy un fan de los mass effect... no se si habeis jugado y si os habeis leido la documentacion que te vas encontrando por el juego sobre tecnologias, fisica, evolucion, etc... (esta todo basado en teorias reales especulativas), si lo habeis leido quizas pilleis este chiste XD

Aplicacion practica del motor de efecto masa, made in spain
Imagen
*El burro es la normandy
*El palo es el motor de efecto masa
*La zanahoria es la masa
alfax está baneado por "troll"
@Sandungas por eso a día de hoy todo lo que se trabaja en pc, hay que virtualizarlo. Lo cual quiere decir que necesitamos tener la mayor cantidad e memoria ram posible. De esa forma no 'abusaremos' de ningún hdd o SSD, que eso también es abusar del ssd, y desde luego aceleramos los trabajos.
9 respuestas