Archivo PCK en NDS

Lugar donde se intentarán resolver problemas específicos
Responder
dewprism
Mensajes: 3
Registrado: 28 Nov 2011, 17:19

Archivo PCK en NDS

Mensaje por dewprism » 24 Jun 2012, 21:34

Hola a todos! Soy nuevo por aqui y queria hacer una consulta.
Resulta que tengo interes hace tiempo de traducir el juego Dr.Slump DS ya que tiene un nivel muy simple de japones y soy fanatico de la serie.
Segun lo que pude investigar, el juego tiene empaquetado los archivos graficos y el script en un formato con extension PCK y sin comprimir (segun pude chequear en el cristal tile)
Pero no encontre programa alguno para desempaquetar estos archivos. Mi consulta es si se han topado con este formato en otros juegos de NDS y si hay aplicaciones para desempaquetarlo o me pueden facilitar informacion de este formato (no confundir con el PSP ni el formato de los juegos de PC, ya que no parecen seguir el mismo patron de estructura, segun pude mirar por arriba)

Otro detalle, antes de consultar aqui, me tope con que esto: http://gbatemp.net/topic/277695-extracting-pck-files/
Pero no consegui desempaquetar los archivos, ademas DrSlump DS no tiene archivos TBL.

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5665
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 25 Jun 2012, 10:02

Que sean PCK o cualquier otra extensión es lo de menos.

Los ficheros de datos que tiene el juego son:

Código: Seleccionar todo

ASCII4.NTF2
-----------
cabecera de 16 bytes:
- 4 bytes, signatura "NT2\0"
- 4 bytes, tamaño de la parte de la imagen
- 4 bytes, altura de la imagen
- 4 bytes, anchura de la imagen
imagen (4bpp linear reverse, 128x64, 64 caracteres):
- 4 bytes, 0x00000020, ?
- 4 bytes, 0x00000010, ?
- 4 bytes, 0x00000003, ?
- 4 bytes, 0x00000000, ?
- datos raw
paleta:
- 16 colores en formato A1R5G5B5

systex_st.pck
-------------
20 imágenes seguidas sin punteros
cabecera de 32 bytes:
- 4 bytes, ".NID"
- 4 bytes, anchura de la imagen
- 4 bytes, altura de la imagen
- 4 bytes, 0x00000003, ?
- 4 bytes, longitud de la imagen
- 4 bytes, 0
- 4 bytes, 0
- 4 bytes, 0
- imagen (4bpp linear reverse, 256x64, 64 caracteres):


battle/character/costume/demo/event/viewer3d
--------------------------------------------
cabecera formato de 32 bytes:
- 4 bytes, signatura ".PCK"
- 4 bytes, número de ficheros
- 4 bytes, offset a la tabla de punteros
- 4 bytes, longitud de la tabla de punteros
- 4 bytes, longitud de los datos
alineación a 32 bytes, rellenado con 0xFF

punteros:
- 4 bytes, longitud
- 4 bytes, offset

los ficheros tiene alineación, rellenados con 0xFF

field
-----
según como comienzan:
- "BMD0", varios "BMD0" seguidos
- "NARC", varios "NARC" seguidos
- ".NGD", varios ".NGD" seguidos
- 0x10-?-?-?, "BMD0"/"NARC" comprimidos con LZSS

dewprism
Mensajes: 3
Registrado: 28 Nov 2011, 17:19

Mensaje por dewprism » 25 Jun 2012, 20:24

Gracias CUE por responderme tan rápido.
Bueno, por ahora estoy a años luz de programar una herramienta para desempaquetarlo. En lineas generales entendi bastante todo. Eso si, tuve que extraer cada pck porque me mariaba sumando y restando direcciones (no te rias :oops: )
Ah por cierto, el script esta en demo_script.pck, y esta en codificacion Shift-JIS se puede visualizar tranquilamente, pero no consigo entender el codigo. Y la fuente de los dialogos tampoco la encuentro (y no, no es el ASCII4.NTF2). Asi que por ahora me voy a resignar un rato a solo traducir los graficos y toquetear un poco el script :cry:

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5665
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 25 Jun 2012, 20:33

