Sustitución de los videos del Final Fantasy XIII PC por los de PS3 (discusión)

Saludos gente. Iba a colocar esta información en el hilo oficial de Final Fantasy XIII, que fue el sitio donde originalmente comenzó esta discusión, pero como sin querer borré el mensaje; y viendo que la información que voy a poner a pesar que está relacionada con el hilo, se enfoca más hacia el ambito de la programación y la escene; decidí colocarla en un hilo aparte.

Hace unos días concluí mi descarga del Final Fantasy Xiii de Steam y porfin puedo informarles bien el meollo de los videos entre versiones y compartir lo que hasta ahora he indagado a ver si los interesados me echan una mano por que la tarea de pasar los videos de PS3 a cualquier otra versión es un poco titática para un solo mortal [+risas]

Muy bien comencemos desde lo más básico. La estructura de todas las versiones del juego es exactamente la misma, de hecho son del mismo nombre la mayoría de los archivos y carpetas, cambiando solamente la connotación de la versión. Por ejemplo, en el caso que nos interesa, los videos, tienen en las 3 versiones (360, Ps3 y Windows) el mismo nombre, salvo por el sistema al que pertenece. Voy a ahorrarme explicaciones de como extraer los archivos de las versiones de 360 y PS3 por que hay bastante tuto por allí para ello. Ahora bien, el primer video del juego; que sería como el pequeño resumen-introducción que se muestra al ejecutar el juego, se llama z000_versión.wmp dentro de la carpeta \white_data\movie; donde versión es por ejemplo us.360, us.ps3 ó us.win32 en cada caso (us es USA).

Estos archivos wmp son como contenedores de otros tipos de archivos de video, que en el caso de 360 sería bink video versión 1 (archivos bik), bink video versión 2 para PC (archivos bk2) y PAMF para PS3; son exactamente iguales en cada versión del juego, es decir poseen el mismo código y ocupan la cabecera del archivo. Para comprobarlo utilicé winhex en cada archivo para ver el código en bruto de cada video. Les dejo unas capturas de cada archivo abierto con winhex, donde la primera línea resaltada, representa la cabecera wmp, y la segunda línea el tipo de archivo de video según versión:

Windows 32:

Imagen

Xbox 360:


Imagen

Ps3:

Imagen

Si eliminamos dicha cabecera con el winhex, cada archivo se convierte en su respectivo archivo de video, es decir, bik, bk2 o pamf según sea el caso, para tratarlos con otras utilidades como el VGMtoolbox que tiene un demultiplexor para archivos PAM, o con el RADvideo Tools para separar las diferentes pistas de audio o video y volverlas a unir. Pero aquí comienzan las malas noticias. Esto solo es válido para el primer archivo, el z000 que contiene solo un video (individual).

Verán el resto de archivos wmp son archivos que contienen dentro de si multiples archivos de video individuales de cada formato (bik, bk2, Pamf) según versión con algún código separador que es el que busca el sistema para reproducir según el momento del juego, ya que los archivos wmp aparte de las secuencias CGI; incluyen secuencias con gráficas propias del juego (que antes se creía que eran renderizadas directamente por cada plataforma, pero supongo que no se optó por ello por el uso de algunos efectos o movimientos de cámara que quizá no podían ser hechos directamente por cada máquina y se decidió que fueran solo videos).

La dificultad radica en el hecho de poder separar las diferentes secuencias de PS3 y PC con alguna utilidad y volver a unirlas en un contenedor wmp. Intenté hacerlo a punta de “fuerza bruta con winhex, pero me di cuenta que yo solo no puedo, ya que hay que identificar cada separarador para poder agregarlo luego.

Veran el SDK para videos bink versión 2 no está disponible de forma gratuita como el RADvideo tools. Por lo que es un poco difícil volver a codificar esos videos en el formato apropiado que reconozca el sistema del juego en la versión para windows. Sin embargo el Rad video tools si sirve para demultiplexar cada archivo de video bk2 o obtener su información sobre pistas y data rate, importantes para volver a hacer cada secuencia como la original con el mismo orden de pistas, pero con calidad superior.

En el caso de los videos de PS3, si se le elimina la cabecera wmp con el winhex y se demultiplexan con VGMtoolbox, éste ultimo solo reconoce el primer video dentro del archivo y lo demultiplexa en un archivo de video en bruto (sin información de tasa de frames) h264 y un archivo de audio at3 antes de lanzar un error y abortar el proceso.

