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