La fuente es bastante probable que se encuentre en alguno de esos ficheros que se extraen, que son bastante normales en la DS.

dewprism
Mensajes: 3
Registrado: 28 Nov 2011, 17:19

Mensaje por dewprism » 25 Jun 2012, 21:40

Cuando tenga novedades, sino molesta, los posteo por aqui! Nuevamente gracias CUE

peter smith
Mensajes: 22
Registrado: 24 Oct 2014, 14:22

Re: Archivo PCK en NDS

Mensaje por peter smith » 28 Mar 2018, 16:45

He visto este hilo abierto hace tiempo y estoy trasteando con este juego. Si no os importa subo lo que tengo de momento. Lo de las explicaciones hasta para abrir un archivo es por mí, son notas que me hago para que no se me olvide nada. Si hay algún error o equivocación por favor no dudéis en corregirme.

La rom tiene la extensión .nds

Imagen

Lo primero es desempacar (no sé si está bien dicho) la rom esto lo hacemos con el programa DSBUFF

Abrimos el programa

Imagen

Este es el aspecto que tiene

Imagen


Buscamos la rom en la ruta en la que la hemos ubicado.
Pulsamos el botón de Unpack
Nos aparecerá una zona un poco mas abajo para poner la ruta de salida de los archivos que desempacaremos
Y le damos al botón verde


Imagen

Esto desempacara los archivos de la rom en la carpeta especificada

Imagen


Para visualizar estos archivos abro el programa CrystalTile2

Imagen

Voi a file -> open

Imagen

Busco la rom Dr Slump Arale chan.nds y la abro (cuidado donde la colocas porque no te la abrirá y el crystaltile petara, lo mejor es ponerla en el disco raíz C), cambiamos el idioma para que aparezcan los caracteres japones

Imagen


Ahora nos vamos a al menu Tools -> NDS File System

Imagen

Y nos aparece esto

Imagen

Si, son los mismos archivos que hemos desempacado con el programa DSBUFF, el crystaltile hace un desglose de todo el contenido de la rom y tengo además más información de cada archivo.