Imagen

El archivo de video sirve para ser insertado en otro contenedor, como por ejemplo el avi mediante el programa avc2avi.exe, para trabajarlo luego con otra utilidad como por ejemplo el Rad Video Tools o el VirtualDubMod.

Imagen

Ahora bien una de las buenas noticias, es que cada secuencia de video en cada versión homóloga, tiene exactamente la misma cantidad de frames y tasa de refrezco. Por ejemplo el único video dentro del archivo z000 tiene 5160 frames a 29,97 frames por segundo en todas las versiones, lo mismo pasa con la primera secuencia que pude extraer del archivo z002 que tiene 3503 frames a 29,97 frames por segundo en todas las versiones.

Lo que cambia es la resolución, calidad y data rate en cada versión. Por Ejemplo los videos en xbox 360 tienen una resolución de 1024x576 con un data rate bastante bajo por el uso del bink video versión 1 (y eso que 360 puede reproducir videos con un mayor ancho de banda y calidad) y por ello tienen una calidad muy deficiente. Además del video lo acompañan 3 pistas de audio, 2 estéreo y una monofónica que forma el sonido 5.1.

Imagen

Los de Ps3 están a 1280x720 con un data rate bastante alto, ya que están codificados en mpg de alta calidad. El sonido está codificado en at3 que necesita sofware propietario de sony para poder estudiarlo. Por ello son los videos hasta ahora más favorecidos.

Imagen

Los de pc por su parte tienen una definición de 1280x720 con una calidad bastante buena, pero sin superar los de Ps3 por el uso nuevamente del Bink Video. Además lo acompañan 4 pistas de audio, 3 estéreo y una mono que forman el sonido 7.1.

[img][/img]

Con todas las utilidades que he mencionado, solo he podido hacer pruebas directamente con xbox 360, donde he sustituido el video z000 añadiendole el mismo video de ps3 pero comprimido con bink y cambiandole el tamaño al original de 360 (1024x576) e inyectandole las mismas pistas de audio del archivo original de 360 con resultados realmente buenos, eliminando los artifacs.

Imagen

También he probado otras resoluciones, e incluso otros compresores de video como el H264 o el xvid, a los que despues meto en un contenedor bik con las pistas de audio con el rad video tools con buenos resultados también.

He conocido además el contenido de los archivos de video wmp en el caso de 360 gracias a la utilidad binkextract de Eurogamer que extrae todo los videos de los archivos wmp de la versión 360. Lástima que no he encontrado una que haga lo inverso para esta versión y las otras, o lo mismo para la versión de PC o PS3 y trastear.

Imagen

Por lo que la tarea es posible, aunque bien difícil y laboriosa [snif] ya que hay que buscar los separadores a punta de código y por ello quisiera que el que esté interesado y sepa de programación o de edición y compresión de video o que conozca otras utilidades aparte de las que aquí he mencionado me pueda ayudar a ver si desde EOL podemos hacer realidad un pack de videos basados en los de ps3 tanto para PC como para 360 de este gran juego tan subestimado por muchos y que lamentablemente contó con malas decisiones durante su desarrollo, como con el caso que nos concierne. [mamaaaaa]

Saludos. [bye]
Sería la leche poder ver los vídeos de PS3 en el juego de PC
Bueno la parte de compresion y demas la conozco, en cambio lo de buscar via winhex y todo eso me quede bastante perdido jajaja.

El problema que veo es que para ayudarte como hacemos? necesitamos los videos y de donde los bajamos?
Ole ya esta en marcha la decencia de los fans. Meanwhile squareenix rascandose las bolas.
¿Y cual es el motivo de querer sustituir los vídeos? Pregunto pq no lo se, ni tengo el juego...se ven peor los de pc o algo, pero muy mal?
Gracias por esta informacion tan valiosa linkerm, va a ser muy util para esta tarea. ;)

Personalmente no tengo ni idea de scene, editores hexadecimales, o herramientas de compresion o demultiplexion, de momento queda claro que la version de PC/360 usa bink video, y la versión PS3 usa PAMF, algun tipo de formato propietario de Sony.

Por tanto, sería util encontrar toda la documentación/herramientas posibles del formato PAMF.

Echando un vistazo rapido, lo primero que he encontrado son 3 herramientas que podrían ser útiles, y algunas indicaciones de como usarlas.

PAMF Tools
http://www.mediafire.com/?afngnyklhdrp4ww

