jueves, 7 de abril de 2011

Aprendiendo C: Satuxconv (II)

Primeros pasos

Ya tenemos claro cual es la finalidad del programa: que abra un archivo de imagen de CD, busque el código de región y pregunte al usuario cual desea establecer (o dejarlo sin modificar). Preguntas varias me asaltan: Dónde está el dato ? Cómo se cuál es ? Como accedo a él ? Respuestas: Pues ni idea, oiga. Toca investigar un poco.

Las imágenes de CDs para esta consola vienen en tres formatos (que yo conozca, pueden haber más): ISO, BIN y MDF. En todos los casos son imágenes del disco compacto, hecho con varias herramientas.

Conociendo el interior del fichero

Para empezar elegimos un juego concreto: Castlevania Symphony of the Night, un juego para Sega Saturn de Konami, que no salió de Japón. Podemos encontrar una pista de audio y la imagen del CD en formato BIN. Tomamos el fichero (con un tamaño de 460 Mb.) y utilizamos una herramienta de edición de ficheros "en bruto", en el caso de KDE tenemos Okteta. Veamos que tiene esto dentro...


A la izquierda los datos en formato hexadecimal, a la derecha en caracteres ASCII, más fácil de comprender para nosotros.

Podemos ver datos interesantes: dos códigos por ahora desconocidos (SEGA TP T-95 y T9527G), la versión del juego (V1.400). la fecha (27 de abril de 1998, en formato añomesdia), tipo de CD (CD-1/1), dos caracteres (dos J) y el título del juego (Dracula X).

Esas dos J son dos códigos de región, el primero corresponde al juego en sí, el segundo es para los periféricos y vamos a ignorar (tenéis mas información de este código aquí).

Para resolver la duda de los códigos que no conocemos podemos ver esta captura del SRP donde veremos como SEGA TP T-95 es el desarrollador del juego (Konami) y T9527G es el número del producto.

Con la misma herramienta, en este caso Okteta, vamos a ver cual es la posición de todos estos datos para que el programa pueda leerlos y escribirlos si fuera menester. Una forma simple (y algo chusca) es contar los caracteres hasta la posición deseada. Siendo el primer carácter el 0 tenemos que:
  • El desarrollador empieza en el byte 32.
  • El número del producto empieza en el byte 48.
  • La versión empieza en el byte 58.
  • La fecha empieza en el byte 64.
  • El código de región está en el byte 80.
  • El título empieza en el byte 112.
Con estos datos ya podemos empezar el parcheador. Una primera versión del programa abrirá el archivo en sólo lectura (para evitar destrozos accidentales) y visualizará todos estos datos. Si funciona correctamente se podrá pasar a la siguiente fase, poder cambiar el código de región.

En la siguiente entrada vamos a por la primera versión.

No hay comentarios:

Publicar un comentario en la entrada