File: el nombre del archivo
Number: el orden dentro de la rom (primero van los archivos de cabecera, y luego se van ordenando numéricamente.

Address: la direccion de memoria donde empiezan

Size: el tamaño del archivo

Sub-file: parece que es el tipo de archivo

Si hacemos doble clic en uno de estos archivos no lleva directamente a la dirección donde empieza el archivo en la rom que hemos cargado tal que así

Imagen

Si seleccionamos el icono Tile, vemos el archivo de la rom como si fuesen gráficos, si hacemos doble clic en un de los archivo de dentro de la rom nos lleva a su dirección de memoria, en este caso podemos ver que son gráficos.

Imagen

Como bien han dicho Dewprism y CUE el archivo de dentro de la rom llamado demo_script.pck contiene los textos en japones del juego

Y el de carácter.pck creo que contiene los graficos, con lo cual puede que contenga la fuente grafica


OTRA FORMA DE ABRIR LA ROM

Buscamos el programa Tinke, y lo ejecutamos

Imagen

Nos aparece una ventana para seleccionar un archivo para abrirlo, seleccionamos la rom de dr.slump y le damos al botón de abrir

Imagen


Nos aparece una estructura en forma de árbol

Imagen

Si vamos abriendo los diferentes archivos, el tinke nos da información sobre ellos

Imagen

Algunos son desconocidos pero otros los podemos ver como los modelos 3d

Imagen


Al darle al botón de ver nos aparece esta pantalla

Imagen

Si pinchamos en manually y vamos seleccionando el numero de polígonos, nos irán apareciendo las diferentes partes del modelo 3d tal que así.

Imagen



Si pinchamos en el botón show texturas nos mostrara las texturas del modelo 3d




Imagen




Abrimos la rom en el emulador para ver el primer texto que sale en el juego, es este:

Imagen


Abrimos el archivo demo_script.pck en el Crystaltile2 y nos vamos al menu
search->find

Imagen


Escribimos en la caja de búsqueda parte del texto del principio del juego y nos ira encontrando en el archivo todos los textos iguales, vamos comparando hasta dar con la frase exacta que aparece en la rom

Imagen


NOTA: para escribir en japones podemos utilizar esta página
http://www.lexilogos.com/keyboard/katakana.htm

y el traductor de Google

al final encontraremos el texto entero dentro del archivo demo_script.pck, tal que así:

Imagen

NOTA: puedes copiar textos del crystaltile2 (siempre seleccionando de arriba a bajo veras que los caracteres cambian de color a rojo) al traductor con ctrl.+c

Imagen

Pero al pegarlos te añade caracteres raros de más, tienes que ir mirando en el juego hasta quitar todos los caracteres que no aparezcan

Imagen

Asi

Imagen



En el traductor de google
ペンギン = pingüino

Cada símbolo japonés son 2 bytes
8379 = ペ
8393 = ン
834D = ギ

Para poder modificar el texto tenemos que abrir la rom con el crystaltile

Imagen

Abrir el sistema de archivos de NDS

Imagen

Allí buscar el archivo demo_script.pck (contiene los textos del juego) y exportarlo tal cual con el mismo formato.

Imagen



Una vez exportado, lo abrimos con el crystaltile2

Imagen

Buscamos la primera frase del juego con el menú search->find y la cambiamos por ejemplo por la palabra “Hola”.

Para cambiarlo he tenido que hacerlo desde la parte hexadecimal

Imagen

82 67 = H
82 8F = o
82 8C = l
82 81 = a




Una vez hayamos cambiado el texto le damos al botón de guardar

Imagen

Sin cerrar el crystaltile2 nos vamos al sistema de archivos NDS y le damos a la opción de importar en el archivo demo_script.pck

Imagen

Seleccionamos el archivo demo_script.pck que hemos modificado (dejo el mismo nombre de archivos para que no haya ningún error) y le damos a abrir

Imagen

Esto hará que se cargue la modificación en la rom, ahora abrimos el emulador y comprobamos.

Imagen



haciendo pruebas para colocar un texto correcto me han ido saliendo errores y cuelgues en la rom a la hora de ejecutarla con el emulador y he llagado a las siguientes conclusiones:

En las zonas marcadas en rojo no puedes colocar texto ya que están reservadas para otras cosas, imágenes funciones del juego,…

La zona marcada con verde es el comienzo de texto, aunque aparezca el símbolo de exclamación fíjate en el código hexadecimal que es 21 y si miras mas abajo veras un símbolo de exclamación que si aparece al final del texto en el emulador, que tiene el código 81 49, este si es el código para mostrar ese símbolo como texto.
Me he fijado en otros textos del juego y todos tienen símbolos diferentes para marcar el comienzo de texto, pero puedes ver que los caracteres hexadecimales no concuerdan con los de texto y en el emulador no aparecen.

La zona marcada en azul es la zona que se puede utilizar para colocar caracteres si te pasas de esa zona la rom se cuelga.

La zona marcada en lila creo que es lo que aparece en pantalla del emulador como el botón de siguiente para pasar a otro texto u otra pantalla del juego.



Imagen


Abro el archivo ‘arm9.bin’ con el programa windhex

Imagen

Imagen

Abro la tabla japonesa

Imagen

Imagen


Visualizo correctamente los caracteres

Imagen


Busco texto en el archivo y encuentro esto

Imagen

El texto empieza en el offset 0009DE40, calculo el puntero

09 DE 40  le doi la vuelta 40 DE 09

Hago una búsqueda hexadecimal

Imagen


En ‘Enter Data’ escribo el valor hexadecimal que quiero buscar en este caso el puntero.

La casilla ‘Save Finds in a Search List’ nos saca un cuadro con una lista por si encuentra el valor más de una vez repetido.

Y la casilla Start Search From the Begining es para que empiece a buscar desde el principio del archivo.

Imagen

Nos aparece el siguiente cuadro con todos los resultados iguales que ha encontrado del valor hexadecimal que hemos buscado.


Imagen

Si seleccionamos el primer resultado nos lleva hasta el offset indicado y podemos ver el valor que hemos escrito 40DE09


Me dirijo a estos offset (por ejemplo)

Offset 0009DFB0
Offset 0009DFDC

Imagen

Los invierto y busco esos valores hexadecimales para encontrar un puntero

Offset 0009DFB0  B0 DF 09
Offset 0009DFDC  DC DF 09

Imagen

Imagen

Del primer valor me aparece el siguiente resultado (un puntero), lo marco y me dirige automáticamente a ese offset. Hemos encontrado un puntero.


Imagen

El siguiente valor me dirige al siguiente offset, hemos encontrado otro puntero.

Imagen

Si nos fijamos están seguidos, si hacemos una simple resta podemos saber cuántas posiciones separan a los dos punteros.

RESTA 000A05B4 - 000A05AC = 8


Si ahora sumamos ese valor al segundo puntero, tendremos el offset del siguiente puntero.

SUMA 000A05B4 + 8 = 000A05BC

Imagen


Si cogemos lo 3 bytes del puntero (90EB09) los invertimos (09EB90) y nos dirigimos al offset 0009EB90

Imagen


Pulsamos Enter y nos lleva al texto al que apunta ese puntero

Imagen



Sigo trasteando con la rom

peter smith
Mensajes: 22
Registrado: 24 Oct 2014, 14:22

Re: Archivo PCK en NDS

Mensaje por peter smith » 05 Abr 2018, 14:09

He abierto un archivo .pck para mirar si entiendo lo de la cabecera que explica CUE

Imagen

En rojo están los 4bytes de signatura .PCK

En Azul, el número de ficheros. En este archivo hay 34 ficheros.

En lila, donde empieza la tabla de punteros. En el offset 00000020

Imagen


En amarillo la longitud de la tabla de punteros. Si le sumamos la longitud al offset de inicio nos da el offset del final de la tabla de punteros

00000020 + 000001A0 = 000001C0 offset del final de la tabla de punteros

Imagen

En Verde la longitud de los datos. Si sumamos este valor al offset del final de la tabla de punteros que sería el inicio de los datos nos da el offset del final de los datos y en este caso del archivo

000001C0 + 0000BFD0 = 0000C190

Imagen


Si nos fijamos cuando acaban los datos pasa como con la cabecera que se rellena con 0xFF para alinear a 32bits como dice CUE

Y para finalizar en naranja la alineación a 32bits rellenándola con 0xFF

Justo después del final de la tabla de punteros empieza los datos, empiezan con NARC, buscando información me sale que los archivos NARC son archivos de almacenamiento de nintendo (pueden contener gráficos, textos,…)

Me he descargado la herramienta narctool y en uno de sus archivos “narc.h” me sale la estructura de los archivos NARC, he cogido esa estructura y mirando el archivo concuerda.

Imagen


El archivo NARC empieza en el offset 000001C0
Si le sumo el tamaño del archivo 000001C0 + 0000025C = 0000041C
Este valor es el offset del siguiente archivo NARC

Si sumo las longitudes de las secciones

NARC  000001C0 + 0010 = 000001D0 (offset de inicio de la sección BTAF)
BTAF  000001D0 + 00000014 = 000001E4 (offset de inicio de la sección BTNF)
BTNF  000001E4 + 00000010 = 000001F4 (offset de inicio de la sección GIMF)
GIMF  000001F4 + 00000228 = 0000041C (final del archivo NARC inicio siguiente archivo NARC)

Extraigo el primer archivo NARC desde el menú edit  dump binary data
Marco el offset inicial y el offset final

Imagen


Cambio la extensión del archivo “dump” a “dump.NARC” y lo abro con el tinke

Imagen

Le doy a descomprimir y me aparece un archivo bin con extensión .SSN. Intento abrir este archivo con tinke y nada, le cambio la extensión a .SSN y tampoco puedo ver nada

La extensión .SSN es la que sigue a la sección GIMF de cada archivo NARC ubicado en el archivo .pck

He buscado información de .SSN y no he encontrado nada, aquí me he quedado atascado.

Responder