[Tutorial] How to create ICON1.PAM (video icon)
http://www.ps3hax.net/showthread.php?t=33779
Aqui hay mas info de las PAMF Tools.

Seguire buscando en la red, a ver si encuentro algo mas.
Mientras, prueba a examinarlas, y ya nos cuentas linkerm ;)

EDIT:
He encontrado algo mas (aunque no es mucho) pero quizá encuentres algun dato que pueda ser util:

PlayStation 3 Video
http://forum.xentax.com/viewtopic.php?f=17&t=5050

Yet Another PAMF (PAM, PMF) Sound (AA3, OMA) Extractor
http://forum.xentax.com/viewtopic.php?f=17&t=6306
Es posible que PAMF y PAM sean una evolucion de PMF (PlayStation Media Format), al parecer los videos de PS3 usan un sistema parecido a los de PSP.

As for the audio/video streams that I had extracted from the BD, the video stream came out as an elementary *.264 file; audio stream came out as a 6 channel ATRAC3+ stream (using the PAMF (Playstation Media Format) decryption tool), which after converting to WAV, was re-muxed with the video streams into an MKV file (original quality but of bloated size -- 700 MB to 2000 MB). As a result, the file was encoded into a PS3/Xbox/Sony Vegas compatible MP4 container (99% of the quality but at 10-20% of the size: H.264/SUBQ=10/CRF 17/AAC 2.0 @ 192 kbps).

FFXIII CGI Cutscenes 1080p/720p Blu-ray [Xbox/PS3/Sony Vegas Compatible]
http://finalfantasy-xiii.net/forums/showpost.php?p=372397&postcount=21

EDIT2:

Celestial Being PAMF Demuxer: Demuxing Playstation Advanced Media Format (PAMF) We have an app here for the PS3 that demuxes PMAF files. And you're welcome to test it out. It is able to demux those video files into two streams: M2V and AT3.

To make this work you will need a jailbroken PS3. Put the pkg in the root of an usb device. After that you install it on the PS3 and start decoding.

Read more: http://www.ps3news.com/ps3-hacks-jailbr ... z3HFoAjhPf


http://www.youtube.com/watch?v=jzLvUfHZnG0

EDIT3:

[Information] playback of the PS3 movie (.PAM / .PAMF etc) [outflow]
https://translate.google.com/translate?sl=auto&tl=en&js=y&prev=_t&hl=en&ie=UTF-8&u=http%3A%2F%2Fblog.livedoor.jp%2Febiflynageruyo%2Farchives%2F36481698.html&edit-text=&act=url
Mas info sobre el paquete PAMF Tools.

EDIT4:
http://www.youtube.com/watch?v=HhwlQc0-vQo

EDIT5:
http://www.elotrolado.net/hilo_tuneando-juegos_1482748_s160

EDIT6:
http://www.elotrolado.net/hilo_liberado-filtrado-el-sdk-1-92-en-muchos-sites_1486382

Si encuentro algo mas, lo pondré por aquí ;)
Saludos gente. Antes que nada pido disculpas por tener el hilo abandonado toda la semana, he estado sinceramente muy lleno de ocupaciones y me ha sido algo difícil poder participar. Ya descubrí una manera cómoda de destripar los videos de PS3 para extraerlos todos. Esto luego de leerme unas cuantas guías de Winhex y de experimentar un poco.

El procedimiento es muy fácil, hasta yo me quedé sorprendido, estaba trabajando de más tontamente [facepalm] buscando las cabeceras de los archivos PAMF cuando el mismo winhex solito lo hace, y no solo eso, si no que copia todo un bloque del archivo original, a otro archivo totalmente nuevo.

Muy bien el procedimiento es el siguiente:

Abren Winhex primero que nada. La versión que tengo es la 16.3, supongo que el procedimiento es igual o similar para versiones más nuevas o viejas. En file se van a Open y buscan cualquiera de los archivos WMP de la versión de PS3. Una vez Abierto el archivo que desean, van a seleccionar las primeras 4 columnas de la segunda fila del archivo (000000016), es decir los números 50-41-4D-46 que corresponden a la cabecera de cada archivo PAMF. Una vez resaltadas, presionan click derecho del ratón>edit>copy block>Hex Values.

Imagen

Una vez copiado, se van al menú Search>Find Hex Values y en el recuadro que aparece, pegan el valor que acaban de copiar y desmarcan todo excepto el ultimo recuadro que dice List search hits, up to y pulsan el botón ok.

