Bueno, como vi que habia gente interesada en el tema pues expongo mis conocimientos (mas bien mi modo de operar) la hora de editar imágenes en roms (que yo sepa .NCGR y .NCLR).
Primeramente se necestitan los siguientes programas:
DSLazy o ndstool
Tahaxan
Editor hexadecimal
Paint
Notepad
Primeramente tenemos que explorar nuestra rom con el Tahaxan, para encontrar mas facilmente que archivos necesitamos editar.
Yo en mi caso he elegido una imagen de un icono con forma de cruz "+", como se puede apreciar en la siguiente imagen:
Bién simple ella.
También es aconsejable memorizar (o en su defecto apuntar) el tamaño de la imagen (en este caso 16x16) y el número de colores de la paleta (16 también en este caso).
Supongo que tampoco habrá que decir que diferiencieis los nombres de los archivos siendo en mi caso:
co_b_add_s.NCGR el archivo de imagen
co_b_add_s.NCLR el archivo de paleta
Bueno, cuando ya tengamos esta información el siguiente paso es el de desenpaquetar la rom usando dslazy o ndstool.
Una vez desenpaquetado buscamos el archivo de imagen (en mi caso co_b_add_s.NCGR) y lo abrimos con un editor hexadecimal y nos aparecerá esto:
Estamos un poco perdidos porque no sabemos donde empieza la imagen ni donde acaba, asique abrimos otro archivo .NCGR de la misma carpeta para compararlos:
Y llegamos a la conclusión de donde acaba la cabecera y donde empieza la imagen y nos enteramos que los bits que determinan en que lugar se posiciona cada color son los siguientes (los que he metido en un recuadro):
Esta misma cadena de caracteres es la que nos interesa:
Ahora toca lo mas dificil y es invertir la posición de cada caracter en cada pareja de caracteres. En la siguiente imágen os pongo un ejemplo de a lo que yo llamo pareja de caracteres (están con en un cuadradito rojo):
(obiamente no encerre en recuadros rojos a todas las cadenas de caracteres porque lo consideré inecesario).
Bueno, ahora lo de invertir la posición, quizás sea lo mas lioso de todo. Pero bueno, yo cuando digo invertir la posición me refiero a que la pareja 54 pasaria a ser 45, la 55 a 55, la 55 a 55, la 55 a 55, la 14 a 41.... así hasta el final quedando algo como esto (en mi caso).
Yo normalmente pongo el resultado de invertir las parejas en el notepad.
45 55 55 55 41 11 11 11 41 11 11 11 41 11 11 16
41 11 11 13 41 11 11 13 41 11 11 13 41 16 33 33
55 55 55 52 11 11 11 12 11 11 11 12 61 11 11 12
31 11 11 12 31 11 11 12 31 11 11 12 33 33 61 12
41 16 33 33 41 11 11 13 41 11 11 13 41 11 11 13
41 11 11 16 41 11 11 11 41 11 11 11 22 22 22 22
33 33 61 12 31 11 11 12 31 11 11 12 31 11 11 12
61 11 11 12 11 11 11 12 11 11 11 12 22 22 22 22
Bueno, ahora toca el turno a lo graciosamente complicado:
Yo para ver mejor los resultados prefiero eliminar los espacios:
Usando el reemplazar todo
45555555411111114111111141111116
41111113411111134111111341163333
55555552111111121111111261111112
31111112311111123111111233336112
41163333411111134111111341111113
41111116411111114111111122222222
33336112311111123111111231111112
61111112111111121111111222222222
(todabia se sigue sin ver nada claro eh xDD)
Bueno, ahora toca (al menos en este caso, pero no está de mas tener la imagen a cambiar con la paleta aplicada como hace el tahaxan a mano para ver como iran los colores) se avanzan los ocho primeros números de la primera linea (o los 8 primeros pixeles de colores
) en mi caso (45555555) y justamente entre el octavo y el noveno número (5 y 4) en mi caso, se mete un salto de linea quedando esto:
45555555
411111114111111141111116
41111113411111134111111341163333
55555552111111121111111261111112
31111112311111123111111233336112
41163333411111134111111341111113
41111116411111114111111122222222
33336112311111123111111231111112
61111112111111121111111222222222
oo se ve algo xDDD; bueno, se sigue haciendo lo mismo con todoa la linea quedando esto:
45555555
41111111
41111111
41111116
41111113411111134111111341613333
55555552111111121111111261111112
31111112311111123111111233336112
41163333411111134111111341111113
41111116411111114111111122222222
33336112311111123111111231111112
61111112111111121111111222222222
Y también se hace con la segunda linea:
45555555
41111111
41111111
41111116
41111113
41111113
41111113
41163333
55555552111111121111111261111112
31111112311111123111111233336112
41163333411111134111111341111113
41111116411111114111111122222222
33336112311111123111111231111112
61111112111111121111111222222222
Perfecto, ahora ya tenemos un cuadro de 8 x 8 pixeles ^^:
45555555
41111111
41111111
41111116
41111113
41111113
41111113
41163333
Ahora toca seguir con la travesura.
Los siguientes 8 bits en vez de seguir iendo abajo, les tocará ir siguiendo a la primera linea, (la de 45555555) de la siguiente forma:
4555555555555552
41111111
41111111
41111116
41111113
41111113
41111113
41163333
111111121111111261111112
31111112311111123111111233336112
41163333411111134111111341111113
41111116411111114111111122222222
33336112311111123111111231111112
61111112111111121111111222222222
Y seguimos igualmente con lo que queda de linea y la siguiente:
4555555555555552
4111111111111112
4111111111111112
4111111661111112
4111111331111112
4111111331111112
4111111331111112
4116333333336112
41163333411111134111111341111113
41111116411111114111111122222222
33336112311111123111111231111112
61111112111111121111111222222222
Ya se aprecia ya se aprecia!!
Y ahora dependerá un tanto de la resolución de la imagen; es decir si tiene mas de 16 pixeles de anchura se seguirá por la derecha (hasta llegar al número de pixeles de la imagen teniendo en cuenta que se distribuyen de 8x8 y que cada númeor es un pixel).
Como mi imagen ya no tiene más pixeles de longitud, ahora toca la altura (16 pixeles en mi caso) es decir que en vez de continuar a la derecha se continua para abajo, con las siguientes dos lineas de caracteres hexadecimales, quedando esto:
4555555555555552
4111111111111112
4111111111111112
4111111661111112
4111111331111112
4111111331111112
4111111331111112
4116333333336112
41163333
41111113
41111113
41111113
41111116
41111111
41111111
22222222
33336112311111123111111231111112
61111112111111121111111222222222
Y continuando de nuevo por la derecha con las ultimas dos filas de caracteres, dando el siguiente resultado:
4555555555555552
4111111111111112
4111111111111112
4111111661111112
4111111331111112
4111111331111112
4111111331111112
4116333333336112
4116333333336112
4111111331111112
4111111331111112
4111111331111112
4111111661111112
4111111111111112
4111111111111112
2222222222222222
Bueno, con esto es más que suficiente para poder reconstruir la imagen requerida; ahora me voy a poner un poco a investigar y continuo el post con la manipulación de la paleta de colores.
Espero que os hayais aclarado un poco, porque reconozco que hacer tutoriales no es lo mio xDD.
Saludos y ya sabeis donde estoy para que me podais preguntar
PD: No se si todas las imágenes tienen la misma estructura (seguramente las de 256 colores usen los dos caracteres hexadecimales, pero por ahora no me he metido con ellas; además si lo que se pretende es traducir algún menú y tal normalmente serán con imágenes de 16 colores). Bueno, espero que furrule también para otro tipo de imágenes que no sean solo NCGR.