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
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:
Xbox 360:Ps3: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.
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.
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.
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.
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.
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.
Por lo que la tarea es posible, aunque bien difícil y laboriosa
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.
Saludos.