Imagen

Comenzará a buscar y una vez terminado el proceso les mostrará un listado en la parte superior los resultados si consiguió coincidencias y la fila de código en la que se encuentra.

Imagen

Esos resultados quieren decir que cada fragmento PAMF dentro del archivo WMP van desde el offset (fila o línea de código) XXXXX a YYYYY. Por ejemplo el primer video de todos los archivos WMP siempre comienza en el offset 16 (que es lo que quiere decir ese número 00000016 en la segunda fila) hasta el offset del segundo resultado. El segúndo video va desde el offset del segundo resultado hasta el del tercero y así cada uno de los videos. El último video de cada archivo va desde el offset del último resultado de busqueda, hasta el último offset del archivo completo.

Teniendo esto en mente, se van a Edit>define block para guardar cada uno de los videos en archivos separados. En el recuadro que aparecen colocan en la casilla benginning el offset de inicio y en la end el del final. Por ejemplo el benginning del primer video sería 16 (que siempre será el primer resultado del listado de búsqueda) y el end el offset del segundo resultado. Aquí hago una pausa y les hago una acotación. El ultimo offset de cualquier video del archivo WMP siempre será el inmediato siguiente menos 1. Por ejemplo. Supongamos que el bloque o cuerpo del primer video valla desde el offset 16 (primer resultado de búsqueda) hasta el offset 60520464 (segúndo resultado) A ese número 60520464 le restan 1 y queda 60520463. Esto es para que no se copie en el archivo nuevo que vamos a crear el primer hexadecimal del video siguiente.

Imagen

Una vez definido el bloque le dan a Ok y se seleccionara automáticamente todo el bloque que definieron. Presionan en el listado de busqueda el offset inicial del video que quieren separar, para que el programa ubique la vista en el inicio de la selección. Siguiendo el mismo ejemplo del primer video sería 16. Ahora colocan el cursor del ratón en el inicio de la selección, presionan click derecho y en el menú que aparece van a edit>copy block>Into new file. En el cuadro que aparece simplemente guarden con cualquier nombre.pam y presionan guardar.

Imagen

Si lo hicieron todo bien habran separado exitosamente cualquiera de los videos PAMF del archivo WMP originario y pueden reproducirlo en cualquier reproductor multimedia, pero sin audio o procesarlo con el VGMToollbox como les indiqué en mi otro comentario. Esto es igualmente válido para los archivos de las versiones de 360 y windows. Solo me falta por ahora identificar los códigos separadores que busca cada versión para identificar el video que va a reproducir y así poder reconstruirlos con una mejor calidad en las versiones de 360 y PC.

Saludos [bye]
Muy grande, ja ja cuando lo tengas listo soy partidario de hacer difusion y avergonzar a squareenix.
Gaiden escribió:¿Y cual es el motivo de querer sustituir los vídeos? Pregunto pq no lo se, ni tengo el juego...se ven peor los de pc o algo, pero muy mal?


Otro que tambien tiene esa pregunta en mente.
Sylvestre escribió:
Gaiden escribió:¿Y cual es el motivo de querer sustituir los vídeos? Pregunto pq no lo se, ni tengo el juego...se ven peor los de pc o algo, pero muy mal?


Otro que tambien tiene esa pregunta en mente.


Tienen peor calidad que la version de ps3, es por el codec utilizado.
Agregadas las fotos, por alguna razón anoche lo olvidé.

Saludos [bye]
Enhorabuena linkerm, es un gran avance. [sonrisa]

Ahora imagino que, una vez conseguido extraer los videos con audio para ser reproducidos en el PC, el siguiente paso sería reinsertarlos en un contenedor que reconozca la versión para PC del juego, para sustituir los archivos manualmente, o con un parcheador. ¿Es asi?
Klonoa del Viento escribió:Enhorabuena linkerm, es un gran avance. [sonrisa]

Ahora imagino que, una vez conseguido extraer los videos con audio para ser reproducidos en el PC, el siguiente paso sería reinsertarlos en un contenedor que reconozca la versión para PC del juego, para sustituir los archivos manualmente, o con un parcheador. ¿Es asi?


Si por su puesto compi, aunque yo voy más por el asunto manual, pues no soy muy ducho en programación como para hacer un parcheador. Ahora bien, por el audio no hay problema, pues no es necesario realmente el audio de PS3, solo la parte de video; las mismas pistas de los archivos de PC y 360 Sirven para rearmar cada archivo y se pueden extraer e integrar facilmente con el RadVideoTools, recordemos que en estas versiones los contenedores son Bik video versión 2 (no free) y bik video (versión free). Aunque he leido que este formato es muy malo para comprimir por la gran perdida de calidad (como se hace palpable en la versión 360), tiene la ventaja que también permite hacer los videos sin perdida, es decir solo meterlos en el contenedor bik o kb2 según sea el caso, que nos viene bien para aumentar la calidad manteniendo las mismas caracteristicas de los archivos y que los reconozca el juego. El problema es que como comenté, el SDK de los bik video versión 2 que son los que usan los de PC no son gratuitos. Hay que comprarlos o ponernos la pata de palo.

Saludos y gracias por participar. [bye]
linkerm escribió:
Klonoa del Viento escribió:Enhorabuena linkerm, es un gran avance. [sonrisa]

Ahora imagino que, una vez conseguido extraer los videos con audio para ser reproducidos en el PC, el siguiente paso sería reinsertarlos en un contenedor que reconozca la versión para PC del juego, para sustituir los archivos manualmente, o con un parcheador. ¿Es asi?


Si por su puesto compi, aunque yo voy más por el asunto manual, pues no soy muy ducho en programación como para hacer un parcheador. Ahora bien, por el audio no hay problema, pues no es necesario realmente el audio de PS3, solo la parte de video; las mismas pistas de los archivos de PC y 360 Sirven para rearmar cada archivo y se pueden extraer e integrar facilmente con el RadVideoTools, recordemos que en estas versiones los contenedores son Bik video versión 2 (no free) y bik video (versión free). Aunque he leido que este formato es muy malo para comprimir por la gran perdida de calidad (como se hace palpable en la versión 360), tiene la ventaja que también permite hacer los videos sin perdida, es decir solo meterlos en el contenedor bik o kb2 según sea el caso, que nos viene bien para aumentar la calidad manteniendo las mismas caracteristicas de los archivos y que los reconozca el juego. El problema es que como comenté, el SDK de los bik video versión 2 que son los que usan los de PC no son gratuitos. Hay que comprarlos o ponernos la pata de palo.

Saludos y gracias por participar. [bye]


Entiendo, en ese caso, no hay muchas opciones:
A)Insistir a Square-Enix para que lo hagan ellos
B)Reunir el dinero para el SDK via fans
C)Esperar a que alguien lo haga en plan "patapalo" y suba el paquete a la red para que el que quiera lo descargue.

Mientras tanto, seria interesante comparar la estructura de archivos de la version PC y PS3, si todos ocupan lo mismo, texturas, etc, a ver que mas se puede mejorar de la version PC desde PS3. [sonrisa]
Saludos gente. Haciendo pruebas y comparaciones de los videos enteros y separados con el winhex en las versiones de PS3, 360 y PC descubrí un par de detalles. Los videos en cada archivo WMP sea de la versión 360 o de la versión de PC están contiguos exactamente uno despúes del otro, no llevan separadores o identificadores como pensaba. Sin embargo aunque no lleven separadores, no basta con colocar los videos mejorados uno contiguo al otro, pues no es tan sencillo hacer que lea cada video dentro del archivo. Lo que pasa es que en ambos casos, el juego manda a leer cada video desde su offset respectivo. Por ejemplo, utilizando como referencia lo que ya he dicho en los otros comentarios, el primer video de cada archivo lo manda a leer en el offset 16, el segundo en el offset que le corresponde y así sucesivamente; ya lo corroboré insertando videos mejorados en el lugar de cada video original dentro del archivo WMP. Pero si hago un archivo WMP de puros videos mejorados, solo reconoce el primero por que siempre comenzará en el offset 16, pero no el resto por que los offset no cuadran por la diferencia de tamaño de los videos nuevos respecto a los viejos. Por lo que en mi opinión quedan solo 2 formas de cambiar los videos:

1)- Utilizando un codec que permita mayor calidad manteniendo un tamaño de video igual, de forma que cuadren los offset...

2)- Metiendose con el código del juego y que mande a leer los videos desde los offset nuevos.

Este último punto es el que me parece el indicado pues el primero lo veo muy improbable. El problema es que no se mucho de programación. Sin embargo veré que más puedo hacer con el buen winhex y les estaré informando.

Saludos [bye]
Hola @linkerm que tal va todo, ¿alguna novedad?
Feliz año por cierto ;)
15 respuestas